- Introduced new routes and API endpoints for managing personal reference values. - Updated the SettingsPage to include a section for reference values with navigation to manage them. - Enhanced the backend to support reference values in the data layer and versioning. - Added necessary imports and UI components for a seamless user experience.
48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""
|
|
Registry for built-in algorithm ids → callables.
|
|
|
|
Only code registers algorithms; templates reference ids declared here.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Callable, Dict, Mapping
|
|
|
|
from data_layer.training_profile.algorithms.builtin.linear_range import (
|
|
ALGORITHM_ID as LINEAR_RANGE_ID,
|
|
linear_range_score,
|
|
)
|
|
from data_layer.training_profile.algorithms.builtin.threshold_band import (
|
|
ALGORITHM_ID as THRESHOLD_BAND_ID,
|
|
threshold_band_score,
|
|
)
|
|
from data_layer.training_profile.models import AlgorithmRunResult
|
|
|
|
AlgorithmFn = Callable[..., AlgorithmRunResult]
|
|
|
|
_REGISTRY: Dict[str, AlgorithmFn] = {}
|
|
|
|
|
|
def register_algorithm(algorithm_id: str, fn: AlgorithmFn) -> None:
|
|
if algorithm_id in _REGISTRY:
|
|
raise ValueError(f"Algorithm already registered: {algorithm_id}")
|
|
_REGISTRY[algorithm_id] = fn
|
|
|
|
|
|
def get_algorithm(algorithm_id: str) -> AlgorithmFn:
|
|
if algorithm_id not in _REGISTRY:
|
|
raise KeyError(f"Unknown algorithm_id: {algorithm_id}")
|
|
return _REGISTRY[algorithm_id]
|
|
|
|
|
|
def list_algorithm_ids() -> tuple[str, ...]:
|
|
return tuple(sorted(_REGISTRY.keys()))
|
|
|
|
|
|
def _register_defaults() -> None:
|
|
register_algorithm(THRESHOLD_BAND_ID, threshold_band_score)
|
|
register_algorithm(LINEAR_RANGE_ID, linear_range_score)
|
|
|
|
|
|
_register_defaults()
|