Closed
Description
Affects: PythonCall
Describe the bug
The following code throws an error:
using PythonCall
np = pyimport("numpy")
d3 = pyimport("dedalus.public")
coords = d3.CartesianCoordinates("x")
dist = d3.Distributor(coords, dtype=np.float64)
xbasis = d3.RealFourier(coords["x"], size=16, bounds=(0,1))
B = dist.VectorField(coords, name="B", bases=(xbasis))
problem = d3.IVP([B])
problem.add_equation(pytuple((d3.dt(B) - d3.Laplacian(B), 0)))
ERROR: Python: Julia: TypeError: non-boolean (Py) used in boolean context
Stacktrace:
[1] in
@ ./operators.jl:1309 [inlined]
[2] pyjlany_contains(self::Vector{Py}, v::Py)
@ PythonCall.JlWrap ~/.julia/packages/PythonCall/Nr75f/src/JlWrap/any.jl:117
[3] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64)
@ PythonCall.JlWrap ~/.julia/packages/PythonCall/Nr75f/src/JlWrap/base.jl:67
[4] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject})
@ PythonCall.JlWrap.Cjl ~/.julia/packages/PythonCall/Nr75f/src/JlWrap/C.jl:63
[5] PyObject_CallObject
@ ~/.julia/packages/PythonCall/Nr75f/src/C/pointers.jl:303 [inlined]
[6] macro expansion
@ ~/.julia/packages/PythonCall/Nr75f/src/Core/Py.jl:132 [inlined]
[7] pycallargs(f::Py, args::Py)
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:220
[8] pycall(::Py, ::Py, ::Vararg{Py}; kwargs::@Kwargs{})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:243
[9] pycall(::Py, ::Py, ::Vararg{Py})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:233
[10] (::Py)(::Py, ::Vararg{Py}; kwargs::@Kwargs{})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/Py.jl:357
[11] top-level scope
@ REPL[13]:1
[12] eval
@ ./boot.jl:430 [inlined]
[13] eval_user_input(ast::Any, backend::REPL.REPLBackend, mod::Module)
@ REPL ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/REPL/src/REPL.jl:245
[14] repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
@ REPL ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/REPL/src/REPL.jl:342
[15] start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
@ REPL ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/REPL/src/REPL.jl:327
[16] run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
@ REPL ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/REPL/src/REPL.jl:483
[17] run_repl(repl::REPL.AbstractREPL, consumer::Any)
@ REPL ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/REPL/src/REPL.jl:469
[18] (::Base.var"#1139#1141"{Bool, Symbol, Bool})(REPL::Module)
@ Base ./client.jl:446
[19] #invokelatest#2
@ ./essentials.jl:1055 [inlined]
[20] invokelatest
@ ./essentials.jl:1052 [inlined]
[21] run_main_repl(interactive::Bool, quiet::Bool, banner::Symbol, history_file::Bool, color_set::Bool)
@ Base ./client.jl:430
[22] repl_main
@ ./client.jl:567 [inlined]
[23] _start()
@ Base ./client.jl:541
Python stacktrace:
[1] __contains__
@ ~/.julia/packages/PythonCall/Nr75f/src/JlWrap/any.jl:274
[2] prep_nccs
@ dedalus.core.field ~/recalcfinke/.CondaPkg/env/lib/python3.11/site-packages/dedalus/core/field.py:374
[3] _build_matrix_expressions
@ dedalus.core.problems ~/recalcfinke/.CondaPkg/env/lib/python3.11/site-packages/dedalus/core/problems.py:331
[4] add_equation
@ dedalus.core.problems ~/recalcfinke/.CondaPkg/env/lib/python3.11/site-packages/dedalus/core/problems.py:92
Stacktrace:
[1] pythrow()
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/err.jl:92
[2] errcheck
@ ~/.julia/packages/PythonCall/Nr75f/src/Core/err.jl:10 [inlined]
[3] pycallargs(f::Py, args::Py)
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:220
[4] pycall(::Py, ::Py, ::Vararg{Py}; kwargs::@Kwargs{})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:243
[5] pycall(::Py, ::Py, ::Vararg{Py})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/builtins.jl:233
[6] (::Py)(::Py, ::Vararg{Py}; kwargs::@Kwargs{})
@ PythonCall.Core ~/.julia/packages/PythonCall/Nr75f/src/Core/Py.jl:357
[7] top-level scope
@ REPL[13]:1
The same works when using PyCall:
using PyCall
np = pyimport("numpy")
d3 = pyimport("dedalus.public")
coords = d3.CartesianCoordinates("x")
dist = d3.Distributor(coords, dtype=np.float64)
xbasis = d3.RealFourier(get(coords, "x"), size=16, bounds=(0,1))
B = dist.VectorField(coords, name="B", bases=(xbasis))
problem = d3.IVP([B])
problem.add_equation((d3.dt(B) - d3.Laplacian(B), 0))
Your system
- Arch Linux
- PythonCall v0.9.23, PyCall v1.96.4
versioninfo()
Julia Version 1.11.1
Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 4 × Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, skylake)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
Pkg.status()
Status `/tmp/jl_zARGID/Project.toml`
[992eb4ea] CondaPkg v0.2.24
[6099a3de] PythonCall v0.9.23
CondaPkg.status()
CondaPkg Status /tmp/jl_zARGID/CondaPkg.toml
Environment
/tmp/jl_zARGID/.CondaPkg/env
Packages
dedalus v3.0.3
Additional context
The MWE assumes that the python library dedalus
is installed (using CondaPkg
or Conda
respectively).
Sorry for the rather large MWE, but I think that is the minimal sensible working setup of the project.