Skip to main content

Efficient environment variables management and typing for python.

Project description

License: MIT Build Status PyPI version Codacy Badge Slack

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

FOSSA Status

Project details


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.4.7.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

rhea-0.4.7-py2.py3-none-any.whl (16.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file rhea-0.4.7.tar.gz.

File metadata

  • Download URL: rhea-0.4.7.tar.gz
  • Upload date:
  • Size: 17.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

Hashes for rhea-0.4.7.tar.gz
Algorithm Hash digest
SHA256 bd237e366ea35f418fe06e1ea11baf6cbc3aa6c167e2f01f0b5013b892e00067
MD5 4187abf0ca9abc3acc031179eddbdaa1
BLAKE2b-256 bab0b44df88d945109b531d6465393188aa8c91c47a42d6f104ebd47731283f0

See more details on using hashes here.

File details

Details for the file rhea-0.4.7-py2.py3-none-any.whl.

File metadata

  • Download URL: rhea-0.4.7-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.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

Hashes for rhea-0.4.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e9ce33102a593fcfc295652a2d6bd59f9ea44dc863dfe1b73b4ac8e57ad246e1
MD5 73e6f4c3c0a2a29988e069dd06fed18f
BLAKE2b-256 4ebd6f6a91d5be4f0664db1c295ac575d0ea01a34460b5a9b012fb692be03ad2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page