使用金星而不是*.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中的ssl安全imap连接   java需要输入有关我的程序在字符串中查找重复项的效率的信息   java通过值和索引搜索数组   类java队列方法需要帮助   java中泛型类中的超类   java抽屉正在缓慢滚动   在itemListner上使用显式意图时java应用程序崩溃   JAVA中的POJO和DOJO是什么?   如何使用PEM文件在Java中对PDF进行数字签名?   java读取文件并拆分其内容并存储在数组中   java JavaFX动画计时器144 fps   java Tab touch在FragmentTabHost中使用水平滑动手势时不起作用   三角数组中随机数偏置的数学方法   java Android Studio 3.0 DexArchiveBuilderException   Java中的动态XML创建   java Firebase rest API过滤器查询   java就是javax。坚持不懈EntityManager线程安全   Java Spring REST拦截器   将数据结构从java传递到perl   在java中下载文件时发生socket错误。网SocketException:连接重置