Skip to content

Commit 423148e

Browse files
committed
FIX: API compatib th sympy for Interval objects
1 parent cfb4f4b commit 423148e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

symengine/lib/symengine_wrapper.pyx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2999,8 +2999,23 @@ cdef class Set(Expr):
29992999

30003000
class Interval(Set):
30013001

3002-
def __new__(self, *args):
3003-
return interval(*args)
3002+
def __new__(self, *args, left_open=None, right_open=None):
3003+
list_args = list(args)
3004+
if ((left_open is not None) and (right_open is None)) or ((left_open is None) and (right_open is not None)):
3005+
raise ValueError("Both (or neither) keyword arguments for Interval should be specified")
3006+
if left_open is not None:
3007+
list_args.append(left_open)
3008+
if right_open is not None:
3009+
list_args.append(right_open)
3010+
return interval(*list_args)
3011+
3012+
@property
3013+
def start(self):
3014+
return self.args[0]
3015+
3016+
@property
3017+
def end(self):
3018+
return self.args[1]
30043019

30053020
def _sympy_(self):
30063021
import sympy

symengine/tests/test_sets.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
def test_Interval():
88
assert Interval(0, oo) == Interval(0, oo, False, True)
9+
assert Interval(0, oo) == Interval(0, oo, left_open=False, right_open=True)
910
assert Interval(-oo, 0) == Interval(-oo, 0, True, False)
11+
assert Interval(-oo, 0) == Interval(-oo, 0, left_open=True, right_open=False)
1012
assert Interval(oo, -oo) == EmptySet()
1113
assert Interval(oo, oo) == EmptySet()
1214
assert Interval(-oo, -oo) == EmptySet()
@@ -18,6 +20,9 @@ def test_Interval():
1820
assert Interval(1, 1, True, True) == EmptySet()
1921
assert Interval(1, 2).union(Interval(2, 3)) == Interval(1, 3)
2022

23+
assert Interval(-oo, 0).start == -oo
24+
assert Interval(-oo, 0).end == 0
25+
2126

2227
def test_EmptySet():
2328
E = EmptySet()

0 commit comments

Comments
 (0)