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: Define environment variable templates by inheriting from the OneEnv class.
  • 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 OneEnv Class

Below is an example of how to use the @oneenv decorator in your code:

from oneenv import OneEnv

class MyLibConfig(OneEnv):
    def get_template(self) -> dict:
        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 class with just the required description:

from oneenv import OneEnv

class SimpleConfig(OneEnv):
    def get_template(self) -> dict:
        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.2.tar.gz (13.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.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: oneenv-0.1.2.tar.gz
  • Upload date:
  • Size: 13.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.2.tar.gz
Algorithm Hash digest
SHA256 5b45bd5362f57cca9bfe2340d9e61a3a63c2cf901dc222d083a72969706b3e1f
MD5 c6a3b7e8f23dcdc6509a8808d74a3353
BLAKE2b-256 795de929a9d960df418485acbaa97a123fcb31167fa38d50163cfb97703e9380

See more details on using hashes here.

File details

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

File metadata

  • Download URL: oneenv-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dc1760a6652be81bc5ce4c938938f3715a9cebb17ae230de186e133875ea6683
MD5 6c7cfe53fab548459ab4d2f8f282e6b1
BLAKE2b-256 843c2e650da371b83665dc882c2581c5f6f20a1a0f5461dd28a4aa9d48c1b909

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