For completeness, a MWE that converts from Symbolics Num to SymPy Sym{PyCall.PyObject} and back to Symbolics Num:
# test_SymPy_to_Symbolics_v3.jl
# References
# 1. https://github.com/jverzani/SymPyCore.jl/blob/main/src/lambdify.jl#L139
using Symbolics
using SymbolicUtils
using SymPy
using SymPyCore: exchange, _issymbol, _value, _makesymbol
global const T_smp = SymPy.Sym
global const T_smblc = SymbolicUtils.BasicSymbolic
function expr_Symbolics_to_SymPy_to_Symbolics(expr_num::Num)::Num
expr_smblc_utls = Symbolics.unwrap(expr_num)
@show typeof(expr_smblc_utls), expr_smblc_utls
println("")
SymPy.@syms θ, p, t, g, l, m
expr_smp = exchange(T_smp, expr_smblc_utls)
@show typeof(expr_smp), expr_smp
println("")
_issymbol(x::T_smblc) = SymbolicUtils.issym(x)
_value(x::T_smblc) = x
_makesymbol(::Type{<:T_smblc}, x::Symbol) = SymbolicUtils.Sym{Number}(x)
expr_smblc_util = exchange(T_smblc, expr_smp)
@show typeof(expr_smblc_util), expr_smblc_util
println("")
expr_smblc = Num(Symbolics.wrap(expr_smblc_util))
return expr_smblc
end
function main()
@variables θ, p, t, g, l, m
expr_num = -l*(g*l*m*t*cos(θ) - l^2*m/t)/(g*t^2*sin(θ))
@show typeof(expr_num), expr_num
println("")
expr_smblc = expr_Symbolics_to_SymPy_to_Symbolics(expr_num)
@show typeof(expr_smblc), expr_smblc
println("")
end
begin
main()
end
returning
julia> include("test_SymPy_to_Symbolics_v3.jl")
(typeof(expr_num), expr_num) = (Num, (-((-(l^2)*m) / t + g*l*m*t*cos(θ))*l) / (g*(t^2)*sin(θ)))
(typeof(expr_smblc_utls), expr_smblc_utls) = (SymbolicUtils.BasicSymbolic{Real}, (-((-(l^2)*m) / t + g*l*m*t*cos(θ))*l) / (g*(t^2)*sin(θ)))
(typeof(expr_smp), expr_smp) = (Sym{PyCall.PyObject}, -l*(g*l*m*t*cos(θ) - l^2*m/t)/(g*t^2*sin(θ)))
(typeof(expr_smblc_util), expr_smblc_util) = (SymbolicUtils.BasicSymbolic{Number}, (-((-(l^2)*m) / t + g*l*m*t*cos(θ))*l) / (g*(t^2)*sin(θ)))
(typeof(expr_smblc), expr_smblc) = (Num, (-((-(l^2)*m) / t + g*l*m*t*cos(θ))*l) / (g*(t^2)*sin(θ)))