Metadata-Version: 2.1
Name: env2dict
Version: 0.1.0
Summary: Environment to python dictionary parser util
Home-page: https://github.com/PasaOpasen/py-env-parser
Author: Demetry Pascal
Author-email: qtckpuhdsa@gmail.com
Maintainer: Demetry Pascal
License: MIT
Description: [![PyPI version](https://badge.fury.io/py/env2dict.svg)](https://pypi.org/project/env2dict/)
        [![Downloads](https://pepy.tech/badge/env2dict)](https://pepy.tech/project/env2dict)
        [![Downloads](https://pepy.tech/badge/env2dict/month)](https://pepy.tech/project/env2dict)
        [![Downloads](https://pepy.tech/badge/env2dict/week)](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.
        
        
Keywords: env,environment
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
