diff --git a/Project.toml b/Project.toml index f93b385..a2c9751 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "SymPy" uuid = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" -version = "2.3.2" +version = "2.3.3" [deps] CommonEq = "3709ef60-1bee-4518-9f2f-acd86f176c50" diff --git a/src/python_connection.jl b/src/python_connection.jl index 2061b0f..b1aa6b8 100644 --- a/src/python_connection.jl +++ b/src/python_connection.jl @@ -46,10 +46,12 @@ SymPyCore.:↓(x::Set) = _sympy_.sets.FiniteSet((↓(xi) for xi ∈ x)...) SymPyCore.:↑(::Type{<:AbstractString}, x) = Sym(PyObject(x)) SymPyCore.:↑(::Type{<:Bool}, x) = Sym(x) -function SymPyCore.:↑(::Type{PyCall.PyObject}, x) +_Set(x) = Set(x) +_Set(xs...) = Set(xs) +function SymPyCore.:↑(u::Type{PyCall.PyObject}, x) # check if container type # pybuiltin("set") allocates, as PyObject does - pyisinstance(x, _pyset_) && return Set(collect(Sym, x)) + pyisinstance(x, _pyset_) && return _Set(collect(map(Sym, x))...) pyisinstance(x, _pytuple_) && return Tuple(↑(xᵢ) for xᵢ ∈ x) pyisinstance(x, _pylist_) && return [↑(xᵢ) for xᵢ ∈ x] pyisinstance(x, _pydict_) && return Dict(↑(k) => ↑(x[k]) for k ∈ x)