Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Closures for @mutate are broken #242

@davidanthoff

Description

@davidanthoff

This doesn't work, but should:

julia> using Query                                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                
julia> using DataFrames                                                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                                                
julia> df = DataFrame(a=[1,2,3])                                                                                                                                                                                                                                                                                                
3×1 DataFrame                                                                                                                                                                                                                                                                                                                   
│ Row │ a     │                                                                                                                                                                                                                                                                                                                 
│     │ Int64 │                                                                                                                                                                                                                                                                                                                 
├─────┼───────┤                                                                                                                                                                                                                                                                                                                 
│ 11     │                                                                                                                                                                                                                                                                                                                 
│ 22     │                                                                                                                                                                                                                                                                                                                 
│ 33     │                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                
julia> d = Dict(1=>:A, 2=>:B, 3=>:C)                                                                                                                                                                                                                                                                                            
Dict{Int64,Symbol} with 3 entries:                                                                                                                                                                                                                                                                                              
  2 => :B                                                                                                                                                                                                                                                                                                                       
  3 => :C                                                                                                                                                                                                                                                                                                                       
  1 => :A                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                
julia> df |> @mutate(foo = d[_.a])                                                                                                                                                                                                                                                                                              
3-element query resultError showing value of type QueryOperators.EnumerableMap{Any,QueryOperators.EnumerableIterable{NamedTuple{(:a,),Tuple{Int64}},Tables.DataValueRowIterator{NamedTuple{(:a,),Tuple{Int64}},Array{NamedTuple{(:a,),Tuple{Int64}},1}}},getfield(Main, Symbol("##4#6"))}:                                      
ERROR: UndefVarError: d not defined                                                                                                                                                                                                                                                                                             
Stacktrace:                                                                                                                                                                                                                                                                                                                     
 [1] (::getfield(Main, Symbol("##4#6")))(::NamedTuple{(:a,),Tuple{Int64}}) at C:\Users\david\.julia\packages\Query\UeHfO\src\query_translation.jl:58                                                                                                                                                                            
 [2] iterate at C:\Users\david\.julia\packages\QueryOperators\OFi0k\src\enumerable\enumerable_map.jl:25 [inlined]                                                                                                                                                                                                               
 [3] printsequence(::IOContext{REPL.Terminals.TTYTerminal}, ::QueryOperators.EnumerableMap{Any,QueryOperators.EnumerableIterable{NamedTuple{(:a,),Tuple{Int64}},Tables.DataValueRowIterator{NamedTuple{(:a,),Tuple{Int64}},Array{NamedTuple{(:a,),Tuple{Int64}},1}}},getfield(Main, Symbol("##4#6"))}) at C:\Users\david\.julia\
packages\QueryOperators\OFi0k\src\enumerable\show.jl:10                                                                                                                                                                                                                                                                         
 [4] show at C:\Users\david\.julia\packages\QueryOperators\OFi0k\src\enumerable\show.jl:37 [inlined]                                                                                                                                                                                                                            
 [5] show(::IOContext{REPL.Terminals.TTYTerminal}, ::MIME{Symbol("text/plain")}, ::QueryOperators.EnumerableMap{Any,QueryOperators.EnumerableIterable{NamedTuple{(:a,),Tuple{Int64}},Tables.DataValueRowIterator{NamedTuple{(:a,),Tuple{Int64}},Array{NamedTuple{(:a,),Tuple{Int64}},1}}},getfield(Main, Symbol("##4#6"))}) at .
\sysimg.jl:194                                                                                                                                                                                                                                                                                                                  
 [6] display(::REPL.REPLDisplay, ::MIME{Symbol("text/plain")}, ::Any) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:131                                                                                                                                      
 [7] display(::REPL.REPLDisplay, ::Any) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:135                                                                                                                                                                    
 [8] display(::Any) at .\multimedia.jl:287                                                                                                                                                                                                                                                                                      
 [9] #invokelatest#1 at .\essentials.jl:697 [inlined]                                                                                                                                                                                                                                                                           
 [10] invokelatest at .\essentials.jl:696 [inlined]                                                                                                                                                                                                                                                                             
 [11] print_response(::IO, ::Any, ::Any, ::Bool, ::Bool, ::Any) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:154                                                                                                                                            
 [12] print_response(::REPL.AbstractREPL, ::Any, ::Any, ::Bool, ::Bool) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:139                                                                                                                                    
 [13] (::getfield(REPL, Symbol("#do_respond#40")){Bool,getfield(REPL, Symbol("##50#59")){REPL.LineEditREPL,REPL.REPLHistoryProvider},REPL.LineEditREPL,REPL.LineEdit.Prompt})(::Any, ::Any, ::Any) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:713         
 [14] #invokelatest#1 at .\essentials.jl:697 [inlined]                                                                                                                                                                                                                                                                          
 [15] invokelatest at .\essentials.jl:696 [inlined]                                                                                                                                                                                                                                                                             
 [16] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\LineEdit.jl:2273                                                                                           
 [17] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:1034                                                                                                                                            
 [18] run_repl(::REPL.AbstractREPL, ::Any) at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\REPL\src\REPL.jl:191                                                                                                                                                                 
 [19] (::getfield(Base, Symbol("##718#720")){Bool,Bool,Bool,Bool})(::Module) at .\client.jl:355                                                                                                                                                                                                                                 
 [20] #invokelatest#1 at .\essentials.jl:697 [inlined]                                                                                                                                                                                                                                                                          
 [21] invokelatest at .\essentials.jl:696 [inlined]                                                                                                                                                                                                                                                                             
 [22] run_main_repl(::Bool, ::Bool, ::Bool, ::Bool, ::Bool) at .\client.jl:339                                                                                                                                                                                                                                                  
 [23] exec_options(::Base.JLOptions) at .\client.jl:277                                                                                                                                                                                                                                                                         
 [24] _start() at .\client.jl:425                                                                                                                                                                                                                                                                                               

I suspect that something is wrong with the escaping...

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions