from typing import Protocol, runtime_checkable from modules.task import QTask from utils.types import A, C, Q, V @runtime_checkable class VTaskConstraintStatic(Protocol[C, V, Q, A]): # dull func to distinct dynamic and static types def _sta(self): return None def is_satisfied(self, task: QTask[C, V, Q, A]) -> bool: ...