Metadata-Version: 2.0
Name: pymlconf
Version: 0.5.1
Summary: Python high level configuration library
Home-page: http://github.com/pylover/pymlconf
Author: Vahid Mardani
Author-email: vahid.mardani@gmail.com
License: UNKNOWN
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: Freeware
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: pyyaml (>=3.10)

pymlconf
========

**pymlconf** (Python YAML Configuration Library) helps to easily manage
and access to your application configurations which was already Written
in `YAML <http://pyyaml.org>`__ language.

It can merge two or more configuration files according their names and
automatically treat file-names as namespaces, or simply merge several
parts of configuration(YAML-string or Python-dict) on arbitrary config
node. for more informations see
`documentations <https://github.com/pylover/pymlconf#documentation>`__.

Config file

::

    # filename: config.yaml
    app:
        root_dir: %(here)s

Python code:

::

    # filename: config.py
    from pymlconf import ConfigManager

    config_str='''
    app:
        name: MyApp
        listen:
            sock1:
                addr: %(hostname)s
                port: %(port)s
        languages:
            - english
            - {language: persian, country: iran}

    logfile: /var/log/myapp.log
    '''

    cfg = ConfigManager(init_value=config_str, context=dict(hostname='192.168.0.1', port=8080))
    cfg.load_files('path/to/config.yaml')

    print cfg.app.name
    print cfg.app.listen.sock1.addr
    print cfg.app.languages[0]
    print cfg.app.languages[1].country
    print cfg.logfile

    # --------- Prints:
    # MyApp
    # 192.168.0.1
    # english
    # iran
    # /var/log/myapp.log

Deferred(Proxied)
~~~~~~~~~~~~~~~~~

::

    # module configuration.py
    from pymlconf import DeferredConfigManager
    settings = DeferredConfigManager()

    # another_module.py
    from configuration import settings
    def serve_request():
        return settings.message

    # in application startup
    from configuration import settings
    settings.load(
        # the signature is the same as the `ConfigManager.__init__`
    )

Installation
~~~~~~~~~~~~

Latest stable version:

::

    $ pip install pymlconf
    # or
    $ easy_install pymlconf

Development version:

::

    $ pip install git+git@github.com:pylover/pymlconf.git

>From source:

::

    $ cd source_dir
    $ python setup.py install

Manually download it from
`pypi <https://pypi.python.org/pypi/pymlconf>`__

Unit-Tests
~~~~~~~~~~

Install nose and change current directory to project's dir:

::

    $ pip install nose  
    $ cd path/to/pymlconf 

Running tests:

::

    $ nosetests


Or

::

    $ python setup.py test

Syntax Reference
~~~~~~~~~~~~~~~~

You can find the canonical syntax reference on
`PyYAML <http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLsyntax>`__ site

Documentation
~~~~~~~~~~~~~

-  [pythonhosted.org] (http://pythonhosted.org/pymlconf/)
-  [readthedocs.org] (http://pymlconf.readthedocs.org/en/latest/)

Change Log
~~~~~~~~~~

-  [0.4.0] Adding DeferredConfigManager



