Metadata-Version: 2.4
Name: dsenv
Version: 0.2.0
Summary: Damn Simple Environ Vars
Author-email: Marcin Nowak <marcin.j.nowak@gmail.com>
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/marcinn/dsenv
Project-URL: Repository, https://github.com/marcinn/dsenv
Project-URL: Issues, https://github.com/marcinn/dsenv/issues
Keywords: environment variables,deployments,settings,env,dotenv,configurations,python
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Topic :: Utilities
Classifier: Topic :: System :: Systems Administration
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Provides-Extra: dev
Requires-Dist: tox>=4.0; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Dynamic: license-file

# dsenv

![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/dsenv)
![PyPI Downloads](https://img.shields.io/pypi/dm/dsenv)
![PyPI Version](https://img.shields.io/pypi/v/dsenv)
![GitHub Stars](https://img.shields.io/github/stars/marcinn/dsenv)
![License](https://img.shields.io/github/license/marcinn/dsenv)

Damn Simple Environment Variables loader for Python.
Supports Python 3.7 and newer.

## Install

```bash
pip install dsenv
```

## Usage

```python
from dsenv import load_env, load_merged_envs

# Load from ~/.env
load_env()

# Load from a custom path
load_env("./.env", override_env=False)

# Force override values already present in the environment
load_env("./.env", override_env=True)

# Merge multiple env files (later files win), but keep existing process env vars
load_merged_envs(".env", ".env.local", override_env=False)

# Merge multiple env files and override existing process env vars
load_merged_envs(".env", ".env.local", override_env=True)
```

## Supported .env Syntax

- `KEY=VALUE`
- `export KEY=VALUE`
- `KEY="VALUE"` or `KEY='VALUE'`
- Comments with `#` on empty lines or after unquoted values

## Tests

```bash
pytest
```

Or use tox (if you have multiple Python versions installed):

```bash
tox
```

## TODO

- Add more parser behavior tests (especially edge cases) before changing parsing rules.
- Expand support for escape sequences in quoted values (starting with double quotes).
- Refine comment parsing edge cases (quoted vs unquoted values, `#` handling).
- Evaluate multiline values support.
- Evaluate variable interpolation support.

## License

BSD-3
