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.
- 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)
Code is solid and fully tested (100% coverage). Its API may change (break) between major versions though.