Исходный код vk_bot.state.group
from collections.abc import Iterator
from typing import Any
from vk_bot.state.manager import State
[документация]
class StatesGroup:
_states: dict[str, State]
@classmethod
def __init_subclass__(cls, **kwargs: Any) -> None:
super().__init_subclass__(**kwargs)
cls._states = {}
for key, value in cls.__dict__.items():
if isinstance(value, State):
cls._states[key] = value
if not value._name:
value._name = f"{cls.__name__}:{key}"
[документация]
@classmethod
def get_state(cls, name: str) -> str | None:
state = cls._states.get(name)
return state._name if state else None
[документация]
@classmethod
def get_all_states(cls) -> list[str]:
return [state._name for state in cls._states.values() if state._name]
[документация]
@classmethod
def is_in_group(cls, state: str) -> bool:
return any(state == s._name for s in cls._states.values())
def __contains__(self, item: str) -> bool:
return any(state._name == item for state in self._states.values())
def __iter__(self) -> Iterator[State]:
return iter(self._states.values())
def __repr__(self) -> str:
return f"<StatesGroup '{self.__class__.__name__}'>"