You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>>> from juliacall import Main
>>> Main.seval("x = 1+1; println(x)")
2
>>> Main.seval("x = 1+1\n println(x)")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/x/.julia/packages/PythonCall/qTEA1/src/jlwrap/module.jl", line 25, in seval
return self._jl_callmethod($(pyjl_methodnum(pyjlmodule_seval)), expr)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
juliacall.JuliaError: Base.Meta.ParseError("extra token after end of expression")
Stacktrace:
[1] parse(str::String; raise::Bool, depwarn::Bool)
@ Base.Meta ./meta.jl:272
[2] parse
@ ./meta.jl:266 [inlined]
[3] pyjlmodule_seval(self::Module, expr::Py)
@ PythonCall ~/.julia/packages/PythonCall/qTEA1/src/jlwrap/module.jl:13
[4] _pyjl_callmethod(f::Any, self_::Ptr{PythonCall.C.PyObject}, args_::Ptr{PythonCall.C.PyObject}, nargs::Int64)
@ PythonCall ~/.julia/packages/PythonCall/qTEA1/src/jlwrap/base.jl:62
[5] _pyjl_callmethod(o::Ptr{PythonCall.C.PyObject}, args::Ptr{PythonCall.C.PyObject})
@ PythonCall.C ~/.julia/packages/PythonCall/qTEA1/src/cpython/jlwrap.jl:47
The issue here, I suspect, is that JuiliaCall uses a parsing method that accepts only a single top-level block. This is not ideal as Julia's eval ∘ Meta.parse accepts any number top-level expressions. What makes this a bug, though, is how subtle the difference between a single top-level block and multiple top-level blocks is. Specifically a; b is okay but a\nb is not which is very bad.
Fixing this may also fix #379 which would allow us to revert #380
The text was updated successfully, but these errors were encountered:
If we're being pedantic about it this isn't a bug: a;b really is a single block expression (this is the documented meaning of ;) whereas a\nb is just two expressions separated by whitespace, which don't become a single expression until wrapped in some higher block such as begin ... end.
Anyway I totally agree that seval should support multiple expressions.
Affects: JuliaCall
The issue here, I suspect, is that JuiliaCall uses a parsing method that accepts only a single top-level block. This is not ideal as Julia's
eval ∘ Meta.parse
accepts any number top-level expressions. What makes this a bug, though, is how subtle the difference between a single top-level block and multiple top-level blocks is. Specificallya; b
is okay buta\nb
is not which is very bad.Fixing this may also fix #379 which would allow us to revert #380
The text was updated successfully, but these errors were encountered: