跳转到主要内容

Zope注释的Grok-like配置

项目描述

本包提供对简化Zope中注解使用的支持。

设置grokcore.annotation

本包的设置本质上与grokcore.component包类似,请参阅其文档以获取详细信息。您需要的唯一附加ZCML行是

<include package="grokcore.annotation" />

请将此行放置在根ZCML文件的顶部附近,但在包含grokcore.component配置的行下方。

示例

以下是一个使用注解的简单示例

import grokcore.annotation
from zope import interface

# Create a model and an interface you want to adapt it to
# and an annotation class to implement the persistent adapter.
class Mammoth(grokcore.annotation.Model):
    pass

class ISerialBrand(interface.Interface):
    unique = interface.Attribute("Brands")

class Branding(grokcore.annotation.Annotation):
    grokcore.annotation.implements(ISerialBrand)
    unique = 0

# Grok the above code, then create some mammoths
manfred = Mammoth()
mumbles = Mammoth()

# creating Annotations work just like Adapters
livestock1 = ISerialBrand(manfred)
livestock2 = ISerialBrand(mumbles)

# except you can store data in them, this data will transparently persist
# in the database for as long as the object exists
livestock1.unique = 101
livestock2.unique = 102

# attributes not listed in the interface will also be persisted
# on the annotation
livestock2.foo = "something"

API概览

基类

注解

注解的基类。继承自持久化类Persistent。

模型

您希望使用注解的模型的基类。

queryAnnotation(model, interface)

查询给定模型上的给定接口的注解。如果找到则返回注解,否则返回None。这不会进行任何写操作。

deleteAnnotation(model, interface)

查找给定的注解并从模型中删除它。

LazyAnnotation

注解的基类。仅在显式设置懒属性值时才写入数据库对象。

LazyAnnotationProperty

LazyAnnotation一起工作的属性实现。

此外,grokcore.annotation包公开了grokcore.component API。

变更

4.0 (2023-07-12)

  • 添加对Python 3.10和3.11的支持。

  • 取消对Python 2.7、3.5和3.6的支持。

  • 取消对已弃用的python setup.py test的支持。

3.2 (2021-08-31)

  • grokcore.annotation.testing.warn已被删除,因为它在内部未使用。如果仍然需要它,可以在grokcore.view.testing中找到副本。

  • 向LazyAnnotation对象添加_p_changed属性,将其代理到实际的存储对象。这样,“显式标记对象为已更改”的“API”在“正常”注解对象和懒注解对象之间都是相同的。

  • 添加对Python 3.7、3.8和3.9的支持。

  • 取消对Python 3.4的支持。

3.1 (2020-10-27)

  • 在LazyPropertyAnnotation中添加对FieldUpdatedEvent的支持,以反映zope.schema的行为。

3.0.1 (2018-01-17)

  • 在整个文档中用@grok.implementer()指令替换使用grok.implements()

3.0.0 (2018-01-12)

  • 重新排列测试,以便Travis CI可以抓取所有功能测试。

1.6 (2017-05-30)

  • 添加LazyAnnotation和LazyAnnotationProperty。

  • 取消对Python 2.6的支持,并声明支持Python 3.4、3.5、3.6和PyPy。

1.5.1 (2016-01-29)

  • 更新测试。

1.5 (2014-10-20)

  • 更新MANIFEST.in,修复了一个棕色纸袋版本。

1.4 (2014-10-17)

  • queryAnnotation()添加到返回注解。如果不存在则返回None。此辅助函数永远不会在数据库中执行任何写操作。

  • 添加deleteAnnotation()以删除注解(如果存在)。

1.3 (2012-05-01)

  • 使用来自grokcore.component.util的provideAdapter()

  • 使包符合zope.org存储库策略。

1.2 (2009-12-13)

  • 使用zope.container而不是zope.app.container。

1.1 (2009-09-18)

  • 注解对象实际上成为一个容器对象,以便意识到其上下文和名称。

  • 在Grok的发布信息中使用1.0b1版本的versions.cfg,而不是本地副本;所有grokcore包的本地副本都太难维护。

1.0.1 (2009-06-30)

  • 使用没有distutils错误的正确版本的Python重新上传到pypi。

1.0 (2009-06-29)

  • 通过从Grok中提取注解组件、grokkers和指令创建了grokcore.Annotation

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

grokcore.annotation-4.0.tar.gz (15.1 kB 查看哈希值)

上传时间

构建分发

grokcore.annotation-4.0-py3-none-any.whl (18.6 kB 查看哈希值)

上传时间 Python 3

由以下支持