Useful environment toolchain for python
Context Processor that overrides environment vars.
>>> @override_environment(DEBUG=False, FOO="Bar") >>> def foo(): >>> print(os.getenv("FOO")) >>> return os.getenv("DEBUG") >>> foo() FOO "DEBUG"
>>> with override_environment(DEBUG="False", FOO="Bar"): >>> print(os.getenv("FOO")) >>> os.getenv("DEBUG") FOO "DEBUG"
Wrap a configDict inside configure_logging, then logging level could be controlled by environment variables
LOGGING = configure_logging({ "loggers": { "module": { "handlers": ["console"], "level": "INFO", }, } })
For this example, environment variable must be set as LOGGING_LEVEL_module=DEBUG.
Similar to os.getenv() but evaluates string content (default) into simple python types.
>>> os.environ['FOO'] = "1" >>> os.getenv('FOO') "1" >>> get_env('FOO') 1 >>> os.environ['FOO'] = "bar" >>> get_env('FOO') "bar" >>> os.environ['FOO'] = "True" >>> os.getenv('FOO') "True" >>> get_env('FOO') True >>> os.environ['FOO'] = "[1,2,3]" >>> os.getenv('FOO') "[1,2,3]" >>> get_env('FOO') [1, 2, 3]
it works for list, tuples, dictionaries, numbers, booleans and strings. And is safe!