Created
April 30, 2021 14:39
-
-
Save cicorias/4392097c2a49be6d5a2dfdf841644534 to your computer and use it in GitHub Desktop.
smart getenv for python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from ast import literal_eval | |
__version__ = '1.1.0' | |
def getenv(name, **kwargs): | |
""" | |
Retrieves environment variable by name and casts the value to desired type. | |
If desired type is list or tuple - uses separator to split the value. | |
""" | |
default_value = kwargs.pop('default', None) | |
desired_type = kwargs.pop('type', str) | |
list_separator = kwargs.pop('separator', ',') | |
value = os.getenv(name, None) | |
if value is None: | |
if default_value is None: | |
return None | |
else: | |
return default_value | |
if desired_type is bool: | |
if value.lower() in ['false', '0']: | |
return False | |
else: | |
return bool(value) | |
if desired_type is list or desired_type is tuple: | |
value = value.split(list_separator) | |
return desired_type(value) | |
if desired_type is dict: | |
return dict(literal_eval(value)) | |
return desired_type(value) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment