
Objectives
----------

The goal of the program is to enable defining a feature based on
configuration values set from python code. The directive imports
a python object and uses an attribute of it as a boolean value
to declare a feature or not.


    <five:configfeature
        feature="myFeature"
        instance=".config"
        attribute="Five2_3"
        negate="True"
    />


Instance can be used as a module itself (in which case a module level
attribute can be looked up) or a class instance (in this case an attribute
of the instance will be used). If there is no such attribute on the instance,
a dictionary key access will be attempted, allowing dictionaries to be used.

The given attribute is used as a boolean value. It must exist, or else
an error is raised.

The featured fiveconfig.zcml serves both as an example and also can be
used to identify which version of five is in effect. The configuration
can be used both by zope configuration (by using the features), or
from python code, by directly importing the module that forms the base
for the feature setup.

The negate attribute is only necessary to overcome the lack of negation
feature in zcml:condition.

