Load Environment Configuration With Defaults

Read required and optional settings from the environment with typed defaults, raising a clear error when a required value is missing.

PythonConfig Management

Code

snippet
import os
from dataclasses import dataclass


@dataclass(frozen=True)
class Config:
    database_url: str
    port: int
    debug: bool
    log_level: str


def load_config(environ: dict = None) -> Config:
    env = environ if environ is not None else os.environ
    database_url = env.get("DATABASE_URL")
    if not database_url:
        raise RuntimeError("DATABASE_URL is required but not set")
    return Config(
        database_url=database_url,
        port=int(env.get("PORT", "8000")),
        debug=env.get("DEBUG", "false").lower() == "true",
        log_level=env.get("LOG_LEVEL", "info"),
    )