跳转到主要内容

与Zope schema相关的支持

项目描述

nti.schema

Latest release Supported Python versions https://github.com/NextThought/nti.zope_catalog/workflows/tests/badge.svg https://coveralls.io/repos/github/NextThought/nti.schema/badge.svg Documentation Status

nti.schema包括用于使用zope.schema进行schema驱动开发的一些实用工具。

有关完整信息和变更日志,请参阅文档

概述

一些最有用的功能包括

  • nti.schema.interfaces.find_most_derived_interface 用于查找有界接口。

  • nti.schema.eqhash.EqHash 是一个用于创建高效、正确实现相等性和哈希的类装饰器。

  • nti.schema.field 包含各种模式字段,包括 Variant 类型以及更灵活的集合类型,所有这些都能产生更好的验证错误。

  • nti.schema.fieldproperty 包含可以适应接口或解码传入文本的字段属性。函数 createDirectFieldProperties 可以自动分配必要的属性。

变更

1.16.0 (2021-05-08)

  • 添加对 Python 3.9 的支持。

  • 停止支持 Python 3.5。

  • 修复使用此包产生的弃用警告,并使其发出的弃用警告更加精确。请参阅 问题 58

  • 修复构建 Variant 时对 IMapping 字段的额外验证,要求同时提供 key_typevalue_type。之前,如果其中一个或两个都留为 None,当字段被要求验证数据或其 fromObject() 方法被调用时,将引发 AttributeError。现在,当创建 Variant 时,将引发 RequiredMissing 错误。其他嵌套使用 Dict 字段的地方(如 Sequence),也可能引发 AttributeError;这可能在将来也改为在构建时引发。

    请参阅 问题 59

1.15.1 (2020-07-02)

  • 修复最小长度为 1 的字段错误信息的复数形式。

1.15.0 (2020-05-06)

  • 提高 SchemaConfigured 子类的速度。请参阅 问题 54

    这涉及到一些缓存,所以如果你直接修改类或修改 schemadict 的结果,请务必阅读 nti.schema.schema 的文档。

1.14.0 (2020-03-27)

  • 要求 zope.interface 5.0.0 和相关依赖项。

  • 确保所有对象具有一致的接口解析顺序。

  • 添加对 Python 3.8 的支持。

1.13.1 (2019-06-11)

  • StrippedValidTextLine 应该接受单字符行。

1.13.0 (2019-05-22)

  • 确保 StrippedValidTextLine 正确识别单字符值作为已删除的值。之前,‘b’ 会被拒绝。

1.12.0 (2018-10-10)

  • JSON 模式报告 IObject 字段的模式以及 IVariant 中可能字段的模式。

  • JSON 模式中的字段可以指定一个可序列化为 JSON 的字典,作为 application_info 模式值传递。请参阅 问题 44

  • JSON 模式现在自动输出更多约束。请参阅 问题 47

1.11.0 (2018-10-10)

  • JSON 模式现在包括集合和映射字段的嵌套 value_typekey_type。请参阅 问题 42

  • JSON 模式现在包括(翻译后的)titledescription 值。请参阅 问题 41

1.10.0 (2018-10-04)

  • 添加 nti.schema.fieldproperty.field_name 以补偿 FieldPropertyStoredThroughField 造成的破坏。

1.9.2 (2018-10-04)

  • 修复 Variant 和其他 IFromObject 实现以停止将已知的非文本值传递给 fromUnicode 方法。这仅适用于某些字段(如 zope.schema.Number),这些字段可以接受非文本值,通常是由于实现错误,并可能产生意外的后果。相反,非文本值将被传递给 validate 方法。

  • 修复Variant以防止重复验证值。底层的fromUnicodefromBytesfromObject方法本应已经进行验证。

1.9.1 (2018-10-03)

  • 使VariantValidationErrorVariant具有更有用的字符串表示形式。

  • 使fromObject方法更加优雅地处理由底层fromUnicode方法在非字符串输入(如None)上引发的AttributeError。这对于Variant字段特别有帮助,因为它们可以捕获错误并继续到下一个字段。

  • 修复VariantTupleFromObjectDictFromObjectListFromObjectListOrTupleFromObject,使其在它们的fromObject方法中允许missing_value(默认为None)。如果字段不是必需的,传入该值仅返回它而不会引发异常。如果字段是必需的,则会引发RequiredMissing。之前,序列引发了一个WrongType错误,而Variant可能或可能不引发错误,具体取决于使用的底层字段。

