New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tempenv

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tempenv

Environment Variable Context Manager

  • 2.0.0
  • PyPI
  • Socket score

Maintainers
1

tempenv

pypi Build Status codecov Code Style

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

Examples

Each of these examples can be found in the tests.

Set some environment variables temporarily: (see tests/example_set_test.py):

def test_set(self):
    user_before = os.environ.get("USER")
    with TemporaryEnvironment({"USER": "nobody", "OTHER": "foo"}):
        assert os.environ.get("USER") == "nobody"
        assert os.environ.get("OTHER") == "foo"
    assert os.environ.get("USER") == user_before

Changing the value to None will unset the environment variable during the code block (see tests/example_unset_test.py):

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

Changing a temporary environment variable during the scope will cause a warning (see tests/example_overwrite_test.py):

def test_overwritten_in_context(self):
    with self.assertWarnsRegex(EnvironmentVariableChangedWarning, "FOO"):
        with TemporaryEnvironment({"FOO": "BAR"}):
            os.environ["FOO"] = "SAM"

If you set the optional argument restore_if_changed=False then a change during the scope of the TemporaryEnvironment will not issue a warning and will not restore to the original value (see tests/example_ignore_test.py):

def test_ignored_overwrite_in_context(self):
    os.environ["FOO"] = "BAR"
    with TemporaryEnvironment({"FOO": "SAM"}, restore_if_changed=False):
        os.environ["FOO"] = "DEAN"
    assert os.environ["FOO"] == "DEAN"

You can use TemporaryEnvironment in a unittest scope as follows (see tests/example_unittest_test.py):

@TemporaryEnvironment({"USER": "Crowley"})
def test_check(self):
    assert os.environ.get("USER") == "Crowley"

License

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

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

Bugs

Please report any bugs that you find on GitHub. 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).

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc