Каковы действительные условия для zcml:condition?
Вопрос
ZCML может включать условные директивы вида
<configure zcml:condition="installed some.python.package">
(conditional configuration directives)
</configure>
Каков синтаксис выражения для condition
?Разрешено ли «или»?
Решение
Мне тоже всегда приходится это искать.Синтаксис очень прост и or
Боюсь, это не часть синтаксиса.
Как вы можете видеть из документация в исходном коде zope.configuration, синтаксис всегда имеет вид verb arguments
, где глагол является одним из have
, not-have
, installed
и not-installed
.
have
и not-have
проверить зарегистрированную функцию.Зарегистрированный объект — это просто непрозрачная строка, зарегистрированная с помощью <meta:provides feature="something" />
ярлык.Используйте его, чтобы отметить, что что-то было включено, не привязывая это к конкретной реализации.Пример:
<configure zcml:condition="have apidoc">
<!-- only when the apidoc feature has been provided -->
</configure>
installed
и not-installed
просто попробуйте импортировать указанный пакет;если импорт удался, то же самое произойдет и с installed
тест.Пример:
<configure zcml:condition="installed sqlalchemy">
<!-- only when the sqlalchemy module can be imported -->
</configure>