Class

Dataclasses make great config classes with the addition of to_dict.

import secrets
from dataclasses import dataclass, asdict

from .default import get_default_data_dir

@dataclass
class Config:
    data_dir: str = str(get_default_data_dir())
    data_file: str = str(get_default_data_dir() / "stuff")
    secret_key: str = secrets.token_hex()
    client_id: str | None = None
    client_secret: str | None = None

    def to_dict(self):
        return asdict(self)