Skip to content

Commit 308403b

Browse files
authored
Merge pull request #160 from isuruf/func
Fix func and add tests
2 parents f813962 + df5519f commit 308403b

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

symengine/lib/symengine_wrapper.pyx

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,9 @@ class Symbol(Basic):
782782
def is_Symbol(self):
783783
return True
784784

785-
func = __class__
785+
@property
786+
def func(self):
787+
return self.__class__
786788

787789

788790
def symarray(prefix, shape, **kwargs):
@@ -906,7 +908,9 @@ class Rational(Number):
906908
rat = self.get_num_den()
907909
return rat[0]._sage_() / rat[1]._sage_()
908910

909-
func = __class__
911+
@property
912+
def func(self):
913+
return self.__class__
910914

911915
class Integer(Rational):
912916

@@ -1006,7 +1010,9 @@ class Integer(Rational):
10061010
def get_num_den(Basic self):
10071011
return self, 1
10081012

1009-
func = __class__
1013+
@property
1014+
def func(self):
1015+
return self.__class__
10101016

10111017

10121018
def dps_to_prec(n):
@@ -1254,7 +1260,9 @@ class Add(Basic):
12541260
deref(X).as_two_terms(symengine.outArg(a), symengine.outArg(b))
12551261
return c2py(a)._sage_() + c2py(b)._sage_()
12561262

1257-
func = __class__
1263+
@property
1264+
def func(self):
1265+
return self.__class__
12581266

12591267
def as_coefficients_dict(Basic self):
12601268
cdef RCP[const symengine.Add] X = symengine.rcp_static_cast_Add(self.thisptr)
@@ -1295,7 +1303,9 @@ class Mul(Basic):
12951303
deref(X).as_two_terms(symengine.outArg(a), symengine.outArg(b))
12961304
return c2py(a)._sage_() * c2py(b)._sage_()
12971305

1298-
func = __class__
1306+
@property
1307+
def func(self):
1308+
return self.__class__
12991309

13001310
def as_coefficients_dict(Basic self):
13011311
cdef RCP[const symengine.Mul] X = symengine.rcp_static_cast_Mul(self.thisptr)
@@ -1330,7 +1340,9 @@ class Pow(Basic):
13301340
exp = c2py(deref(X).get_exp())
13311341
return base._sage_() ** exp._sage_()
13321342

1333-
func = __class__
1343+
@property
1344+
def func(self):
1345+
return self.__class__
13341346

13351347

13361348
class Function(Basic):
@@ -1559,7 +1571,9 @@ class Abs(OneArgFunction):
15591571
arg = c2py(deref(X).get_arg())._sage_()
15601572
return abs(arg)
15611573

1562-
func = __class__
1574+
@property
1575+
def func(self):
1576+
return self.__class__
15631577

15641578
class FunctionSymbol(Function):
15651579

@@ -1711,8 +1725,9 @@ class Max(Function):
17111725
s = self.args_as_sage()
17121726
return sage.max(*s)
17131727

1714-
func = __class__
1715-
1728+
@property
1729+
def func(self):
1730+
return self.__class__
17161731

17171732
class Min(Function):
17181733

@@ -1729,7 +1744,9 @@ class Min(Function):
17291744
s = self.args_as_sage()
17301745
return sage.min(*s)
17311746

1732-
func = __class__
1747+
@property
1748+
def func(self):
1749+
return self.__class__
17331750

17341751

17351752
class Derivative(Basic):
@@ -1773,7 +1790,9 @@ class Derivative(Basic):
17731790
s.append(c2py(<RCP[const symengine.Basic]>(i))._sage_())
17741791
return arg.diff(*s)
17751792

1776-
func = __class__
1793+
@property
1794+
def func(self):
1795+
return self.__class__
17771796

17781797

17791798
class Subs(Basic):
@@ -1822,7 +1841,9 @@ class Subs(Basic):
18221841
c2py(<RCP[const symengine.Basic]>(P[i]))._sage_()
18231842
return arg.subs(v)
18241843

1825-
func = __class__
1844+
@property
1845+
def func(self):
1846+
return self.__class__
18261847

18271848

18281849
cdef class MatrixBase:

symengine/tests/test_sympy_compat.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def test_Add():
6767
i = Add(x, y)
6868
assert isinstance(i, Add)
6969
assert isinstance(i, Basic)
70+
assert i.func(y, x) == i
7071

7172

7273
def test_Mul():
@@ -76,6 +77,7 @@ def test_Mul():
7677
i = Mul(x, y)
7778
assert isinstance(i, Mul)
7879
assert isinstance(i, Basic)
80+
assert i.func(y, x) == i
7981

8082

8183
def test_Pow():
@@ -85,6 +87,7 @@ def test_Pow():
8587
i = Pow(x, 2)
8688
assert isinstance(i, Pow)
8789
assert isinstance(i, Basic)
90+
assert i.func(x, 2) == i
8891

8992

9093
def test_Max():

0 commit comments

Comments
 (0)