Перейти к содержанию

StateMachine

State()

Представляет отдельное состояние в FSM-группе.

При использовании внутри StatesGroup, автоматически присваивает уникальное имя в формате 'ИмяКласса:имя_поля'.

Source code in maxapi/context/state_machine.py
def __init__(self) -> None:
    self.name: str | None = None

StatesGroup

Базовый класс для описания группы состояний FSM.

Атрибуты должны быть экземплярами State. Метод states() возвращает список всех состояний в виде строк.

states() classmethod

Получить список всех состояний в формате 'ИмяКласса:имя_состояния'.

Returns:

Type Description
list[str]

Список строковых представлений состояний

Source code in maxapi/context/state_machine.py
@classmethod
def states(cls) -> list[str]:
    """
    Получить список всех состояний в формате 'ИмяКласса:имя_состояния'.

    Returns:
        Список строковых представлений состояний
    """
    states: list[str] = []

    seen: set[str] = set()

    for base in cls.__bases__:
        if issubclass(base, StatesGroup) and base is not StatesGroup:
            for state in base.states():
                cls._append_unique_state(states, seen, state)

    for attr in dir(cls):
        value = getattr(cls, attr)
        if isinstance(value, State):
            cls._append_unique_state(states, seen, str(value))
        elif (
            isinstance(value, type)
            and issubclass(value, StatesGroup)
            and value is not StatesGroup
        ):
            cls._append_nested_states(states, seen, value)

    return states