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.

Metadata

Release files for env2dict 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for env2dict 0.1.0
File Size Uploaded
env2dict-0.1.0.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for env2dict 0.1.0
File Interpreter ABI Platform
env2dict-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.6 kB

Release files / env2dict-0.1.0.tar.gz

Download URL env2dict-0.1.0.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4a113ef92c63f2ce007a1ccbe2076d22586f284da30c8c0479594455b15bc6ff
BLAKE2b-256 checksum
How to use checksums
e8ca1c6f5be1a69d21bc6bf668eacb6a012973e808423a6d16b23cb22bae699e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.8.17

Release files / env2dict-0.1.0-py3-none-any.whl

Download URL env2dict-0.1.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8f987f2bc1e246805937c92f06441dab937e04960010a62c0f050019f1758c74
BLAKE2b-256 checksum
How to use checksums
fa78201ce2fca08fe0f15d0520f7fa865782b70f7db4b929a2f45b73b086f30d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.8.17

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page