diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 861ec7eb..e76ddf36 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -106,12 +106,12 @@ def identity(x): return x -def true(_): +def true(_, __=None): """Always returns True""" return True -def false(_): +def false(_, __=None): """Always returns False""" return False @@ -540,10 +540,21 @@ class CustomNone(): def __bool__(): return False + __lt__ = true + __le__ = true + __eq__ = false + __ne__ = true + __gt__ = false + __ge__ = false + @staticmethod def __len__(): return 0 + @staticmethod + def __hash__(): + return 0 + @staticmethod def __format__(_): return "None" diff --git a/test/test_util.py b/test/test_util.py index 83b44b75..35e72473 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -745,6 +745,7 @@ def hash(value): self.assertEqual(repr(obj), repr(None)) self.assertEqual(format(obj), str(None)) self.assertEqual(format(obj, "%F"), str(None)) + self.assertIs(obj.attr, obj) self.assertIs(obj["key"], obj) self.assertIs(obj(), obj) @@ -752,6 +753,17 @@ def hash(value): self.assertIs(obj(foo="bar"), obj) self.assertEqual(util.json_dumps(obj), "null") + self.assertLess(obj, "foo") + self.assertLessEqual(obj, None) + self.assertFalse(obj == obj) + self.assertTrue(obj != obj) + self.assertGreater(123, obj) + self.assertGreaterEqual(1.23, obj) + + mapping = {} + mapping[obj] = 123 + self.assertIn(obj, mapping) + i = 0 for _ in obj: i += 1