Skip to main content

Language agnostic configuration parser

Project description

Downloads this month Linux tests (Travis) Windows tests (Appveyor) Test coverage (coverall.io) Latest version License

Confix

About

Confix is a language-agnostic configuration parser for Python. It lets you define the default configuration of an app as a standard Python class, then overwrite its attributes from a static configuration file (be it YAML, JSON, INI or TOML) and / or via environment variables. In doing so it validates the overridden settings by:

  • making sure they are of the same type

  • (optional) marking them as mandatory (useful for passwords)

  • (optional) validating them via a callable

Example:

config file:

# config.yml
password: secret

python file:

# main.py
from confix import register, parse

@register()
class config:
    username = 'ftp'
    password = None

parse('config.yaml')
print(config.username)
print(config.password)

shell:

$ python main.py
ftp
secret

For more examples see docs.

Main features

  • supports YAML, JSON, INI and TOML serialization formats.

  • can be easily extended to support other formats.

  • support for Python 3

  • small code base

  • 100% test coverage

  • allows you to define ‘schemas’ in order to validate fields and mark them as required:

# ftp.py
from confix import register, schema

@register()
class config:
    port = schema(default=21, validator=lambda x: isinstance(x, int))
    password = schema(required=True)

Status

Code is solid and fully tested (100% coverage). Its API may change (break) between major versions though.

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

confix-0.2.2.tar.gz (44.8 kB view hashes)

Uploaded Source

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