GitXplorerGitXplorer
g

confix

public
24 stars
5 forks
2 issues

Commits

List of commits on branch master.
Unverified
2b0a6defc0c0c75486d392f8b5b3f8cd8ffe42e1

git tag release

ggiampaolo committed 8 months ago
Unverified
87c2640a0613fc375659761671952a881964cda6

pre-release

ggiampaolo committed 8 months ago
Unverified
a72bbd02232767fab17075ceda8d01eca01cd31b

update git pre commit script

ggiampaolo committed 8 months ago
Unverified
0223005753408351ecbf8835bdec2f1b360e2c92

add ruff

ggiampaolo committed 8 months ago
Unverified
81592adeb6c974c4eb6a0844206520df16df0ad6

rm old CI files

ggiampaolo committed 8 months ago
Unverified
bfcbb768c9819297df179099cf443cc76265e552

modernize some code

ggiampaolo committed 8 months ago

README

The README file for this repository.

.. image:: https://img.shields.io/pypi/dm/confix.svg :target: https://pypi.python.org/pypi/confix#downloads :alt: Downloads this month

.. image:: https://api.travis-ci.org/giampaolo/confix.png?branch=master :target: https://travis-ci.org/giampaolo/confix :alt: Linux tests (Travis)

.. image:: https://ci.appveyor.com/api/projects/status/kmkc7f7muvrcr8oq?svg=true :target: https://ci.appveyor.com/project/giampaolo/confix :alt: Windows tests (Appveyor)

.. image:: https://coveralls.io/repos/giampaolo/confix/badge.svg?branch=master&service=github :target: https://coveralls.io/github/giampaolo/confix?branch=master :alt: Test coverage (coverall.io)

.. image:: https://img.shields.io/pypi/v/confix.svg :target: https://pypi.python.org/pypi/confix/ :alt: Latest version

.. image:: https://img.shields.io/pypi/l/confix.svg :target: https://pypi.python.org/pypi/confix/ :alt: License

Confix

Quick links

  • Home page <https://github.com/giampaolo/confix>__
  • Documentation <http://pythonhosted.org/confix/>__
  • Blog <http://grodola.blogspot.com/search/label/confix>__
  • Forum <https://groups.google.com/forum/#!forum/python-confix>__
  • Download <https://pypi.python.org/pypi?:action=display&name=confix#downloads>__

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 <http://pythonhosted.org/confix/#override-a-key-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:

.. code-block:: yaml

# config.yml
password: secret

python file:

.. code-block:: python

# main.py
from confix import register, parse

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

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

shell:

.. code-block:: bash

$ python main.py
ftp
secret

For more examples see docs <http://pythonhosted.org/confix>_.

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:

.. code-block:: python

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.