[util] extend CustomNone with arithmetic operators (#6007)
This commit is contained in:
@@ -101,7 +101,7 @@ def raises(cls):
|
||||
return wrap
|
||||
|
||||
|
||||
def identity(x):
|
||||
def identity(x, _=None):
|
||||
"""Returns its argument"""
|
||||
return x
|
||||
|
||||
@@ -551,6 +551,39 @@ class CustomNone():
|
||||
__gt__ = false
|
||||
__ge__ = false
|
||||
|
||||
__add__ = identity
|
||||
__sub__ = identity
|
||||
__mul__ = identity
|
||||
__matmul__ = identity
|
||||
__truediv__ = identity
|
||||
__floordiv__ = identity
|
||||
__mod__ = identity
|
||||
|
||||
__radd__ = identity
|
||||
__rsub__ = identity
|
||||
__rmul__ = identity
|
||||
__rmatmul__ = identity
|
||||
__rtruediv__ = identity
|
||||
__rfloordiv__ = identity
|
||||
__rmod__ = identity
|
||||
|
||||
__lshift__ = identity
|
||||
__rshift__ = identity
|
||||
__and__ = identity
|
||||
__xor__ = identity
|
||||
__or__ = identity
|
||||
|
||||
__rlshift__ = identity
|
||||
__rrshift__ = identity
|
||||
__rand__ = identity
|
||||
__rxor__ = identity
|
||||
__ror__ = identity
|
||||
|
||||
__neg__ = identity
|
||||
__pos__ = identity
|
||||
__abs__ = identity
|
||||
__invert__ = identity
|
||||
|
||||
@staticmethod
|
||||
def __len__():
|
||||
return 0
|
||||
|
||||
@@ -761,6 +761,39 @@ def hash(value):
|
||||
self.assertGreater(123, obj)
|
||||
self.assertGreaterEqual(1.23, obj)
|
||||
|
||||
self.assertEqual(obj + 123, obj)
|
||||
self.assertEqual(obj - 123, obj)
|
||||
self.assertEqual(obj * 123, obj)
|
||||
self.assertEqual(obj @ 123, obj)
|
||||
self.assertEqual(obj / 123, obj)
|
||||
self.assertEqual(obj // 123, obj)
|
||||
self.assertEqual(obj % 123, obj)
|
||||
|
||||
self.assertEqual(123 + obj, obj)
|
||||
self.assertEqual(123 - obj, obj)
|
||||
self.assertEqual(123 * obj, obj)
|
||||
self.assertEqual(123 @ obj, obj)
|
||||
self.assertEqual(123 / obj, obj)
|
||||
self.assertEqual(123 // obj, obj)
|
||||
self.assertEqual(123 % obj, obj)
|
||||
|
||||
self.assertEqual(obj << 123, obj)
|
||||
self.assertEqual(obj >> 123, obj)
|
||||
self.assertEqual(obj & 123, obj)
|
||||
self.assertEqual(obj ^ 123, obj)
|
||||
self.assertEqual(obj | 123, obj)
|
||||
|
||||
self.assertEqual(123 << obj, obj)
|
||||
self.assertEqual(123 >> obj, obj)
|
||||
self.assertEqual(123 & obj, obj)
|
||||
self.assertEqual(123 ^ obj, obj)
|
||||
self.assertEqual(123 | obj, obj)
|
||||
|
||||
self.assertEqual(-obj, obj)
|
||||
self.assertEqual(+obj, obj)
|
||||
self.assertEqual(~obj, obj)
|
||||
self.assertEqual(abs(obj), obj)
|
||||
|
||||
mapping = {}
|
||||
mapping[obj] = 123
|
||||
self.assertIn(obj, mapping)
|
||||
|
||||
Reference in New Issue
Block a user