OneEnv: Environment variable management and generation tool
Project description
OneEnv 🌟 
OneEnv is an environment variable management and generation tool for Python applications. It wraps python-dotenv to simplify handling of environment variable templates and .env files.
What Problems Does OneEnv Solve? 🛠️
Managing environment variables for multiple libraries can be tedious and error-prone, especially when each library requires its own configuration. OneEnv streamlines the process by consolidating environment variable templates into a single .env.example file, reducing manual work and ensuring consistency across projects.
Features 🚀
- Template Collection: Use the
@oneenvdecorator to declare environment variable templates. - Team-Friendly: Perfect for microservices and modular development where multiple small libraries need to manage their own environment variables.
- Decentralized Configuration: Each library can define its own environment variables independently, making it easy to maintain and scale in team development.
- Generated
.env.example: Automatically creates a consolidated.env.examplefile from registered templates. - Diff Functionality: Compare changes between different versions of your
.env.examplefile. - Duplicate Key Detection: Identify duplicate environment variable definitions across modules.
- Command Line Tool: Easily run commands like
oneenv templateandoneenv difffrom your terminal.
Supported Environments 🖥️
- Python: ≥ 3.11
- Operating Systems: Windows, macOS, Linux
Installation 📦
You can install OneEnv easily via pip:
pip install oneenv
For development mode, install from the source using:
pip install -e .
Usage 🚀
Generating Environment Template
Generate a consolidated .env.example file using the registered templates:
oneenv template [-o OUTPUT_FILE]
Comparing Environment Files
Compare two .env files to see what has changed:
oneenv diff previous.env current.env
Example: Using the @oneenv Decorator
Below is an example of how to use the @oneenv decorator in your code:
from oneenv import oneenv
@oneenv
def my_env_template():
return {
"MY_API_KEY": {
"description": "API key for accessing the service.",
"default": "",
"required": True,
"choices": []
},
"MODE": {
"description": "Application mode setting.",
"default": "development",
"required": False,
"choices": ["development", "production"]
}
}
Place the above code within your library or application to define environment variable templates.
Note: When implementing get_template(), it is sufficient to only provide the description attribute. Other attributes such as default, required, and choices are optional.
Minimal Example: Simple Template Definition
For the simplest setup, you can create a function with just the required description:
from oneenv import oneenv
@oneenv
def simple_config():
return {
"SIMPLE_VAR": {
"description": "A simple environment variable."
}
}
This minimal example works perfectly and emphasizes the ease of use. The @oneenv decorator automatically registers this template function for environment variable management.
Dotenv Integration 🔄
OneEnv wraps python-dotenv, so you can use all dotenv functions directly through OneEnv.
Example: Loading Environment Variables Using OneEnv
You can use OneEnv to load environment variables from a .env file just like you would with python-dotenv:
from oneenv import load_dotenv, dotenv_values
# Load environment variables into the current process
load_dotenv()
# Alternatively, get them as a dictionary
env_vars = dotenv_values(".env")
print(env_vars)
The integration allows you to manage your environment variables in one centralized place while benefiting from all the features of python-dotenv.
Running Tests 🧪
Make sure your virtual environment is active, then run:
pytest tests
Contributing 🤝
Contributions are welcome! Feel free to open issues or submit pull requests on GitHub.
License ⚖️
This project is licensed under the MIT License.
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
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 oneenv-0.1.3.tar.gz.
File metadata
- Download URL: oneenv-0.1.3.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c52473e7415d59169b6b87df7dbf94d2e0bde770dd1794bf21e6db4297d03f7
|
|
| MD5 |
78b4e8edf47187a6dd2f451d7688ca2e
|
|
| BLAKE2b-256 |
65a7af871735e3dbdd87f5e2bae2c9fe935ef2cf408478a86f2967e3e98621a3
|
File details
Details for the file oneenv-0.1.3-py3-none-any.whl.
File metadata
- Download URL: oneenv-0.1.3-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c98ba667b180d739350e59afb3ee63dc57c6de464810fc892ad2a3660a70b056
|
|
| MD5 |
b64b3eeaa6aafe8b8cf1ccc613dad017
|
|
| BLAKE2b-256 |
b75f47f0a17fd7786d3fe6a4d7276db4c1b6680291226093f38f334edda69ae8
|