Каковы действительные условия для zcml:condition?

ZCML может включать условные директивы вида

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

Каков синтаксис выражения для condition? "Или" разрешено?

1 ответ

Решение

Я всегда должен искать это тоже. Синтаксис очень прост, и 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>
Другие вопросы по тегам