[util] extend CustomNone with arithmetic operators (#6007)

This commit is contained in:
Mike Fährmann
2024-08-13 09:41:12 +02:00
parent c495bfe460
commit ad73789256
2 changed files with 67 additions and 1 deletions

View File

@@ -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

View File

@@ -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)