From ad73789256502426c6d39931cf9196f67e008751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 13 Aug 2024 09:41:12 +0200 Subject: [PATCH] [util] extend CustomNone with arithmetic operators (#6007) --- gallery_dl/util.py | 35 ++++++++++++++++++++++++++++++++++- test/test_util.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 5744ef32..f1bd53cc 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -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 diff --git a/test/test_util.py b/test/test_util.py index 4622c286..73a8928a 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -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)