@@ -68,15 +68,19 @@ function pyconvert_rule_sympy_function(::Type{Symbolics.Num}, x)
68
68
if ! pyisinstance (x,sp. Function)
69
69
return PythonCall. pyconvert_unconverted ()
70
70
end
71
- name = pyconvert (Symbol,x. name)
72
- args = pyconvert .(Symbolics. Num,x. args)
71
+ nm = PythonCall. pygetattr (x, " func" , nothing )
72
+ isnothing (nm) && return PythonCall. pyconvert_unconverted () # XXX
73
+ name = pyconvert (Symbol, nm)
74
+ args = pyconvert .(Symbolics. Num, x. args)
73
75
func = @variables $ name (.. )
74
76
return PythonCall. pyconvert_return (first (func)(args... ))
75
77
end
76
78
77
79
78
80
function __init__ ()
79
81
# added rules
82
+ add_pyconvert_rule (f, cls) = PythonCall. pyconvert_add_rule (cls, Symbolics. Num, f)
83
+
80
84
PythonCall. pyconvert_add_rule (" sympy.core.symbol:Symbol" , Symbolics. Num, pyconvert_rule_sympy_symbol)
81
85
82
86
PythonCall. pyconvert_add_rule (" sympy.core.power:Pow" , Symbolics. Num, pyconvert_rule_sympy_pow)
@@ -90,7 +94,25 @@ function __init__()
90
94
PythonCall. pyconvert_add_rule (" sympy.core.function:Derivative" ,Symbolics. Num, pyconvert_rule_sympy_derivative)
91
95
92
96
PythonCall. pyconvert_add_rule (" sympy.core.function:Function" ,Symbolics. Num, pyconvert_rule_sympy_function)
93
- end
94
97
98
+ # core numbers
99
+ add_pyconvert_rule (" sympy.core.numbers:Pi" ) do T:: Type{Symbolics.Num} , x
100
+ PythonCall. pyconvert_return (Symbolics. Num (pi ))
101
+ end
102
+ add_pyconvert_rule (" sympy.core.numbers:Exp1" ) do T:: Type{Symbolics.Num} , x
103
+ PythonCall. pyconvert_return (Symbolics. Num (ℯ))
104
+ end
105
+ add_pyconvert_rule (" sympy.core.numbers:Infinity" ) do T:: Type{Symbolics.Num} , x
106
+ PythonCall. pyconvert_return (Symbolics. Num (Inf ))
107
+ end
108
+ #= complex numbers and Num needs some workaround
109
+ add_pyconvert_rule("sympy.core.numbers:ImaginaryUnit") do T::Type{Symbolics.Num}, x
110
+ PythonCall.pyconvert_return(Symbolics.Num(im))
111
+ end
112
+ add_pyconvert_rule("sympy.core.numbers:ComplexInfinity") do T::Type{Symbolics.Num}, x
113
+ PythonCall.pyconvert_return(Symbolics.Num(Inf)) # errors: Complex(Inf,Inf)))
114
+ end
115
+ =#
116
+ end
95
117
96
118
end
0 commit comments