Как правильно обрабатывать ошибки mypy [attr-defined] из-за переходов, динамически добавляющих атрибуты is_*?Python

Программы на Python
Anonymous
Как правильно обрабатывать ошибки mypy [attr-defined] из-за переходов, динамически добавляющих атрибуты is_*?

Сообщение Anonymous »

МИР

Код: Выделить всё

from transitions import Machine

class TradingSystem:
def __init__(self):
self.machine = Machine(model=self, states=['RUNNING'], initial='RUNNING')

def check_running(self) -> None:
if self.is_RUNNING():
print("System is running")
Пример использования

Код: Выделить всё

system = TradingSystem()
system.check_running()
Проблема

Код: Выделить всё

mypy transitions_mypy.py
выдает ошибку:

Код: Выделить всё

transitions_mypy.py:9: error: "TradingSystem" has no attribute "is_RUNNING"  [attr-defined]
Этого можно избежать, обойдя mypy, например добавив # type: ignore[attr-defined] в конце строки 9.
Но каков правильный путь? Лучше ли избегать обхода mypy? Возможно, определив атрибут вручную?

Подробнее здесь: https://stackoverflow.com/questions/785 ... ransitions

Вернуться в «Python»