https://github.com/pasaopasen/py-env-parser
environment to python dictionary parser util
https://github.com/pasaopasen/py-env-parser
converter environment environment-variables pypi-package python python-utility syntax
Last synced: about 1 year ago
JSON representation
environment to python dictionary parser util
- Host: GitHub
- URL: https://github.com/pasaopasen/py-env-parser
- Owner: PasaOpasen
- License: mit
- Created: 2023-09-17T14:04:31.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-09T08:52:17.000Z (about 1 year ago)
- Last Synced: 2025-02-23T11:05:19.883Z (about 1 year ago)
- Topics: converter, environment, environment-variables, pypi-package, python, python-utility, syntax
- Language: Python
- Homepage:
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://pypi.org/project/env2dict/)
[](https://pepy.tech/project/env2dict)
[](https://pepy.tech/project/env2dict)
[](https://pepy.tech/project/env2dict)
- [Environment to python dictionary parser util](#environment-to-python-dictionary-parser-util)
- [About](#about)
- [Syntax](#syntax)
- [Examples](#examples)
- [How to use](#how-to-use)
- [More info](#more-info)
# Environment to python dictionary parser util
```sh
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: **Prefix***Body***OperationSuffix** 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
```python
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.