JuliaPy / JuliaPy/PyCall.jl

PyReverseDims in VS Code Debug Mode throws Error

Open
#860 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
1.5k
Forks
186
PR merge metrics
No merged PRs in 30d

Description

Hi there,

I was trying to debug code with VS Code that includes PyCall/Python Code, but every time it raises an error. Non-Debug mode is working great. It seems like PyReverseDims is the problem.

Thank you so much in advance. Sorry if there are information missing, this is one of my first issues on GitHub :)

I think the problematic part where it crashes is this:
```
decisionSteps, terminalSteps = env.pyEnv.get_steps(env.behaviorName)
decisionStepConverted = DecisionStep(PyReverseDims(decisionSteps.obs)[1], PyReverseDims(decisionSteps.reward), PyReverseDims(decisionSteps.agent_id), decisionSteps)
terminalStepConverted = TerminalStep(PyReverseDims(terminalSteps.obs)[1], PyReverseDims(terminalSteps.reward), PyReverseDims(terminalSteps.agent_id), PyReverseDims(terminalSteps.interrupted), terminalSteps)
```

Here is the error with stacktrace:
```
┌ Warning: Some Julia code in the VS Code extension crashed with
│ e =
│ MethodError: no method matching PyReverseDims(::PyObject)
│ Closest candidates are:
│ PyReverseDims(::StridedArray{T, N}) where {T<:Union{Complex{Float32}, Complex{Float64}, Bool, Float16, Float32, Float64, Int16, Int32, Int64, Int8, Ptr{PyCall.PyObject_struct}, UInt16, UInt32, UInt64, UInt8, PyObject}, N} at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:197
│ PyReverseDims(::BitArray) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:204
│ PyReverseDims(::AbstractArray{T,2} where T) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:208
│ ...
└ @ VSCodeDebugger c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\error_handler.jl:5
ERROR: MethodError: no method matching PyReverseDims(::PyObject)
Closest candidates are:
PyReverseDims(::StridedArray{T, N}) where {T<:Union{Complex{Float32}, Complex{Float64}, Bool, Float16, Float32, Float64, Int16, Int32, Int64, Int8, Ptr{PyCall.PyObject_struct}, UInt16, UInt32, UInt64, UInt8, PyObject}, N} at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:197
PyReverseDims(::BitArray) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:204
PyReverseDims(::AbstractArray{T,2} where T) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:208
...
Stacktrace:
[1] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\construct.jl:259
[2] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\localmethtable.jl:63
[3] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:225
[4] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202
[inlined]
[5] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[6] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:529
[7] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[8] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[9] finish_and_return! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29 [inlined]
[10] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:240
[11] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
[12] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[13] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:529
[14] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[15] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[16] finish_and_return! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29 [inlined]
[17] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:240
[18] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
[19] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[20] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:445
[21] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[22] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[23] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29
[24] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:59
[25] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:473
[26] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:415
[27] #invokelatest#1 at .\essentials.jl:710 [inlined]
[28] invokelatest at .\essentials.jl:709 [inlined]
[29] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\debugger_core.jl:65
[30] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\packagedef.jl:102
[31] startdebugger() at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\VSCodeDebugger\src\VSCodeDebugger.jl:38
[32] top-level scope at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\debugger\run_debugger.jl:7
[33] include(::Function, ::Module, ::String) at .\Base.jl:380
[34] include(::Module, ::String) at .\Base.jl:368
[35] exec_options(::Base.JLOptions) at .\client.jl:296
[36] _start() at .\client.jl:506
```

Nearly all of my PyCall Code. All of this seems to work fine, until the PyReverseDims part:
```
using PyCall

function __init__()
PyMlagents = pyimport("mlagents")
PyMlagents_envs_environment = pyimport("mlagents_envs.environment")
py"""
import mlagents
from mlagents_envs.environment import UnityEnvironment
from mlagents_envs.side_channel.engine_configuration_channel import EngineConfigurationChannel
def initUnityEnvironment(path, seedInput=1, workerID=1):
channel = EngineConfigurationChannel()
env = UnityEnvironment(file_name=path, seed=seedInput, worker_id=workerID, side_channels=[channel])
channel.set_configuration_parameters(time_scale = 50.0)
env.reset()
behavior_name = list(env.behavior_specs)[0]
spec = env.behavior_specs[behavior_name]
return (env, behavior_name, spec)
"""
end
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.