Metadata-Version: 2.0
Name: pymlconf
Version: 0.5.2
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.5.1] Encoding option python2 compatibility
- [0.5.0] Adding encoding option
- [0.4.0] Adding DeferredConfigManager


