Skip to main content

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 @oneenv decorator to declare environment variable templates.
  • Generated .env.example: Automatically creates a consolidated .env.example file from registered templates.
  • Diff Functionality: Compare changes between different versions of your .env.example file.
  • Duplicate Key Detection: Identify duplicate environment variable definitions across modules.
  • Command Line Tool: Easily run commands like oneenv template and oneenv diff from 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 automatically register environment variable templates.

Note: It is sufficient to only provide the description attribute in your template. Other attributes such as default, required, and choices are optional.

Minimal Example: Using Only description

If you prefer the simplest setup, you can provide only the description attribute. For example:

from oneenv import oneenv

@oneenv
def minimal_template():
    return {
        "SIMPLE_VAR": {
            "description": "A simple environment variable."
        }
    }

This minimal example works perfectly and emphasizes the ease of use. Additionally, since OneEnv is a wrapper around python-dotenv, it can also be used like dotenv to load environment variables.

Dotenv Integration 🔄

OneEnv is more than just an environment template generator. Being a wrapper around python-dotenv, it also allows you to seamlessly load environment variables into your application.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oneenv-0.1.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

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

oneenv-0.1.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oneenv-0.1.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for oneenv-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ebf4886666c46f1568a3c714932b200771baec327f261808482ee698e7a357eb
MD5 24dbffee2b6fbfcc8d11eaf43e5a9d02
BLAKE2b-256 4c03564bcbf8c19e977415cd7a9a7dfa84ae7b6b1705571f77def2266199b1bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: oneenv-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for oneenv-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31c9f6464ef02ca3687119376c13d9ca09fc8936d634453bd69446e526e4fd29
MD5 ab3f64cec24529a62dbce1587ad7d5a8
BLAKE2b-256 859af55859959cade49d8a2eea4aca2e3579c5066d719be657bab090138ca664

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