Source code for cascade_at.settings.settings

import json
from typing import Dict, Any

from cascade_at.settings.settings_config import SettingsConfig
from cascade_at.core.db import db_tools
from cascade_at.core.errors import SettingsError
from cascade_at.core.log import get_loggers

LOG = get_loggers(__name__)


[docs]def load_settings(settings_json: Dict[str, Any]) -> SettingsConfig: """ Loads settings from a settings_json. Parameters ========== settings_json dictionary of settings Examples ======== >>> from cascade_at.settings.base_case import BASE_CASE >>> settings = load_settings(BASE_CASE) """ settings = SettingsConfig(settings_json) errors = settings.validate_and_normalize() if errors: print(f"Configuration does not validate {errors}") raise SettingsError("Configuration does not validate", errors, settings_json) return settings
[docs]def settings_json_from_model_version_id(model_version_id: int, conn_def: str) -> Dict[str, any]: """ Loads settings for a specific model version ID into a json. Parameters ========== model_version_id the model version ID conn_def the connection definition like 'dismod-at-dev' """ df = db_tools.ezfuncs.query( f"""SELECT parameter_json FROM epi.model_version_at WHERE model_version_id = {model_version_id}""", conn_def=conn_def ) return json.loads(df['parameter_json'][0])
[docs]def settings_from_model_version_id(model_version_id: int, conn_def: str) -> SettingsConfig: """ Loads settings for a specific model version ID. Parameters ========== model_version_id the model version ID conn_def the connection definition like 'dismod-at-dev' Examples ======== >>> settings = settings_from_model_version_id(model_version_id=395837, >>> conn_def='dismod-at-dev') """ parameter_json = settings_json_from_model_version_id( model_version_id=model_version_id, conn_def=conn_def ) settings = load_settings(parameter_json) return settings