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.
Code
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"),
)Report a problem with this exampleOpens a pre-filled issue on GitHub.