用于定义数据模式的zope.interface扩展
项目描述
zope.schema
Schemas扩展了接口的概念,以详细描述属性(但不是方法)。每个模式都是一个接口,并指定对象的公共字段。一个字段大致对应于Python对象的属性。但字段提供了至少一个标题和描述的空间。它还可以约束其值并提供验证方法。此外,您可以可选地指定其值是否为只读或非必需等特征。
有关更多信息,请参阅https://zopeschema.readthedocs.io/。
变更
7.0.1 (2023-01-02)
修复当未安装zope.i18nmessageid时的回退问题(7.0.0版本中引入的回归)。
7.0.0 (2023-01-01)
添加对Python 3.11的支持。
停止支持Python 2.7、3.5、3.6。
删除zope.schema._compat模块。
修复Python 3.11上的测试弃用警告。(#112)
6.2.1 (2022-09-14)
修复过大的整数测试值,这些值会在较新版本的Python上破坏测试。(#115)
6.2.0 (2021-10-18)
添加对Python 3.10的支持。
6.1.1 (2021-10-13)
修复6.1.0中引入的不兼容性:如果未提供,则布尔字段构造函数隐式设置为False。虽然这在大多数常见情况下是期望的行为,但它破坏了特殊案例。请参阅问题104(向下滚动,它大约在重新打开处)。
6.1.0 (2021-02-09)
修复IField.required默认不强制。请参阅问题104。
6.0.1 (2021-01-25)
将分支覆盖率提高到100%。
添加对Python 3.9的支持。
通过具有作为IFieldUpdatedEvent接口声明的object属性来修复FieldUpdateEvent实现。
6.0.0 (2020-03-21)
需要zope.interface 5.0。
确保所有字段的解析顺序一致且合理。特别是,布尔字段现在在IFromUnicode之前正确实现了IBool。请参阅问题80。
添加对Python 3.8的支持。
取消对Python 3.4的支持。
5.0.1 (2020-03-06)
修复:将Text.unicode_normalization = 'NFC'作为默认值,因为有些正在持久化架构字段。仅在__init__中设置该属性会破坏旧对象的加载。请参阅问题88。
5.0 (2020-03-06)
4.9.3 (2018-10-12)
修复了在具有标题的“子字段”时getDoc()结果中的ReST错误。
4.9.2 (2018-10-11)
确保IObject.validate_invariants的标题是Unicode字符串。
4.9.1 (2018-10-05)
修复了SimpleTerm的非ASCII字节值令牌。
4.9.0 (2018-09-24)
使NativeString和NativeStringLine成为实现新界面的独立类型,这些界面是INativeString和INativeStringLine。以前这些只是对Text(在Python 3上)或Bytes(在Python 2上)的别名。
当存在value_type或key_type时,修复Field.getDoc()。以前它可能会产生产生Sphinx警告的ReST。请参阅问题76。
使DottedName接受每个分段的引导下划线。
添加了接受点分名称一个分段的PythonIdentifier,例如Python变量或类。
4.8.0 (2018-09-19)
将接口IFromBytes添加到由数字和字节字段、URI、DottedName和Id实现的接口中。
修复将None作为描述传递给字段构造函数的问题。请参阅问题69。
4.7.0 (2018-09-11)
使WrongType具有一个expected_type字段。
添加了从WrongType和SchemaNotProvided派生的异常NotAnInterface,并由Object的构造函数以及当InterfaceField验证失败时引发。
给SchemaNotProvided一个schema字段。
给WrongContainedType一个errors列表。
为“太短”、“太长”、“太大”和“太小”字段设置一个边界字段,并分别使用常见的超类“长度越界”、“可排序越界”,这两个类都继承自“越界”。
4.6.2 (2018-09-10)
修复检查字段约束的问题,如果约束抛出“ValidationError”,则设置“field”和“value”属性。参见问题66。
4.6.1 (2018-09-10)
4.6.0 (2018-09-07)
支持Python 3.7。
默认情况下,对象实例在验证时通过调用其模式对象的“validateInvariants”方法来收集使用“@invariant”装饰的函数的错误。可以通过将“validate_invariants=False”传递给“Object”构造函数来禁用此功能。参见问题10。
在Python 3中可以对“ValidationError”进行排序。
“DottedName”和“Id”在Python 2和3中一致地处理非ASCII Unicode值,通过分别在“fromUnicode”中引发“InvalidDottedName”和“InvalidId”。以前,在Python 2中会引发“UnicodeEncodeError”,而在Python 3中会引发描述性异常。
在Python 3中,“Field”实例是可散列的,并使用一个定义的散列算法,该算法与所有Python版本上的等价性匹配。以前,在Python 2中,字段基于其身份进行散列,这违反了等价对象应具有相等散列的规则,现在它们是这样的。由于具有相等散列并不意味着对象相等,因此预计这不会引起兼容性问题。参见问题36。
当且仅当它们的“.interface”相等时,“Field”实例才相等。在实践中,这意味着两个不同的模式中相同属性的字段不相等,散列也不同,并且都可以是同一个“dict”或“set”的成员。在此版本之前,当散列基于身份但仅在Python 2上工作时,这就是典型行为。(不是模式成员的“Field”对象如果具有相同的属性和接口,则继续比较和散列相等。)参见问题40。
可排序字段,包括“Int”、“Float”、“Decimal”、“Timedelta”、“Date”和“Time”,现在可以有一个“missing_value”,而无需指定具体的“min”和“max”值(它们必须仍然指定一个“default”值)。参见问题9。
“Choice”、“SimpleVocabulary”和“SimpleTerm”都可以优雅地处理使用非ASCII字符的Unicode令牌值,通过使用“backslashreplace”错误处理程序对其进行编码。参见问题15和PR 6。
所有《ValidationError》实例都有一个《field》和《value》属性,这些属性被设置为引发异常的字段和未通过验证的值。
《Float》、《Int》和《Decimal》字段为无法解析的文本书面值引发《ValidationError》子类。这些子类也继承自《ValueError》以实现向后兼容。
添加了一个新的异常《SchemaNotCorrectlyImplemented》,它是《WrongContainedType》的子类,由《Object》字段引发。它包含一个字典(《schema_errors》),将无效的架构属性映射到相应的异常,以及一个列表(《invariant_errors》),包含验证不变性时引发的异常。请参阅问题16。
添加了新的字段《Mapping》和《MutableMapping》,对应于同名集合抽象基类;现在《Dict》扩展并特化为《MutableMapping》以仅接受《dict》实例。
添加了新的字段《Sequence》和《MutableSequence》,对应于同名集合抽象基类;《Tuple》现在扩展自《Sequence》,而《List》现在扩展自《MutableSequence》。
添加了新的字段《Collection》,实现了《ICollection》。这是《Sequence》的基类。之前它被称为《AbstractCollection》且不是公开的。它可以被继承以在类级别添加《value_type》、《_type》和《unique》属性,从而使构造函数调用更加简单。请参阅问题23。
使《Object》遵守由子类定义的《schema》属性,从而简化构造函数调用。请参阅问题23。
添加了代表Python数值塔的字段和接口。按通用性递减的顺序,它们是《Number》、《Complex》、《Real》、《Rational》和《Integral》。《Int》类扩展自《Integral》,《Float》类扩展自《Real》,而《Decimal》类扩展自《Number》。请参阅问题49。
使《Iterable》和《Container》正确实现《IIterable》和《IContainer》。
使《SimpleVocabulary.fromItems》接受三元组以允许指定术语的标题。请参阅问题18。
使《TreeVocabulary.fromDict》仅在提供了标题时才创建《ITitledTokenizedTerms》。请参阅问题18。
确保当无法找到命名词汇表时,"选择"字段能够可靠地触发一个《ValidationError》;为了向后兼容,这也会引发一个《ValueError》。之前这仅在默认的《VocabularyRegistry》被使用时有效,当其被zope.vocabularyregistry替换时则无效。参见问题55。
"SimpleVocabulary"和"SimpleTerm"现在具有基于值的相等性和哈希方法。
在尝试验证特定属性之前,将一个《Object》字段的架构的所有字段绑定到顶级待验证值。之前只有《IChoice》字段被绑定。参见问题17。
共享《Object》字段验证和《zope.schema.getValidationErrors》的内部逻辑。参见问题57。
使《Field.getDoc()`》返回有关字段属性(如其必需和只读状态)的更多信息。子类可以使用新的方法《Field.getExtraDocLines()`》添加更多信息。这用于在使用repoze.sphinx.autointerface生成Sphinx文档时。参见问题60。
4.5.0 (2017-07-10)
停止支持Python 2.6、3.2和3.3。
添加对Python 3.5和3.6的支持。
停止使用“setup.py test”。使用zope.testrunner。
4.4.2 (2014-09-04)
修正最小/最大字段描述:最大值包含在内,而不是排除。
4.4.1 (2014-03-19)
添加对Python 3.4的支持。
4.4.0 (2014-01-22)
在字段属性上添加一个事件,以通知字段已被更新。此事件允许根据事件、上下文和字段定义订阅者。事件还包含旧值和新值。(也请参阅定义字段事件处理器的包《zope.schemaevent》)
4.3.3 (2014-01-06)
PEP 8清理。
如果字段的defaultFactory返回字段的missing_value,则不引发RequiredMissing。
将《bootstrap.py》更新到版本2.2。
添加在渲染《SimpleVocabulary》时吞咽《ValueError》的功能,允许词汇项可能重复的情况(例如,由于用户输入)。
将字段名包含在《ConstraintNotSatisfied》中。
4.3.2 (2013-02-24)
修复Python 2.6的支持。 (在最后发布前忘记运行包含所有环境的tox。)
4.3.1 (2013-02-24)
确保在将字节值转换为term token时,在生成过程中忽略所有错误,不会失败。 (另一个选项是将值转换为十六进制,但这会破坏太多的测试。)
4.3.0 (2013-02-24)
修复Python 3中将字节值错误地转换为tokens的bug。
添加《zope.schema.fieldproperty.createFieldProperties()`》函数,该函数将架构字段映射到《FieldProperty》实例。
4.2.2 (2012-11-21)
添加对Python 3.3的支持。
4.2.1 (2012-11-09)
修复没有defaultFactory属性的字段的默认属性。
4.2.0 (2012-05-12)
通过tox自动化构建Sphinx HTML文档和运行doctest片段。
停止对Python 3.1的显式支持。
引入NativeString和NativeStringLine,在Python 2中等于Bytes和BytesLine,在Python 3中等于Text和TextLine。
将IURI从Bytes字符串更改为“原生”字符串。这是一个向后不兼容的更改,仅影响Python 3。
将单元测试覆盖率提升到100%。
将doctests从包中移出,并将其作为正常的Sphinx文档连接起来。
添加对PyPy的显式支持。
添加使用《tox》和《jenkins》进行持续集成支持。
放弃对外部《six》的依赖,转而使用大幅缩减的《zope.schema._compat》模块。
确保在nose环境下运行时测试通过。
添加setup.py dev别名(运行setup.py develop并安装nose和coverage)。
添加setup.py docs别名(安装Sphinx及其依赖)。
4.1.1 (2012-03-23)
删除MANIFEST.in中的尾部斜杠,它会导致Winbot崩溃。
4.1.0 (2012-03-23)
添加TreeVocabulary以支持嵌套的树状词汇。
修复了包含具有ICountextSourceBinder源的Choice的schema中字段验证损坏的问题。在这种情况下,由于字段未绑定且源绑定器未返回真正的词汇,词汇不可迭代。添加了简单的IContextSourceBinder验证测试。但仍然缺少使用具有IContextSourceBinder的Choice的schema的对象字段的测试。
4.0.1 (2011-11-14)
修复了DottedName的fromUnicode方法中的错误,该方法在给定unicode时会导致验证失败。从4.0.0版本引入。
4.0.0 (2011-11-09)
修复了过时的unittest方法。
移植到Python 3。这添加了对six的依赖,并移除了对Python 2.5的支持。
3.8.1 (2011-09-23)
修复了损坏的对象字段验证。先前版本使用对象字段值上的易变属性,这会导致在安全代理对象上出现ForbiddenAttribute错误。
3.8.0 (2011-03-18)
为所有字段实现了一个defaultFactory属性。它是一个可调用的函数,可以用来计算默认值。最简单的情况是
Date(defaultFactory=datetime.date.today)
如果工厂需要上下文来计算合理的默认值,则必须提供IContextAwareDefaultFactory,如下所示
@provider(IContextAwareDefaultFactory) def today(context): return context.today() Date(defaultFactory=today)
3.7.1 (2010-12-25)
重命名用于验证具有对象字段的schema中的验证令牌,以避免无限递归:__schema_being_validated变成了_v_schema_being_validated,这是一个易变属性,以避免持久性,因此避免了读写冲突。
不允许在DottedName中存在“[]^`”。请参阅https://bugs.launchpad.net/zope.schema/+bug/191236
3.7.0 (2010-09-12)
改进了当术语令牌或值重复时的错误消息。
修复了buildout,以便运行测试。
3.6.4 (2010-06-08)
修复了指定接口schema的对象字段的schema验证。
3.6.3 (2010-04-30)
优先使用标准库的doctest模块而不是zope.testing模块。
3.6.2 (2010-04-30)
在验证指向循环的对象字段时避免最大递归。
使对zope.i18nmessageid的依赖项可选。
3.6.1 (2010-01-05)
允许“setup.py test”至少运行通过bin/test可运行的测试子集(227个用于setup.py test,而258个用于bin/test)。
使zope.schema._bootstrapfields.ValidatedProperty描述符在Jython下工作。
使“setup.py test”测试在Jython上通过。
3.6.0 (2009-12-22)
优先使用zope.testing.doctest而不是doctestunit。
扩展验证错误以包含字段名称。
添加使用Field.get和Field.set方法而不是直接在实例__dict__上存储的FieldProperty类。
3.5.4 (2009-03-25)
当提供作为源的IContextSourceBinder对象时,不允许为Choice字段尝试验证默认值。请参阅https://bugs.launchpad.net/zope3/+bug/340416。
为DottedName字段添加接口。
向IChoice接口添加vocabularyName属性,将“vocabulary”属性描述改为更合理,使其成为zope.schema.Field而不是普通的zope.interface.Attribute。
使Bool的IBool接口比IFromUnicode更重要,因此为IBool注册的适配器比为IFromUnicode注册的适配器具有优先级。
3.5.3 (2009-03-10)
将“Make Choice”和“Bool”字段实现为“IFromUnicode”接口,因为它们确实提供了“fromUnicode”方法。
将包的邮件列表地址更改为“zope-dev at zope.org”,因为“zope3-dev at zope.org”现在已停用。
修复包的文档格式。更改包的描述。
添加构建Sphinx生成的文档的buildout部分。
删除与zpkg相关的文件。
3.5.2 (2009-02-04)
使验证测试与Python 2.5兼容(希望不会破坏Python 2.4)
添加一个名为“__all__”的包属性以公开文档。
3.5.1 (2009-01-31)
停止使用旧的旧集合类型。
使测试与Python 2.4兼容并静默。
修复ValidationError中的“__cmp__”方法。根据现有的“__cmp__”实现显示一些副作用。请参阅validation.txt
使ValidationError及其子类的“repr”更合理。这可能需要您调整doctests以适应新样式,但现在它对于开发人员的调试来说更有意义。
3.5.0a2(2008-12-11)
将zope.testing移动到“test”extras_require,因为它对zope.schema本身不是必需的。
更改SET_TYPES元组中类的顺序,该元组在先前的版本中引入,以与3.4中的顺序一致(SetType,set),因为第三方代码可能依赖于该顺序。一个例子是z3c.form的转换器。
3.5.0a1(2008-10-10)
将doctests添加到长描述中。
当在Python 2.6下运行时,删除已弃用的“sets”模块的使用。
当在Python 2.6下运行时,删除虚假的doctest失败。
添加对Jython的引导支持。
添加用于模式验证的帮助方法:getValidationErrors和getSchemaValidationErrors。
zope.schema现在在Python2.5上工作
3.4.0 (2007-09-28)
添加在对象字段设置值之前触发的BeforeObjectAssignedEvent。
3.3.0 (2007-03-15)
对应于Zope 3.3.0版本中作为Zope 3.3.0发行版一部分提供的zope.schema包的版本。
3.2.1 (2006-03-26)
对应于Zope 3.2.1版本中作为Zope 3.2.1发行版一部分提供的zope.schema包的版本。
修复缺少导入“VocabularyRegistryError”。请参阅http://www.zope.org/Collectors/Zope3-dev/544。
3.2.0 (2006-01-05)
对应于Zope 3.2.0版本中作为Zope 3.2.0发行版一部分提供的zope.schema包的版本。
添加“iterable”源以替换词汇表,这些词汇表现在已弃用,并计划在Zope 3.3中删除。
3.1.0 (2005-10-03)
对应于Zope 3.1.0版本中作为Zope 3.1.0发行版一部分提供的zope.schema包的版本。
允许“Choice”字段接受“vocabulary”或“source”参数(源是更简单的实现)。
添加“TimeDelta”和“ASCIILine”字段类型。
3.0.0 (2004-11-07)
对应于Zope X3.0.0版本中作为Zope X3.0.0发行版一部分提供的zope.schema包的版本。
zope.schema-7.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ead4dbcb03354d4e410c9a3b904451eb44d90254751b1cbdedf4a61aede9fbb9 |
|
MD5 | d938af4000a89fa101d2f48f7a8fdd75 |
|
BLAKE2b-256 | 826791585500260386df145b78532de588b41470d416bc6fa1cdc1b0f7a34e68 |
zope.schema-7.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf006c678793b00e0075ad54d55281c8785ea21e5bc1f5ec0584787719c2aab2 |
|
MD5 | 5f994e5a9b20490a533422be9a4cacc0 |
|
BLAKE2b-256 | 1d97517e3f5f4258bcc6491c806474a26e1a799bb99ec44ed95d22010caabc25 |