使用金星而不是*.zcml进行配置的实验

venusianconfiguration的Python项目详细描述


金星配置

这个包(venusianconfiguration)提供基于venusian的python zope.configuration的配置语法,作为zcml的替代。 这个包不替换zope.configuration就像grok以前那样, 但只为现有的Zope配置提供通用Python绑定。 指令。 所以,与grok相比,金星配置更像是grok的替代品 Zope.配置。

此包的当前状态可以描述为已在内部 使用,但可能尚未准备好用于社区

https://travis-ci.org/datakurre/collective.venusianconfig.png

好消息:

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.autoincludevenusianconfiguration还支持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)

  • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从源WSO2标识服务器生成时发生java错误   java如何在icefaces项目中启用url   java将堆栈中的每个元素打印到文本文件中的新行   java如何将导航抽屉的所有片段放在全屏上?   java EHCache如何实现其事务?   Selenide中的java捕获shouldHave/shouldBe方法   从CSV文件读取java   java如何在ListView行中显示长文本视图高度?   java Tapestry内部重定向到静态页面   TFS使用Java和Eclipse构建   多线程Java线程是否可以在已经持有锁的情况下获得锁?   JavaSwing:使用文档侦听器处理返回键   java在Moshi中保存对象关系