ELBench-live / src /elbench /execution /selection.py
adelevett's picture
Deploy ELBench-live dashboard
5db30ac verified
Raw History Blame Contribute Delete
1.6 kB
from __future__ import annotations
from dataclasses import dataclass
from elbench.schemas.config import ProjectConfig
from .basic_education import DEFAULT_BASIC_MODULE_NAME
@dataclass(slots=True, frozen=True)
class ModuleSelection:
requested_modules: frozenset[str] | None
selected_modules: frozenset[str]
standard_modules: frozenset[str]
include_basic_education: bool
def resolve_module_selection(
project_config: ProjectConfig,
requested_modules: set[str] | None,
) -> ModuleSelection:
requested = frozenset(requested_modules) if requested_modules else None
if requested is None:
active_modules = [
module_name
for module_name in project_config.app.benchmark_modules.active
if module_name in project_config.modules
and project_config.modules[module_name].enabled
]
if active_modules:
selected = frozenset(active_modules)
else:
selected = frozenset(
module_name
for module_name, module_entry in project_config.modules.items()
if module_entry.enabled
)
else:
selected = requested
include_basic_education = DEFAULT_BASIC_MODULE_NAME in selected
standard_modules = frozenset(
module_name for module_name in selected if module_name != DEFAULT_BASIC_MODULE_NAME
)
return ModuleSelection(
requested_modules=requested,
selected_modules=selected,
standard_modules=standard_modules,
include_basic_education=include_basic_education,
)