Skip to main content

OneEnv: Environment variable management and generation tool

Project description

OneEnv 🌟 PyPI Downloads

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.
  • 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.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 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


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.3.tar.gz (14.0 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.3-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

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

Hashes for oneenv-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0c52473e7415d59169b6b87df7dbf94d2e0bde770dd1794bf21e6db4297d03f7
MD5 78b4e8edf47187a6dd2f451d7688ca2e
BLAKE2b-256 65a7af871735e3dbdd87f5e2bae2c9fe935ef2cf408478a86f2967e3e98621a3

See more details on using hashes here.

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

Hashes for oneenv-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c98ba667b180d739350e59afb3ee63dc57c6de464810fc892ad2a3660a70b056
MD5 b64b3eeaa6aafe8b8cf1ccc613dad017
BLAKE2b-256 b75f47f0a17fd7786d3fe6a4d7276db4c1b6680291226093f38f334edda69ae8

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