A hierarchical, easy-to-use, powerful configuration module for Python
Project description
This module allows a hierarchical configuration scheme with support for mappings and sequences, cross-references between one part of the configuration and another, the ability to flexibly access real Python objects without full-blown eval(), an include facility, simple expression evaluation and the ability to change, save, cascade and merge configurations. Interfaces easily with environment variables and command-line options. It has been developed on python 2.3 but should work on version 2.2 or greater.
A simple example - with the example configuration file:
messages: [ { stream : `sys.stderr` message: 'Welcome' name: 'Harry' } { stream : `sys.stdout` message: 'Welkom' name: 'Ruud' } { stream : $messages[0].stream message: 'Bienvenue' name: Yves } ]
a program to read the configuration would be:
from config import Config f = file('simple.cfg') cfg = Config(f) for m in cfg.messages: s = '%s, %s' % (m.message, m.name) try: print >> m.stream, s except IOError, e: print e
which, when run, would yield the console output:
Welcome, Harry Welkom, Ruud Bienvenue, Yves
See the tutorial for more information.