from typing import Protocol, runtime_checkable from modules.task import QTask from modules.task_pool import QTaskPool from modules.variant import QVariant from modules.variant_set import QVariantSet from utils.types import A, C, Q, V @runtime_checkable class VTaskConstraintDynamic(Protocol[C, V, Q, A]): def _dyn(self): return None def check_if_satisfied( self, task: QTask[C, V, Q, A], task_pool: QTaskPool[C, V, Q, A], previous_variants: QVariantSet[C, V, Q, A], current_variant: QVariant[C, V, Q, A], ) -> bool: ...