refactored
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
2024-11-18 14:17:31 +01:00
parent 67ca83983b
commit f0b4017166
6 changed files with 211 additions and 281 deletions

46
src/config.py Normal file
View File

@ -0,0 +1,46 @@
import os
import json
from dataclasses import dataclass, fields
from typing import Any
class ConfigException (Exception): pass
def default_env_loader(var_name, default_value=None):
v = os.getenv(var_name, default_value)
if not v:
raise ConfigException(var_name)
return v
def json_env_loader(var_name):
v = default_env_loader(var_name)
vv = json.loads(v)
return vv
@dataclass(init=False, frozen=False)
class Config:
MQTT_BROKER : str
MQTT_PORT : int
MQTT_CLIENT_PREFIX : str
BOXES : dict
BOX_TOPIC_PREFIXES : dict
CENTRAL_TOPICS : dict
OFF_TEMPERATURE : str
LOW_TEMPERATURE : str
MAINTENANCE_TEMPERATURE : str
DEFAULT_HIGH_TEMPERATURE : str
STATUS_TOPIC : str
CONTEXT_TOPIC_PREFIX : str
def __init__(self):
for f in fields(self):
v = os.getenv(f.name)
if not v:
raise ConfigException(f.name)
if f.type == int:
v = int(v)
elif f.type == dict:
v = json.loads(v)
setattr(self, f.name, v)