Skip to main content

Environment Variable Context Manager

Project description

https://travis-ci.org/jeking3/tempenv.svg?branch=master https://codecov.io/gh/jeking3/tempenv/branch/master/graph/badge.svg

Manage environment variables in a temporary scope.

Some products use environment variables as a primary means to supply credentials. To ensure the lifetime of exposed credentials is short, wrap them in a TemporaryEnvironment so that they are automatically destroyed on scope exit.

You can:

  • Set or unset environment variables inside a with code block,
  • Get a warning if the code block modifies one of the environment variables,
  • Optionally bypass restoration of the original environment variable value if the code block modifies the environment variable.

Install

Install the latest version of tempenv:

$ pip install tempenv

Example

Set some environment variables temporarily:

import os
from tempenv import TemporaryEnvironment

print(f"USER (before) = {os.environ.get('USER')}")
with TemporaryEnvironment({
    "SOMETHING": "abcdefg",
    "USER": "nobody"
}):
    print(f"USER (inside) = {os.environ.get('USER')}")
print(f"USER (after ) = {os.environ.get('USER')}")

Then run the code:

$ python3 test.py
USER (before) = None
USER (inside) = nobody
USER (after ) = None

Changing the value to None will unset the environment variable during the code block:

import os
from tempenv import TemporaryEnvironment

os.environ["DEBUG"] = "1"
with TemporaryEnvironment({"DEBUG": None}):
    assert "DEBUG" not in os.environ
assert "DEBUG" in os.environ

License

Released under the Apache Software License, Version 2.0 (see LICENSE):

Copyright (C) 2019 James E. King III (@jeking3) <jking@apache.org>

Bugs

Please report any bugs that you find here. Or, even better, fork the repository on GitHub and create a pull request (PR). We welcome all changes, big or small, and we will help you make the PR if you are new to git (just ask on the issue and/or see CONTRIBUTING.rst).

Project details


Download files

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

Files for tempenv, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size tempenv-0.1.0.tar.gz (8.4 kB) File type Source Python version None Upload date Hashes View
Filename, size tempenv-0.1.0-py3-none-any.whl (6.4 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page