environconfig
=============

.. image:: https://img.shields.io/pypi/v/environconfig.svg
    :target: https://pypi.python.org/pypi/environconfig

.. image:: https://img.shields.io/pypi/pyversions/environconfig.svg
    :target: https://pypi.python.org/pypi/environconfig

.. image:: https://travis-ci.org/buguroo/environconfig.svg?branch=master
    :target: https://travis-ci.org/buguroo/environconfig


`environconfig` allows you to use environment variables in Python
with a declarative syntax.

A quick example:

.. code-block:: python

    from environconfig import EnvironConfig
    from environconfig import StringVar, IntVar

    class DBCfg(EnvironConfig):
        """Database configuration from the environment."""
        HOSTNAME = StringVar(default='localhost')
        PORT = IntVar(default=3306)
        USERNAME = StringVar()
        PASSWORD = StringVar()
        CHARSET = StringVar(default='utf8mb4')
        NAME = StringVar(default='mydatabase')

    # Now you can start using it
    connection = pymysql.connect(host=DBCfg.HOSTNAME,
                                 user=DBCfg.USERNAME,
                                 password=DBCfg.PASSWORD,
                                 db=DBCfg.NAME,
                                 charset=DBCfg.CHARSET,
                                 cursorclass=pymysql.cursors.DictCursor)

You can check more examples in the `examples` directory.
    

Features
--------

- Built-in basic types: String, Bool, Int, Float...
- Easy Customizable: `CustomVar` (just pass a callable to make the conversion)
- No mocking necessary for testing: Just instantiate your config with a dictionary.
- Easy build complex constructions with environment data: See `MethodVar`


Collaboration
-------------

- We are always open to pull requests and accept new var types.
