Efficient environment variables management and typing for python.
Project description
rhea
Efficient environment variables management and typing for python.
Installation
pip install -U rhea
Features
- Typed retrieval of environment variables.
- Handling of optional, secret, and local variables.
- Reading from different sources: os, json files, yaml files.
- Collection of parsed parameters.
Usage
Reading typed values from a params
from rhea import Rhea
rhea_config = Rhea(bool_value1='1',
bool_value2='false',
bool_value3=True)
rhea_config.get_boolean('bool_value1')
# True
rhea_config.get_boolean('bool_value2')
# False
rhea_config.get_boolean('bool_value3')
# True
Reading typed values from a env vars
import os
from rhea import Rhea
rhea_config = Rhea.read_configs(os.environ)
Reading typed values from different sources
import os
from rhea import Rhea
rhea_config = Rhea.read_configs([os.environ,
'json_file.json',
'yaml_file.yaml',
'another_file_override.json',
{'foo': 'bar'}])
Base types
examples:
BOOL_ENV_VALUE1: 1
BOOL_ENV_VALUE2: true
BOOL_ENV_VALUE3: f
BOOL_ENV_VALUE4: on
INT_ENV_VALUE1: '1'
INT_ENV_VALUE2: -100
STRING_ENV_VALUE: 'some string'
FLOAT_ENV_VALUE1: '1.1'
FLOAT_ENV_VALUE2: -1.3
FLOAT_ENV_VALUE3: 1111.1
FLOAT_ENV_VALUE4: -33
DICT_ENV_VALUE: {"foo": "bar", "1": "2"}
LIST_ENV_VALUE: 'foo, bar, boo'
URI_ENV_VALUE1: user:pass@host.com
URI_ENV_VALUE2: user:pass@host:4000
AUTH_ENV_VALUE: user:pass
Reading:
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
rhea_config.get_boolean('BOOL_ENV_VALUE1')
# True
rhea_config.get_boolean('BOOL_ENV_VALUE2')
# True
rhea_config.get_boolean('BOOL_ENV_VALUE3')
# False
rhea_config.get_boolean('BOOL_ENV_VALUE4')
# True
rhea_config.get_int('INT_ENV_VALUE1')
# 1
rhea_config.get_int('INT_ENV_VALUE2')
# -100
rhea_config.get_string('STRING_ENV_VALUE')
# some string
rhea_config.get_float('FLOAT_ENV_VALUE1')
# 1.1
rhea_config.get_float('FLOAT_ENV_VALUE1')
# -1.3
rhea_config.get_float('FLOAT_ENV_VALUE1')
# 1111.1
rhea_config.get_float('FLOAT_ENV_VALUE1')
# -33.0
rhea_config.get_dict('DICT_ENV_VALUE')
# {'foo': 'bar', '1': '2'}
rhea_config.get_list('LIST_ENV_VALUE')
# ['foo', 'bar', 'boo']
rhea_config.get_uri('URI_ENV_VALUE1')
# UriSpec('user', 'pass', 'host')
rhea_config.get_uri('URI_ENV_VALUE2')
# UriSpec('user', 'pass', 'host:4000')
rhea_config.get_uri('AUTH_ENV_VALUE')
# AuthSpec('user', 'pass')
List of base types
examples:
BOOLS_ENV_VALUE: '[1, 0, "true", "false", "t", "f", "on", "off"]'
INTS_ENV_VALUE: '[1, 0, -100]'
STRINGS_ENV_VALUE: '["some_string", "another_string"]'
FLOATS_ENV_VALUE: '[1.1, -1.3, 0.03, 1111.1, 1.]'
DICTS_ENV_VALUE: '[{"foo": "bar", "1": 2}, {"foo": "bar", "1": 2}]'
DICT_OF_DICTS_ENV_VALUE: '{"key1": {"foo": "bar", "1": 2}, "key2": {"foo": "bar", "1": 2}}'
URIS_ENV_VALUE: '["user:pass@host.com", "user:pass@host:4000"]'
AUTHS_ENV_VALUE: '["user1:pass1", "user2:pass2"]'
Reading:
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
rhea_config.get_boolean('BOOLS_ENV_VALUE', is_list=True)
# [True, False, True, False, True, False, True, False]
rhea_config.get_int('INTS_ENV_VALUE', is_list=True)
# [1, 0, -100]
rhea_config.get_string('STRINGS_ENV_VALUE', is_list=True)
# ['some_string', 'another_string']
rhea_config.get_float('FLOATS_ENV_VALUE', is_list=True)
# [1.1, -1.3, 0.03, 1111.1, 1.0]
rhea_config.get_dict('DICTS_ENV_VALUE', is_list=True)
# [{'foo1': 'bar1', '1': 2}, {'foo2': 'bar2', '3': 4}]
rhea_config.get_dict_of_dicts('DICT_OF_DICTS_ENV_VALUE')
# {'key1': {'foo': 'bar', '1': 2}, 'key2': {'foo': 'bar', '1': 2}}
rhea_config.get_uri('URIS_ENV_VALUE', is_list=True)
# [UriSpec('user', 'pass', 'host'), UriSpec('user', 'pass', 'host:4000')]
rhea_config.get_uri('AUTHS_ENV_VALUE', is_list=True)
# [UriSpec('user1', 'pass1'), UriSpec('user2', 'pass2')]
Optional values and default values
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
rhea_config.get_boolean('BOOL_ENV_VALUE', is_optional=True)
# None
rhea_config.get_boolean('BOOL_ENV_VALUE', is_optional=True, default=True)
# True
rhea_config.get_int('INT_ENV_VALUE', is_optional=True)
# None
rhea_config.get_int('INT_ENV_VALUE', is_optional=True, default=101)
# 101
rhea_config.get_float('FLOAT_ENV_VALUE', is_optional=True)
# None
rhea_config.get_float('FLOAT_ENV_VALUE', is_optional=True, default=-3.3)
# -3.3
rhea_config.get_float('STRING_ENV_VALUE', is_optional=True)
# None
rhea_config.get_float('STRING_ENV_VALUE', is_optional=True, default='default')
# default
Value validation
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
# INT_ENV_VALUE = 11
rhea_config.get_int('INT_ENV_VALUE', options=[1, 2, 3])
# raise RheaError
rhea_config.get_int('INT_ENV_VALUE', options=[1, 2, 3, 11])
# 11
Parsed data
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
rhea_config.get_requested_data(include_locals=False, include_secrets=False)
# {'key1': 'value1', ...}
Example with Django
from rhea import Rhea
rhea_config = Rhea.read_configs([...])
DEBUG = rhea_config.get_boolean('DJANGO_DEBUG_MODE', is_optional=True, default=False)
SECRET_KEY = rhea_config.get_string('POLYAXON_SECRET_KEY', is_secret=True)
Running tests
pytest
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rhea-0.5.0.tar.gz
(18.8 kB
view details)
Built Distribution
rhea-0.5.0-py2.py3-none-any.whl
(17.9 kB
view details)
File details
Details for the file rhea-0.5.0.tar.gz
.
File metadata
- Download URL: rhea-0.5.0.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.6.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5cdd4bcf52ee7ef84d372a504665246e92a5935aa9de6dba4dab4c58d9be6cf2 |
|
MD5 | 15562c83114d779c71991d29ad24af71 |
|
BLAKE2b-256 | 3c9ef4b928d2b54b94373b7662ec816e987f8332f82f1397dec8335e8e4593e7 |
File details
Details for the file rhea-0.5.0-py2.py3-none-any.whl
.
File metadata
- Download URL: rhea-0.5.0-py2.py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.29.0 CPython/3.6.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f460bbe834b2acc91adcac39e2375940d8e7a8bfb8fb748681fc84ea328269f6 |
|
MD5 | 51f5a1e9dd4898e5e7099da75034f3e8 |
|
BLAKE2b-256 | fb95ad161b80d731d7922d9aafbd0f0981686cb0e6721763beed565474e7b45e |