from dataclasses import dataclass from typing import Generic from modules.utils.types import A, C, Q, V from modules.variant import QVariant from modules.variant_builder.task_pool import QTaskPool from modules.variant_builder.task_selector import QTaskSelector from modules.variant_builder.variant_set import QVariantSet @dataclass class VariantBuilder(Generic[C, V, Q, A]): task_pool: QTaskPool[C, V, Q, A] previos_variants: QVariantSet[C, V, Q, A] current_variant: QVariant[C, V, Q, A] task_selector: QTaskSelector[C, V, Q, A]