1.9.0 (2018-10-02)

  • 现在,Variant对象会自动将fromObject支持添加到尚未提供该支持的ICollectionIMapping字段,如果它们的value_type(和key_type)符合条件,即是一个Object字段,或者提供IFromObject或可以提供,例如集合或映射。

1.8.0 (2018-09-28)

  • 添加了VariantValidationError,这是变体字段在它们的所有组成部分字段都无法适应或验证值时引发的错误。

1.7.0 (2018-09-19)

  • 在zope.schema 4.8.0中添加了对IFromBytes的支持。

  • VariantListOrTupleFromObjectTupleFromObjectDictFromObject字段在fromObject中都有调整后的行为。如果传入的值是字节串或文本字符串,并且底层字段实现了fromBytesfromUnicode方法,则优先调用这些方法而不是fromObject方法。

  • ValidSetUniqueIterable现在实现了fromObject

  • 所有实现了fromObject的字段现在接受一个Object字段作为它们的value_type(以及DictFromObject中的key_type)并在fromObject中尝试适应不提供模式的对象。

1.6.0 (2018-09-18)

  • 调整了废弃的zope.schema.interfaces.InvalidValue,使其成为zope.schema.interfaces.InvalidValue的简单别名(同时保留构造函数)以提高向后兼容性。

1.5.0 (2018-09-11)

  • 添加了对zope.schema 4.7.0的支持;删除对旧版本的支持。

1.4.2 (2018-09-10)

  • 修复了nti.schema.interfaces.InvalidValuerepr。请参阅问题26

  • nti.schema.jsonschema将更多抽象的字段类型转换为具体类型。请参阅问题29

1.4.1 (2018-09-10)

  • nti.schema.interfaces.InvalidValue再次作为一个类。它已废弃。请参阅问题24

1.4.0 (2018-09-10)

  • 删除对dm.zope.schema字段的支持,特别是Object字段。zope.schema.Object执行的验证得到了显著改进。

  • 删除对4.6.1之前版本的zope.schema的支持。

  • 弃用 nti.schema.field.Number

  • 支持 Python 3.7。

1.3.3 (2018-09-07)

  • 对 zope.schema 4.6.0 的更改进行了小修(从其新位置但仍然私有的位置导入 BeforeObjectAssignedEvent)。

1.3.2 (2017-10-24)

  • 依赖 zope.deferredimport >= 4.2.1 以生成 Sphinx 文档。

  • 清理代码以符合 PEP8。

1.3.1 (2017-10-18)

  • 在 Python 3 中的 Variant 字段修复了 UnboundLocalError。请参阅 问题 14

1.3.0 (2017-07-06)

  • 放弃对 plone.i18n 的 Python 2 依赖,转而使用支持 Python 3 的新库 nti.i18n。如果已安装 plone.i18n,则 不应 进行配置(ZCML),但其实用对象可以通过接口查找。

1.2.0 (2017-05-17)

  • 删除对 unicode_literals 的使用。

  • 支持 Python 3.6。

  • 当在 Python 2 中检查属性时,SchemaConfigured 构造函数不会隐藏错误。请参阅 问题 11

1.1.3 (2017-01-17)

  • 添加 minLength 验证消息的信息。

1.1.2 (2016-09-14)

  • Acquisitionzope.event 添加为安装依赖项。以前它们仅通过 test 额外项引入。

1.1.1 (2016-09-08)

  • EqHash 生成的哈希函数进行了重大加速。

  • EqHash 生成的相等函数进行了重大加速。

1.1.0 (2016-07-29)

  • 支持 Python 3。 注意 Python 3 中国家词汇表可能不完整。

  • 删除对 dolmen.builtins 的依赖。

  • 删除对 dm.zope.schema 的依赖。

  • plone.i18n 依赖项仅适用于 Python 2(甚至可以删除)。

  • nti.schema.testing 中的匹配器已移动到 nti.testing.matchers

  • 如果适配值失败,使用 AdaptingFieldProperty 将现在引发更具体的 SchemaNotProvided 错误而不是 TypeError

  • EqHash 已从 nti.schema.schema 移动到 nti.schema.eqhash。保留了一个兼容性封装。

项目详情


下载文件

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

源代码分发

nti.schema-1.16.0.tar.gz (59.9 kB 查看哈希值)

上传时间 源代码

构建分发

nti.schema-1.16.0-py2.py3-none-any.whl (54.7 kB 查看哈希值)

上传于 Python 2 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面