zopezcml

What are the valid conditions for zcml:condition?


ZCML can include conditional directives of the form

<configure zcml:condition="installed some.python.package">
    (conditional configuration directives)
</configure>

What is the expression syntax for condition? Is 'or' allowed?


Solution

  • I always have to look this up too. The syntax is very simple, and or is not part of the syntax, I am afraid.

    As you can see from the documentation in the zope.configuration source code, the syntax is always of the form verb arguments, where verb is one of have, not-have, installed and not-installed.

    have and not-have test for a registered feature. A registered feature is simply an opaque string that has been registered with a <meta:provides feature="something" /> tag. Use it to flag that something has been included without tying it to a particular implementation. Example:

    <configure zcml:condition="have apidoc">
        <!-- only when the apidoc feature has been provided -->
    </configure>
    

    installed and not-installed simply try to import the named package; if the import succeeds so does the installed test. Example:

    <configure zcml:condition="installed sqlalchemy"> 
        <!-- only when the sqlalchemy module can be imported -->
    </configure>