使用金星而不是*.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第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava