diff --git a/CHANGES/1707.feature.rst b/CHANGES/1707.feature.rst new file mode 100644 index 00000000..9f8eded3 --- /dev/null +++ b/CHANGES/1707.feature.rst @@ -0,0 +1 @@ +Added `__eq__` and `__hash__` methods to the `Default` class. diff --git a/aiogram/client/default.py b/aiogram/client/default.py index ee422982..00c8645e 100644 --- a/aiogram/client/default.py +++ b/aiogram/client/default.py @@ -28,6 +28,14 @@ class Default: def __repr__(self) -> str: return f"<{self}>" + def __eq__(self, other: object) -> bool: + if not isinstance(other, Default): + return NotImplemented + return self._name == other._name + + def __hash__(self) -> int: + return hash(self._name) + @dataclass(**dataclass_kwargs(slots=True, kw_only=True)) class DefaultBotProperties: diff --git a/tests/test_api/test_client/test_default.py b/tests/test_api/test_client/test_default.py index 2445c435..7e354c89 100644 --- a/tests/test_api/test_client/test_default.py +++ b/tests/test_api/test_client/test_default.py @@ -24,6 +24,15 @@ class TestDefault: default = Default("test") assert repr(default) == "" + def test_eq_same_name(self): + assert Default("test") == Default("test") + + def test_eq_different_name(self): + assert Default("foo") != Default("bar") + + def test_hash(self): + assert hash(Default("test")) == hash(Default("test")) + class TestDefaultBotProperties: def test_post_init_empty(self):