Simple .env-to-dataclass validator and static config holder
Project description
🧩 DEAL — Dataclass Environment Auto Loader
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.
🚀 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
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d12a52ad0769a154f32ce13920cab7424e8a615bffa66054dba24fdd5bf212cc
|
|
| MD5 |
788640713d426938a2eaa7e7e86c86bd
|
|
| BLAKE2b-256 |
a2aab397162d1d057a8896f316a408ebde7239ce09d72c470636a1e71342e913
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8e1b331a331a356631a5688dbdb4a5b681ee2fc2c99fa076f12807907c879e3
|
|
| MD5 |
a1c431c013b527c6e68f0c5948ca047b
|
|
| BLAKE2b-256 |
32154e0c5a6d6f28f986c7e8bd3821885a2a3b1ba7b7436cfddeed1193ab544d
|