Skip to main content

Project created to given the possibility of create dynamics config files

Project description

python-config-parser

This project was created to give you the possibility of creating json and yaml/yml config files dynamically using OOP

HOW TO INSTALL

Use pip to install it.

pip install python-config-parser

HOW TO USE

The model file.

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.

Project details


Download files

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

Source Distribution

python-config-parser-2.0.5.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

python_config_parser-2.0.5-py3-none-any.whl (4.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page