Add support for rsfhit and lshift operators
This commit is contained in:
@@ -162,6 +162,14 @@ class RangeComparator(types.TypeEngine.Comparator):
|
||||
other = map(self.coerce_arg, other)
|
||||
return super(RangeComparator, self).notin_(other)
|
||||
|
||||
def __rshift__(self, other, **kwargs):
|
||||
other = self.coerce_arg(other)
|
||||
return self.op('>>')(other)
|
||||
|
||||
def __lshift__(self, other, **kwargs):
|
||||
other = self.coerce_arg(other)
|
||||
return self.op('<<')(other)
|
||||
|
||||
def contains(self, other, **kwargs):
|
||||
other = self.coerce_arg(other)
|
||||
return self.op('@>')(other)
|
||||
|
||||
@@ -114,6 +114,38 @@ class TestIntRangeTypeOnPostgres(NumberRangeTestCase):
|
||||
)
|
||||
assert query.count()
|
||||
|
||||
@mark.parametrize(
|
||||
'number_range',
|
||||
(
|
||||
[1, 3],
|
||||
'1 - 3',
|
||||
(0, 4),
|
||||
)
|
||||
)
|
||||
def test_rshift_operator(self, number_range):
|
||||
self.create_building([5, 6])
|
||||
query = (
|
||||
self.session.query(self.Building)
|
||||
.filter(self.Building.persons_at_night >> number_range)
|
||||
)
|
||||
assert query.count()
|
||||
|
||||
@mark.parametrize(
|
||||
'number_range',
|
||||
(
|
||||
[1, 3],
|
||||
'1 - 3',
|
||||
(0, 4),
|
||||
)
|
||||
)
|
||||
def test_lshift_operator(self, number_range):
|
||||
self.create_building([-1, 0])
|
||||
query = (
|
||||
self.session.query(self.Building)
|
||||
.filter(self.Building.persons_at_night << number_range)
|
||||
)
|
||||
assert query.count()
|
||||
|
||||
@mark.parametrize(
|
||||
'number_range',
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user