Metadata-Version: 1.0
Name: haufe.hrs.configuration
Version: 0.5.5
Summary: A central configuration service for Zope 2/3-based applications  based on a pseudo-hierarchical INI-file format with model support for defining the configuration schema
Home-page: UNKNOWN
Author: Andreas Jung
Author-email: info@zopyx.com
License: ZPL
Description: Introduction
        ============
        
        haufe.hrs.configuration provides a central configuration service for
        Zope-based application with a pseudo-hierarchical configuration mechanism.
        
        Features
        ========
        
        * configurations based on INI files
        
        * configurations are pseudo-hierarchical (section names can be
        dotted-names  (like ``cms.somepath``, ``foo.bat.something.else``)
        
        * all valid configuration options are defined through a model
        (an INI-style file defining sections, their options, their types and default
        values). The model is used for performing type-checking and providing defaults
        
        * models and configuration files can be loaded all-in-one or incremental
        into the configuration service
        
        * optional supervision of changes to the configuration file (a change
        of a configuration file can trigger an immediate reload of the configuration)
        
        * very simple API
        
        * ZCML directives for defining the location of models and configuration files
        
        * integrates easily with Zope 2 and Zope 3
        
        * can be used outside Zope (pure Python applications) - the package has only
        a minor number of dependencies to other zope.* packages
        
        * good test coverage
        
        
        Defining a model
        ================
        
        A model definition may look like this::
        
        [cms]
        HRSCheckoutPath=string,default=42
        HRSCheckoutURL=string
        HRSImportPath=string
        HRSImportClientPath=string
        HRSPreviewPath=string
        HRSPreviewClientPath=string
        CvtSGMLtoRtfPath=string
        CvtSGMLtoRtfMaxWait=int
        ADB2StartURLbase=string
        ADB2Version=int
        ToolboxStartURLbase=string
        NormenDBStartURLbase=string
        VADBStartURLbase=string
        LauflistenStartURL=string
        HRS2UIStartURLbase=string
        MedienStartURLbase=string
        
        [cms.db]
        datenbank1=
        datenbank2=
        datenbank3=
        
        You see that the syntax is pretty simple. The syntax is always::
        
        <optionname> = <type>, [default=<default-value>]
        
        <optionname> is mandatory. <type> defaults to 'string' and can be omitted
        (other types are 'int', 'list', 'float', 'complex').  The '=' is mandatory
        (otherwise Python's configuration parser will spit out an error.  An optional
        default can be defined (otherwise None will be used).
        
        
        A related configuration file may look like this::
        
        [cms]
        HRSCheckout = /foo/bar
        adb2version = 44
        hrscheckoutpath = 12
        port = 22
        
        
        [toolbox]
        partition_id = Toolbox
        nginx_baseurl = http://weiss.nix.de/
        
        For values of the configuration are accessible through dotted-names like::
        
        cms.ADB2Version
        cms.HRSCheckoutURL
        cms.db.datenbank
        
        Usage
        =====
        
        From Python::
        
        from haufe.hrs.configuration import ConfigurationService
        
        service = ConfigurationService(watch=True)
        service.registerModel('example/model')
        service.loadConfiguration('example/sample_config/all-in-one.ini')
        print service.getConfigurations()
        print service.get('cms.ADB2Version')
        print service.get('datenbank', domain='cms.db')
        
        
        ZCML integration
        ================
        
        ``haufe.hrs.configuration`` provides two ZCML directives ``haufe:registerModel``
        and ``haufe:registerConfiguration``::
        
        <configure xmlns="http://namespaces.zope.org/zope"
        xmlns:haufe="http://namespaces.haufe.de/haufe">
        
        <hrs:registerModel
        model="haufe/hrs/configuration/tests/model"
        />
        
        <hrs:registerConfiguration
        configuration="haufe/hrs/configuration/tests/example-config.ini"
        />
        
        </configure>
        
        
        Credits
        =======
        The implementation is based on the ``cfgparse`` module by Dann Gass
        
        
        Author
        ======
        ``haufe.hrs.configuration`` was written by Andreas Jung for Haufe Mediengruppe, Freiburg, Germany
        and ZOPYX Ltd. & Co. KG, Tuebingen, Germany.
        
        
        License
        =======
        ``haufe.hrs.configuration`` is licensed under the Zope Public License 2.1.
        See the included ZPL.txt file.
        
        
        Contact
        -------
        
        | ZOPYX Ltd. & Co. KG
        | Andreas Jung
        | Charlottenstr. 37/1
        | D-72070 Tuebingen, Germany
        | E-mail: info at zopyx dot com
        | Web: http://www.zopyx.com
        
        
        Changelog
        =========
        
        0.5.5 (2009-01-13)
        ------------------
        
        - registerModel() now triggers a reload() in order
        to provide configuration support for configuration options
        with a default
        
        
        0.5.4 (2008-11-21)
        ------------------
        
        - refactored services
        
        0.5.3 (2008-11-21)
        ------------------
        
        - removed service_hrs.py since it moved into the HaufeCMS core
        
        
        0.5.2 (2008-11-17)
        ------------------
        
        - refactored notification thread handling
        
        0.5.1 (2008-11-12)
        ------------------
        
        - pre-set some instance vars within the service constructor
        
        0.5.0 (2008-11-12)
        ------------------
        
        - configurations without a default value will raise a KeyError
        in case no configuration value is available
        - service.get() raises now a KeyError instead of a ValueError in
        case of a lookup failure
        - renamed 'prefix' to 'domain'
        - cleaned-up ZCML configuration (names and namespace). Check with
        README.txt
        
        
        0.4.5 (2008-11-11)
        ------------------
        
        - configuration paths in ZCML configurations can now be relative
        to the location of the related ZCML file
        - minor cleanup
        
        0.4.4 (2008-11-07)
        ------------------
        
        - don't modify the logger level when running in a Zope environment
        - the notifications should now work more reliably. The reload()
        method is triggered after a delay of five seconds in order to handle
        slow editors
        
        0.4.3 (2008-11-06)
        ------------------
        * added explicit shutdown() function (required for proper Z2 integration)
        
        0.4.2 (internal release)
        ------------------------
        * added service.getConfigurationFor()
        
        0.4.1 (2008-11-03)
        ------------------
        * removed haufe.decorator dependency
        
        0.4.0 (2008-11-03)
        ------------------
        * first public release
        * updated documentation and tests
        * some internal cleanup in order to fix race-conditions
        
        0.3.0 (2008-11-02)
        ------------------
        * added pyinotify dependency
        * watching configuration file changes
        * sending ConfigurationChangedEvent upon reload()
        
        0.2.0 (2008-11-01)
        ------------------
        * added service implementation
        * added zcml implementation
        * more tests
        
        0.1.0 (2008-10-31)
        ------------------
        * Initial release
        
Keywords: Zope Configuration
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Framework :: Zope2
Classifier: Framework :: Zope3
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Intended Audience :: Developers
