Metadata-Version: 2.1
Name: confix
Version: 0.2.2
Summary: Language agnostic configuration parser
Home-page: https://pypi.python.org/pypi/confix
Author: Giampaolo Rodola'
Author-email: g.rodola@gmail.com
License: MIT
Keywords: config,yaml,toml,json,ini,sensitive,password
Platform: Platform Independent
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
License-File: LICENSE

.. 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.
