Skip to content

Commit

Permalink
improve deprecation period
Browse files Browse the repository at this point in the history
  • Loading branch information
bkamins committed Nov 11, 2018
1 parent 82aa836 commit 52e9010
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 6 deletions.
20 changes: 17 additions & 3 deletions src/abstractdataframe/iteration.jl
Original file line number Diff line number Diff line change
Expand Up @@ -118,12 +118,26 @@ columns(df::T) where T<: AbstractDataFrame =

Base.size(itr::DataFrameColumns) = (size(itr.df, 2),)
Base.IndexStyle(::Type{<:DataFrameColumns}) = Base.IndexLinear()
Base.getindex(itr::DataFrameColumns{<:AbstractDataFrame,
Pair{Symbol, AbstractVector}}, j::Int) =
_names(itr.df)[j] => itr.df[j]

function Base.getindex(itr::DataFrameColumns{<:AbstractDataFrame,
Pair{Symbol, AbstractVector}}, j::Int) =
Base.depwarn("Indexing into a return value of eachcol will return a pair " *
"of column name and column value", :getindex)
itr.df[j]
# after deprecation replace by:
# _names(itr.df)[j] => itr.df[j]
end

Base.getindex(itr::DataFrameColumns{<:AbstractDataFrame,AbstractVector}, j::Int) =
itr.df[j]

# TODO: remove this after deprecation period of getindex of DataFrameColumns
function Base.iterate(itr::DataFrameColumns{<:AbstractDataFrame,
Pair{Symbol, AbstractVector}}, j=1)
j > size(itr.df, 2) && return nothing
return (_names(itr.df)[j] => itr.df[j], j + 1)
end

"""
mapcols(f::Union{Function,Type}, df::AbstractDataFrame)
Expand Down
25 changes: 22 additions & 3 deletions src/deprecated.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1424,9 +1424,28 @@ function Base.hash(df::SubDataFrame, h::UInt)
return h
end

Base.getindex(itr::DataFrameColumns{<:SubDataFrame,Pair{Symbol, AbstractVector}},
j::Int) = _names(itr.df)[j] => itr.df[j]
Base.getindex(itr::DataFrameColumns{<:SubDataFrame,AbstractVector}, j) = itr.df[:, j]
function Base.getindex(itr::DataFrameColumns{<:SubDataFrame,
Pair{Symbol, AbstractVector}}, j::Int) =
Base.depwarn("Indexing into a return value of eachcol on SubDataFrame will return a pair " *
"of column name and a view of column value", :getindex)
itr.df[:, j]
end


function Base.getindex(itr::DataFrameColumns{<:SubDataFrame,AbstractVector}, j)
Base.depwarn("Indexing into a return value of columns on SubDataFrame will return a" *
" view of column value", :getindex)
itr.df[:, j]
end

function Base.iterate(itr::DataFrameColumns{<:SubDataFrame,
Pair{Symbol, AbstractVector}}, j=1)
Base.depwarn("iterating over value of eachcol on SubDataFrame will return a" *
" pair of column name and a view of column value", :getindex)
j > size(itr.df, 2) && return nothing
return (_names(itr.df)[j] => itr.df[:, j], j + 1)
end


function showrowindices(io::IO,
df::SubDataFrame,
Expand Down

0 comments on commit 52e9010

Please sign in to comment.