A configuration library supporting a hierarchical schema-driven configuration model, and allowing a schema to specify data conversion routines written in Python.

configuration, flexible, hierarchy, logging, python, simple, structured, typed
conda install -c conda-forge zconfig


ZConfig: Schema-driven configuration

Latest release Supported Python versions https://travis-ci.com/zopefoundation/ZConfig.svg?branch=master https://coveralls.io/repos/github/zopefoundation/ZConfig/badge.svg?branch=master Documentation Status

ZConfig is a configuration library intended for general use. It supports a hierarchical schema-driven configuration model that allows a schema to specify data conversion routines written in Python. ZConfig's model is very different from the model supported by the ConfigParser module found in Python's standard library, and is more suitable to configuration-intensive applications.

ZConfig schema are written in an XML-based language and are able to "import" schema components provided by Python packages. Since components are able to bind to conversion functions provided by Python code in the package (or elsewhere), configuration objects can be arbitrarily complex, with values that have been verified against arbitrary constraints. This makes it easy for applications to separate configuration support from configuration loading even with configuration data being defined and consumed by a wide range of separate packages.

ZConfig is licensed under the Zope Public License, version 2.1. See the file LICENSE.txt in the distribution for the full license text.

Reference documentation is available at https://zconfig.readthedocs.io.

Information on the latest released version of the ZConfig package is available at


You may either create an RPM and install this, or install directly from the source distribution.

There is a mailing list for discussions and questions about ZConfig; more information on the list is available at


Configuring Logging

One common use of ZConfig is to configure the Python logging framework. This is extremely simple to do as the following example demonstrates:

>>> from ZConfig import configureLoggers
>>> configureLoggers('''
... <logger>
...    level INFO
...    <logfile>
...       PATH STDOUT
...       format %(levelname)s %(name)s %(message)s
...    </logfile>
... </logger>
... ''')

The above configures the root logger to output messages logged at INFO or above to the console, as we can see in the following example:

>>> from logging import getLogger
>>> logger = getLogger()
>>> logger.info('An info message')
INFO root An info message
>>> logger.debug('A debug message')

A more common configuration would see STDOUT replaced with a path to the file into which log entries would be written.

For more information, see the the documentation.

Installing from the source distribution

For a simple installation:

python setup.py install

To install to a user's home-dir:

python setup.py install --home=<dir>

To install to another prefix (for example, /usr/local):

python setup.py install --prefix=/usr/local

If you need to force the python interpreter to (for example) python2:

python2 setup.py install

For more information on installing packages, please refer to the Python Packaging User Guide.