DEAL (Dataclass Environment Auto Loader) is a lightweight Python library that loads and validates .env files into a typed dataclass schema.
It automatically:
- Casts environment variables to the correct types (
str,int,float,bool,Optional,list,dict); - Reads from a
.envfile or system environment; - Masks sensitive values (e.g. fields containing
"KEY") instr(Config); - Exposes a static
Configholder accessible from anywhere in your code.
pip install py-dealgit clone https://github.com/kundlatsch/py_deal.git
cd py_deal
pip install .
from dataclasses import dataclass
from typing import List, Dict, Any
from deal.config import Config
@dataclass
class Settings:
APP_NAME: str
DEBUG: bool
PORT: int
ALLOWED_HOSTS: List[str]
DB_CONFIG: Dict[str, Any]
AWS_KEY: str
DB_KEY: str
API_TOKEN: str
# Load configuration from .env
Config.load(Settings, env_path=".env")
# Print masked output
print(str(Config))
# Access raw values
print(Config.settings.APP_NAME)
print(Config.settings.DB_CONFIG["port"])
APP_NAME=My Cool App
DEBUG=true
PORT=8080
ALLOWED_HOSTS=localhost,127.0.0.1
DB_CONFIG={"host": "localhost", "port": 5432}
AWS_KEY=abc123SECRET
DB_KEY=mydbsuperkey
API_TOKEN=tok_xyz_999
=== Loaded Settings ===
APP_NAME='My Cool App'
DEBUG=True
PORT=8080
ALLOWED_HOSTS=['localhost', '127.0.0.1']
DB_CONFIG={'host': 'localhost', 'port': 5432}
AWS_KEY=abc*****
DB_KEY=myd*****
API_TOKEN='tok_xyz_999'
My Cool App
5432
Clone and install dependencies
git clone https://github.com/kundlatsch/py_deal.git
cd py_deal
pip install -r requirements.txtRun tests
pytest -v
# You can manually test the library with the included script
python -m scripts.manual_testMIT © 2025 Gustavo Kundlatsch