Skip to main content

🧩 DEAL — Dataclass Environment Auto Loader

PyPI version Python version License: MIT


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 .env file or system environment;
  • Masks sensitive values (e.g. fields containing "KEY") in str(Config);
  • Exposes a static Config holder accessible from anywhere in your code.

🚀 Installation

From PyPI

pip install py-deal

From source

git clone https://github.com/kundlatsch/py_deal.git
cd py_deal
pip install .

⚙️ Usage Example

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"])

Example .env

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

Output

=== 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

🧑‍💻 Development Setup

Clone and install dependencies

git clone https://github.com/kundlatsch/py_deal.git
cd py_deal
pip install -r requirements.txt

Run tests

pytest -v

# You can manually test the library with the included script
python -m scripts.manual_test

📜 License

MIT © 2025 Gustavo Kundlatsch

Release files for py-deal 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-deal 0.1.0
File Size Uploaded
py_deal-0.1.0.tar.gz 7.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-deal 0.1.0
File Interpreter ABI Platform
py_deal-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.6 kB

Release files / py_deal-0.1.0.tar.gz

Download URL py_deal-0.1.0.tar.gz
Size 7.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d12a52ad0769a154f32ce13920cab7424e8a615bffa66054dba24fdd5bf212cc
BLAKE2b-256 checksum
How to use checksums
a2aab397162d1d057a8896f316a408ebde7239ce09d72c470636a1e71342e913
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / py_deal-0.1.0-py3-none-any.whl

Download URL py_deal-0.1.0-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8e1b331a331a356631a5688dbdb4a5b681ee2fc2c99fa076f12807907c879e3
BLAKE2b-256 checksum
How to use checksums
32154e0c5a6d6f28f986c7e8bd3821885a2a3b1ba7b7436cfddeed1193ab544d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page