37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""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)
|