Skip to content

Commit

Permalink
[util] extend CustomNone with arithmetic operators (#6007)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikf committed Aug 13, 2024
1 parent c495bfe commit ad73789
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 1 deletion.
35 changes: 34 additions & 1 deletion gallery_dl/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def wrap(*args):
return wrap


def identity(x):
def identity(x, _=None):
"""Returns its argument"""
return x

Expand Down Expand Up @@ -551,6 +551,39 @@ def __ne__(self, other):
__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
Expand Down
33 changes: 33 additions & 0 deletions test/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -761,6 +761,39 @@ def test_universal_none(self):
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)
Expand Down

0 comments on commit ad73789

Please sign in to comment.