mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add __eq__ and __hash__ methods to State class (#928)
* Fix the ability to copy the state, now copying the state will return the same state. * reformat * full implement deepcopy with memo dict, add typehints * Update aiogram/dispatcher/fsm/state.py Co-authored-by: Oleg A. <t0rr@mail.ru> * update tests Co-authored-by: Oleg A. <t0rr@mail.ru> * remove deepcopy in tests Co-authored-by: Oleg A. <t0rr@mail.ru> * remove deepcopy method Co-authored-by: Oleg A. <t0rr@mail.ru> * update changes description Co-authored-by: Oleg A. <t0rr@mail.ru> * update __eq__ method Co-authored-by: Oleg A. <t0rr@mail.ru> * add typehints, tests * return False for not equal objects creating FilterObject use getfullargspec that check State equality with `type` and `object` builtins, raising Error in `__eq__` method of State break this behavior * return NotImplemented for other types * use `!=` instead of 'not x == y' in tests Co-authored-by: Oleg A. <t0rr@mail.ru>
This commit is contained in:
parent
416460e013
commit
bc5b26de5f
3 changed files with 33 additions and 0 deletions
|
|
@ -54,6 +54,16 @@ class State:
|
|||
return True
|
||||
return raw_state == self.state
|
||||
|
||||
def __eq__(self, other: Any) -> bool:
|
||||
if isinstance(other, self.__class__):
|
||||
return self.state == other.state
|
||||
if isinstance(other, str):
|
||||
return self.state == other
|
||||
return NotImplemented
|
||||
|
||||
def __hash__(self) -> int:
|
||||
return hash(self.state)
|
||||
|
||||
|
||||
class StatesGroupMeta(type):
|
||||
__parent__: "Optional[Type[StatesGroup]]"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue