Metadata-Version: 2.1
Name: python-config-parser
Version: 2.0.6
Summary: Project created to given the possibility of create dynamics config files
Home-page: https://github.com/BrunoSilvaAndrade/python-config-parser
Author: Bruno Silva de Andrade
Author-email: brunojf.andrade@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE-MIT
Requires-Dist: schema (>=0.7.1)
Requires-Dist: PyYaml (>=3.12.0)

# python-config-parser
This project was created to give you the possibility
of creating json and yaml/yml config files dynamically and access them using OOP

HOW TO INSTALL
---------------------------
Use pip to install it.

```
pip install python-config-parser
```


HOW TO USE
---------------------------

The model file.
You may use or not schema validation, if you want to use it, it will validate your whole config object before returning it.

If you don't want to use it, it won't validate the config object before returning that, and it may generate runtime access inconsistencies.

How to use schema
```
from schema import Use, And

SCHEMA_CONFIG = {
    "core":{
        "logging":{
            "format": And(Use(str), lambda string: len(string) > 0),
            "datefmt": And(Use(str), lambda string: len(string) > 0),
            "level": str
        },
        "allowed_clients":[
            {
                "ip":str, # <- Here you can use regex to validate the ip format
                "timeout":int
            }
        ]
    }
}

```

The config.yml file
```
core:
  logging:
    format: "[%(asctime)s][%(levelname)s]: %(message)s"
    datefmt: "%d-%b-%y %H:%M:%S"
    level: ${LEVEL_ENV_VARIABLE}
  allowed_clients:
  - ip: 192.168.0.10
    timeout: 60
  - ip: 192.168.0.11
    timeout: 100
```

The instance of Config Class:
```
from pyconfigparser import Config, ConfigException
import logging

try:
    config = Config.get_config(SCHEMA_CONFIG) # <- Here I'm using that SCHEMA_CONFIG we had declared, and the dir file default value is being used
except ConfigException as e:
    print(e)
    exit()

#to access your config you need just:


fmt = config.core.logging.format #look this, at this point I'm already using the config variable
dtfmt = config.core.logging.datefmt #here again

logging.getLogger(__name__)

logging.basicConfig(
    format=fmt,
    datefmt=dtfmt
    level=logging.INFO
)

#the list of object example:

for client in config.core.allowed_clients:
    print(client.ip)
    print(client.timeout)

```

Instanced the first obj, you can instance Config in other files of your project
just calling the Config without args like that:

```
from pyconfigparser import Config, ConfigException

config = Config.get_config() #At this point you already have the configuration properties in your config object
```


CONTRIBUTE
----------

Fork https://github.com/BrunoSilvaAndrade/python-config-parser/ , create commit and pull request to ``develop``.


