Skip to main content

A simple Python package to load, validate, and type-cast environment variables from .env files using a schema.

Project description

dotenv-schema

PyPI version Python Versions License Test Coverage Build Status

A simple, lightweight Python tool to load, validate, and type-cast environment variables from .env files using a schema. This package helps you manage configuration in a type-safe way while keeping your secrets out of your codebase.

Features

  • 📝 Load variables from .env files into your Python environment
  • ✅ Validate required environment variables
  • 🔄 Automatic type casting (string, int, float, boolean)
  • 🛡️ Schema validation with default values
  • 🪶 Lightweight with zero dependencies

Installation

pip install dotenv-schema

For development:

git clone https://github.com/skyspec28/dotenv-schema.git
cd dotenv-schema
pip install .

Usage

Basic Usage

from dotenv_schema import load_env_file

# Load variables from .env file
env_vars = load_env_file()
print(env_vars)  # {'DATABASE_URL': 'postgres://...', 'DEBUG': 'true'}

# Access through os.environ
import os
print(os.environ['DATABASE_URL'])  # 'postgres://...'

With Schema Validation

from dotenv_schema import load_env_file, apply_schema

# Define your schema
schema = {
    'DATABASE_URL': {
        'required': True,
        'type': str
    },
    'DEBUG': {
        'type': bool,
        'default': False
    },
    'PORT': {
        'type': int,
        'default': 8000
    }
}

# Load and validate
raw_env = load_env_file()
config = apply_schema(raw_env, schema)

print(config['DEBUG'])  # True (boolean, not string)
print(config['PORT'])   # 8000 (integer, not string)

Example .env file

# Database configuration
DATABASE_URL=postgres://user:password@localhost:5432/mydb

# Application settings
DEBUG=true
LOG_LEVEL=info

# API keys (keep these secret!)
API_KEY=your-secret-key-here

API Reference

load_env_file(path='.env') -> dict

Loads environment variables from a file into os.environ and returns them as a dictionary.

  • path: Path to the .env file (default: '.env')
  • returns: Dictionary of environment variables

apply_schema(raw_env: dict, schema: dict) -> dict

Validates and transforms environment variables according to the provided schema.

  • raw_env: Dictionary of raw environment variables
  • schema: Dictionary defining the validation rules
  • returns: Dictionary of validated and transformed environment variables

License

MIT License - see the LICENSE file for details.

Testing

The project uses pytest for testing. To run the tests:

# Install the package with development dependencies
pip install ".[dev]"

# Run tests
pytest

# Run tests with coverage report
pytest --cov=dotenv_schema

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate.

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

dotenv_schema-0.1.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

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

dotenv_schema-0.1.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dotenv_schema-0.1.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dotenv_schema-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f3ac666fd3b6321fc9b04a8b25a99f8383bd2f7a7fa939d9c05a05f0ef8e4aed
MD5 268aa9483f8c538f03f94dde853c3080
BLAKE2b-256 a87d175d63a1a51dbb39b3a57f1236e4fd21a4e2472f1fc6612adb18dead83e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dotenv_schema-0.1.0.tar.gz:

Publisher: publish-to-pypi.yml on skyspec28/dotenv_schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: dotenv_schema-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dotenv_schema-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3b49a0b1f3782e3019630ea70fb3f676bd8f028cbae31aba7e99787200b13a7
MD5 f7a04141df705c77e4500349c3a0d75a
BLAKE2b-256 957a0649ce0f6a197d24093621a17d1049035b6623372fa62fa9043bb6fd97e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dotenv_schema-0.1.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on skyspec28/dotenv_schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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