mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
import os
|
|
from functools import lru_cache
|
|
from pathlib import Path
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
from typing import Optional
|
|
|
|
from utils.logger import setup_logger
|
|
|
|
logger = setup_logger()
|
|
|
|
|
|
def resolve_env_file() -> Optional[str]:
|
|
env = os.getenv("ENVIRONMENT", "local")
|
|
|
|
backend_dir = Path(__file__).resolve().parents[1]
|
|
|
|
if env == "local":
|
|
env_file = backend_dir / ".env"
|
|
print("USING ENV FILE:", env_file)
|
|
logger.debug("USING ENV FILE:", env_file)
|
|
return str(env_file)
|
|
|
|
if env == "test":
|
|
env_file = backend_dir / ".env.test"
|
|
logger.debug("USING ENV FILE:", env_file)
|
|
return str(env_file)
|
|
|
|
# prod = no env file
|
|
return None
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
API_KEY: str = "changeme"
|
|
API_KEY_NAME: str = "X-API-KEY"
|
|
SECRET_KEY: str = "changeme"
|
|
ENVIRONMENT: str = "changeme"
|
|
DATA_BUCKET: str = "changeme"
|
|
PLAN_TRIGGER_BUCKET: str = "changeme"
|
|
ENGINE_SQS_URL: str = "changeme"
|
|
CATEGORISATION_SQS_URL: str = "changeme"
|
|
PASHUB_TO_ARA_SQS_URL: str = "changeme"
|
|
POSTCODE_SPLITTER_SQS_URL: str = "changeme"
|
|
|
|
# Third parties
|
|
EPC_AUTH_TOKEN: str = "changeme"
|
|
GOOGLE_SOLAR_API_KEY: str = "changeme"
|
|
|
|
# Database settings
|
|
DB_HOST: str = "changeme"
|
|
DB_PASSWORD: str = "changeme"
|
|
DB_USERNAME: str = "changeme"
|
|
DB_PORT: str = "changeme"
|
|
DB_NAME: str = "changeme"
|
|
|
|
# Prediction buckets
|
|
SAP_PREDICTIONS_BUCKET: str = "changeme"
|
|
CARBON_PREDICTIONS_BUCKET: str = "changeme"
|
|
HEAT_PREDICTIONS_BUCKET: str = "changeme"
|
|
HEATING_KWH_PREDICTIONS_BUCKET: str = "changeme"
|
|
HOTWATER_KWH_PREDICTIONS_BUCKET: str = "changeme"
|
|
SAP_BASELINE_PREDICTIONS_BUCKET: str = "changeme"
|
|
CARBON_BASELINE_PREDICTIONS_BUCKET: str = "changeme"
|
|
HEAT_BASELINE_PREDICTIONS_BUCKET: str = "changeme"
|
|
|
|
# Other S3 buckts
|
|
ENERGY_ASSESSMENTS_BUCKET: str = "changeme"
|
|
|
|
ORDNANCE_SURVEY_API_KEY: str = "changeme"
|
|
|
|
HUBSPOT_API_KEY: Optional[str] = None
|
|
# Sharepoint
|
|
SHAREPOINT_CLIENT_ID: Optional[str] = None
|
|
SHAREPOINT_CLIENT_SECRET: Optional[str] = None
|
|
SHAREPOINT_TENANT_ID: Optional[str] = None
|
|
DOMNA_SHAREPOINT_ID: Optional[str] = None
|
|
OSMOSIS_ACD_SHAREPOINT_ID: Optional[str] = None
|
|
PRIVATE_PAY_SHAREPOINT_ID: Optional[str] = None
|
|
SOCIAL_HOUSING_WAVE_3_SHAREPOINT_ID: Optional[str] = None
|
|
|
|
# Pas Hub
|
|
PASHUB_EMAIL: Optional[str] = None
|
|
PASHUB_PASSWORD: Optional[str] = None
|
|
|
|
# Optional AWS creds (only required in local)
|
|
AWS_ACCESS_KEY_ID: Optional[str] = None
|
|
AWS_SECRET_KEY_ID: Optional[str] = None
|
|
AWS_DEFAULT_REGION: Optional[str] = None
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=resolve_env_file(),
|
|
env_file_encoding="utf-8",
|
|
)
|
|
|
|
|
|
@lru_cache()
|
|
def get_settings():
|
|
return Settings()
|
|
|
|
|
|
@lru_cache()
|
|
def get_prediction_buckets():
|
|
return {
|
|
"sap_change_predictions": get_settings().SAP_PREDICTIONS_BUCKET,
|
|
"heat_demand_predictions": get_settings().HEAT_PREDICTIONS_BUCKET,
|
|
"carbon_change_predictions": get_settings().CARBON_PREDICTIONS_BUCKET,
|
|
"heating_kwh_predictions": get_settings().HEATING_KWH_PREDICTIONS_BUCKET,
|
|
"hotwater_kwh_predictions": get_settings().HOTWATER_KWH_PREDICTIONS_BUCKET,
|
|
# Score model - SAP re-baselining model
|
|
"retrofit_sap_baseline_predictions": get_settings().SAP_BASELINE_PREDICTIONS_BUCKET,
|
|
"retrofit_carbon_baseline_predictions": get_settings().CARBON_BASELINE_PREDICTIONS_BUCKET,
|
|
"retrofit_heat_baseline_predictions": get_settings().HEAT_BASELINE_PREDICTIONS_BUCKET,
|
|
}
|