"""Compatibility registry wrappers for daily feature plugins.""" from typing import Type from pipeline.derived.base import BaseDerivedData from pipeline.derived.registry import ( available_derived, get_derived, load_derived_module, register_derived, ) from pipeline.features.base import BaseFeature def register_feature(cls: Type[BaseFeature]) -> Type[BaseFeature]: """Register a legacy feature plugin in the derived-data registry.""" return register_derived(cls) def available_features() -> list[str]: """Sorted names of all registered feature/derived-data plugins.""" return available_derived() def get_feature(name: str, **params) -> BaseDerivedData: """Instantiate a registered feature/derived-data plugin by name.""" if name == "minute_daily_summary": from pipeline.features.library.minute_daily_summary import MinuteDailySummaryFeature return MinuteDailySummaryFeature(**params) return get_derived(name, **params) def load_feature_module(spec: str) -> None: """Import an external module so its ``@register_feature`` classes register.""" load_derived_module(spec)