46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""Algorithm package with side-effect-free, lazy compatibility exports."""
|
|
|
|
from importlib import import_module
|
|
from typing import Any
|
|
|
|
|
|
_EXPORT_MODULES = {
|
|
"flow_data_clean": "app.algorithms.cleaning",
|
|
"pressure_data_clean": "app.algorithms.cleaning",
|
|
"pressure_sensor_placement_sensitivity": "app.algorithms.sensor",
|
|
"pressure_sensor_placement_kmeans": "app.algorithms.sensor",
|
|
"valve_isolation_analysis": "app.algorithms.isolation.valve",
|
|
"LeakageIdentifier": "app.algorithms.leakage",
|
|
"PipelineHealthAnalyzer": "app.algorithms.health",
|
|
"run_burst_location": "app.algorithms.burst_location",
|
|
**{
|
|
name: "app.algorithms.simulation.scenarios"
|
|
for name in (
|
|
"convert_to_local_unit",
|
|
"burst_analysis",
|
|
"valve_close_analysis",
|
|
"flushing_analysis",
|
|
"contaminant_simulation",
|
|
"age_analysis",
|
|
"pressure_regulation",
|
|
)
|
|
},
|
|
}
|
|
|
|
__all__ = list(_EXPORT_MODULES)
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
try:
|
|
module_name = _EXPORT_MODULES[name]
|
|
except KeyError as exc:
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from exc
|
|
|
|
value = getattr(import_module(module_name), name)
|
|
globals()[name] = value
|
|
return value
|
|
|
|
|
|
def __dir__() -> list[str]:
|
|
return sorted({*globals(), *__all__})
|