Skip to main content

PyPI version Downloads Downloads Downloads

Environment to python dictionary parser util

pip install env2dict

About

This small package provides an ability of easy setting/overriding Python variables from environment. It is expected that u will use it to override your configuration data without changing configuration files itself, what is especially useful for containers-oriented applications.

Syntax

To use it, u need to define environment variables matches the pattern: PrefixBodyOperationSuffix where:

  • Prefix is any word to determine target variables; for instance, DD prefix means to use only variables starts with DD; can be empty, what means to select all available variables (not recommended)
  • Body is the name of the target configuration parameter
  • OperationSuffix is the one of next available suffixes (by default, but u can change your defaults):
    • _NUMBER to convert variable value to integer (environment variables are always strings)
    • _FLOAT to convert variable value to float
    • _FLAG to convert variable value to optional[boolean] at that values:
      • 1/yes/Yes/True/true equal true
      • 0/no/No/False/false equal false
      • None/null/NULL equal null
    • _LIST means to parse variable value to string list
    • _LIST_APPEND means to parse variable value to string list and append to existing list instead of override
    • _JSON means to parse variable value as json string
    • no suffix means that no conversion will be performed, so variable value will stay a string

Moreover, u can put nested dicts values using __ separator (or other on your choice) in the environment variable name.

Note also that u can combine these suffixes to perform more complicated transformations.

Examples

  • env variable DD_S_COUNT_NUMBER=10 (with prefix DD_ conversation) will be converted to S_COUNT=10 Python object
  • DD_S_COUNT=10 🠚 S_COUNT="10"
  • DD_USE_THIS_FLAG=yes 🠚 USE_THIS=True
  • DD_USE_THIS_FLAG=true 🠚 USE_THIS=True
  • DD_USE_THIS_FLAG=no 🠚 USE_THIS=False
  • DD_ALLOWED_HOSTS_LIST_APPEND=127.0.0.1;dev.ocr.com;dev.web.com will append a list ['127.0.0.1', 'dev.ocr.com', 'dev.web.com'] to ALLOWED_HOSTS variable
  • DD_READ_ME_JSON={\"a\": 1, \"b\": [1, 2]} will be translated to READ_ME={'a': 1, 'b': [1, 2]}
  • DD_SOME_DICT__KEY1__KEY2=postgres will create a dictionary SOME_DICT={'KEY1': {'KEY2': 'postgres'}} if it doesn't exist and will add a field in existing dictionary by aforementioned route
  • DD_A__B_LIST_APPEND_JSON=[1, 2, 3, [1, 2, \"3\"]] will append [1, 2, 3, [1, 2, "3"]] to the end of value V from A={"B": V}

How to use

from env2dict import parse_vars

new_vars = parse_vars(
    prefix='DD_',
    initial_vars=None,
    source=None
)

More info

Please take a look at:

  • parse_vars function docstring
  • tests directory of this package repo.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

env2dict-0.1.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

env2dict-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file env2dict-0.1.0.tar.gz.

File metadata

  • Download URL: env2dict-0.1.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.17

File hashes

Hashes for env2dict-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a113ef92c63f2ce007a1ccbe2076d22586f284da30c8c0479594455b15bc6ff
MD5 4a22d1f86c9500b3b81efb64a10d284e
BLAKE2b-256 e8ca1c6f5be1a69d21bc6bf668eacb6a012973e808423a6d16b23cb22bae699e

See more details on using hashes here.

File details

Details for the file env2dict-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: env2dict-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.17

File hashes

Hashes for env2dict-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f987f2bc1e246805937c92f06441dab937e04960010a62c0f050019f1758c74
MD5 9da587cf6ff04b2f43619cdc53da02eb
BLAKE2b-256 fa78201ce2fca08fe0f15d0520f7fa865782b70f7db4b929a2f45b73b086f30d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page