read_env and read_int typed config

Python
"""Read settings from environment variables with defaults and clear errors."""
import os


class ConfigError(ValueError):
    """A required or malformed environment value."""


def read_env(name: str, default: str | None = None, *, required: bool = False) -> str:
    """Return the stripped value; raise when required and absent."""
    value = os.environ.get(name, default)
    if value is None or not value.strip():
        if required:
            raise ConfigError(f"{name} is required but not set")
        return ""
    return value.strip()


def read_int(name: str, default: int | None = None, *, minimum: int = 0) -> int:
    """Parse an integer variable and validate its lower bound."""
    fallback = str(default) if default is not None else None
    raw = read_env(name, fallback, required=default is None)
    try:
        value = int(raw)
    except ValueError as exc:
        raise ConfigError(f"{name} must be an integer, got {raw!r}") from exc
    if value < minimum:
        raise ConfigError(f"{name} must be >= {minimum}, got {value}")
    return value


def read_flag(name: str, default: bool = False) -> bool:
    """Parse common truthy spellings; anything else is False."""
    raw = read_env(name, "1" if default else "0").lower()
    return raw in {"1", "true", "yes", "on"}