使用金星而不是*.zcml进行配置的实验
venusianconfiguration的Python项目详细描述
金星配置
这个包(venusianconfiguration)提供基于venusian的python zope.configuration的配置语法,作为zcml的替代。 这个包不替换zope.configuration就像grok以前那样, 但只为现有的Zope配置提供通用Python绑定。 指令。 所以,与grok相比,金星配置更像是grok的替代品 Zope.配置。
此包的当前状态可以描述为已在内部 使用,但可能尚未准备好用于社区。
好消息:
fromvenusianconfigurationimportconfigureconfigure.i18n.registerTranslations(directory='locales')@configure.browser.page.klass(name='hello-world',for_=Interface,permission='zope2.View')classHelloWorld(BrowserView):def__call__(self):returnu'Hello world!'@configure.plone.behavior.provides(title=_(u'My behavior),description=_(u'Enables magic'))classIMyBehavior(model.Schema):custom_field=schema.TextLine()alsoProvides(IMyBehavior,IFormFieldProvider)
坏消息:
fromvenusianconfigurationimportscanfromvenusianconfigurationimportconfigurefrommypackageimportbrowserscan(browser)importzcmlpackageconfigure.include(package=zcmlpackage)importotherpypackageconfigure.include(package=otherpypackage,file='configure.py')importmypackage.submoduleconfigure.include(package=mypackage.submodule,file='configure.py')
丑陋的:
zope.configuration主要与语法无关,但不幸的是 zcml是它唯一实现的语法,我们还 用于直接调用其特定于zcml的api(例如,在测试夹具中 在z3c.autoinclude中)。
因此,不能在外部引入新的zope.configuration语法 zope.不带MonkeyPatching的配置…
venusianconfiguration通过monkeypatching processxmlfile工作 方法在zope.configuration的zcml支持中也接受python 文件将这些文件传递给金星配置进行处理。
为了支持z3c.autoinclude,venusianconfiguration还支持monkeypatches z3c.autoincludes的includeplugins指令和includepluginsoveridesdirective (includeDependencies指令被认为是邪恶的,并被故意留下 不支持)。
所以,总共有三个monkeypatches用于zcml自由配置。
使用量
[instance]recipe=plone.recipe.zope2instance...eggs= ... venusianconfigurationzope-conf-additional= # Enable venuasianconfiguration monkeypatches %import venusianconfiguration
有关更多示例,请查看源代码中包含的演示包。
故障排除
因为现在的配置是用python编写的,所以您的插件必须具有 名称空间包在setup.py中正确定义。例如,调用了附加组件 my.product将具有以下命名空间包定义:
setup(...namespace_packages=['my'],...)
即使没有zcml,也必须注册外接程序才能进行配置。这个罐头 通过将通常的z3c.autoinclude-entrypoint添加到加载项的setup.py:
setup(...entry_points=""" # -*- Entry points: -*- [z3c.autoinclude.plugin] target = plone """)
另一种方法是将包添加到 plone.recipe.zope2instance的plone实例构建部分:
[instance]recipe=plone.recipe.zope2instance...zcml=my.product
更改日志
1.1.1(2018-11-07)
- 添加分面命名空间 [数据库]
1.1.0(2018-01-17)
- 删除z3c.autoinclude插件入口点以修复 autoinclude包含错误的软件包并安装了pip plone。这个 将禁用要加载的meta.zcml中的实验zcml指令 默认使用plone。 [数据库]
1.0.2(2017-12-21)
- 修复默认配置指令可变导致的问题 意外行为 [数据库]
1.0.1(2016-09-21)
- 修复zope.deferredimported模块未被识别为模块的问题 [数据库]
1.0.0(2016-04-19)
- 第一次释放。