@@ -3,69 +3,83 @@ module SymPyPythonCallSymbolicsExt
3
3
# from https://github.com/JuliaSymbolics/Symbolics.jl/pull/957/
4
4
# by @jClugstor
5
5
import SymPyPythonCall
6
- const sp = SymPyPythonCall. sympy. py
6
+ # const sp = SymPyPythonCall.sympy.py
7
7
const PythonCall = SymPyPythonCall. PythonCall
8
- import PythonCall: Py, pyisinstance, pyconvert
8
+ import PythonCall: pyconvert
9
9
10
10
import Symbolics
11
11
import Symbolics: @variables
12
12
13
13
# rule functions
14
- function pyconvert_rule_sympy_symbol (:: Type{Symbolics.Num} , x:: Py )
14
+ function pyconvert_rule_sympy_symbol (:: Type{Symbolics.Num} , x)
15
+ #=
15
16
if !pyisinstance(x,sp.Symbol)
16
17
return PythonCall.pyconvert_unconverted()
17
18
end
19
+ =#
18
20
name = PythonCall. pyconvert (Symbol,x. name)
19
21
return PythonCall. pyconvert_return (Symbolics. variable (name))
20
22
end
21
23
22
- function pyconvert_rule_sympy_pow (:: Type{Symbolics.Num} , x:: Py )
24
+ function pyconvert_rule_sympy_pow (:: Type{Symbolics.Num} , x)
25
+ #=
23
26
if !pyisinstance(x,sp.Pow)
24
27
return PythonCall.pyconvert_unconverted()
25
28
end
29
+ =#
26
30
expbase = pyconvert (Symbolics. Num,x. base)
27
31
exp = pyconvert (Symbolics. Num,x. exp)
28
32
return PythonCall. pyconvert_return (expbase^ exp)
29
33
end
30
34
31
- function pyconvert_rule_sympy_mul (:: Type{Symbolics.Num} , x:: Py )
35
+ function pyconvert_rule_sympy_mul (:: Type{Symbolics.Num} , x)
36
+ #=
32
37
if !pyisinstance(x,sp.Mul)
33
38
return PythonCall.pyconvert_unconverted()
34
39
end
40
+ =#
35
41
mult = reduce (* ,PythonCall. pyconvert .(Symbolics. Num,x. args))
36
42
return PythonCall. pyconvert_return (mult)
37
43
end
38
44
39
- function pyconvert_rule_sympy_add (:: Type{Symbolics.Num} , x:: Py )
45
+ function pyconvert_rule_sympy_add (:: Type{Symbolics.Num} , x)
46
+ #=
40
47
if !pyisinstance(x,sp.Add)
41
48
return PythonCall.pyconvert_unconverted()
42
49
end
50
+ =#
43
51
sum = reduce (+ , PythonCall. pyconvert .(Symbolics. Num,x. args))
44
52
return PythonCall. pyconvert_return (sum)
45
53
end
46
54
47
- function pyconvert_rule_sympy_equality (:: Type{Symbolics.Equation} , x:: Py )
55
+ function pyconvert_rule_sympy_equality (:: Type{Symbolics.Equation} , x)
56
+ #=
48
57
if !pyisinstance(x,sp.Equality)
49
58
return PythonCall.pyconvert_unconverted()
50
59
end
60
+ =#
51
61
rhs = pyconvert (Symbolics. Num,x. rhs)
52
62
lhs = pyconvert (Symbolics. Num,x. lhs)
53
63
return PythonCall. pyconvert_return (rhs ~ lhs)
54
64
end
55
- function pyconvert_rule_sympy_derivative (:: Type{Symbolics.Num} , x:: Py )
65
+ function pyconvert_rule_sympy_derivative (:: Type{Symbolics.Num} , x)
66
+ #=
56
67
if !pyisinstance(x,sp.Derivative)
57
68
return PythonCall.pyconvert_unconverted()
58
69
end
70
+ =#
59
71
variables = pyconvert .(Symbolics. Num,x. variables)
60
72
derivatives = prod (var -> Differential (var), variables)
61
73
expr = pyconvert (Symbolics. Num, x. expr)
62
74
return PythonCall. pyconvert_return (derivatives (expr))
63
75
end
64
76
65
- function pyconvert_rule_sympy_function (:: Type{Symbolics.Num} , x:: Py )
77
+ function pyconvert_rule_sympy_function (:: Type{Symbolics.Num} , x)
78
+ #=
66
79
if !pyisinstance(x,sp.Function)
67
80
return PythonCall.pyconvert_unconverted()
68
81
end
82
+ =#
69
83
name = pyconvert (Symbol,x. name)
70
84
args = pyconvert .(Symbolics. Num,x. args)
71
85
func = @variables $ name (.. )
0 commit comments