Skip to main content

.env file parser with interpolation and multi-file support

Project description

philiprehberger-env-file

Tests PyPI version Last updated

.env file parser with interpolation and multi-file support.

Installation

pip install philiprehberger-env-file

Usage

Load into Environment

from philiprehberger_env_file import load_env

# Load .env (default)
load_env()

# Load multiple files (later files override earlier)
load_env(".env", ".env.local")

# Don't override existing env vars
load_env(override=False)

Parse Without Modifying Environment

from philiprehberger_env_file import parse_env_file

config = parse_env_file(".env")
print(config["DATABASE_URL"])

Writing .env files

from philiprehberger_env_file import dump_env

dump_env(
    {"DATABASE_URL": "postgres://localhost/db", "DEBUG": "1"},
    ".env",
)

Values containing whitespace, #, ", or ' are automatically quoted. Pass quote=False to disable.

Merging without loading

from philiprehberger_env_file import merge_env

# Later files override earlier ones; os.environ is untouched
config = merge_env(".env", ".env.local")

Supported Syntax

# Comments
KEY=value
export KEY=value

# Quoted values
SINGLE='no interpolation here'
DOUBLE="supports\nnewlines"

# Variable interpolation
BASE_URL=https://api.example.com
API_URL=${BASE_URL}/v1

# Empty values
EMPTY_VAR=

# Inline comments (unquoted values only)
HOST=localhost # this is a comment

API

Function / Class Description
load_env(*paths, override=True) Load .env files into os.environ, returns dict of loaded vars
parse_env_file(path) Parse a .env file, returns dict without modifying environment
dump_env(data, path, quote=True) Write a dict to a .env file, auto-quoting values that need it
merge_env(*paths) Parse multiple .env files into one dict; missing files are skipped, os.environ is not modified

Development

pip install -e .
python -m pytest tests/ -v

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

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

philiprehberger_env_file-0.2.0.tar.gz (179.8 kB view details)

Uploaded Source

Built Distribution

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

philiprehberger_env_file-0.2.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_env_file-0.2.0.tar.gz.

File metadata

  • Download URL: philiprehberger_env_file-0.2.0.tar.gz
  • Upload date:
  • Size: 179.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for philiprehberger_env_file-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4a29929a64c7bc8417e586246765a2fe2f4ecc01d9c595ff511bdf9de982393d
MD5 dfe3fe3654cf549bf2fd62dbae6600dd
BLAKE2b-256 566d1e4c6e24c08959afac1706fbd5ae5483e4a5eb028e8f602a1174ae37e5d8

See more details on using hashes here.

File details

Details for the file philiprehberger_env_file-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_env_file-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 887381f92f67abfb374a167021d56ac5408b44d2a0bcdcbe3864e2a1e371615a
MD5 45d87af1f56d3dbd5479e2afcd391d46
BLAKE2b-256 5db0b8fe308b4ef7741642b6b69c2360b9fa90b75e7efa0683c0fab678c10b35

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