Skip to main content

Simple .env-to-dataclass validator and static config holder

Project description

🧩 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_deal-0.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_deal-0.1.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file py_deal-0.1.0.tar.gz.

File metadata

  • Download URL: py_deal-0.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for py_deal-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d12a52ad0769a154f32ce13920cab7424e8a615bffa66054dba24fdd5bf212cc
MD5 788640713d426938a2eaa7e7e86c86bd
BLAKE2b-256 a2aab397162d1d057a8896f316a408ebde7239ce09d72c470636a1e71342e913

See more details on using hashes here.

File details

Details for the file py_deal-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: py_deal-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for py_deal-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8e1b331a331a356631a5688dbdb4a5b681ee2fc2c99fa076f12807907c879e3
MD5 a1c431c013b527c6e68f0c5948ca047b
BLAKE2b-256 32154e0c5a6d6f28f986c7e8bd3821885a2a3b1ba7b7436cfddeed1193ab544d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page