api / src /__init__.py
Eli Safra
Deploy SolarWine API (FastAPI + Docker, port 7860)
938949f
# SolarWine src package — re-exports for backward compatibility
# Modules live in subpackages: data, models, forecasting, shading, advisor, chatbot, genai
import sys
# Map old flat names to new subpackage locations
_REDIRECTS = {
# data
"ims_client": "src.data.ims_client",
"sensor_data_loader": "src.data.sensor_data_loader",
"data_schema": "src.data.data_schema",
"thingsboard_client": "src.data.thingsboard_client",
"data_providers": "src.data.data_providers",
# models
"farquhar_model": "src.models.farquhar_model",
"canopy_photosynthesis": "src.models.canopy_photosynthesis",
"phenology": "src.models.phenology",
# forecasting
"predictor": "src.forecasting.predictor",
"ts_predictor": "src.forecasting.ts_predictor",
"chronos_forecaster": "src.forecasting.chronos_forecaster",
"preprocessor": "src.forecasting.preprocessor",
"time_features": "src.forecasting.time_features",
# shading
"solar_geometry": "src.shading.solar_geometry",
"tracker_optimizer": "src.shading.tracker_optimizer",
"vine_3d_scene": "src.shading.vine_3d_scene",
"tradeoff_engine": "src.shading.tradeoff_engine",
# advisor
"day_ahead_advisor": "src.advisor.day_ahead_advisor",
"safety_rails": "src.advisor.safety_rails",
# chatbot
"vineyard_chatbot": "src.chatbot.vineyard_chatbot",
"routing_agent": "src.chatbot.routing_agent",
"llm_data_engineer": "src.chatbot.llm_data_engineer",
# genai
"genai_utils": "src.genai.utils",
}
def __getattr__(name: str):
if name in _REDIRECTS:
import importlib
mod = importlib.import_module(_REDIRECTS[name])
sys.modules[f"{__name__}.{name}"] = mod
return mod
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
def __dir__():
return sorted(_REDIRECTS.keys())