跳转到内容

更新日志

v2.12.1 (2025-10-13)

GitHub 发布

更新内容

这是 2.12 的第一个补丁版本,解决了初始 2.12.0 版本中的大部分(但并非全部)回归问题。

修复

新贡献者

v2.12.0 (2025-10-07)

GitHub 发布

更新内容

这是最终的 2.12 版本。它包含了 20 位外部贡献者的工作,提供了有用的新特性,以及对 Python 3.14 的初步支持。此版本还包含了一些次要更改(根据我们的版本策略,这些更改不被视为破坏性更改)。升级前请务必查看这些更改。

请注意,Pydantic V1 不兼容 Python 3.14 及更高版本.

变更(有关 2.11 以来新增的变更,请参阅 alpha 和 beta 版本)

打包

新特性

  • 向 validate 函数添加 extra 参数,由 @anvilpete#12233 中完成
  • 添加 exclude_computed_fields 序列化选项,由 @Viicos#12334 中完成
  • 添加 preverse_empty_path URL 选项,由 @Viicos#12336 中完成
  • 为 JSON Schema 生成添加 union_format 参数,由 @Viicos#12147 中完成
  • create_model 添加 __qualname__ 参数,由 @Atry#12001 中完成

修复

  • 在管道 API 中不要尝试从 lambda 定义推断名称,由 @Viicos#12289 中完成
  • TypeAdapter 中为函数使用正确的命名空间,由 @Viicos#12324 中完成
  • TypeAdapter 中为上下文类型注解使用 Any,由 @inducer#12279 中完成
  • pydantic.fields.__all__ 中公开 FieldInfo,由 @Viicos#12339 中完成
  • @validate_call 中遵守 validation_alias,由 @Viicos#12340 中完成
  • 在插件 API 中使用 Any 作为上下文注解,由 @Viicos#12341 中完成
  • 在可能的情况下,在警告中使用正确的 stacklevel,由 @Viicos#12342 中完成

新贡献者

v2.12.0b1 (2025-10-03)

GitHub 发布

这是即将发布的 2.12 版本的第一个 beta 版本。

更新内容

打包

  • pydantic-core 升级到 v2.40.1,由 @Viicos#12314 中完成

新特性

变更

  • 如果安装了不兼容的 pydantic-core 版本,则引发错误,由 @Viicos#12196 中完成
  • 删除实验性功能的运行时警告,由 @Viicos#12265 中完成
  • 在 Pydantic 模型上注册虚拟子类时发出警告,由 @Viicos#11669 中完成

修复

  • 修复 Pydantic 模型上 __getattr__() 行为,当属性引发 AttributeError 且存在额外值时,由 @raspuchin#12106 中完成
  • 添加测试以防止 Pydantic 模型用作注解元数据时的回归,由 @Viicos#12133 中完成
  • 允许在设置了 validate_assignment 的 Pydantic 数据类上使用属性设置器,由 @Viicos#12173 中完成
  • 修复即将发布的 mypy 版本的 mypy v2 插件,由 @cdce8p#12209 中完成
  • 在函数 JSON Schema 中遵守自定义标题,由 @Viicos#11892 中完成
  • 修复具有 name 属性的对象的 ImportString JSON 序列化,由 @chr1sj0nes#12219 中完成
  • 在 mypy 插件中不要在被方法覆盖的字段上出错,由 @Viicos#12290 中完成

新贡献者

v2.12.0a1 (2025-07-26)

GitHub 发布

这是即将发布的 2.12 版本的第一个 alpha 版本,增加了对 Python 3.14 的初步支持。

更新内容

新特性

  • 添加 __pydantic_on_complete__() 钩子,模型完全准备就绪后调用,由 @DouweM#11762 中完成
  • 添加对 Python 3.14 的初步支持,由 @Viicos#11991 中完成
  • Decimal 类型向 JSON schema 添加正则表达式模式,由 @Dima-Bulavenko#11987 中完成
  • 添加对数据类字段 doc 属性的支持,由 @Viicos#12077 中完成
  • 添加实验性 MISSING 哨兵,由 @Viicos#11883 中完成

变更

  • 允许在 create_model() 中同时指定配置和基类,由 @Viicos#11714 中完成
  • 将一些字段逻辑移出 GenerateSchema 类,由 @Viicos#11733 中完成
  • 在 Python 3.13 及更高版本上始终使用 inspect.getsourcelines() 进行文档字符串提取,由 @Viicos#11829 中完成
  • 仅支持最新 Mypy 版本,由 @Viicos#11832 中完成
  • 不要在模型验证器后将隐式转换到类方法,由 @Viicos#11957 中完成
  • 重构 FieldInfo 创建实现,由 @Viicos#11898 中完成
  • 使 Secret 具有协变性,由 @bluenote10#12008 中完成
  • 当字段特定元数据用于无效上下文时发出警告,由 @Viicos#12028 中完成

修复

  • 在 JSON Schema 中序列化默认值时正确获取纯序列化器函数,由 @Viicos#11721 中完成
  • 移除泛型缓存变通方法,由 @Viicos#11755 中完成
  • 移除 Decimal 约束的强制转换,由 @Viicos#11772 中完成
  • 修复 mypy 插件中展开根类型时崩溃的问题,由 @Viicos#11735 中完成
  • 仅在所有字段都完成后才将模型标记为完成,由 @DouweM#11759 中完成
  • 在验证器核心模式中不提供 field_name,由 @DouweM#11761 中完成
  • 修复递归泛型模型的问题,由 @Viicos#11775 中完成
  • 修复在命名空间检查期间私有属性的限定名称比较问题,由 @karta9821#11803 中完成
  • 确保 Pydantic 数据类在使用槽位和设置了 validate_assignment 时可以被反序列化,由 @Viicos#11769 中完成
  • 在 schema 收集期间遍历 function-before schema,由 @Viicos#11801 中完成
  • 修复 stdlib 数据类检查问题,由 @Viicos#11822 中完成
  • 在应用类型变量映射后检查 FieldInfo 是否完成,由 @Viicos#11855 中完成
  • model_rebuild() 中不删除模拟验证器/序列化器,由 @Viicos#11890 中完成
  • 在 schema 生成之前重建数据类字段,由 @Viicos#11949 中完成
  • 始终将原始字段赋值存储在 FieldInfo 上,由 @Viicos#11946 中完成
  • 不使用已弃用的方法作为默认字段值,由 @Viicos#11914 中完成
  • 允许可调用鉴别器应用于 PEP 695 类型别名,由 @Viicos#11941 中完成
  • 使用 SkipValidation 时抑制核心 schema 生成警告,由 @ygsh0816#12002 中完成
  • validate_default 设置为 True 时,不对无效的 Field() 默认值发出类型检查错误,由 @Viicos#11988 中完成
  • 重构逻辑以支持数据类中的 Pydantic Field() 函数,由 @Viicos#12051 中完成

打包

  • 更新项目元数据以使用 PEP 639,由 @Viicos#11694 中完成
  • mkdocs-llmstxt 升级到 v0.2.0,由 @Viicos#11725 中完成
  • pydantic-core 升级到 v2.35.1,由 @Viicos#11963 中完成
  • 将 dawidd6/action-download-artifact 从 10 升级到 11,由 @dependabot[bot] 在 #12033 中完成
  • 将 astral-sh/setup-uv 从 5 升级到 6,由 @dependabot[bot] 在 #11826 中完成
  • 将 mypy 更新到 1.17.0,由 @Viicos#12076 中完成

新贡献者

v2.11.7 (2025-06-14)

GitHub 发布

更新内容

修复

  • FieldInfo 构建期间,如有必要复制 FieldInfo 实例,由 @Viicos#11898 中完成

v2.11.6 (2025-06-13)

GitHub 发布

更新内容

修复

  • 在 schema 生成之前重建数据类字段,由 @Viicos#11949 中完成
  • 始终将原始字段赋值存储在 FieldInfo 上,由 @Viicos#11946 中完成

v2.11.5 (2025-05-22)

GitHub 发布

更新内容

修复

  • 在应用类型变量映射后检查 FieldInfo 是否完成,由 @Viicos#11855 中完成
  • model_rebuild() 中不删除模拟验证器/序列化器,由 @Viicos#11890 中完成
  • 在模型重建时不要重复元数据,由 @Viicos#11902 中完成

v2.11.4 (2025-04-29)

GitHub 发布

更新内容

打包

  • mkdocs-llmstxt 升级到 v0.2.0,由 @Viicos#11725 中完成

变更

  • 允许在 create_model() 中同时指定配置和基类,由 @Viicos#11714 中完成。此更改已回溯,因为以前可以(尽管并非有意支持)将 model_config 作为字段提供,这使得同时提供配置和基类成为可能。

修复

  • 移除泛型缓存变通方法,由 @Viicos#11755 中完成
  • 移除 Decimal 约束的强制转换,由 @Viicos#11772 中完成
  • 修复 mypy 插件中展开根类型时崩溃的问题,由 @Viicos#11735 中完成
  • 修复递归泛型模型的问题,由 @Viicos#11775 中完成
  • 在 schema 收集期间遍历 function-before schema,由 @Viicos#11801 中完成

v2.11.3 (2025-04-08)

GitHub 发布

更新内容

打包

  • 将 V1 复制更新到 v1.10.21,由 @Viicos#11706 中完成

修复

  • 重建模型字段时保留字段描述,由 @Viicos#11698 中完成

v2.11.2 (2025-04-03)

GitHub 发布

更新内容

修复

  • pydantic-core 升级到 v2.33.1,由 @Viicos#11678 中完成
  • 确保 __pydantic_private__ 存在后才设置私有属性,由 @Viicos#11666 中完成
  • 使用父类字段时,不覆盖 FieldInfo._complete,由 @Viicos#11668 中完成
  • 在应用区分联合时提供可用定义,由 @Viicos#11670 中完成
  • 在 mypy 插件中,不对变量展开根类型,由 @Viicos#11676 中完成
  • 在模型字段弃用消息中提及属性名称,由 @Viicos#11674 中完成
  • 正确验证参数化映射,由 @Viicos#11658 中完成

v2.11.1 (2025-03-28)

GitHub 发布

更新内容

修复

  • 不覆盖包含序列化 schema 或元数据的 'definitions-ref' schema,由 @Viicos#11644 中完成

v2.11.0 (2025-03-27)

GitHub 发布

更新内容

Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。有关更多详细信息,请参阅博客文章

打包

  • pydantic-core 升级到 v2.33.0,由 @Viicos#11631 中完成

新特性

  • 向 URL 类型添加 encoded_string() 方法,由 @YassinNouh21#11580 中完成
  • 添加对 @validate_call 装饰器与 defer_build 的支持,由 @Viicos#11584 中完成
  • 允许 @with_config 装饰器与关键字参数一起使用,由 @Viicos#11608 中完成
  • 简化 JSON Schema 生成中默认值包含的自定义,由 @Viicos#11634 中完成
  • 添加 generate_arguments_schema() 函数,由 @Viicos#11572 中完成

修复

  • 允许泛型类型字典用于解包的可变关键字参数,由 @Viicos#11571 中完成
  • 修复在涉及缓存属性和自引用模型时计算模型字符串表示的运行时错误,由 @Viicos#11579 中完成
  • 在使用管道 API 中的省略号时保留其他步骤,由 @Viicos#11626 中完成
  • 修复延迟鉴别器应用逻辑,由 @Viicos#11591 中完成

新贡献者

v2.11.0b2 (2025-03-17)

GitHub 发布

更新内容

打包

  • pydantic-core 升级到 v2.32.0,由 @Viicos#11567 中完成

新特性

  • 添加自由线程的实验性支持,由 @Viicos#11516 中完成

修复

  • 修复 NotRequired 限定符在字符串化注解中未生效的问题,由 @Viicos#11559 中完成

新贡献者

v2.11.0b1 (2025-03-06)

GitHub 发布

更新内容

打包

  • 添加 check_pydantic_core_version() 函数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11324 中完成
  • 移除 greenlet 开发依赖,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11351 中完成
  • 使用 typing-inspection 库,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11479 中完成
  • pydantic-core 升级到 v2.31.1,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11526 中完成

新特性

  • 支持同时具有默认值、界限或约束的未替代类型变量,由 @FyZzyss 在 https://github.com/pydantic/pydantic/pull/10789 中完成
  • FieldInfo 添加 default_factory_takes_validated_data 属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11034 中完成
  • 当泛型别名在 type[] 内部使用时引发更好的错误,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11088 中完成
  • 正确支持 PEP 695 泛型语法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11189 中完成
  • 正确支持类型变量默认值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11332 中完成
  • 添加对验证 v6、v7、v8 UUID 的支持,由 @astei 在 https://github.com/pydantic/pydantic/pull/11436 中完成
  • 改进别名配置 API,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11468 中完成

变更

  • 重做 create_model 字段定义格式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11032 中完成
  • 当字段被注解为 final 且带有默认值时发出弃用警告,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11168 中完成
  • 弃用在实例上访问 model_fieldsmodel_computed_fields,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11169 中完成
  • 重大变更: 将路径类型的核心 schema 生成逻辑移到 GenerateSchema 类中,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10846 中完成
  • 移除对 Python 3.8 的支持,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11258 中完成
  • 优化对 get_type_ref 的调用,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10863 中完成
  • 禁用 pydantic-core 核心 schema 验证,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11271 中完成

性能

  • 仅在 schema 构建期间需要时才评估 FieldInfo 注解,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10769 中完成
  • 通过缓存 setter 函数提高 Pydantic 模型 __setattr__ 性能,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/10868 中完成
  • 提高注解应用性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11186 中完成
  • 提高 _typing_extra 模块的性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11255 中完成
  • 重构和优化 schema 清理逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11244 中完成
  • 在创建 CoreConfig 实例时创建一个字典,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11384 中完成
  • 升级 pydantic-core 并因此使用 SchemaValidatorSchemaSerializer 缓存,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11402 中完成
  • 为参数化泛型 Pydantic 模型重用缓存的核心 schema,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/11434 中完成

修复

  • 改进 TypeAdapter 实例的 repr,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10872 中完成
  • 在实例化参数化的 TypeAdapter 时使用正确的帧,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10893 中完成
  • 在 mypy 插件中,将具有默认值的 final 字段推断为类变量,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11121 中完成
  • 如果使用 PEP 695 类型别名,递归地解包 Literal 值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11114 中完成
  • 覆盖 ModelMetaclass 上的 __subclasscheck__ 以避免内存泄漏和性能问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11116 中完成
  • 移除未使用的 _extract_get_pydantic_json_schema() 参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11155 中完成
  • 改进歧视联合对无效联合变体的错误消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11161 中完成
  • 如果使用 Annotated 形式,解包 PEP 695 类型别名,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11109 中完成
  • deprecated_instance_property 警告中添加缺失的 stacklevel,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11200 中完成
  • 复制 WithJsonSchema schema 以避免共享变异数据,由 @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中完成
  • 在参数化另一个模型时,不缓存参数化模型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10704 中完成
  • CoreMetadata 定义添加歧视联合相关元数据条目,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11216 中完成
  • 整合 _Definitions 类中的 schema 定义逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11208 中完成
  • 在 mypy 插件中支持使用 root 类型的值初始化根模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11212 中完成
  • 修复数据类和 use_attribute_docstrings 的各种问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11246 中完成
  • 仅在 decimal_places_validator 中需要时计算标准化小数位数,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11281 中完成
  • 在 mypy 插件中添加对 validation_alias 的支持,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11295 中完成
  • 修复 JSON Schema 引用收集与 "examples" 键的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11305 中完成
  • 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11298 中完成
  • 简化 GenerateJsonSchema.literal_schema() 实现,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11321 中完成
  • ClickHouseDsn 添加额外的允许方案,由 @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中完成
  • 将 decimal 约束强制转换为 Decimal 实例,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11350 中完成
  • 在处理函数 schema 时使用正确的 JSON Schema 模式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11367 中完成
  • 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11356 中完成
  • 对于任意字典 schema 始终包含 additionalProperties: True,由 @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中完成
  • 在序列化方法中公开 fallback 参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11398 中完成
  • 修复路径序列化行为,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11416 中完成
  • 在模型重建期间不重用验证器和序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11429 中完成
  • 重建模型时收集模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11388 中完成
  • 允许在冻结模型上更改缓存属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11432 中完成
  • 修复 Sequence 类型的元组序列化,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11435 中完成
  • 修复:在同时定义 __get_pydantic_core_schema__ 的类上不检查 __get_validators__,由 @tlambert03 在 https://github.com/pydantic/pydantic/pull/11444 中完成
  • 允许可调用实例用作序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11451 中完成
  • 改进使用属性覆盖字段时抛出的错误,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11459 中完成
  • 修复 JSON Schema 生成与包含 JSON 元数据的可引用核心 schema 的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11475 中完成
  • 支持对联合成员类型进行严格指定,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11481 中完成
  • validate_by_aliasFalse 时,隐式将 validate_by_name 设置为 True,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11503 中完成
  • 在 mypy 插件中合成 BaseSettings.__init__ 签名时更改 Any 的类型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11497 中完成
  • 支持引用其他类型变量的类型变量默认值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11520 中完成
  • 修复年份为零时的 ValueError,由 @davidhewitt 在 https://github.com/pydantic/pydantic-core/pull/1583 中完成
  • dataclass InitVar 在序列化时应该不是必需的,由 @sydney-runkle 在 https://github.com/pydantic/pydantic-core/pull/1602 中完成

新贡献者

  • @FyZzyss 在 https://github.com/pydantic/pydantic/pull/10789 中做出了首次贡献
  • @tamird 在 https://github.com/pydantic/pydantic/pull/10948 中做出了首次贡献
  • @felixxm 在 https://github.com/pydantic/pydantic/pull/11077 中做出了首次贡献
  • @alexprabhat99 在 https://github.com/pydantic/pydantic/pull/11082 中做出了首次贡献
  • @Kharianne 在 https://github.com/pydantic/pydantic/pull/11111 中做出了首次贡献
  • @mdaffad 在 https://github.com/pydantic/pydantic/pull/11177 中做出了首次贡献
  • @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中做出了首次贡献
  • @thomasfrimannkoren 在 https://github.com/pydantic/pydantic/pull/11251 中做出了首次贡献
  • @usernameMAI 在 https://github.com/pydantic/pydantic/pull/11275 中做出了首次贡献
  • @ananiavito 在 https://github.com/pydantic/pydantic/pull/11302 中做出了首次贡献
  • @pawamoy 在 https://github.com/pydantic/pydantic/pull/11311 中做出了首次贡献
  • @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中做出了首次贡献
  • @kauabh 在 https://github.com/pydantic/pydantic/pull/11369 中做出了首次贡献
  • @jaceklaskowski 在 https://github.com/pydantic/pydantic/pull/11353 中做出了首次贡献
  • @tmpbeing 在 https://github.com/pydantic/pydantic/pull/11375 中做出了首次贡献
  • @petyosi 在 https://github.com/pydantic/pydantic/pull/11405 中做出了首次贡献
  • @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中做出了首次贡献
  • @mikeedjones 在 https://github.com/pydantic/pydantic/pull/11402 中做出了首次贡献
  • @astei 在 https://github.com/pydantic/pydantic/pull/11436 中做出了首次贡献
  • @dsayling 在 https://github.com/pydantic/pydantic/pull/11522 中做出了首次贡献
  • @sobolevn 在 https://github.com/pydantic/pydantic-core/pull/1645 中做出了首次贡献

v2.11.0a2 (2025-02-10)

GitHub 发布

更新内容

Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。这是另一个早期 alpha 版本,旨在收集用户在使用核心 schema 构建时遇到的早期反馈。

打包

性能

修复

  • 在处理函数 schema 时使用正确的 JSON Schema 模式,由 @Viicos#11367 中完成
  • 修复 JSON Schema 引用逻辑与 examples 键的问题,由 @Viicos#11366 中完成
  • 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos#11356 中完成
  • 对于任意字典 schema 始终包含 additionalProperties: True,由 @austinyu#11392 中完成
  • 在序列化方法中公开 fallback 参数,由 @Viicos#11398 中完成
  • 修复路径序列化行为,由 @sydney-runkle#11416 中完成

新贡献者

v2.11.0a1 (2025-01-30)

GitHub 发布

更新内容

Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。这是一个早期 alpha 版本,旨在收集用户在使用核心 schema 构建时遇到的早期反馈。

打包

新特性

  • 支持同时具有默认值、界限或约束的未替代类型变量,由 @FyZzyss#10789 中完成
  • FieldInfo 添加 default_factory_takes_validated_data 属性,由 @Viicos#11034 中完成
  • 当泛型别名在 type[] 内部使用时引发更好的错误,由 @Viicos#11088 中完成
  • 正确支持 PEP 695 泛型语法,由 @Viicos#11189 中完成
  • 正确支持类型变量默认值,由 @Viicos#11332 中完成

变更

  • 重做 create_model 字段定义格式,由 @Viicos#11032 中完成
  • 当字段被注解为 final 且带有默认值时发出弃用警告,由 @Viicos#11168 中完成
  • 弃用在实例上访问 model_fieldsmodel_computed_fields,由 @Viicos#11169 中完成
  • 将路径类型的核心 schema 生成逻辑移到 GenerateSchema 类中,由 @sydney-runkle#10846 中完成
  • deque schema 生成移至 GenerateSchema 类,以完成 prepare_annotations_for_known_type 变通方法的移除,由 @sydney-runkle#11239 中完成
  • Mapping schema 生成移至 GenerateSchema,以完成 prepare_annotations_for_known_type 变通方法的移除,由 @sydney-runkle#11247 中完成
  • 移除对 Python 3.8 的支持,由 @sydney-runkle#11258 中完成
  • 禁用 pydantic-core 核心 schema 验证,由 @sydney-runkle#11271 中完成

性能

修复

  • 添加 _internal/_validators.py 的验证测试,由 @tkasuz#10763 中完成
  • 改进 TypeAdapter 实例的 repr,由 @sydney-runkle#10872 中完成
  • 回滚“ci:使用本地构建的带有调试符号的 pydantic-core”,由 @sydney-runkle#10942 中完成
  • 重新启用所有 FastAPI 测试,由 @tamird#10948 中完成
  • 修复 HISTORY.md 中的拼写错误,由 @felixxm#11077 中完成
  • 在 mypy 插件中,将具有默认值的 final 字段推断为类变量,由 @Viicos#11121 中完成
  • 如果使用 PEP 695 类型别名,递归地解包 Literal 值,由 @Viicos#11114 中完成
  • 覆盖 ModelMetaclass 上的 __subclasscheck__ 以避免内存泄漏和性能问题,由 @Viicos#11116 中完成
  • 移除未使用的 _extract_get_pydantic_json_schema() 参数,由 @Viicos#11155 中完成
  • 将 FastAPI 和 SQLModel 添加到第三方测试中,由 @sydney-runkle#11044 中完成
  • 修复第三方测试的条件表达式语法,由 @Viicos#11162 中完成
  • 将 FastAPI 测试移至第三方工作流,由 @Viicos#11164 中完成
  • 改进歧视联合对无效联合变体的错误消息,由 @Viicos#11161 中完成
  • 如果使用 Annotated 形式,解包 PEP 695 类型别名,由 @Viicos#11109 中完成
  • 在第三方失败的问题创建中包含 openapi-python-client 检查,使用 main 分支,由 @sydney-runkle#11182 中完成
  • 添加 pandera 第三方测试,由 @Viicos#11193 中完成
  • 添加 ODMantic 第三方测试,由 @sydney-runkle#11197 中完成
  • deprecated_instance_property 警告中添加缺失的 stacklevel,由 @Viicos#11200 中完成
  • 复制 WithJsonSchema schema 以避免共享变异数据,由 @thejcannon#11014 中完成
  • 在参数化另一个模型时,不缓存参数化模型,由 @Viicos#10704 中完成
  • 重新启用 Beanie 第三方测试,由 @Viicos#11214 中完成
  • CoreMetadata 定义添加歧视联合相关元数据条目,由 @Viicos#11216 中完成
  • 整合 _Definitions 类中的 schema 定义逻辑,由 @Viicos#11208 中完成
  • 在 mypy 插件中支持使用 root 类型的值初始化根模型字段,由 @Viicos#11212 中完成
  • 修复数据类和 use_attribute_docstrings 的各种问题,由 @Viicos#11246 中完成
  • 仅在 decimal_places_validator 中需要时计算标准化小数位数,由 @misrasaurabh1#11281 中完成
  • 修复验证错误文档中两个错位的句子,由 @ananiavito#11302 中完成
  • 修复文档中 mkdocstrings 清单示例,由 @pawamoy#11311 中完成
  • 在 mypy 插件中添加对 validation_alias 的支持,由 @Viicos#11295 中完成
  • 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos#11298 中完成
  • 简化 GenerateJsonSchema.literal_schema() 实现,由 @misrasaurabh1#11321 中完成
  • ClickHouseDsn 添加额外的允许方案,由 @Maze21127#11319 中完成
  • 将 decimal 约束强制转换为 Decimal 实例,由 @Viicos#11350 中完成
  • 修复年份为零时的 ValueError,由 @davidhewittpydantic-core#1583 中完成

新贡献者

v2.10.6 (2025-01-23)

GitHub 发布

更新内容

修复

  • 修复 JSON Schema 引用收集与 'examples' 键的问题,由 @Viicos#11325 中完成
  • 修复 url python 序列化问题,由 @sydney-runkle#11331 中完成

v2.10.5 (2025-01-08)

GitHub 发布

更新内容

修复

v2.10.4 (2024-12-18)

GitHub 发布

更新内容

打包

修复

  • 修复 AnyUrl 对象的比较,由 @alexprabhat99#11082 中完成
  • 正确获取函数的 PEP 695 类型参数,不从签名获取注解,由 @Viicos#11093 中完成
  • 在函数 schema 中包含 JSON Schema 输入核心 schema,由 @Viicos#11085 中完成
  • _BaseUrl 添加 len 以避免 TypeError,由 @Kharianne#11111 中完成
  • 确保从已见引用中移除类型引用,由 @Viicos#11143 中完成

新贡献者

v2.10.3 (2024-12-03)

GitHub 发布

更新内容

修复

  • 当在 Pydantic 数据类上设置 defer_build 时设置字段,由 @Viicos#10984 中完成
  • 不解析 dict 核心 schema 键的 JSON Schema 引用,由 @Viicos#10989 中完成
  • 在评估 PlainSerializerWrapSerializer 函数的返回类型时使用函数的全局变量,由 @Viicos#11008 中完成
  • 修复 URL 的 host required 强制,使其与 v2.9 行为兼容,由 @sydney-runkle#11027 中完成
  • FieldInfo 添加 default_factory_takes_validated_data 属性,由 @Viicos#11034 中完成
  • 修复 serialization 模式下的 URL json schema,由 @sydney-runkle#11035 中完成

v2.10.2 (2024-11-25)

GitHub 发布

更新内容

修复

  • 仅在 schema 构建期间需要时才评估 FieldInfo 注解,由 @Viicos#10769 中完成
  • 不对私有字段评估注解,由 @Viicos#10962 中完成
  • 支持 Secret 类型和 Url 类型的任何序列化,由 @sydney-runkle#10947 中完成
  • 修复 Field.default 的类型提示以兼容 Python 3.8 和 3.9,由 @Viicos#10972 中完成
  • 为 URL 类型添加哈希支持,由 @sydney-runkle#10975 中完成
  • 对类型检查器隐藏 BaseModel.__replace__ 定义,由 @Viicos#10979 中完成

v2.10.1 (2024-11-21)

GitHub 发布

更新内容

打包

修复

新贡献者

v2.10.0 (2024-11-20)

v2.10.0 中发布的代码实际上与 v2.10.0b2 的代码相同。

GitHub 发布

请参阅 v2.10 发布博客文章了解亮点!

更新内容

打包

新功能

更改

性能

  • Schema 清理:在 schema 遍历期间跳过不必要的复制,由 @Viicos#10286 中完成
  • 重构注解评估的命名空间逻辑,由 @Viicos#10530 中完成
  • 改进边缘情况下的电子邮件正则表达式,由 @AlekseyLobanov#10601 中完成
  • CoreMetadata 重构,重点关注文档、schema 构建时间性能和降低复杂性,由 @sydney-runkle#10675 中完成

修复

  • 移除带有 field_serializercomputed_field 上的守护检查,由 @nix010#10390 中完成
  • 修复 v2.9.0 中的 Predicate 问题,由 @sydney-runkle#10321 中完成
  • 修复 annotated-types 绑定,由 @sydney-runkle#10327 中完成
  • tzdata 安装要求变为可选的 timezone 依赖项,由 @jakob-keller#10331 中完成
  • 在构建 namedtuple 核心 schema 时使用正确的类型命名空间,由 @Viicos#10337 中完成
  • 修复命名空间检查期间字符串化注解的评估,由 @Viicos#10347 中完成
  • 修复 IncEx 类型别名定义,由 @Viicos#10339 中完成
  • 尝试评估私有属性的注解时不报错,由 @Viicos#10358 中完成
  • 修复嵌套类型语句,由 @kc0506#10369 中完成
  • 改进 ModelMetaclass.mro 的类型,由 @Viicos#10372 中完成
  • 修复已弃用的 computed_field 的类访问,由 @Viicos#10391 中完成
  • 确保 inspect.iscoroutinefunction 适用于使用 @validate_call 装饰的协程,由 @MovisLi#10374 中完成
  • 修复在类上使用带有 PEP 695 的 validate_call 时的 NameError,由 @kc0506#10380 中完成
  • 修复 ZoneInfo 与各种无效类型的兼容性,由 @sydney-runkle#10408 中完成
  • 修复带有注解的空 model_config 上的 PydanticUserError,由 @cdwilson#10412 中完成
  • 修复 _IncEx 类型别名中的方差问题,只允许 True,由 @Viicos#10414 中完成
  • 修复使用 PlainValidator 时序列化 schema 的生成,由 @Viicos#10427 中完成
  • 修复序列化 schema 包含引用时 schema 生成错误,由 @Viicos#10444 中完成
  • 在为 json_schema_input_type 生成 schema 时尽可能内联引用,由 @Viicos#10439 中完成
  • 修复 Representation 中的递归参数,由 @Viicos#10480 中完成
  • 修复内置函数类型的表示,由 @kschwab#10479 中完成
  • 为十进制约束(max_digitsdecimal_places)添加 python 验证器,由 @sydney-runkle#10506 中完成
  • 在 schema 生成期间仅从当前类获取 __pydantic_core_schema__,由 @Viicos#10518 中完成
  • 修复 BaseModel 弃用警告的 stacklevel,由 @sydney-runkle#10520 中完成
  • 修复 BaseModel.__init__ 中的警告 stacklevel,由 @Viicos#10526 中完成
  • 改进判别器应用程序中不可评估引用的错误处理,由 @sydney-runkle#10440 中完成
  • 更改 ConfigWrapper.core_config 的签名以直接获取标题,由 @Viicos#10562 中完成
  • 对于没有配置的数据类,不要使用堆栈中的前一个配置,由 @Viicos#10576 中完成
  • 修复 mode='python' 的 IP 类型的序列化,由 @sydney-runkle#10594 中完成
  • 支持 Base64Etc 类型的约束应用,由 @sydney-runkle#10584 中完成
  • 修复 validate_call 忽略 AnnotatedField 的问题,由 @kc0506#10610 中完成
  • Self 无效时引发错误,由 @kc0506#10609 中完成
  • 使用 core_schema.InvalidSchema 而不是元数据注入 + 检查,由 @sydney-runkle#10523 中完成
  • 调整类型别名逻辑,由 @kc0506#10643 中完成
  • 支持将 typetyping.Self 和类型别名一起使用,由 @kc0506#10621 中完成
  • FieldPrivateAttr 函数使用重载,由 @Viicos#10651 中完成
  • 清理 mypy 插件实现,由 @Viicos#10669 中完成
  • 正确检查 typing_extensions 变体的 TypeAliasType,由 @Daraan#10713 中完成
  • 允许 BaseModel.model_copy() 中的任何映射,由 @Viicos#10751 中完成
  • 修复 url 的 isinstance 行为,由 @sydney-runkle#10766 中完成
  • 确保 cached_property 可以设置在 Pydantic 模型上,由 @Viicos#10774 中完成
  • 修复字面量中基本类型的相等性检查,由 @sydney-runklepydantic/pydantic-core#1459 中完成
  • 正确强制执行 URL 的 host_required,由 @Viicospydantic/pydantic-core#1488 中完成
  • 修复当 coerce_numbers_to_str 启用且字符串包含无效 Unicode 字符时的问题,由 @andrey-berendapydantic/pydantic-core#1515 中完成
  • 修复 Enumcomplex 值的序列化,由 @changhcpydantic/pydantic-core#1524 中完成
  • 重构 _typing_extra 模块,由 @Viicos#10725 中完成
  • 支持 URL 的直观相等性,由 @sydney-runkle#10798 中完成
  • bytearray 添加到 TypeAdapter.validate_json 签名中,由 @samuelcolvin#10802 中完成
  • 确保在将方法描述符用作 Field 的默认值时执行类访问,由 @Viicos#10816 中完成
  • 修复 validate_call 的循环导入问题,由 @sydney-runkle#10807 中完成
  • 修复使用引用其他类型别名的类型别名时的错误,由 @Viicos#10809 中完成
  • 修复 IncEx 类型别名以与 mypy 兼容,由 @Viicos#10813 中完成
  • 使 __signature__ 成为惰性属性,不深度复制默认值,由 @Viicos#10818 中完成
  • 也使数据类的 __signature__ 惰性化,由 @sydney-runkle#10832 中完成
  • 将所有单主机 url 类从 AnyUrl 继承,以保留 v2.9 的行为,由 @sydney-runkle#10856 中完成

新贡献者

v2.10.0b2 (2024-11-13)

预发布版本,详见 GitHub 发布

v2.10.0b1 (2024-11-06)

预发布版本,详见 GitHub 发布

v2.9.2 (2024-09-17)

GitHub 发布

更新内容

修复

v2.9.1 (2024-09-09)

GitHub 发布

更新内容

修复

v2.9.0 (2024-09-05)

GitHub 发布

v2.9.0 中发布的代码实际上与 v2.9.0b2 的代码相同。

更新内容

打包

新功能

更改

性能

次要内部改进
  • ⚡️ 在 pydantic/_internal/_validators.py 中将 multiple_of_validator() 的速度提高了 31%,由 @misrasaurabh1#9839 中完成
  • ⚡️ 在 pydantic/fields.py 中将 ModelPrivateAttr.__set_name__() 的速度提高了 18%,由 @misrasaurabh1#9841 中完成
  • ⚡️ 在 pydantic/dataclasses.py 中将 dataclass() 的速度提高了 7%,由 @misrasaurabh1#9843 中完成
  • ⚡️ 在 pydantic/_internal/_signature.py 中将函数 _field_name_for_signature 的速度提高了 37%,由 @misrasaurabh1#9951 中完成
  • ⚡️ 在 pydantic/_internal/_generate_schema.py 中将方法 GenerateSchema._unpack_refs_defs 的速度提高了 26%,由 @misrasaurabh1#9949 中完成
  • ⚡️ 在 pydantic/_internal/_generate_schema.py 中将函数 apply_each_item_validators 的速度提高了 100%,由 @misrasaurabh1#9950 中完成
  • ⚡️ 在 pydantic/_internal/_config.py 中将方法 ConfigWrapper.core_config 的速度提高了 28%,由 @misrasaurabh1#9953 中完成

修复

  • 尊重 Literal 类型上的 use_enum_values,由 @kwint#9787 中完成
  • 防止异构 BaseModel/RootModel 继承的类型错误,由 @dmontagu#9913 中完成
  • 修复带有 field_validator 装饰器的方法的类型问题,由 @dmontagu#9914 中完成
  • 在验证器文档中将验证器工厂中的 str 类型注解替换为 Any,由 @maximilianfellhuber#9885 中完成
  • 修复分配属性 setter 时 ComputedFieldInfo.wrapped_property 指针,由 @tlambert03#9892 中完成
  • 修复 main.IncEnx 的递归类型,由 @tlambert03#9924 中完成
  • 允许使用 type[Annotated[...]],由 @Viicos#9932 中完成
  • mypy 插件:按字段处理冻结字段,由 @dmontagu#9935 中完成
  • 修复 invalid-annotated-type 错误代码中的拼写错误,由 @sydney-runkle#9948 中完成
  • 简化 uuidurlip 类型的 schema 生成,由 @sydney-runkle#9975 中完成
  • date schema 移至 _generate_schema.py,由 @sydney-runkle#9976 中完成
  • decimal.Decimal 验证移至 _generate_schema.py,由 @sydney-runkle#9977 中完成
  • 简化 _std_types_schema.py 中的 IP 地址 schema,由 @sydney-runkle#9959 中完成
  • 修复一些潜在泛型 GenerateSchema.match_type 选项的类型注解,由 @sydney-runkle#9961 中完成
  • 向“has conflict”警告添加类名,由 @msabramo#9964 中完成
  • 修复 dataclass 忽略 Annotated 中传递的 default_factory 的问题,由 @kc0506#9971 中完成
  • 修复 Sequence 忽略 discriminator 的问题,由 @kc0506#9980 中完成
  • 修复 IPvAnyAddressIPvAnyInterface 的类型,由 @haoyun#9990 中完成
  • 修复 mypy 插件中 v1 模型的假阳性问题,其中 from_orm 检查需要 from_attributes=True 配置,由 @radekwlsk#9938 中完成
  • strict=True 应用于 mypy 插件中的 __init__,由 @kc0506#9998 中完成
  • 重构 deque 注解的应用,由 @sydney-runkle#10018 中完成
  • 在未能评估前向引用时引发更好的用户错误,由 @Viicos#10030 中完成
  • 修复特定情况下 __pydantic_extra__ 注解的评估,由 @Viicos#10070 中完成
  • 修复 dataclassesfrozen 强制执行,由 @sydney-runkle#10066 中完成
  • 移除处理未使用 __get_pydantic_core_schema__ 签名的逻辑,由 @Viicos#10075 中完成
  • 一致地使用 is_annotated,由 @Viicos#10095 中完成
  • 修复 PydanticDeprecatedSince26 拼写错误,由 @kc0506#10101 中完成
  • 改进 pyright 测试,重构模型装饰器签名,由 @Viicos#10092 中完成
  • 修复 ip 序列化逻辑,由 @sydney-runkle#10112 中完成
  • dataclasses 的 frozen 被定义两次时发出警告,由 @mochi22#10082 中完成
  • 当 plain serializers 与 when_used 设置为 'json-unless-none' 且默认值为 None 时,不计算 JSON Schema 默认值,由 @Viicos#10121 中完成
  • 修复 ImportString 特殊情况,由 @sydney-runkle#10137 中完成
  • 黑名单默认全局变量以支持带有 __ 前缀注解的异构用户代码,由 @sydney-runkle#10136 中完成
  • 在 JSON Schema 生成期间处理带有 serialization schema 的 nullable schema,由 @Viicos#10132 中完成
  • 重组 BaseModel 注解,由 @kc0506#10110 中完成
  • 修复特定场景中涉及序列化 schema 的核心 schema 简化,由 @Viicos#10155 中完成
  • 添加对将 PrivateAttrAnnotated 一起使用时的字符串化注解的支持,由 @Viicos#10157 中完成
  • 修复字面量和枚举 schema 的 JSON Schema number 类型,由 @Viicos#10172 中完成
  • 修复序列化模式下具有普通验证器的字段的 JSON Schema 生成,由 @Viicos#10167 中完成
  • 修复在某些场景中为函数生成无效 JSON Schemas 的问题,由 @Viicos#10188 中完成
  • 确保生成的 JSON Schemas 在测试中有效,由 @Viicos#10182 中完成
  • 修复自定义序列化器的键错误,由 @sydney-runkle#10200 中完成
  • 为 NatsDsn 允许的 schemes 添加 'wss',由 @swelborn#10224 中完成
  • 修复 MappingMutableMapping 注解以使用映射 schema 而不是 dict schema,由 @sydney-runkle#10020 中完成
  • 修复受限日期的 JSON Schema 生成,由 @Viicos#10185 中完成
  • 修复使用枚举时判别联合 bug 回归,由 @kfreezenpydantic/pydantic-core#1286 中完成
  • 修复 field_serializer 与计算字段一起使用时使用 * 的问题,由 @nix010pydantic/pydantic-core#1349 中完成
  • 在推断之前尝试 Union 序列化器中的每个选项,由 @sydney-runklepydantic/pydantic-core#1398 中完成
  • 修复 strict 模式下 float 序列化行为,由 @sydney-runklepydantic/pydantic-core#1400 中完成
  • 在 Decimal 验证逻辑中引入 exactness 以改进联合验证行为,由 @sydney-runklepydantic/pydantic-core#1405 中完成
  • 修复新警告断言以使用 pytest.warns(),由 @mgorny#10241 中完成
  • 修复 ModelMetaclass 清理命名空间时崩溃的问题,由 @Viicos#10242 中完成
  • 修复模型重建的父命名空间问题,由 @sydney-runkle#10257 中完成
  • 移除命名空间的默认过滤器,由 @sydney-runkle#10261 中完成
  • __init__ 中验证模型后使用身份而不是相等性,由 @Viicos#10264 中完成
  • 支持 int 子类的 BigInt 序列化,由 @kxx317pydantic/pydantic-core#1417 中完成
  • 支持没有 info 的包装验证器的签名,由 @sydney-runkle#10277 中完成
  • 确保在重建 dataclasses 时设置 __pydantic_complete__,由 @Viicos#10291 中完成
  • 尊重 TypeAdapterschema_generator 配置值,由 @sydney-runkle#10300 中完成

新贡献者

pydantic

pydantic-core

v2.9.0b2 (2024-08-30)

预发布版本,详见 GitHub 发布

v2.9.0b1 (2024-08-26)

预发布版本,详见 GitHub 发布

v2.8.2 (2024-07-03)

GitHub 发布

更新内容

修复

  • 修复由可插拔 schema 验证器引起的断言问题,由 @dmontagu#9838 中完成

v2.8.1 (2024-07-03)

GitHub 发布

更新内容

打包

  • ruff 升级到 v0.5.0,将 pyright 升级到 v1.1.369,由 @sydney-runkle#9801 中完成
  • pydantic-core 升级到 v2.20.1pydantic-extra-types 升级到 v2.9.0,由 @sydney-runkle#9832 中完成

修复

v2.8.0 (2024-07-01)

GitHub 发布

v2.8.0 中发布的代码与 v2.8.0b1 的代码功能相同。

更新内容

打包

新功能

更改

  • 当忽略的 Annotated 字段中设置了“alias”时添加警告,由 @nix010#9170 中完成
  • 支持 JSON schema 中某些可序列化默认值的序列化,由 @sydney-runkle#9624 中完成
  • 放宽 create_model__validators__ 值的类型规范,由 @sydney-runkle#9697 中完成
  • 重大更改:改进 smart 联合匹配逻辑,由 @sydney-runklepydantic/pydantic-core#1322 中完成。您可以在 此处 阅读有关我们的 smart 联合匹配逻辑的更多信息。在某些情况下,如果需要旧行为,您可以切换到 left-to-right 模式并更改 Union 成员的顺序。

性能

内部改进
  • ⚡️ 在 pydantic/v1/error_wrappers.py 中将 _display_error_loc() 的速度提高了 25%,由 @misrasaurabh1#9653 中完成
  • ⚡️ 在 pydantic/json_schema.py 中将 _get_all_json_refs() 的速度提高了 34%,由 @misrasaurabh1#9650 中完成
  • ⚡️ 在 pydantic/dataclasses.py 中将 is_pydantic_dataclass() 的速度提高了 41%,由 @misrasaurabh1#9652 中完成
  • ⚡️ 在 pydantic/alias_generators.py 中将 to_snake() 的速度提高了 27%,由 @misrasaurabh1#9747 中完成
  • ⚡️ 在 pydantic/_internal/_decorators.py 中将 unwrap_wrapped_function() 的速度提高了 93%,由 @misrasaurabh1#9727 中完成

修复

  • __spec__.parent 替换为 __package__,由 @hramezani#9331 中完成
  • 修复 Sequence 类型的输出模型 JSON Schema,由 @anesmemisevic#9303 中完成
  • 修复 _frame_depth 的类型,由 @Viicos#9353 中完成
  • 使 ImportString 与 json schema 兼容,由 @amitschang#9344 中完成
  • 在类型检查器中从 __init__ 签名隐藏私有属性(PrivateAttr),由 @idan22moral#9293 中完成
  • 使 TypeVar 默认值的检测对 CPython PEP-696 实现具有鲁棒性,由 @AlexWaygood#9426 中完成
  • 修复 PlainSerializer 与内置类型的使用,由 @Viicos#9450 中完成
  • 添加更健壮的自定义验证示例,由 @ChrisPappalardo#9468 中完成
  • 修复 StringConstraint(strict=False) 忽略 strict 规范的问题,由 @vbmendes#9476 中完成
  • 重大更改:使用 PEP 570 语法,由 @Viicos#9479 中完成
  • 尽可能使用 Self,由 @Viicos#9479 中完成
  • mypy 插件中不更改 RootModel.model_construct 签名,由 @Viicos#9480 中完成
  • 修复 validation_context 的类型提示,由 @OhioDschungel6#9508 中完成
  • 支持将上下文传递给 TypeAdapter 的 dump_json/dump_python,由 @alexcouper#9495 中完成
  • 更新 Field() 构造函数的类型签名,由 @bjmc#9484 中完成
  • 改进内置别名生成器,由 @sydney-runkle#9561 中完成
  • 修复 TypeAdapter 的类型,由 @Viicos#9570 中完成
  • 在 BaseModel 的 __setstate__ 中为私有字段添加回退默认值,由 @anhpham1509#9584 中完成
  • 支持 PEP 746,由 @adriangb#9587 中完成
  • 允许验证器和序列化器函数具有默认值,由 @Viicos#9478 中完成
  • 修复 mypy 插件处理协变 TypeVar 字段的 bug,由 @dmontagu#9606 中完成
  • 修复多个注解/约束应用逻辑,由 @sydney-runkle#9623 中完成
  • 尊重验证和 json schema 中的 regex 标志,由 @sydney-runkle#9591 中完成
  • 修复 IpvAnyAddress 上的类型提示,由 @sydney-runkle#9640 中完成
  • 允许在 __pydantic_extra__ 上指定字段,由 @dmontagu#9659 中完成
  • 为文件路径比较使用规范化大小写,由 @sydney-runkle#9737 中完成
  • 修改约束应用逻辑以允许 Optional[Decimal] 上的字段约束,由 @lazyhope#9754 中完成
  • validate_call 类型参数修复,由 @sydney-runkle#9760 中完成
  • 检查 pytest.warns() 返回的所有警告,由 @s-t-e-v-e-n-k#9702 中完成
  • 在正则表达式模式中重用 re.Pattern 对象以允许正则表达式标志,由 @sydney-runklepydantic/pydantic-core#1318 中完成

新贡献者

v2.8.0b1 (2024-06-27)

预发布版本,详见 GitHub 发布

v2.7.4 (2024-06-12)

Github 发布

更新内容

打包

修复

  • FutureRef._evaluate 中将 recursive_guard 指定为 kwarg,由 @vfazio#9612 中完成

v2.7.3 (2024-06-03)

GitHub 发布

更新内容

打包

修复

v2.7.2 (2024-05-28)

GitHub 发布

更新内容

打包

修复

v2.7.1 (2024-04-23)

GitHub 发布

更新内容

打包

新功能

更改

  • 当存在 时,使用字段描述作为 RootModel schema 描述,由 @LouisGobert#9214 中完成

修复

新贡献者

v2.7.0 (2024-04-11)

GitHub 发布

v2.7.0 中发布的代码实际上与 v2.7.0b1 的代码相同。

更新内容

打包

新功能

  • FieldInfo.description 中提取属性 docstrings,由 @Viicos#6563 中完成
  • 添加 with_config 装饰器以符合类型规范,由 @Viicos#8611 中完成
  • 允许在 ByteSize.human_readable 的结果中可选地分隔值和单位,由 @jks15satoshi#8706 中完成
  • 添加泛型 Secret 基类型,由 @conradogarciaberrotaran#8519 中完成
  • 在文档中利用 Sphinx 索引进行交叉引用,由 @Viicos#8682 中完成
  • 添加环境变量以禁用插件,由 @geospackle#8767 中完成
  • 添加对 deprecated 字段的支持,由 @Viicos#8237 中完成
  • 允许 field_serializer('*'),由 @ornariece#9001 中完成
  • 处理 model_config 被定义为模型属性的情况,由 @alexeyt101#9004 中完成
  • 更新 create_model() 以支持 typing.Annotated 作为输入,由 @wannieman98#8947 中完成
  • 添加 ClickhouseDsn 支持,由 @solidguy7#9062 中完成
  • 添加对 pattern 字段的 re.Pattern[str] 的支持,由 @jag-k#9053 中完成
  • 支持 serialize_as_any 运行时设置,由 @sydney-runkle#8830 中完成
  • 添加对 typing.Self 的支持,由 @Youssefares#9023 中完成
  • 能够将 context 传递给序列化,由 @ornariece#8965 中完成
  • 添加带有 flarelytics 集成的文档反馈小部件,由 @sydney-runkle#9129 中完成
  • 支持在 Python 中解析部分 JSON 字符串,由 @samuelcolvinpydantic/jiter#66 中完成

在 v2.7.0 而非 v2.7.0b1 中最终确定

  • 添加对字段级别数字到字符串强制转换选项的支持,由 @NeevCohen#9137 中完成
  • 更新序列化实用程序的 warnings 参数以允许引发警告,由 @Lance-Drane#9166 中完成

更改

性能

修复

  • 修复某些 Sequence 的严格解析,作者:@sydney-runkle,提交于 #8614
  • 添加 __qualname__ 存在性检查,作者:@anci3ntr0ck,提交于 #8642
  • 处理 __pydantic_extra__ 注解是字符串或继承的,作者:@alexmojaki,提交于 #8659
  • 修复 NameEmail 的 json 验证,作者:@Holi0317,提交于 #8650
  • 修复 BaseModel 中属性访问的类型安全问题,作者:@bluenote10,提交于 #8651
  • 修复 mypy 插件和 no_strict_optional = True 的 bug,作者:@dmontagu,提交于 #8666
  • 修复 ByteSize 错误 type 更改,作者:@sydney-runkle,提交于 #8681
  • 修复数据类中继承注解的问题,作者:@sydney-runkle,提交于 #8679
  • 修复间接定义引用导致的核心模式生成中的回归问题,作者:@dmontagu,提交于 #8702
  • 修复普通验证器不支持类型的问题,作者:@sydney-runkle,提交于 #8710
  • 回滚 2.6 版本中存在问题的修复,修复模式构建 bug,作者:@sydney-runkle,提交于 #8718
  • 修复 TypeDict 忽略 __pydantic_config__ 的问题,作者:@13sin,提交于 #8734
  • 修复 pytest v8.0.0 测试失败问题,原因是 pytest.warns() 开始在 pytest.raises() 内部工作,作者:@mgorny,提交于 #8678
  • mypy 插件使用 1.x 中的 is_valid_field,作者:@DanielNoord,提交于 #8738
  • 更好地支持 mypy 严格相等标志,作者:@dmontagu,提交于 #8799
  • 带有 Annotated 类型的 model_json_schema 导出缺少“必需”参数,作者:@LouisGobert,提交于 #8793
  • 修复 FieldInfo.__repr_args__ 中默认值的包含问题,作者:@sydney-runkle,提交于 #8801
  • 修复不在子类模块命名空间中的数据类基类中转发引用的解析问题,作者:@matsjoyce-refeyn,提交于 #8751
  • 修复 BaseModel 类型注解以兼容 typing.get_type_hints,作者:@devmonkey22,提交于 #7680
  • 修复:允许 AliasGenerator 使用空字符串别名,作者:@sydney-runkle,提交于 #8810
  • 修复测试以及 date -> datetime 时区假设修复,作者:@sydney-runkle,提交于 #8823
  • 修复使用 ast.Str 导致的弃用警告,作者:@Viicos,提交于 #8837
  • 添加缺少的 deprecated 装饰器,作者:@Viicos,提交于 #8877
  • 修复 NameEmail 的序列化问题,如果名称包含电子邮件地址,作者:@NeevCohen,提交于 #8860
  • 在模式生成错误消息中添加类信息,作者:@Czaki,提交于 #8917
  • 使 TypeAdapter 的类型与特殊形式兼容,作者:@adriangb,提交于 #8923
  • 修复 enum 的 ref 模式中配置行为被固化的问题,作者:@dmontagu,提交于 #8920
  • 关于错误 model_json_schema 用法的更有帮助的错误信息,作者:@sydney-runkle,提交于 #8928
  • 修复嵌套判别联合模式生成,第二部分,作者:@sydney-runkle,提交于 #8932
  • 修复带有判别符的嵌套数据类/TypedDicts 的模式构建,作者:@sydney-runkle,提交于 #8950
  • 移除判别联合定义模式生成中不必要的逻辑,作者:@sydney-runkle,提交于 #8951
  • 修复 mypy 插件中可选值的处理问题,作者:@dmontagu,提交于 #9008
  • 修复 PlainSerializer 与标准类型构造函数的使用问题,作者:@sydney-runkle,提交于 #9031
  • 移除插件中关于配置的不必要警告,作者:@dmontagu,提交于 #9039
  • 修复默认值序列化问题,作者:@NeevCohen,提交于 #9066
  • 修复 Model.__getattr__() 中的额外字段检查,作者:@NeevCohen,提交于 #9082
  • 修复从父类继承的 ClassVar 转发引用问题,作者:@alexmojaki,提交于 #9097
  • 修复严格模式下序列验证器问题,作者:@andresliszt,提交于 #8977
  • 改进当字段名与父模型中的字段名冲突时的警告信息,作者:@chan-vince,提交于 #9105
  • 如果字段在子类中未重新定义,则不警告被遮蔽的字段,作者:@chan-vince,提交于 #9111
  • 修复判别联合与未替换类型变量的 bug,作者:@sydney-runkle,提交于 #9124
  • 支持当传递给 Sequence[blah blah blah]deque 的序列化,作者:@sydney-runkle,提交于 #9128
  • model_post_init 中从超类型初始化私有属性,作者:@Viicos,提交于 #9134
  • 修复 model_constructvalidation_alias 的问题,作者:@ornariece,提交于 #9144
  • 确保 json-schema 生成器处理 Literal null 类型,作者:@bruno-f-cruz,提交于 #9135
  • v2.7.0 中已修复:修复允许额外泛型问题,作者:@dmontagu,提交于 #9193

新贡献者

v2.7.0b1 (2024-04-03)

预发布版本,详情请参阅 GitHub 版本发布

v2.6.4 (2024-03-12)

GitHub 发布

更新内容

修复

  • 修复 AliasGeneratorcomputed_field 装饰器配合使用的问题,作者:@sydney-runkle,提交于 #8806
  • 修复嵌套判别联合模式生成,第二部分,作者:@sydney-runkle,提交于 #8932
  • 修复 API 延迟导致的 no_strict_optional=True 问题,作者:@dmontagu,提交于 #8826

v2.6.3 (2024-02-27)

GitHub 发布

更新内容

打包

  • 更新文档中的 pydantic-settings 版本,作者:@hramezani,提交于 #8906

修复

v2.6.2 (2024-02-23)

GitHub 发布

更新内容

打包

修复

v2.6.1 (2024-02-05)

GitHub 发布

更新内容

打包

修复

v2.6.0 (2024-01-23)

GitHub 发布

v2.6.0 中发布的代码实际上与 v2.6.0b1 中的代码相同。

更新内容

打包

  • 检查 email-validator 版本 >= 2.0,作者:@commonism,提交于 #6033
  • 将 `ruff`` 目标版本升级到 Python 3.8,作者:@Elkiwa,提交于 #8341
  • 更新到 pydantic-extra-types==2.4.1,作者:@yezz123,提交于 #8478
  • 更新到 pyright==1.1.345,作者:@Viicos,提交于 #8453
  • 将 pydantic-core 从 2.14.6 更新到 2.16.1,这些更新带来的重大更改如下所述,完整的更改日志请见 此处

新功能

更改

  • 放弃 Python3.7 支持,作者:@hramezani,提交于 #7188
  • 放弃 Python 3.7,以及 PyPy 3.7 和 3.8,作者:@davidhewitt,提交于 pydantic/pydantic-core#1129
  • BaseModel 构造函数中使用仅位置参数 self,以避免字段名与其冲突,作者:@ariebovenberg,提交于 #8072
  • 使 @validate_call 返回一个函数而不是自定义描述符 - 修复了继承的绑定问题,并为验证错误添加了 self/cls 参数,作者:@alexmojaki,提交于 #8268
  • 从 JSON schema 描述中排除 BaseModel 文档字符串,作者:@sydney-runkle,提交于 #8352
  • model_computed_fields 引入 classproperty 装饰器,作者:@Jocelyn-Gas,提交于 #8437
  • 如果字段名与类型冲突,明确引发错误,作者:@Viicos,提交于 #8243
  • 为简单类型的联合使用更严格的序列化器,作者:@alexdrydew pydantic/pydantic-core#1132

性能

修复

  • getattr 警告移至弃用的 BaseConfig 中,作者:@tlambert03,提交于 #7183
  • 仅哈希 model_fields,而不是整个 __dict__,作者:@alexmojaki,提交于 #7786
  • 修复 mypy 插件在冻结类型时处理联合类型的问题,作者:@dmontagu,提交于 #7411
  • 修复未类型化 ClassVar 上的 mypy 错误,作者:@vincent-hachin-wmx,提交于 #8138
  • BaseModel.__eq__ 中只比较 pydantic 字段,而不是整个 __dict__,作者:@QuentinSoubeyranAqemia,提交于 #7825
  • 更新 model_validate 方法中的 strict 文档字符串,作者:@LukeTonin,提交于 #8223
  • 修复 computed_field 的重载位置,作者:@Viicos,提交于 #8227
  • 修复在多个属性中使用的自定义类型类型转换问题,作者:@ianhfc,提交于 #8066
  • 修复不允许 validate_call 装饰器动态分配给类方法的问题,作者:@jusexton,提交于 #8249
  • 修复 unittest.mock 弃用警告问题,作者:@ibleedicare,提交于 #8262
  • 添加了 JsonValue 包含子类化的原始值的情况的测试,作者:@jusexton,提交于 #8286
  • 修复 before 验证器 (classmethod) 之前的 mypy 错误,作者:@sydney-runkle,提交于 #8285
  • 修复 to_snake 转换,作者:@jevins09,提交于 #8316
  • 修复 ModelMetaclass.__prepare__ 的类型注解,作者:@slanzmich,提交于 #8305
  • 当注解类型已包含配置时,不允许在初始化 TypeAdapter 时指定 config,作者:@sydney-runkle,提交于 #8365
  • 修复 JSON schema 中泛型参数化递归类型别名导致命名问题,作者:@dmontagu,提交于 #8389
  • 修复 pydantic people 脚本中的类型注解,作者:@shenxiangzhuang,提交于 #8402
  • 添加对 dataclass 签名中字段 alias 的支持,作者:@NeevCohen,提交于 #8387
  • 修复 Field(...) 在转发引用中导致模式生成 bug,作者:@dmontagu,提交于 #8494
  • 修复 model_construct 调用中 __dict__ 的键顺序问题,作者:@sydney-runkle,提交于 #8500
  • 修复当 globals 不包含 __name__ 时模块 path_type 创建问题,作者:@hramezani,提交于 #8470
  • 修复带有 from __future__ import annotations 的数据类命名空间问题,作者:@sydney-runkle,提交于 #8513
  • 修复:使函数验证器类型仅为位置参数,作者:@pmmmwh,提交于 #8479
  • 修复 @deprecated 的用法,作者:@Viicos,提交于 #8294
  • model_construct 调用中添加对私有属性的更多支持,作者:@sydney-runkle,提交于 #8525
  • 为类型命名空间使用堆栈,作者:@dmontagu,提交于 #8378
  • 修复带有 refs 类型的 TypeAliasType 的模式构建 bug,作者:@dmontagu,提交于 #8526
  • 支持数据类中的 pydantic.Field(repr=False),作者:@tigeryy2,提交于 #8511
  • 覆盖 RootModeldataclass_transform 行为,作者:@Viicos,提交于 #8163
  • 重构签名生成以简化,作者:@sydney-runkle,提交于 #8572
  • 修复 PlainValidator 注解的顺序 bug,作者:@Anvil,提交于 #8567
  • 修复 computed_field json 序列化的 exclude_none,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1098
  • 支持用于 datetime 的 yyyy-MM-DD 字符串,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1124
  • 调整生成的模式中定义的顺序,作者:@StrawHatDrag0n,提交于 #8583

新贡献者

pydantic

pydantic-core

v2.6.0b1 (2024-01-19)

预发布版本,详情请参阅 GitHub 版本发布

v2.5.3 (2023-12-22)

GitHub 发布

更新内容

打包

  • pydantic-core 升级到 2.14.6

修复

v2.5.2 (2023-11-22)

GitHub 发布

更新内容

打包

  • pydantic-core 升级到 2.14.5

新功能

修复

v2.5.1 (2023-11-15)

GitHub 发布

更新内容

打包

修复

v2.5.0 (2023-11-13)

GitHub 发布

v2.5.0 中发布的代码在功能上与 v2.5.0b1 中的代码相同。

更新内容

打包

  • 将 pydantic-core 从 2.10.1 更新到 2.14.1,这些更新带来的重大更改如下所述,完整的更改日志请见 此处
  • 更新到 pyright==1.1.335,作者:@Viicos,提交于 #8075

新功能

  • 允许插件捕获非 ValidationError 错误,作者:@adriangb,提交于 #7806
  • 支持 create_model() 中的 __doc__ 参数,作者:@chris-spann,提交于 #7863
  • 公开 regex_engine 标志 - 意味着您可以在约束中使用 Rust 或 Python 正则表达式库,作者:@utkini,提交于 #7768
  • 保存从 ComputedFieldInfo 中类型注解生成的返回类型,作者:@alexmojaki,提交于 #7889
  • 采用 ruff 格式化程序,作者:@Luca-Blight,提交于 #7930
  • 向配置添加 validation_error_cause,作者:@zakstucke,提交于 #7626
  • 使要验证的项的路径在插件中可用,作者:@hramezani,提交于 #7861
  • 添加 CallableDiscriminatorTag,作者:@dmontagu,提交于 #7983
    • CallableDiscriminator 重命名为 Discriminator,作者:@dmontagu,提交于 #8047
  • 使联合案例标签影响联合错误消息,作者:@dmontagu,提交于 #8001
  • @computed_field 添加 examplesjson_schema_extra,作者:@alexmojaki,提交于 #8013
  • 添加 JsonValue 类型,作者:@dmontagu,提交于 #7998
  • 允许 str 作为 Discriminator 的参数,作者:@dmontagu,提交于 #8047
  • 添加 SchemaSerializer.__reduce__ 方法以启用 pickle 序列化,作者:@edoakes,提交于 pydantic/pydantic-core#1006

更改

  • 重大更改:ultra_strict 替换为新的智能联合实现,联合验证方式已显著更改以提高性能和正确性,我们已努力将行为更改的案例数降至最低,详情请参阅 PR - 作者:@davidhewitt,提交于 pydantic/pydantic-core#867
  • extra='allow' 时,添加对实例方法重新分配的支持,作者:@sydney-runkle,提交于 #7683
  • 支持没有案例的 Enum 类型的 JSON schema 生成,作者:@sydney-runkle,提交于 #7927
  • 如果类在 BaseModel 之前继承 Generic,则发出警告,作者:@alexmojaki,提交于 #7891

性能

修复

新贡献者

pydantic

pydantic-core

v2.5.0b1 (2023-11-09)

预发布版本,详情请参阅 GitHub 版本发布

v2.4.2 (2023-09-27)

GitHub 发布

更新内容

修复

  • 修复判别联合序列的 JSON schema bug,作者:@dmontagu,提交于 #7647
  • 修复判别联合中的模式引用,作者:@adriangb,提交于 #7646
  • 修复递归模型的 json schema 生成问题,作者:@adriangb,提交于 #7653
  • 修复泛型模型的 models_json_schema,作者:@adriangb,提交于 #7654
  • 修复泛型模型签名的 xfailed 测试,作者:@adriangb,提交于 #7658

新贡献者

v2.4.1 (2023-09-26)

GitHub 发布

更新内容

打包

修复

  • 将未替换的类型变量序列化为 Any,作者:@adriangb,提交于 #7606
  • 移除模式构建缓存,作者:@adriangb,提交于 #7624
  • 修复 JSON schema 附加项未进行 JSON 编码的问题,作者:@dmontagu,提交于 #7625

v2.4.0 (2023-09-22)

GitHub 发布

更新内容

打包

新功能

  • 添加 Base64Url 类型,作者:@dmontagu,提交于 #7286
  • 实现可选的 numberstr 强制转换,作者:@lig,提交于 #7508
  • 如果存在数据和字段名,允许在所有验证器中访问 field_namedata,作者:@samuelcolvin,提交于 #7542
  • 添加 BaseModel.model_validate_stringsTypeAdapter.validate_strings,作者:@hramezani,提交于 #7552
  • 添加 Pydantic plugins 实验性实现,作者:@lig @samuelcolvin@Kludex,提交于 #6820

更改

  • 在子类中不带私有属性时,不覆盖 model_post_init,作者:@Viicos,提交于 #7302
  • 默认情况下,使带有默认值的字段在序列化模式中不被要求,作者:@dmontagu,提交于 #7275
  • Extra 标记为已弃用,作者:@disrupted,提交于 #7299
  • 使 EncodedStr 成为数据类,作者:@Kludex,提交于 #7396
  • annotated_handlers 设为公共,作者:@samuelcolvin,提交于 #7569

性能

  • 简化 CoreSchema 的扁平化和内联,作者:@adriangb,提交于 #7523
  • 移除 CoreSchema 遍历中未使用的复制,作者:@adriangb,提交于 #7528
  • 添加缓存以从 CoreSchema 中收集定义和无效模式,作者:@adriangb,提交于 #7527
  • 积极解析判别联合,并缓存无法解析的情况,作者:@adriangb,提交于 #7529
  • CoreSchema 构建热路径中将 dict.getdict.setdefault 替换为更详细的版本,作者:@adriangb,提交于 #7536
  • 缓存无效 CoreSchema 发现,作者:@adriangb,提交于 #7535
  • 允许禁用 CoreSchema 验证以加快启动时间,作者:@adriangb,提交于 #7565

修复

  • 修复 TypedDict 从祖先类检测配置的问题,作者:@dmontagu,提交于 #7272
  • 修复具有异常 MRO 的冻结模型的哈希函数生成问题,作者:@dmontagu,提交于 #7274
  • 使 Path 字段中的 strict 配置可覆盖,作者:@hramezani,提交于 #7281
  • GenerateJsonSchema 中默认使用 ser_json_<timedelta|bytes>,作者:@Kludex,提交于 #7269
  • 添加一个检查,确保别名在 Python 中被验证为标识符,作者:@andree0,提交于 #7319
  • 当计算字段覆盖字段时引发错误,作者:@sydney-runkle,提交于 #7346
  • 修复将 SkipValidation 应用于引用模式的问题,作者:@adriangb,提交于 #7381
  • 强制私有属性具有双下划线前缀的行为,作者:@lig,提交于 #7265
  • 标准化 __get_pydantic_core_schema__ 签名,作者:@hramezani,提交于 #7415
  • 修复泛型数据类字段突变 bug(使用 TypeAdapter 时),作者:@sydney-runkle,提交于 #7435
  • 修复 wrap 模式下 model_validatorTypeError,作者:@pmmmwh,提交于 #7496
  • 改进枚举错误消息,作者:@hramezani,提交于 #7506
  • 修复处理 ValidationError 时,初始化失败的实例的 repr,作者:@dmontagu,提交于 #7439
  • 通过限制空格修复正则表达式拒绝服务问题,作者:@prodigysml,提交于 #7360
  • 修复处理 UUID 值具有 UUID.version=None 的问题,作者:@lig,提交于 #7566
  • 修复 __iter__ 返回私有 cached_property 信息的问题,作者:@sydney-runkle,提交于 #7570
  • 改进版本信息消息,作者:@samuelcolvin,提交于 #7594

新贡献者

v2.3.0 (2023-08-23)

GitHub 发布

  • 🔥 移除仓库中孤立的更改文件,作者:@lig,提交于 #7168
  • 在文档上添加复制按钮,作者:@Kludex,提交于 #7190
  • 修复 JSON 类型文档,作者:@Kludex,提交于 #7189
  • 在 CI 中将 mypy 1.5.0 更新到 1.5.1,作者:@hramezani,提交于 #7191
  • 修复下载链接徽章,作者:@samuelcolvin,提交于 #7200
  • 将 2.2.1 添加到更改日志,作者:@samuelcolvin,提交于 #7212
  • 使 ModelWrapValidator 协议泛型化,作者:@dmontagu,提交于 #7154
  • 更正 Field(..., exclude: bool) 文档,作者:@samuelcolvin,提交于 #7214
  • 将遮蔽属性更改为警告而不是错误,作者:@adriangb,提交于 #7193
  • 文档 Base64StrBase64Bytes,作者:@Kludex,提交于 #7192
  • 修复序列化优先情况下的 config.defer_build,作者:@samuelcolvin,提交于 #7024
  • 清理 JSON Schema 中的 Model 文档字符串,作者:@samuelcolvin,提交于 #7210
  • 修复 #7228(拼写错误):validators.md 中的文档更正 validate_default kwarg,作者:@lmmx,提交于 #7229
  • ✅ 在 pydantic-core 中为 TzInfo 实现 tzinfo.fromutc 方法,作者:@lig,提交于 #7019
  • 支持 __get_validators__,作者:@hramezani,提交于 #7197

v2.2.1 (2023-08-18)

GitHub 发布

v2.2.0 (2023-08-17)

GitHub 发布

  • 将文档站点上的 "pipx install" 安装命令拆分为两个命令,作者 @nomadmtb,在 #6869
  • 弃用 Field.include,作者 @hramezani,在 #6852
  • 修复默认工厂错误消息中的拼写错误,作者 @hramezani,在 #6880
  • 简化 GenerateSchema 中 typing.Annotated 的处理,作者 @dmontagu,在 #6887
  • 在 CI 中重新启用 fastapi 测试,作者 @dmontagu,在 #6883
  • 使 json 模式定义引用更难发生冲突,作者 @dmontagu,在 #6566
  • Path 字段的无效输入提供更清晰的错误,作者 @samuelcolvin,在 #6903
  • 📝 支持坐标类型,作者 @yezz123,在 #6906
  • 修复 py 3.10.0 的 ForwardRef 包装器(bpo-45166 的垫片),作者 @randomir,在 #6919
  • 修复与 RootModel 复制相关的错误行为,作者 @dmontagu,在 #6918
  • 修复由 ParamSpec 引起的递归错误问题,作者 @dmontagu,在 #6923
  • 向迁移指南添加有关 Constrained 类的部分,作者 @Kludex,在 #6924
  • 使用 main 分支作为徽章链接,作者 @Viicos,在 #6925
  • 添加 v1/v2 Annotated 差异的测试,作者 @carlbordum,在 #6926
  • 使 v1 mypy 插件同时适用于 v1 和 v2,作者 @dmontagu,在 #6921
  • 修复泛型模型无法使用 BaseModel 进行参数化的问题,作者 @dmontagu,在 #6933
  • 移除带别名的判别联合的 xfail,作者 @dmontagu,在 #6938
  • 向 computed_field 添加 field_serializer,作者 @andresliszt,在 #6965
  • 将 union_schema 与 Type[Union[...]] 一起使用,作者 @JeanArhancet,在 #6952
  • 修复继承的 typeddict 属性/配置,作者 @adriangb,在 #6981
  • 修复 dataclass Annotated 之前验证器被调用两次的问题,作者 @davidhewitt,在 #6998
  • 更新 test-fastapi 取消选择的测试,作者 @hramezani,在 #7014
  • 修复验证器文档格式,作者 @hramezani,在 #7015
  • 修复 model_json_schema 的 docstring 中的拼写错误,作者 @AdamVinch-Federated,在 #7032
  • 移除 pyright 未使用的“类型忽略”,作者 @samuelcolvin,在 #7026
  • 添加表示 FastAPI 启动时间的基准测试,作者 @adriangb,在 #7030
  • 修复 Enum 子类的 json_encoders,作者 @adriangb,在 #7029
  • 更新 ser_json_bytes 关于 base64 编码的 docstring,作者 @Viicos,在 #7052
  • 允许 @validate_call 在异步方法上工作,作者 @adriangb,在 #7046
  • 修复:SettingsSettingsConfigDict 的 mypy 错误,作者 @JeanArhancet,在 #7002
  • 修复一些拼写错误(重复的单词和 it's/its),作者 @eumiro,在 #7063
  • 修复 docstring 中的拼写错误,作者 @harunyasar,在 #7062
  • 文档:修复 pydantic-settings 包推荐中损坏的 URL,作者 @swetjen,在 #6995
  • 处理将约束应用于不接受它的模式的情况,作者 @adriangb,在 #6951
  • 将 almost_equal_floats 替换为 math.isclose,作者 @eumiro,在 #7082
  • 将 pydantic-core 升级到 2.5.0,作者 @davidhewitt,在 #7077
  • 添加 short_version 并在链接中使用它,作者 @hramezani,在 #7115
  • 📝 在 RootModel 中添加用法链接,作者 @Kludex,在 #7113
  • 恢复“修复 mongosrv DSN 的默认端口 (#6827)”,作者 @Kludex,在 #7116
  • 在用法文档和迁移指南中澄清 validate_default 和 _Unset 处理,作者 @benbenbang,在 #6950
  • 调整 Field.exclude 的文档,作者 @Viicos,在 #7086
  • 不要求 validate_assignment 使用 Field.frozen,作者 @Viicos,在 #7103
  • 调整 _core_utils,作者 @samuelcolvin,在 #7040
  • 使 DefaultDict 适用于集合,作者 @hramezani,在 #7126
  • 对于部分参数化的模型,不总是要求 typing.Generic 作为基类,作者 @dmontagu,在 #7119
  • 修复 JSON 模式错误使用父类核心模式的问题,作者 @dmontagu,在 #7020
  • 修复与 TypedDict 和 alias_generator 相关的 xfailed 测试,作者 @dmontagu,在 #6940
  • 改进 NameEmail 的错误消息,作者 @dmontagu,在 #6939
  • 修复泛型计算字段,作者 @dmontagu,在 #6988
  • 在验证期间反映命名元组的默认值,作者 @dmontagu,在 #7144
  • 更新依赖项,修复 pydantic-core 用法,修复 CI 问题,作者 @dmontagu,在 #7150
  • 添加 mypy 1.5.0,作者 @hramezani,在 #7118
  • 处理非 json 原生枚举值,作者 @adriangb,在 #7056
  • 在 Json 类型文档中记录 round_trip,作者 @jc-louis,在 #7137
  • 放宽签名检查以更好地支持内置函数和 C 扩展函数作为验证器,作者 @adriangb,在 #7101
  • 添加 union_mode='left_to_right',作者 @davidhewitt,在 #7151
  • 为继承顺序添加错误消息提示,作者 @yvalencia91,在 #7124
  • 修复一个文档链接并解决另外两个警告,作者 @dmontagu,在 #7153
  • 在警告中包含 Field extra 键名,作者 @hramezani,在 #7136

v2.1.1 (2023-07-25)

GitHub 发布

  • 在不必要时跳过 FieldInfo 合并,作者 @dmontagu,在 #6862

v2.1.0 (2023-07-25)

GitHub 发布

v2.0.3 (2023-07-05)

GitHub 发布

  • 在迁移文档中提及 PyObject (v1) 迁移到 ImportString (v2),作者 @slafs,在 #6456
  • 修复 release-tweet CI,作者 @Kludex,在 #6461
  • 修订必填/可选/可空字段部分,作者 @ybressler,在 #6468
  • 如果类型提示实际上不是类型,则发出警告,作者 @adriangb,在 #6479
  • 将 TransformSchema 替换为 GetPydanticSchema,作者 @dmontagu,在 #6484
  • 修复各种注解类型的不可哈希性,用于缓存泛型容器,作者 @dmontagu,在 #6480
  • PYD-164: 重做自定义类型文档,作者 @adriangb,在 #6490
  • 修复 ci,作者 @adriangb,在 #6507
  • 修复泛型中的前向引用,作者 @adriangb,在 #6511
  • 修复 core_schema.ChainSchema 的序列化 JSON 模式生成,作者 @dmontagu,在 #6515
  • 记录 Pydantic V2 中 Field.alias 行为的变化,作者 @hramezani,在 #6508
  • 尝试计算具有未定义字段的模型的 json 模式时提供更好的错误消息,作者 @dmontagu,在 #6519
  • 记录 alias_priority,作者 @tpdorsey,在 #6520
  • 添加类型文档的重定向,作者 @tpdorsey,在 #6513
  • 允许在不发布的情况下更新文档,作者 @samuelcolvin,在 #6551
  • 确保文档测试始终在正确的文件夹中运行,作者 @dmontagu,在 #6487
  • 延迟评估序列化器函数的返回类型提示,作者 @dmontagu,在 #6516
  • 从 Ruff 禁用 E501 并只依赖 Black,作者 @adriangb,在 #6552
  • 更新 V2 的 JSON 模式文档,作者 @tpdorsey,在 #6492
  • 添加循环引用处理的文档,作者 @dmontagu,在 #6493
  • 移除对更改文件的需求,作者 @samuelcolvin,在 #6556
  • 添加“北极星”基准测试,作者 @davidhewitt,在 #6547
  • 更新 Dataclasses 文档,作者 @tpdorsey,在 #6470
  • ♻️ 在 v1 重定向上使用不同的错误消息,作者 @Kludex,在 #6595
  • ⬆ 升级 pydantic-core 到 v2.2.0,作者 @lig,在 #6589
  • 修复 IPvAny 的序列化,作者 @dmontagu,在 #6572
  • 通过使用 PDM 而不是 pip 安装 typing-extensions 来改进 CI,作者 @adriangb,在 #6602
  • 添加 enum 错误类型文档,作者 @lig,在 #6603
  • 🐛 修复 unicode 字符串的 max_length,作者 @lig,在 #6559
  • 添加文档,说明如何通过 pydantic.v1 访问功能,作者 @tpdorsey,在 #6604
  • 在迭代模型时包含 extra,作者 @adriangb,在 #6562
  • 修复 model_validator 的类型,作者 @adriangb,在 #6514
  • 调整 Decimal 验证器,作者 @adriangb,在 #6327
  • 修复使用固定 pytest-examples 的各种 docstrings,作者 @dmontagu,在 #6607
  • 在判别联合中处理函数验证器,作者 @dmontagu,在 #6570
  • 审查 json_schema.md,作者 @tpdorsey,在 #6608
  • 使 validate_call 在 basemodel 方法上工作,作者 @dmontagu,在 #6569
  • 添加大整数 json 序列化/反序列化测试,作者 @davidhewitt,在 #6614
  • 修复 pydantic dataclass 与 dataclasses.field default_factory 的问题,作者 @hramezani,在 #6616
  • 修复 TypeAdapter 的 mypy 类型推断,作者 @zakstucke,在 #6617
  • 使其可以使用 None 作为泛型参数,作者 @dmontagu,在 #6609
  • 使其可以将 $ref 用作别名,作者 @dmontagu,在 #6568
  • 向迁移指南添加关于 AnyUrl 等更改的注释,作者 @davidhewitt,在 #6618
  • 🐛 支持在 RootModel 上使用 Field 定义 json_schema_extra,作者 @lig,在 #6622
  • 更新 pre-commit 以防止意外提交到主分支,作者 @dmontagu,在 #6636
  • 修复 MacOS/windows 上 python 3.7 的 PDM CI,作者 @dmontagu,在 #6627
  • 为 pydantic dataclass 生成更准确的签名,作者 @dmontagu,在 #6633
  • Pydantic V2 的 Url 类型更新,作者 @tpdorsey,在 #6638
  • 修复 transform docstring 中的列表 markdown,作者 @StefanBRas,在 #6649
  • 简化 slots_dataclass 构造以安抚 mypy,作者 @davidhewitt,在 #6639
  • 更新 TypedDict 模式生成 docstring,作者 @adriangb,在 #6651
  • 检测并对打印输出进行 lint 错误检查,作者 @dmontagu,在 #6655
  • 为 pydantic-core PR 766 添加 xfailing 测试,作者 @dmontagu,在 #6641
  • 忽略来自 dataclasses 元数据中无法识别的字段,作者 @dmontagu,在 #6634
  • 使不存在的类 getattr 成为 mypy 错误,作者 @dmontagu,在 #6658
  • 将 pydantic-core 更新到 2.3.0,作者 @hramezani,在 #6648
  • 使用 typing_extensions 中的 OrderedDict,作者 @dmontagu,在 #6664
  • 修复 JSON 模式额外可调用项的类型提示,作者 @dmontagu,在 #6659

v2.0.2 (2023-07-05)

GitHub 发布

  • 修复循环序列化/反序列化 RootModel 会改变 __dict__ 值的问题,#6457,作者 @dmontagu
  • 允许单项判别联合,#6405,作者 @dmontagu
  • 修复枚举联合解析问题,#6440,作者 @dmontagu
  • 文档:修复 constr 文档,将旧的 regex 重命名为新的 pattern#6452,作者 @miili
  • 更改 GenerateJsonSchema.generate_definitions 签名,#6436,作者 @dmontagu

查看完整更新日志 此处

v2.0.1 (2023-07-04)

GitHub 发布

Pydantic V2 的第一个补丁版本

  • 通过 setattr 添加的额外字段(即 m.some_extra_field = 'extra_value')如果 model_config extra='allowed',则会添加到 .model_extra。修复了 #6333#6365,作者 @aaraney
  • 自动解包自定义类型的 JSON 模式 '$ref',#6343,作者 @adriangb
  • 修复子模型中标记联合的多次处理,#6340,作者 @suharnikov

查看完整更新日志 此处

v2.0 (2023-06-30)

GitHub 发布

Pydantic V2 来了! 🎉

有关更多详细信息,请参阅 此文章

v2.0b3 (2023-06-16)

Pydantic V2 的第三个测试预发布版本

查看完整更新日志 此处

v2.0b2 (2023-06-03)

TypeAdapter.validate_pythonBaseModel.model_validate 添加 from_attributes 运行时标志。

查看完整更新日志 此处

v2.0b1 (2023-06-01)

Pydantic V2 的第一个测试预发布版本

查看完整更新日志 此处

v2.0a4 (2023-05-05)

Pydantic V2 的第四个预发布版本

查看完整更新日志 此处

v2.0a3 (2023-04-20)

Pydantic V2 的第三个预发布版本

查看完整更新日志 此处

v2.0a2 (2023-04-12)

Pydantic V2 的第二个预发布版本

查看完整更新日志 此处

v2.0a1 (2023-04-03)

Pydantic V2 的第一个预发布版本!

有关更多详细信息,请参阅 此文章

v1.10.21 (2025-01-10)

  • 修复与 ForwardRef._evaluate 和 Python < 3.12.4 的兼容性,作者 @griels,在 https://github.com/pydantic/pydantic/pull/11232

v1.10.20 (2025-01-07)

此版本提供了对 Python 3.13 的适当支持,并为此版本发布了(Cythonized)轮子。因此,Cython 已从 0.29.x 更新到 3.0.x

  • CI 和构建生态系统的通用维护,作者 @Viicos,在 https://github.com/pydantic/pydantic/pull/10847
    • 将 Cython 更新到 3.0.x
    • 正确处理 Python 3.13 弃用警告。
    • 将打包迁移到 pyproject.toml,利用 PEP 517 构建选项。
    • 使用 build 而不是直接调用 setup.py
    • 更新各种 Github Actions 版本。
  • 替换文档中过时的 stpmex 链接,作者 @jaredenorris,在 https://github.com/pydantic/pydantic/pull/10997

v1.10.19 (2024-11-06)

  • 当 v2 模型嵌套在 v1 模型中时添加警告,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/10432
  • 修复 V1 isinstance 检查中的弃用警告,作者 @alicederyn,在 https://github.com/pydantic/pydantic/pull/10645

v1.10.18 (2024-08-22)

  • V1 中的 Eval 类型修复,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/9751
  • to_lower_camel 添加到 utils.py 中的 __all__,作者 @sydney-runkle (直接提交)
  • 修复 mypy v1 插件以适应 mypy 1.11 版本,作者 @flaeppe,在 https://github.com/pydantic/pydantic/pull/10139
  • 修复当鉴别器具有别名且 .schema(by_alias=False) 时使用的鉴别器键,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/10146

v1.10.17 (2024-06-20)

  • 为 1.10.x 宣传 Python 3.12!第二部分,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9644
  • v1 命名空间中的镜像模块,以修复 python>3.11 中的类型和对象解析,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9660
  • setup: 移除 python_requires 的上限,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9685

v1.10.16 (2024-06-11)

  • 在 FutureRef._evaluate 中将 recursive_guard 指定为 kwarg,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9612
  • 修复 mypy v1 插件以适应即将发布的 mypy 版本,作者 @cdce8p,在 https://github.com/pydantic/pydantic/pull/9586
  • 直接从 v1 命名空间导入模块/对象,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9162

v1.10.15 (2024-04-03)

  • 向 Pydantic v1 添加 pydantic.v1 命名空间,作者 @exs-dmiketa,在 https://github.com/pydantic/pydantic/pull/9042
  • 放宽 V1 的 typing-extensions 版本,作者 @SonOfLilit,在 https://github.com/pydantic/pydantic/pull/8819
  • mypy 的补丁修复,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/8765

v1.10.14 (2024-01-19)

  • 更新 install.md,作者 @dmontagu,在 #7690
  • 修复 ci 以仅在发布时部署文档,作者 @sydney-runkle,在 #7740
  • V1 的 Ubuntu 修复,作者 @sydney-runkle,在 #8540 和 #8587
  • 修复 dataclasses 复制时 cached_property 处理问题,作者 @rdbisme,在 #8407

v1.10.13 (2023-09-27)

  • 修复:向 pydantic.validate_email 添加最大长度检查,#7673,作者 @hramezani
  • 文档:修复安装 v1 的 pip 命令,#6930,作者 @chbndrhnns

v1.10.12 (2023-07-24)

  • 修复了 deque 验证时 maxlen 属性被丢弃的问题。仅当 deque 项已类型化时发生。更改了 _validate_sequence_like 函数,#6581,作者 @maciekglowka

v1.10.11 (2023-07-04)

  • 在 tools.py 中通过相对路径而不是绝对路径导入 create_model - 以便在复制到 V2 分支时不会导入 V2 代码,#6361,作者 @SharathHuddar

v1.10.10 (2023-06-30)

  • 添加 Pydantic Json 字段支持到设置管理,#6250,作者 @hramezani
  • 修复不可哈希值的字面量验证器错误,#6188,作者 @markus1978
  • 修复泛型接收前向引用时的错误,#6130,作者 @mark-todd
  • 更新 CI 中内部测试的 FastAPI 安装方法,#6117,作者 @Kludex

v1.10.9 (2023-06-07)

v1.10.8 (2023-05-23)

  • 修复 Literaltyping-extension==4.6.0 的用法中的错误,#5826,作者 @hramezani
  • 这解决了(已关闭的)问题 #3849,即当数据包含非别名字段名时,使用判别联合的别名字段无法验证的问题,#5736,作者 @benwah
  • 更新 email-validator 依赖项到 >=2.0.0post2,#5627,作者 @adriangb
  • 更新 AnyClassMethod 以适应 python/typeshed#9771 中的更改,#5505,作者 @ITProKyle

v1.10.7 (2023-03-22)

  • 修复使用 ConstrainedStrregex 作为字典键从模型创建模式的问题,#5223,作者 @matejetz
  • 解决 mypy 插件中由 explicit_package_bases=True 引起的错误,#5191,作者 @dmontagu
  • 在 mypy 插件中为没有默认参数的 Field 添加隐式默认值,#5190,作者 @dmontagu
  • 修复用于判别联合中用作 Literals 的 Enum 值的生成模式,#5188,作者 @javibookline
  • 修复当用户在其自己的类中定义 from_orm 时,pydantic mypy 插件导致的 mypy 失败,#5187,作者 @dmontagu
  • 修复 InitVar 与 pydantic dataclass、mypy 版本 1.1.1 和自定义 mypy 插件的用法,#5162,作者 @cdce8p

v1.10.6 (2023-03-08)

  • 实现逻辑以支持使用默认值识别非标准可调用项并解包 functools.partialfunctools.partialmethod 进行签名检查,从而从非标准可调用项创建验证器,#5126,作者 @JensHeinrich
  • 修复 mypy 插件以适应 v1.1.1,并修复 pydantic dataclass 的 dataclass_transform 装饰器,#5111,作者 @cdce8p
  • 当判别器值为不可哈希时,抛出显式 ValidationError,而不是 ConfigError#4773,作者 @kurtmckee

v1.10.5 (2023-02-15)

  • 修复 GenericModel 复杂模型集处理带参数基类时的错误,#5052,作者 @MarkusSintonen
  • 如果插件配置更改,则使 mypy 缓存失效,#5007,作者 @cdce8p
  • 修复深拷贝 pydantic 包装的 dataclass 类型时发生的 RecursionError#4949,作者 @mbillingr
  • 修复 X | Y 联合语法破坏 GenericModel 的问题,#4146,作者 @thenx
  • 将覆盖率徽章切换到显示此分支/版本的覆盖率,#5060,作者 @samuelcolvin

v1.10.4 (2022-12-30)

v1.10.3 (2022-12-29)

注意:v1.10.3 因 #4885 而从 PyPI “撤回”,此问题已在 v1.10.4 中修复

  • 修复自定义根模型的解析,#4883,作者 @gou177
  • 修复:对冻结或空 dataclasses 使用 dataclass 代理,#4878,作者 @PrettyWood
  • 修复模型中 schema 和 schema_json,其中模型实例是默认值之一,#4781,作者 @Bobronium
  • 将 Jina AI 添加到文档首页的赞助商,#4767,作者 @samuelcolvin
  • 修复:支持 DataclassProxy 上的赋值,#4695,作者 @PrettyWood
  • 添加 postgresql+psycopg 作为 PostgreDsn 的允许方案,使其可与 SQLAlchemy 2 一起使用,#4689,作者 @morian
  • 允许字典模式同时具有 patternPropertiesadditionalProperties#4641,作者 @jparise
  • 修复可选列表和 unique_items 传递 None 时的错误,#4568,作者 @mfulgo
  • 修复 GenericModelCallable 参数一起使用时引发 TypeError 的问题,#4551,作者 @mfulgo
  • 修复 StrictStr 类型注解的字段正则表达式,#4538,作者 @sisp
  • 更正 dataclass_transform 关键字参数名,从 field_descriptorsfield_specifiers#4500,作者 @samuelcolvin
  • 修复:避免继承 dataclass 时 __post_init__ 多次调用,#4487,作者 @PrettyWood
  • 减小二进制轮子的大小,#2276,作者 @samuelcolvin

v1.10.2 (2022-09-05)

  • 回滚更改: v1.9.1 引入了一项重大更改,其中模型字段默认进行深拷贝,此版本将默认行为恢复为与 v1.9.0 及之前版本匹配,同时还允许通过 copy_on_model_validation = 'deep' 进行深拷贝行为。有关更多信息,请参阅 #4092
  • 防止将长字符串/字节(长度 > 4_300)作为整数字段的输入,参见 python/cpython#95778CVE-2020-10735#1477,作者 @samuelcolvin
  • 修复:dataclass 包装器并非总是被调用,#4477,作者 @PrettyWood
  • 在 Python 3.11 上解析 mypy 配置时使用 tomllib#4476,作者 @hauntsaninja
  • GenericModel 缓存的基本修复,用于检测 Union 模型中参数的顺序,#4474,作者 @sveinugu
  • 修复 mypy 插件在使用裸类型(如 listdict)作为 default_factory 时的错误,#4457,作者 @samuelcolvin

v1.10.1 (2022-08-31)

  • pydantic.color.Color 类添加 __hash__ 方法,#4454,作者 @czaki

v1.10.0 (2022-08-30)

  • 重构整个 pydantic dataclass 装饰器,使其真正像其标准库对应物一样。因此它保留了 __eq____hash__ 等,并使得与未验证版本的比较成为可能。它还修复了字段中使用 frozen dataclass 和嵌套 dataclass 中使用 default_factory 的问题。已添加对 Config.extra 的支持。最后,现在可以直接通过 dict 进行配置自定义,#2557,作者 @PrettyWood

    重大变更
    • compiled 布尔值(pydantic 是否使用 cython 编译)已从 main.py 移动到 version.py
    • 现在 Config.extra 受支持,dataclass 默认忽略额外参数(如 BaseModel
  • 修复 BaseModel 中 PrivateAttrs 的 PEP487 __set_name__ 协议,#4407,作者 @tlambert03
  • 允许通过 Config 中的 parse_env_var 对环境变量进行自定义解析,#4406,作者 @acmiyaguchi
  • master 重命名为 main#4405,作者 @hramezani
  • 修复 StrictStrField 中存在 max_length 时不引发 ValidationError 的问题,#4388,作者 @hramezani
  • 使 SecretStrSecretBytes 可哈希,#4387,作者 @chbndrhnns
  • 修复 StrictBytesField 中存在 max_length 时不引发 ValidationError 的问题,#4380,作者 @JeanArhancet
  • 添加对裸 type 的支持,#4375,作者 @hramezani
  • 支持 Python 3.11,包括 PyPI 中的 3.11 二进制文件,#4374,作者 @samuelcolvin
  • 添加对 re.Pattern 的支持,#4366,作者 @hramezani
  • 修复当未定义 __post_init____post_init_post_parse__ 被错误地传递关键字参数的问题,#4361,作者 @hramezani
  • 修复从 pydantic.typing 而非 typing 隐式导入 ForwardRefCallable 的问题,并暴露 MappingIntStrAny#4358,作者 @aminalaee
  • dataclass 装饰器中移除 Any 类型,以便它可以在 disallow_any_expr mypy 选项下使用,#4356,作者 @DetachHead
  • 将仓库移动到 pydantic/pydantic#4348,作者 @yezz123
  • 修复当具有 Extra.forbid 的 dataclass 被多次验证时“不允许额外字段”的错误,#4343,作者 @detachhead
  • 向文档添加 Python 3.9 和 3.10 示例,#4339,作者 @Bobronium
  • 判别联合模型现在在生成 OpenAPI 模式定义时使用 oneOf 而不是 anyOf#4335,作者 @MaxwellPayne
  • 允许类型检查器推断 Json 类型的内部类型。Json[list[str]] 现在将被推断为 list[str],应使用 Json[Any] 而不是纯 Json。运行时行为未改变,#4332,作者 @Bobronium
  • 通过使用 alias is not None 检查而不是 bool(alias) 允许空字符串别名,#4253,作者 @sergeytsaplin
  • 更新 Field.outer_type_ 中的 ForwardRef#4249,作者 @JacobHayes
  • __dataclass_transform__ 的使用已替换为 typing_extensions.dataclass_transform,这是根据 PEP 681 将 pydantic 模型标记为 dataclass 的首选方式,#4241,作者 @multimeric
  • 验证嵌套 NamedTuple 字段时使用父模型的 Config#4219,作者 @synek
  • 更新 BaseModel.construct 以处理别名字段,#4192,作者 @kylebamos
  • 捕获 smart_deepcopy 中某些引发的错误,如果发生则回退到 deepcopy#4184,作者 @coneybeare
  • 添加 Config.anystr_upperto_upper kwarg 到 constr 和 conbytes,#4165,作者 @satheler
  • 修复 setfrozenset 在包含默认值时的 JSON 模式,#4155,作者 @aminalaee
  • 告知 mypy 插件,用 @validator 装饰的方法是类方法,#4102,作者 @DMRobertson
  • 改进 mypy 插件检测必填字段的能力,#4086,作者 @richardxia
  • 支持模式中 Type[] 类型的字段,#4051,作者 @aminalaee
  • const=True 时,在 JSON Schema 中添加 default 值,#4031,作者 @aminalaee
  • 向签名生成逻辑添加保留字检查,#4011,作者 @strue36
  • 修复复杂嵌套字段的 Json 策略失败问题,#4005,作者 @sergiosim
  • 添加 JSON 兼容的浮点约束 allow_inf_nan#3994,作者 @tiangolo
  • 移除当 env_prefixenv_nested_delimiter 有共同字符时未定义行为,#3975,作者 @arsenron
  • 支持带有 create_model 的泛型模型,#3945,作者 @hot123s
  • 允许子模型覆盖额外字段信息,#3934,作者 @PrettyWood
  • 记录并测试 BaseModel 上的结构化模式匹配(PEP 636),#3920,作者 @irgolic
  • 修复 python timedelta 对象到 ISO 8601 负时间差的错误反序列化。负号序列化位置不正确(“P-1DT23H59M59.888735S”而不是正确的“-P1DT23H59M59.888735S”),#3899,作者 @07pepa
  • 修复当传递模型实例时,带别名的判别联合字段的验证,#3846,作者 @chornsby
  • 添加 CockroachDsn 类型以验证 CockroachDB 连接字符串。该类型支持以下方案:cockroachdbcockroachdb+psycopg2cockroachdb+asyncpg#3839,作者 @blubber
  • 修复 MyPy 插件,使其不会覆盖模型中预先存在的 __init__ 方法,#3824,作者 @patrick91
  • 修复 mypy 版本检查,#3783,作者 @KotlinIsland
  • 支持覆盖 BaseModel 实例的双下划线属性,#3777,作者 @PrettyWood
  • 添加 ConstrainedDatecondate#3740,作者 @hottwaj
  • 支持 dataclass 中的 kw_only#3670,作者 @detachhead
  • Color 类添加比较方法,#3646,作者 @aminalaee
  • 放弃对 python3.6 的支持,以及相关的清理工作,#3605,作者 @samuelcolvin
  • 创建了新函数 to_lower_camel() 用于“非 Pascal 大小写”的驼峰式命名法,#3463,作者 @schlerp
  • 在 Mypy 插件中添加对 defaultdefault_factory 参数的检查,#3430,作者 @klaa97
  • 修复 BaseModelinspect.signature 的损坏,#3413,作者 @fix-inspect-signature
  • 添加 SecretField 抽象类,以便所有当前和未来的秘密字段,如 SecretStrSecretBytes,都将派生自它,#3409,作者 @expobrain
  • 支持 PostgresDsn 中的多主机验证,#3337,作者 @rglsk
  • 修复解析非常小的数字 timedelta 值的问题,#3315,作者 @samuelcolvin
  • 更新 SecretsSettingsSource 以尊重 config.case_sensitive#3273,作者 @JeanArhancet
  • 添加 MongoDB 网络数据源名称 (DSN) 模式,#3229,作者 @snosratiershad
  • 添加对多个 dotenv 文件的支持,#3222,作者 @rekyungmin
  • 当多个字段错误地为一个验证器设置时,抛出显式的 ConfigError#3215,作者 @SunsetOrange
  • 允许 FieldAnnotated 的省略号用于 TypedDicts 必需字段,#3133,作者 @ezegomez
  • 捕获 int_validator 中的溢出错误,#3112,作者 @ojii
  • Representation 类添加 __rich_repr__ 方法,使 Rich 能够进行漂亮的打印,#3099,作者 @willmcgugan
  • AnyUrl 和后代类型中添加百分比编码,#3061,作者 @FaresAhmedb
  • validate_arguments 装饰器现在支持 alias#3019,作者 @MAD-py
  • 避免 AnyUrl 和 IP 地址字段中的 __dict____weakref__ 属性,#2890,作者 @nuno-andre
  • 添加在字段类型注解中使用 Final 的能力,#2766,作者 @uriyyo
  • 更新要求为 typing_extensions>=4.1.0 以保证 dataclass_transform 可用,#4424,作者 @commonism
  • 将 Explosion 和 AWS 添加到主要赞助商,#4413,作者 @samuelcolvin
  • 更新 copy_on_model_validation 的文档以反映最近的更改,#4369,作者 @samuelcolvin
  • 如果 __slots__ 传递给 create_model,则发出运行时警告,然后忽略 __slots__#4432,作者 @samuelcolvin
  • BaseSettings.Config 添加类型提示以避免 mypy 错误,同时更正文档中的 mypy 版本兼容性通知,#4450,作者 @samuelcolvin

v1.10.0b1 (2022-08-24)

预发布版,详情请参阅 GitHub 版本

v1.10.0a2 (2022-08-24)

预发布版,详情请参阅 GitHub 版本

v1.10.0a1 (2022-08-22)

预发布版,详情请参阅 GitHub 版本

v1.9.2 (2022-08-11)

回滚重大更改v1.9.1 引入了一项重大更改,其中模型字段默认进行深拷贝,此版本将默认行为恢复为与 v1.9.0 及之前版本匹配,同时还允许通过 copy_on_model_validation = 'deep' 进行深拷贝行为。有关更多信息,请参阅 #4092

  • 允许模型字段的浅拷贝,Config.copy_on_model_validation 现在是一个字符串,必须是 'none''deep''shallow',分别对应不复制、深拷贝和浅拷贝;默认为 'shallow'#4093,作者 @timkpaine

v1.9.1 (2022-05-19)

感谢 pydantic 的赞助商:@tiangolo@stellargraph@JonasKs@grillazz@Mazyod@kevinalh@chdsbd@povilasb@povilasb@jina-ai@mainframeindustries@robusta-dev@SendCloud@rszamszur@jodal@hardbyte@corleyma@daddycocoaman@Rehket@jokull@reillysiemens@westonsteimel@primer-io@koxudaxi@browniebroke@stradivari96@adriangb@kamalgill@jqueguiner@dev-zero@datarootsio@RedCarpetUp 的慷慨支持。

  • 限制 generics._generic_types_cachegenerics._assigned_parameters 的大小,以避免内存使用无限制增加,#4083,作者 @samuelcolvin
  • 添加 Jupyverse 和 FPS 作为使用 pydantic 的 Jupyter 项目,#4082,作者 @davidbrochart
  • 加快 pydantic 模型上 __isinstancecheck__ 的速度,当类型不是模型时,也可能避免内存“泄漏”,#4081,作者 @samuelcolvin
  • 修复了 FieldInfo 的原地修改,导致 PEP 593 类型别名出现问题,#4067,作者 @adriangb
  • 在使用 pydantic.dataclasses.dataclass 时,添加对 VS Code 中通过 __dataclass_transform__ 进行自动补全的支持,#4006,作者 @giuliano-oliveira
  • 从代码库和文档中移除基准测试,#3973,作者 @samuelcolvin
  • 在 CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 文档,#3972,作者 @samuelcolvin
  • 修复嵌套 Python dataclass 模式回归问题,#3819,作者 @himbeles
  • 更新关于 Settings 来源延迟评估的文档,#3806,作者 @garyd203
  • 防止字节子类转换为字节,#3706,作者 @samuelcolvin
  • 修复使用 PEP585 和 PEP604 类型提示时“检查继承错误”的问题,#3681,作者 @aleksul
  • 允许模型中的自引用 ClassVar#3679,作者 @samuelcolvin
  • 重大更改,参见 #4106:修复自引用 dataclass 的问题,#3675,作者 @uriyyo
  • 在渲染的 URL 中包含非标准端口号,#3652,作者 @dolfinus
  • Config.copy_on_model_validation 执行深拷贝而非浅拷贝,#3641,作者 @PrettyWood
  • 修复:澄清判别联合不支持单例,#3636,作者 @tommilligan
  • setup.py 添加 read_text(encoding='utf-8')#3625,作者 @hswong3i
  • 修复列表中判别联合的 JSON Schema 生成,#3608,作者 @samuelcolvin

v1.9.0 (2021-12-31)

感谢 pydantic 的赞助商:@sthagen@timdrijvers@toinbis@koxudaxi@ginomempin@primer-io@and-semakin@westonsteimel@reillysiemens@es3n1n@jokull@JonasKs@Rehket@corleyma@daddycocoaman@hardbyte@datarootsio@jodal@aminalaee@rafsaf@jqueguiner@chdsbd@kevinalh@Mazyod@grillazz@JonasKs@simw@leynier@xfenix 的慷慨支持。

亮点

v1.9.0 (2021-12-31) 更改

v1.9.0a2 (2021-12-24) 更改

v1.9.0a1 (2021-12-18) 更改

  • Field() 中添加对 Decimal 特定验证配置的支持,除了使用 condecimal() 之外,以提供更好的编辑器和工具支持,#3507 by @tiangolo
  • 为 PyPI 添加适用于 MacOS M1 CPU 的 arm64 二进制文件,#3498 by @samuelcolvin
  • 修复当使用包含 AnyobjectUnion 类型时,None 被认为是无效的问题,#3444 by @tharradine
  • 生成字段 schema 时,如果存在,将可选的 field 参数 (类型为 pydantic.fields.ModelField) 传递给 __modify_schema__()#3434 by @jasujm
  • 修复 pydantic 无法解析 typing.ClassVar 字符串类型注释的问题,#3401 by @uriyyo
  • 提及 Python >= 3.9.2 作为 typing_extensions.TypedDict 的替代方案,#3374 by @BvB93
  • 自定义错误示例中的验证器方法名称更改为更准确地描述验证器正在做什么;从 name_must_contain_space 更改为 value_must_equal_bar#3327 by @michaelrios28
  • 添加 AmqpDsn 类,#3254 by @kludex
  • 在生成的 JSON schema 中始终使用 Enum 值作为默认值,#3190 by @joaommartins
  • 添加对 Mypy 0.920 的支持,#3175 by @christianbundy
  • validate_arguments 现在支持 extra 自定义(以前总是 Extra.forbid),#3161 by @PrettyWood
  • 复杂类型可以通过嵌套环境变量设置,#3159 by @Air-Mark
  • 修复 mypy 插件以根据 pydantic.utils.is_valid_field 收集字段,使其忽略未类型化的私有变量,#3146 by @hi-ogawa
  • 修复 validate_argumentsConfig.validate_all 的问题,#3135 by @PrettyWood
  • 当使用 dict 子类作为字段类型时,避免 dict 强制转换,#3122 by @PrettyWood
  • 添加对 object 类型的支持,#3062 by @PrettyWood
  • 更新 pydantic dataclasses 以保留父类上的 _special 属性,#3043 by @zulrang
  • 为错误对象添加 TypedDict 类,#3038 by @matthewhughes934
  • 修复将注释的子类用作默认值时的支持问题,#3018 by @JacobHayes
  • 使 create_model_from_typeddict 符合 mypy 标准,#3008 by @PrettyWood
  • 使用 PrivateAttr 时使多重继承生效,#2989 by @hmvp
  • 如果环境变量具有带有复杂子字段的 Union 类型,则将其解析为 JSON,#2936 by @cbartz
  • 防止 StrictStr 允许 Enum 值(其中枚举继承自 str),#2929 by @samuelcolvin
  • 使 SecretsSettingsSource 解析从秘密文件获取的复杂类型字段的值,就像从环境变量获取一样,#2917 by @davidmreed
  • pydantic 文档添加深色模式,#2913 by @gbdlin
  • 使 pydantic-mypy 插件与 pyproject.toml 配置兼容,与 mypy 更改保持一致。有关更多信息,请参阅文档#2908 by @jrwalk
  • 添加 Python 3.10 支持,#2885,作者 @PrettyWood
  • 正确解析带 Json[T] 的泛型模型,#2860 by @geekingfrog
  • 更新贡献文档,关于用于构建文档的 Python 版本,#2856 by @paxcodes
  • 澄清文档,关于 pydantic 对自定义验证和严格类型检查的支持,尽管 pydantic 主要是一个解析库,#2855 by @paxcodes
  • 修复 Deque 字段的 schema 生成问题,#2810 by @sergejkozin
  • 修复约束和 Literal 混合使用时的边缘情况,#2794 by @PrettyWood
  • 修复 NamedTupleTypedDict 在 Pydantic 模型中直接用作字段类型时,推迟注释解析的问题,#2760 by @jameysharp
  • 修复 mypy 插件在 BaseSettings 派生类的 construct 方法调用失败的问题,#2753 by @uriyyo
  • pydantic.create_model 函数添加函数重载,#2748 by @uriyyo
  • 修复 mypy 插件中 self 字段声明的问题,#2743 by @uriyyo
  • 行 "The fields which were supplied when user was initialised:" 末尾的冒号表明其后的代码与此相关。已将其更改为句点,#2733 by @krisaoe
  • 将变量 schema 重命名为 schema_ 以避免与全局变量名冲突,#2724 by @shahriyarr
  • 通过 __dataclass_transform__ 添加 VS Code 自动完成支持,#2721 by @tiangolo
  • BaseConfig 中添加缺失的类型注释并处理 max_length = 0#2719 by @PrettyWood
  • 更改 orm_mode 检查以允许使用字典进行递归 ORM 模式解析,#2718 by @nuno-andre
  • 将 Michael Kennedy 和 Samuel Colvin 讨论 Pydantic 的 Talk Python To Me 播客第 313 集添加到文档中,#2712 by @RatulMaharaj
  • 修复当字段类型为 NamedTuple 且具有默认值时 JSON schema 的生成问题,#2707 by @PrettyWood
  • Enum 字段现在在 schema 生成中正确支持额外的 kwargs,#2697 by @sammchardy
  • 破坏性更改,参见 #3780:使引用 pydantic 模型的序列化成为可能,#2650 by @PrettyWood
  • ConstrainedList 添加 uniqueItems 选项,#2618 by @nuno-andre
  • 尝试在模型创建时自动评估前向引用,#2588 by @uriyyo
  • 切换文档预览和覆盖率显示以使用 smokeshow#2580 by @samuelcolvin
  • 为 pydantic 模块添加 __version__ 属性,#2572 by @paxcodes
  • PostgresDsn 添加 postgresql+asyncpgpostgresql+pg8000postgresql+psycopg2postgresql+psycopg2cffipostgresql+py-postgresqlpostgresql+pygresql 方案,#2567 by @postgres-asyncpg
  • 启用 Hypothesis 插件以在指定 decimal_places 参数时生成受约束的 Decimal,#2524 by @cwe5590
  • 允许 collections.abc.Callable 在 Python 3.9 中用作类型,#2519 by @daviskirk
  • 文档更新,说明如何在使用 pip install 时自定义编译 pydantic,对 setup.py 进行了小改动以允许在编译时使用自定义 CFLAGS,#2517 by @peterroelants
  • 删除 default_factory 的副作用,即使设置了 Config.validate_all 也只运行一次,#2515 by @PrettyWood
  • AnyUrl 主机的 IP 正则表达式添加先行断言。这允许看起来像 IP 的 DNS 标签的 URL 进行验证,因为它们是完全有效的主机名,#2512 by @sbv-csis
  • 在生成的固定长度元组的 JSON schema 中设置 minItemsmaxItems#2497 by @PrettyWood
  • conbytes 添加 strict 参数,#2489 by @koxudaxi
  • 支持泛型模型中的用户定义泛型字段类型,#2465 by @daviskirk
  • 在文档中添加关于 GetterDict 子类的示例和简短解释,#2463 by @nuno-andre
  • 添加 KafkaDsn 类型,HttpUrl 现在 http 默认端口为 80,https 默认端口为 443,#2447 by @MihanixA
  • 添加 PastDateFutureDate 类型,#2425 by @Kludex
  • 支持生成带子类型的 Generic 字段的 schema,#2375 by @maximberg
  • 修复(编码器):将 NameEmail 序列化为 str,#2341 by @alecgerona
  • 添加 Config.smart_union 以尽可能防止 Union 中的强制转换,有关更多信息,请参见文档#2092 by @PrettyWood
  • 添加将 typing.Counter 用作模型字段类型的功能,#2060 by @uriyyo
  • 在构造新的参数化类时,将参数化子类添加到 __bases__,以便 A <: B => A[int] <: B[int]#2007 by @diabolo-dan
  • 创建 FileUrl 类型,允许符合 RFC 8089 的 URL。添加 host_required 参数,默认情况下为 TrueAnyUrl 及其子类),在 RedisDsnFileUrl 中为 False#1983 by @vgerak
  • 添加 confrozenset(),类似于 conset()conlist()#1897 by @PrettyWood
  • 如果被覆盖,停止调用父类 root_validator#1895 by @PrettyWood
  • Field 添加 repr(默认为 True)参数,以将其从 BaseModel 的默认表示中隐藏,#1831 by @fnep
  • 接受空的查询/片段 URL 部分,#1807 by @xavier

v1.8.2 (2021-05-11)

警告

v1.8.2 修复了一个“中等”级别的安全漏洞。请尽快升级。参见安全公告 CVE-2021-29510

  • 安全修复: 修复 datedatetime 解析,以防止传入 'infinity'float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510
  • 通过生成有效名称修复 Enum 的 schema 生成问题,#2575 by @PrettyWood
  • 修复带有枚举成员 Literal 的 JSON schema 生成问题,#2536 by @PrettyWood
  • 修复在类创建期间作为关键字参数传递的配置声明的错误,#2532 by @uriyyo
  • 允许在类 kwargs 中传递 json_encoders#2521 by @layday
  • 支持带有自定义 __eq__ 的任意类型,#2483 by @PrettyWood
  • 在 Python 3.9 中支持 validate_arguments 和泛型模型中的 Annotated 提示,#2483 by @PrettyWood

v1.8.1 (2021-03-03)

修复了 v1.8 引起的回归和新功能错误

v1.8 (2021-02-26)

感谢 pydantic 的赞助商:@jorgecarleitao@BCarley@chdsbd@tiangolo@matin@linusg@kevinalh@koxudaxi@timdrijvers@mkeen@meadsteve@ginomempin@primer-io@and-semakin@tomthorogood@AjitZK@westonsteimel@Mazyod@christippett@CarlosDomingues@Kludex@r-m-n 的慷慨支持。

亮点

更改

  • 破坏性更改,删除 v1 中的旧弃用别名,#2415 by @samuelcolvin
    • 删除文档中关于迁移到 v1 的注意事项
    • 移除已被 Field 替换的 Schema
    • 移除已被 Config.case_sensitive (默认 False) 替换的 Config.case_insensitive
    • 移除已被 Config.allow_population_by_field_name 替换的 Config.allow_population_by_alias
    • 移除已被 model.__fields__ 替换的 model.fields
    • 移除已被 str(model) 替换的 model.to_string()
    • 移除已被 model.__dict__ 替换的 model.__values__
  • 破坏性更改: 始终只验证 each_item 的第一子级项目。实际上,某些复合类型在某些边缘情况下验证的是最后一子级项目,#1933 by @PrettyWood
  • 更新文档扩展以修复本地语法高亮显示,#2400 by @daviskirk
  • 修复:允许 utils.lenient_issubclass 在 Python >= 3.9 中处理 typing.GenericAlias 对象,如 list[str]#2399 by @daviskirk
  • 通过允许使用 pydantic Fielddataclasses.field'metadata' kwarg,改进 pydantic dataclass 的字段声明,#2384 by @PrettyWood
  • typing-extensions 设为必需依赖项,#2368 by @samuelcolvin
  • 使 resolve_annotations 更宽松,允许缺少模块,#2363 by @samuelcolvin
  • 允许通过类 kwargs 配置模型,#2356 by @Bobronium
  • 阻止 Mapping 子类总是被强制转换为 dict#2325 by @ofek
  • 修复:允许 Optional[conset / conlist] 类型为 None#2320 by @PrettyWood
  • 支持空元组类型,#2318 by @PrettyWood
  • 修复:python_requires 元数据要求 >=3.6.1,#2306 by @hukkinj1
  • 正确编码带或不带小数位的 Decimal#2293 by @hultner
  • 修复:在 BaseModel.copy(update=…) 中更新 __fields_set__#2290 by @PrettyWood
  • 修复:使用 BaseModel.construct() 时保留字段顺序,#2281 by @PrettyWood
  • 支持为泛型字段生成 schema,#2262 by @maximberg
  • 修复 validate_decorator,使其在关键字与 *args**kwargs 名称相同的情况下不排除值,#2251 by @cybojenix
  • 按照原生函数的行为,防止 validate_arguments 中位置参数被关键字参数覆盖,#2249 by @cybojenix
  • 添加 con* 类型函数的文档,#2242 by @tayoogunbiyi
  • 使用嵌套模型调用 parse_obj() 时支持自定义根类型(即 __root__),#2238 by @PrettyWood
  • 通过 from_orm() 支持自定义根类型(aka __root__),#2237 by @PrettyWood
  • 根据 #1944 by @kollmats,确保在创建模型时 cythonized 函数保持不变,#2228 by @samuelcolvin
  • 解析转换为 pydantic dataclasses 的 stdlib dataclasses 的前向引用,#2220 by @PrettyWood
  • 添加对 NamedTupleTypedDict 类型的支持。这两种类型现在在 BaseModelpydantic dataclass 中使用时都会被处理和验证。还添加了两个实用函数 create_model_from_namedtuplecreate_model_from_typeddict#2216 by @PrettyWood
  • 当类型为 Union[Type[...], ...] 时,不要忽略带注释的字段,#2213 by @PrettyWood
  • root_validator 未返回 dict (例如 None) 时,引发用户友好的 TypeError#2209 by @masalim2
  • strict_url 字段类型的 allowed_schemes 参数中添加 FrozenSet[str] 类型注释,#2198 by @Midnighter
  • Field 添加 allow_mutation 约束,#2195 by @sblack-usu
  • 允许使用带 default_factoryField 作为用 validate_arguments 装饰的函数的参数,#2176 by @thomascobb
  • 允许不存在的秘密目录,只发出警告,#2175 by @davidolrik
  • 修复 URL 正则表达式以解析不带查询字符串的片段,#2168 by @andrewmwhite
  • 修复:确保始终返回 Literal 字段类型中的一个值,#2166 by @PrettyWood
  • 支持模型字段上的 typing.Annotated 提示。现在可以使用 Annotated[..., Field(...)] 在类型提示中设置 Field;所有其他注释都会被忽略,但仍可通过 get_type_hints(..., include_extras=True) 可见,#2147 by @JacobHayes
  • 添加了 StrictBytes 类型以及 ConstrainedBytesstrict=False 选项,#2136 by @rlizzo
  • 添加了 Config.anystr_lowerto_lower kwarg 到 constrconbytes#2134 by @tayoogunbiyi
  • 支持纯 typing.Tuple 类型,#2132 by @PrettyWood
  • 添加一个绑定方法 validate 到用 validate_arguments 装饰的函数,以验证参数而不实际调用函数,#2127 by @PrettyWood
  • 添加自定义设置源(添加/禁用/更改优先级顺序)的功能,#2107 by @kozlek
  • 修复 mypy 对大多数自定义 pydantic 类型的抱怨,#2098 by @PrettyWood
  • 添加一个用于 Pydantic 自定义类型进行更轻松的基于属性的测试Hypothesis 插件 - 用法详情在此#2097 by @Zac-HD
  • 添加 NoneNoneTypeLiteral[None] 的验证器,#2095 by @PrettyWood
  • 正确处理带有默认值的 Callable 类型字段,#2094 by @PrettyWood
  • 更新了 create_model 返回类型注释,使其返回继承自 __base__ 参数的类型,#2071 by @uriyyo
  • 添加合并的 json_encoders 继承,#2064 by @art049
  • 允许在子模型中覆盖 ClassVar,而无需重新注释它们,#2061 by @layday
  • 添加 Pattern 类型的默认编码器,#2045 by @PrettyWood
  • 添加 NonNegativeIntNonPositiveIntNonNegativeFloatNonPositiveFloat#1975 by @mdavis-xyz
  • 在颜色字符串格式中使用 % 表示百分比,#1960 by @EdwardBetts
  • 修复了在从多个具有相同名称的 BaseModel(在单独的类中声明)构建 schema 时引发 KeyError 的问题,#1912 by @JSextonn
  • RedisDsn 添加 rediss(通过 SSL 的 Redis)协议,允许不带 user 部分的 URL(例如 rediss://:pass@localhost),#1911 by @TrDex
  • Config 添加一个新的 frozen 布尔参数(默认值:False)。设置 frozen=True 会执行 allow_mutation=False 所做的一切,并且还为模型生成一个 __hash__() 方法。如果所有属性都是可哈希的,这会使模型的实例可能可哈希,#1880 by @rhuille
  • 修复多个具有相同名称的 Enum 的 schema 生成问题,#1857 by @PrettyWood
  • 添加了对 PaymentCardNumber 类型中 13/19 位 VISA 信用卡的支付卡支持,#1416 by @AlexanderSov
  • 修复:在使用递归 GenericModel 时防止 RecursionError#1370 by @xppt
  • 在 JSON schema 中使用 enum 来表示 typing.Literal#1350 by @PrettyWood
  • 修复:一些递归模型不需要 update_forward_refs,并且悄无声息地行为不正确,#1201 by @PrettyWood
  • 修复了泛型模型中的错误,当字段的类型变量嵌套在另一个类型中时(例如 a: List[T]),它们被认为是具体的。这使得这些模型可以按预期进行子类化和组合,#947 by @daviskirk
  • 添加 Config.copy_on_model_validation 标志。当设置为 False 时,pydantic 将在验证时保持用作字段的模型不变,而不是重新构造(复制)它们,#265 by @PrettyWood

v1.7.4 (2021-05-11)

  • 安全修复: 修复 datedatetime 解析,以防止传入 'infinity'float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510

v1.7.3 (2020-11-30)

感谢 pydantic 的赞助商:@timdrijvers@BCarley@chdsbd@tiangolo@matin@linusg@kevinalh@jorgecarleitao@koxudaxi@primer-api@mkeen@meadsteve 的慷慨支持。

  • 修复:为必填(可选)字段设置正确的默认值,#2142 by @PrettyWood
  • 修复:支持带有泛型模型的 underscore_attrs_are_private#2138 by @PrettyWood
  • 修复:当 validate_assignment 开启时,在 root_validator 中更新所有修改过的字段值,#2116 by @PrettyWood
  • 允许对从内置 dataclasses.dataclass 动态创建的 pydantic.dataclasses.dataclass 进行 pickle 操作,#2111 by @aimestereo
  • 修复了 Enum 字段不会将关键字参数传递给 schema 的回归问题,#2109 by @bm424
  • 当设置 Config.underscore_attrs_are_private 时,忽略 __doc__ 作为私有属性,#2090 by @PrettyWood

v1.7.2 (2020-11-01)

  • 修复慢速 GenericModel 具体模型创建问题,允许在模块中重用 GenericModel 具体名称,#2078 by @Bobronium
  • 当设置 validate_assignment 时,保持字段的顺序,#2073 by @PrettyWood
  • 当 stdlib dataclass 转换为 pydantic dataclass 时,转发所有参数,#2065 by @PrettyWood

v1.7.1 (2020-10-28)

感谢 pydantic 的赞助商:@timdrijvers@BCarley@chdsbd@tiangolo@matin@linusg@kevinalh@jorgecarleitao@koxudaxi@primer-api@mkeen 的慷慨支持。

  • 修复将配置作为参数传递时 validate_arguments 的注释问题,#2055 by @layday
  • 修复使用 PrivateAttr 时 mypy 赋值错误,#2048 by @aphedges
  • 修复 underscore_attrs_are_private 在覆盖 __init__ 时导致 TypeError 的问题,#2047 by @samuelcolvin
  • 修复 v1.7 引入的回归问题,涉及 validate_assignment=True 时字段验证器中的异常处理,#2044 by @johnsabath
  • 修复:pydantic dataclass 可以继承自 stdlib dataclass,并且支持 Config.arbitrary_types_allowed#2042 by @PrettyWood

v1.7 (2020-10-26)

感谢 pydantic 的赞助商:@timdrijvers@BCarley@chdsbd@tiangolo@matin@linusg@kevinalh@jorgecarleitao@koxudaxi@primer-api 的慷慨支持。

亮点

更改

  • 破坏性更改: 移除 __field_defaults__,添加 BaseModel.constructdefault_factory 的支持。请改用 __fields__ 属性中字段的 .get_default() 方法,#1732 by @PrettyWood
  • 重新安排 CI 以将 linting 作为单独的作业运行,拆分不同任务的安装配方,#2020 by @samuelcolvin
  • 允许泛型模型的子类使其超类的一些或所有类型参数具体化,同时也在子类中定义新的类型参数,#2005 by @choogeboom
  • 当模型配置中 validate_assignment = True 时,在 BaseModel.__setattr__ 中使用正确的 values 参数类型调用验证器,#1999 by @me-ransh
  • 强制 fields.Undefined 为单例对象,修复继承的泛型模型 schema,#1981 by @daviskirk
  • 在源分发中包含测试,#1976 by @sbraz
  • 添加使用 min_length/max_length 约束与秘密类型的功能,#1974 by @uriyyo
  • validate_assignment 开启时,也检查 root_validators#1971 by @PrettyWood
  • 修复存在自定义验证器时常量验证器不运行的问题,#1957 by @hmvp
  • deque 添加到字段类型,#1935 by @wozniakty
  • 添加对 Python 3.9 的基本支持,#1832 by @PrettyWood
  • 修复 exporting_models.md#modelcopy 锚点中的拼写错误和不正确的描述,#1821 by @KimMachineGun
  • 添加了 BaseSettings 读取“秘密文件”的功能,#1820 by @mdgilene
  • 添加 parse_raw_as 实用函数,#1812 by @PrettyWood
  • 支持 dotenv 文件的家目录相对路径(例如 ~/.env),#1803 by @PrettyWood
  • 澄清 parse_file 的文档,以显示参数应为文件 路径 而非类文件对象,#1794 by @mdavis-xyz
  • 修复 mypy 插件中当 BaseModel 内嵌套的类名为 Model 时出现的假阳性问题,#1770 by @selimb
  • 添加对 schema 生成中 Pattern 类型的基本支持,#1767 by @PrettyWood
  • 支持枚举的 schema 中自定义标题、描述和默认值,#1748 by @PrettyWood
  • use_enum_values 为 True 时,正确表示 Literal 枚举,#1747 by @noelevans
  • 允许将时区信息添加到字符串,以便格式化为时间对象。允许的格式包括 UTC 的 Z 或绝对正/负时间偏移的偏移量。也可以省略时区数据,#1744 by @noelevans
  • ForwardRef 添加带有 Python 3.6 签名的 stub __init__#1738 by @sirtelemak
  • 修复嵌套模型中前向引用和可选字段的行为问题,#1736 by @PrettyWood
  • 添加 EnumIntEnum 作为字段的有效类型,#1735 by @PrettyWood
  • create_model__module__ 参数的默认值从 None 更改为 'pydantic.main'。将创建的具体模型的引用设置为其模块,以允许进行 pickle 操作(不适用于在函数中创建的模型),#1686 by @Bobronium
  • 添加私有属性支持,#1679 by @Bobronium
  • @validate_arguments 添加 config#1663 by @samuelcolvin
  • 允许派生 Settings 模型使用其 Config 中的 env 覆盖父 Settings 模型中定义的字段的环境变量名称。以前只有 env_prefix 配置选项适用,#1561 by @ojomio
  • 在创建 schema $ref 时支持 ref_template#1479 by @kilo59
  • PyObject 添加一个 __call__ 存根,以便 mypy 知道它是可调用的,#1352 by @brianmaissy
  • pydantic.dataclasses.dataclass 装饰器现在支持内置的 dataclasses.dataclass。因此,可以轻松地将现有 dataclass 转换为添加 Pydantic 验证。此外,还支持嵌套 dataclasses,#744 by @PrettyWood

v1.6.2 (2021-05-11)

  • 安全修复: 修复 datedatetime 解析,以防止传入 'infinity'float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510

v1.6.1 (2020-07-15)

  • 修复带有 default_factory 的嵌套模型的验证和解析问题,#1710 by @PrettyWood

v1.6 (2020-07-11)

感谢 pydantic 的赞助商:@matin@tiangolo@chdsbd@jorgecarleitao 以及 1 位匿名赞助商的慷慨支持。

  • 修改 conlistconset 的验证器,使其不再具有 always=True#1682 by @samuelcolvin
  • AnyUrl 添加端口检查(不能超过 65536)端口是 16 位无符号整数:0 <= port <= 2**16-1 来源:rfc793 头格式#1654 by @flapili
  • 记录默认的 regex 锚定语义,#1648 by @yurikhan
  • 在 class_validators.py 中使用 chain.from_iterable。这是一种更快、更惯用的使用 itertools.chain 的方式。它不会计算可迭代对象中的所有项目并将其存储在内存中,而是逐个计算它们,并且从不作为大列表存储。这可以节省运行时和内存空间,#1642 by @cool-RR
  • 添加 conset(),类似于 conlist()#1623 by @patrickkwang
  • 使 Pydantic 错误(可)pickle,#1616 by @PrettyWood
  • 允许对 dotenv 文件进行自定义编码,#1615 by @PrettyWood
  • 确保始终定义 SchemaExtraCallable,以便在 BaseConfig 上获取类型提示,#1614 by @PrettyWood
  • 更新日期时间解析器以支持负时间戳,#1600 by @mlbiche
  • 更新 mypy,删除 AnyType 作为 Type[Any] 的别名,#1598 by @samuelcolvin
  • 调整根验证器的处理方式,以便从所有失败的根验证器聚合错误,而不是只报告第一个失败的根验证器,#1586 by @beezee
  • 使 Enums 上的 __modify_schema__ 应用于枚举 schema,而不是使用枚举的字段,#1581 by @therefromhere
  • 修复 __all__ 键与序列字段的高级包含/排除中的索引键一起使用时的行为,#1579 by @xspirus
  • each_item=True 时,子类验证器在引用父类中定义的 List 字段时不运行。在文档中添加了一个示例说明此问题,#1566 by @samueldeklund
  • schema.field_class_to_schema 更改为支持 schema 中的 frozenset#1557 by @wangpeibao
  • 仅为字段 schema 调用 __modify_schema__#1552 by @PrettyWood
  • 移动 fields.pyfield.validate_always 的赋值,以便验证器的 always 参数在继承时起作用,#1545 by @dcHHH
  • 添加了通过 16 字节字符串(例如 b'\x12\x34\x56\x78' * 4)进行 UUID 实例化的支持。这样做是为了支持 sqlalchemy 中的 BINARY(16) 列,#1541 by @shawnwall
  • 添加一个测试断言 default_factory 可以返回一个单例,#1523 by @therefromhere
  • 添加 NameEmail.__eq__,以便重复的 NameEmail 实例被评估为相等,#1514 by @stephen-bunn
  • 在 pydantic 文档站点中添加 datamodel-code-generator 链接,#1500 by @koxudaxi
  • 在文档中添加了“Pydantic 讨论”部分,并链接到 Alexander Hultnér 的“Pydantic 简介”视频,#1499 by @hultner
  • 通过尽可能只调用一次 default_factory 并且不在 schema 中设置默认值,避免 default_factory 的一些副作用,#1491 by @PrettyWood
  • 添加了关于将 dataclasses 导出为 JSON 的文档,#1487 by @mikegrima
  • 使 BaseModel.__signature__ 仅为类属性,因此从模型实例获取 __signature__ 将引发 AttributeError#1466 by @Bobronium
  • 在秘密类型的 schema 中包含 'format': 'password'#1424 by @atheuz
  • 修改 ConstrainedFloat 的 schema 约束,以便 exclusiveMinimum 和 minimum 不包含在 schema 中(如果它们等于 -math.inf),并且 exclusiveMaximummaximum 不包含在 schema 中(如果它们等于 math.inf),#1417 by @vdwees
  • .dict()(以及通过扩展,在 .json())中压缩内部 __root__ 字典,#1414 by @patrickkwang
  • const 验证器移至后验证器,以便它验证解析后的值,#1410 by @selimb
  • 修复模型验证以处理嵌套字面量,例如 Literal['foo', Literal['bar']]#1364 by @DBCerigo
  • RedisDsn 中移除 user_required = True,用户和密码都不是必需的,#1275 by @samuelcolvin
  • 为带有 Union 和自定义 Field 的字段从 schema 中移除额外的 allOf#1209 by @mostaphaRoudsari
  • 更新 OpenAPI schema 生成,将所有枚举作为单独的模型输出。模型现在使用 $ref 属性指向枚举定义,而不是将枚举值内联到模型 schema 中,#1173 by @calvinwyoung

v1.5.1 (2020-04-23)

v1.5 (2020-04-18)

  • 使 .dict()._iter() 等的 includes/excludes 参数不可变,#1404 by @AlexECX
  • model._iter() 中,无论 by_alias 如何,始终使用字段的真实名称进行包含/排除,#1397 by @AlexECX
  • 更新 constr regex 示例以包含起始和结束行,#1396 by @lmcnearney
  • 确认浅拷贝 model.copy() 确实是属性的浅拷贝,#1383 by @samuelcolvin
  • main.create_model()model_name 参数重命名为 __model_name,以允许将 model_name 用作字段名,#1367 by @kittipatv
  • 在 mypy 插件中,将引发异常替换为对非 Var 属性的静默通过,#1345 by @b0g3r
  • 移除 Python 3.8 的 typing_extensions 依赖项,#1342 by @prettywood
  • 使 SecretStrSecretBytes 初始化幂等,#1330 by @atheuz
  • 记录如何使用 json 方法使秘密类型可转储,#1328 by @atheuz
  • 将所有测试和构建转移到 github actions,添加 windows 和 macos 二进制文件,非常感谢 @StephenBrown2 的大力帮助,#1326 by @samuelcolvin
  • 修复 PaymentCardNumber 中的卡号长度检查,PaymentCardBrand 现在继承自 str#1317 by @samuelcolvin
  • BaseModel 继承自 Representation,以便在覆盖 __str__ 时使 mypy 满意,#1310 by @FuegoFro
  • 允许将 None 作为所有可选列表字段的输入,#1307 by @prettywood
  • default_factory 示例添加 datetime 字段,#1301 by @StephenBrown2
  • 允许已知类型的子类使用超类编码器进行编码,#1291 by @StephenBrown2
  • 使用 '__all__' 从子模型/字典列表/元组的所有元素中排除导出的字段,#1286 by @masalim2
  • 添加 pydantic.color.Color 对象作为 Color 字段的可用输入,#1258 by @leosussan
  • 在示例中,可空字段的类型设置为 Optional,以便它们是有效的 mypy 注释,#1248 by @kokes
  • 使 pattern_validator() 接受预编译的 Pattern 对象。修复 str_validator() 返回类型为 str#1237 by @adamgreg
  • 文档如何管理泛型和继承,#1229 by @esadruhn
  • BaseModel 的 update_forward_refs() 方法现在复制类模块的 __dict__,而不是修改它,#1228 by @paul-ilyin
  • 支持带有 @validate_arguments 的实例方法和类方法,#1222 by @samuelcolvin
  • Field 添加 default_factory 参数,通过传递一个零参数可调用对象来创建动态默认值,#1210 by @prettywood
  • 添加对 ListOptional 等的 NewType 支持,#1207 by @Kazy
  • 修复 root_validator 的 mypy 签名,#1192 by @samuelcolvin
  • 修复了嵌套“自定义根类型”模型的解析问题,#1190 by @Shados
  • 添加 validate_arguments 函数装饰器,用于检查函数的参数是否与类型注释匹配,#1179 by @samuelcolvin
  • 为模型添加 __signature__#1034 by @Bobronium
  • 重构 ._iter() 方法,dict(model) 的速度提升 10 倍,#1017 by @Bobronium

v1.4 (2020-01-24)

  • 破坏性更改: 别名优先级逻辑已更改,字段上的别名始终优先于 alias_generator 中的别名,以避免错误/意外行为,有关详细信息,请参阅此处#1178 by @samuelcolvin
  • 添加对 TLD 中 Unicode 和 Punycode 的支持,#1182 by @jamescurtin
  • 修复赋值期间验证器中 cls 参数的问题,#1172 by @samuelcolvin
  • 完成 PaymentCardNumber 的 Luhn 算法,PaymentCardBrand 现在继承自 str#1166 by @cuencandres
  • 添加对实现 __get_validators__ 的泛型的支持,例如自定义数据类型,#1159 by @tiangolo
  • 添加对 Iterable 的无限生成器的支持,#1152 by @tiangolo
  • 修复 url_regex 以接受第一个字符后带有 +-. 的方案,#1142 by @samuelcolvin
  • version_info() 移动到 version.py,建议在问题中使用它,#1138 by @samuelcolvin
  • 通过延迟某些模块加载和正则表达式编译,将 pydantic 导入时间缩短约 50%,#1127 by @samuelcolvin
  • 修复 EmailStrNameEmail 在 cython 中接受自身的实例,#1126 by @koxudaxi
  • 将模型类传递给 Config.schema_extra 可调用对象,#1125 by @therefromhere
  • 修复 URL 中用户名和密码的正则表达式,#1115 by @samuelcolvin
  • 添加对嵌套泛型模型的支持,#1104 by @dmontagu
  • __init__.py 添加 __all__ 以防止 mypy 中的“隐式重新导出”错误,#1072 by @samuelcolvin
  • 添加对 BaseSettings 使用“dotenv”文件的支持,#1011 by @acnebs

v1.3 (2019-12-21)

  • 更改 schemaschema_model 以通过使用其 __pydantic_model__ 功能处理 dataclasses,#792 by @aviramha
  • 添加了 root_validator 选项,如果值验证失败,可以使用关键字 skip_on_failure=True 跳过,#1049 by @aviramha
  • 允许 Config.schema_extra 是一个可调用对象,以便可以对生成的 schema 进行后处理,#1054 by @selimb
  • 更新 mypy 到版本 0.750,#1057 by @dmontagu
  • 欺骗 Cython 允许 str 子类化,#1061 by @skewty
  • 防止类型属性被添加到 schema,除非属性 __schema_attributes__True#1064 by @samuelcolvin
  • 更改 BaseModel.parse_file 以使用 Config.json_loads#1067 by @kierandarcy
  • 修复可选 Json 字段的问题,#1073 by @volker48
  • 将使用 cython 编译时使用的默认线程数更改为 1,允许通过 CYTHON_NTHREADS 环境变量覆盖,#1074 by @samuelcolvin
  • 在 Pydantic 的 CI 测试期间运行 FastAPI 测试,#1075 by @tiangolo
  • 我的 mypy 严格性约束,以及相关的类型注释调整,#1077 by @samuelcolvin
  • 为 SecretStr 和 SecretBytes 添加 __eq__ 以允许“值相等”,#1079 by @sbv-trueenergy
  • 修复嵌套 None 情况下的 schema 生成问题,#1088 by @lutostag
  • 对序列类对象的一致性检查,#1090 by @samuelcolvin
  • 修复 BaseSettings 在与 env_prefix 一起使用时 Config 继承问题,#1091 by @samuelcolvin
  • 修复 __modify_schema__ 在与 field_class_to_schema* 冲突时的问题,#1102 by @samuelcolvin
  • 文档:修复关于填充 BaseSettings 子类属性时环境变量名称大小写敏感性的解释,#1105 by @tribals
  • 重命名文档中的 django-rest-framework 基准测试,#1119 by @frankie567

v1.2 (2019-11-28)

  • 可能的破坏性更改: 添加对 name: Optional[AnyType] = Field(...) 的必需 Optional 的支持,并重构 ModelField 创建以保留 required 参数值,#1031 by @tiangolo;有关详细信息,请参阅此处
  • 添加 cattrs 的基准测试,#513 by @sebastianmika
  • dict() 和相关函数添加 exclude_none 选项,#587 by @niknetniko
  • 添加 valideer 的基准测试,#670 by @gsakkis
  • 添加 parse_obj_asparse_file_as 函数,用于将数据临时解析为任意 pydantic 兼容类型,#934 by @dmontagu
  • 为验证器添加 allow_reuse 参数,从而允许验证器重用,#940 by @dmontagu
  • 添加对自定义根模型的映射类型支持,#958 by @dmontagu
  • 对 dataclasses 的 Mypy 插件支持,#966 by @koxudaxi
  • 添加对 dataclasses 默认工厂的支持,#968 by @ahirner
  • 添加 ByteSize 类型用于将字节字符串(1GB)转换为普通字节,#977 by @dgasmith
  • 修复 mypy 关于 @root_validator(pre=True) 的抱怨,#984 by @samuelcolvin
  • 为 Python 3.8 添加 manylinux 二进制文件到 pypi,同时支持 manylinux2010,#994 by @samuelcolvin
  • 添加 ByteSize 转换为另一个单位的功能,#995 by @dgasmith
  • 修复模型的 __str____repr__ 继承,#1022 by @samuelcolvin
  • 在文档中添加推荐部分,#1025 by @sullivancolin
  • 为 Python 3.8 添加对 typing.Literal 的支持,#1026 by @dmontagu

v1.1.1 (2019-11-20)

  • 修复子模型上复杂字段使用可能导致字段配置不正确的错误,#1015 by @samuelcolvin

v1.1 (2019-11-07)

  • BaseModel.__init__ 和更多功能添加 mypy 插件以进行类型检查,#722 by @dmontagu
  • 更改 GenericModel.__class_getitem__ 的返回类型类型提示,以防止 PyCharm 警告,#936 by @dmontagu
  • 修复 Any 的用法以允许 None,还支持 TypeVar,从而允许使用未参数化的集合类型,例如 DictList#962 by @samuelcolvin
  • 在子字段上设置 FieldInfo,以修复复杂嵌套类型的 schema 生成问题,#965 by @samuelcolvin

v1.0 (2019-10-23)

  • 破坏性更改: 弃用 Model.fields 属性,改用 Model.__fields__#883 by @samuelcolvin
  • 破坏性更改: 更改别名的优先级,使子模型别名覆盖父别名,包括使用 alias_generator#904 by @samuelcolvin
  • 破坏性更改:skip_defaults 重命名为 exclude_unset,并添加排除实际默认值的功能,#915 by @dmontagu
  • pydantic.main.ModelMetaclass.__new__ 中添加 **kwargs,以便 __init_subclass__ 可以在扩展的 BaseModel 类上接受自定义参数,#867 by @retnikt
  • 修复具有默认值的字段类型,#880 by @koxudaxi
  • 当设置模型使用 alias 而非 env 时,使用 FutureWarning 而非 DeprecationWarning#881 by @samuelcolvin
  • 修复 BaseSettings 继承和 alias 被设置为 None 的问题,#882 by @samuelcolvin
  • 修改 __repr____str__ 方法,使其在所有公共类中保持一致,添加 __pretty__ 以支持 python-devtools,#884 by @samuelcolvin
  • 关于 BaseSettings 配置中的 case_insensitive 的弃用警告,#885 by @samuelcolvin
  • 对于 BaseSettings,递归合并环境变量和代码内值,只要它们合并后能创建一个有效的对象,以允许拆分初始化参数,#888 by @idmitrievsky
  • 更改秘密类型示例,#890 by @ashears
  • 更改 Model.construct() 的签名以使其更易于使用,并记录 construct() 的用法,#898 by @samuelcolvin
  • 添加 construct() 方法的示例,#907 by @ashears
  • 改进复杂类型上 Field 约束的使用,如果约束无法执行则引发错误,并在 schema 中支持带省略号 Tuple[X, ...] 的元组、SequenceFrozenSet#909 by @samuelcolvin
  • 更新缺少有效布尔值的文档,#911 by @trim21
  • 更好的 ModelFieldstr/repr 逻辑,#912 by @samuelcolvin
  • 修复 ConstrainedList,更新 schema 生成以反映 min_itemsmax_items Field() 参数,#917 by @samuelcolvin
  • 允许在 dict()includeexclude 参数中使用抽象集合(例如,字典键),#921 by @samuelcolvin
  • 通过使用 pydantic_encoder 修复 ValidationError.json() 上的 JSON 序列化错误,#922 by @samuelcolvin
  • 阐明 remove_untouched 的用法,改进没有验证器的类型的错误消息,#926 by @retnikt

v1.0b2 (2019-10-07)

  • StrictBool 类型检查标记为 bool,以允许默认值而不会出现 mypy 错误,#690 by @dmontagu
  • 将文档构建从 sphinx 转移到 mkdocs,重写大部分文档,#856 by @samuelcolvin
  • GenericModel 子类添加自定义命名方案支持,#859 by @dmontagu
  • if TYPE_CHECKING: 添加到测试覆盖率的排除行中,#874 by @dmontagu
  • allow_population_by_alias 重命名为 allow_population_by_field_name,删除不必要的警告,#875 by @samuelcolvin

v1.0b1 (2019-10-01)

  • 重大变更:Schema 重命名为 Field,并将其设为函数以满足 mypy 的要求,#577 by @samuelcolvin
  • 重大变更: 修改 bool 的解析行为,#617 by @dmontagu
  • 重大变更: 不再识别 get_validators,请使用 __get_validators__。不再识别 Config.ignore_extraConfig.allow_extra,请使用 Config.extra#720 by @samuelcolvin
  • 重大变更: 修改 BaseSettings 的默认配置设置;case_insensitive 重命名为 case_sensitive,默认值更改为 case_sensitive = Falseenv_prefix 默认值更改为 '' - 例如无前缀,#721 by @dmontagu
  • 重大变更: 实现 root_validator 并将根错误从 __obj__ 重命名为 __root__#729 by @samuelcolvin
  • 重大变更: 更改 dict(model) 的行为,以便子模型不再转换为字典,#733 by @samuelcolvin
  • 重大变更:post_init_post_parse 添加了 initvars 支持,#748 by @Raphael-C-Almeida
  • 重大变更: 使 BaseModel.json() 仅对具有自定义根的模型序列化 __root__ 键,#752 by @dmontagu
  • 重大变更: URL 解析逻辑的完全重写,#755 by @samuelcolvin
  • 重大变更: 在子类未提供字段确定时保留超类注解,#757 by @dmontagu
  • 重大变更: BaseSettings 现在使用特殊的 env 设置来定义要读取哪些环境变量,而不是别名,#847 by @samuelcolvin
  • 添加对验证器中 assert 语句的支持,#653 by @abdusco
  • 更新文档以指定 pydantic.dataclasses.dataclass 的使用和继承 pydantic.BaseModel#710 by @maddosaurus
  • 通过 json_loadsjson_dumps Config 属性允许自定义 JSON 解码和编码,#714 by @samuelcolvin
  • 使所有带注解的字段按照声明的顺序出现,#715 by @dmontagu
  • 使用 pytest 测试 mypy 集成,#735 by @dmontagu
  • ErrorWrapper 添加 __repr__ 方法,#738 by @samuelcolvin
  • 添加了对 dataclasses 中 FrozenSet 成员的支持,并在尝试使用 Pydantic 不支持的 typing 模块中的类型时提供了更好的错误提示,#745 by @djpetti
  • 添加 Pycharm 插件文档,#750 by @koxudaxi
  • 修复文档中损坏的示例,#753 by @dmontagu
  • 将与类型相关的对象移至 pydantic.typing#761 by @samuelcolvin
  • ErrorWrapperValidationError 和日期时间解析的次要性能改进,#763 by @samuelcolvin
  • datetime/date/time/timedelta 类型的改进:更具描述性的错误,将错误更改为 value_error 而非 type_error,支持字节,#766 by @samuelcolvin
  • 修复 Literal 类型具有多个允许值时的错误消息,#770 by @dmontagu
  • 通过将下划线转换为空格,改进 JSON schema 中自动生成的 title 字段,#772 by @skewty
  • 支持 dataclasses 的 mypy --no-implicit-reexport,同时在 pydantic 本身中尊重 --no-implicit-reexport#783 by @samuelcolvin
  • 添加 PaymentCardNumber 类型,#790 by @matin
  • 修复列表的 const 验证,#794 by @hmvp
  • 对于不允许额外字段的模型,将 schema 中的 additionalProperties 设置为 false,#796 by @Code0x58
  • EmailStr 验证方法现在根据 RFC 5321 返回本地部分区分大小写,#798 by @henriklindgren
  • 增加了对 ConstrainedFloatConstrainedIntConstrainedStr 验证严格性的能力,并添加了 StrictFloatStrictInt 类,#799 by @DerRidda
  • 改进了对 NoneOptional 的处理,将验证器上的 whole 替换为 each_item(反向含义,默认 False),#803 by @samuelcolvin
  • 添加对 Type[T] 类型提示的支持,#807 by @timonbimon
  • 通过移除 change_exceptions 提高性能,改变 pydantic 错误的构建方式,#819 by @samuelcolvin
  • 修复当 BaseModel 类型的模型字段在解析期间导致 ValidationError 时出现的错误消息,#820 by @dmontagu
  • 允许在 Config 上使用 getter_dict,修改 GetterDict 以使其更像 Mapping 对象,从而更易于使用,#821 by @samuelcolvin
  • 仅在基本 GenericModel 类上检查 TypeVar 参数,#842 by @zpencerq
  • Model._schema_cache 重命名为 Model.__schema_cache__Model._json_encoder 重命名为 Model.__json_encoder__Model._custom_root_type 重命名为 Model.__custom_root_type__#851 by @samuelcolvin

v0.32.2 (2019-08-17)

(文档可在 此处 获取)

  • 修复 dataclass 继承中 __post_init__ 的用法,修复 #739 by @samuelcolvin
  • 修复 GenericModels 类上必填字段的验证,#742 by @amitbl
  • 修复在 GenericModel 字段上定义自定义 Schema 的问题,#754 by @amitbl

v0.32.1 (2019-08-08)

v0.32 (2019-08-06)

  • 将模型名称添加到 ValidationError 错误消息中,#676 by @dmontagu
  • 重大变更:移除 BaseModel 上的 __getattr__ 并将 __values__ 重命名为 __dict__,使用 __values__ 属性时发出弃用警告,属性访问速度提高达 14 倍,#712 by @Bobronium
  • 在 Python 3.6 中支持 ForwardRef(不带自引用注解),#706 by @koxudaxi
  • Config 子类中实现 schema_extra#663 by @tiangolo

v0.31.1 (2019-07-31)

  • 修复 EnumError 的 json 生成,#697 by @dmontagu
  • 更新众多依赖项

v0.31 (2019-07-24)

v0.30.1 (2019-07-15)

  • 修复继承并更改 __init__ 的嵌套类在正确处理的同时仍然允许 self 作为参数的问题,#644 by @lnaden@dgasmith

v0.30 (2019-07-07)

v0.29 (2019-06-19)

  • 支持 dataclasses.InitVar,#592 by @pfrederiks
  • 更新文档以阐明在属性注解下定义多个类型时 Union 的用法,并展示类型顺序如何影响提供值的编组,#594 by @somada141
  • 添加 conlist 类型,#583 by @hmvp
  • 添加对泛型的支持,#595 by @dmontagu

v0.28 (2019-06-06)

v0.27 (2019-05-30)

  • 重大变更 _pydantic_post_init 在验证前执行 dataclass 的原始 __post_init__#560 by @HeavenVolkoff
  • 修复未指定参数的泛型类型处理问题,#550 by @dmontagu
  • 重大变更 (可能):这是第一个用 cython 编译的版本,请查阅文档,如果遇到问题请提交 issue

v0.27.0a1 (2019-05-26)

  • 修复 listtupleset 的 JSON Schema,#540 by @tiangolo
  • 使用 cython 编译,manylinux 二进制文件,以及其他一些性能改进,#548 by @samuelcolvin

v0.26 (2019-05-22)

  • 修复 IPvAnyAddressIPvAnyInterfaceIPvAnyNetwork 的 schema 生成 #498 by @pilosus
  • 修复可变长度元组支持,#495 by @pilosus
  • 修复 create_model 的返回类型提示,#526 by @dmontagu
  • 重大变更: 修复 .dict(skip_keys=True) 跳过通过别名设置的值(这涉及将 validate_model() 更改为始终返回 Tuple[Dict[str, Any], Set[str], Optional[ValidationError]]),#517 by @sommd
  • 修复 IPv4AddressIPv6AddressIPv4InterfaceIPv6InterfaceIPv4NetworkIPv6Network 的 schema 生成 #532 by @euri10
  • 添加 Color 类型,#504 by @pilosus@samuelcolvin

v0.25 (2019-05-05)

v0.24 (2019-04-23)

v0.23 (2019-04-04)

v0.22 (2019-03-29)

  • ipaddress stdlib 添加 IPv{4,6,Any}NetworkIPv{4,6,Any}Interface 类型,#333 by @pilosus
  • 添加 datetime 类型的文档,#386 by @pilosus
  • 修复基于 dataclass 的模型中的 schema 生成,#408 by @pilosus
  • 修复嵌套模型中的路径,#437 by @kataev
  • 添加 Sequence 支持,#304 by @pilosus

v0.21.0 (2019-03-15)

  • 修复 NoneIsNotAllowedError 消息中的拼写错误,#414 by @YaraslauZhylko
  • 添加 IPvAnyAddressIPv4AddressIPv6Address 类型,#333 by @pilosus

v0.20.1 (2019-02-26)

v0.20.0 (2019-02-18)

  • 修复 Python 3.8 的测试,#396 by @samuelcolvin
  • 为交互式会话中的自动补全添加字段到 dir 方法中,#398 by @dgasmith
  • 支持 dataclasses 的 ForwardRef (因此支持 from __future__ import annotations),#397 by @samuelcolvin

v0.20.0a1 (2019-02-13)

  • 重大变更 (可能):验证器更复杂的参数解析,现在允许 valuesconfigfield 的任何子集,例如 (cls, value, field),但是可变关键字参数("**kwargs")必须命名为 kwargs#388 by @samuelcolvin
  • 重大变更:向 BaseModel.dict() 添加 skip_defaults 参数,以允许跳过未显式设置的字段,Model.construct() 的签名已更改,#389 by @dgasmith
  • 为 PEP-561 支持添加 py.typed 标记文件,#391 by @je-l
  • 修复多重继承/混入的 extra 行为,#394 by @YaraslauZhylko

v0.19.0 (2019-02-04)

  • 支持 Callable 类型提示,修复 #279 by @proofit404
  • 修复带有 validator 装饰器的字段的 schema,修复 #375 by @tiangolo
  • multiple_of 约束添加到 ConstrainedDecimalConstrainedFloatConstrainedInt 及其相关类型 condecimalconfloatconint #371,感谢 @StephenBrown2
  • 弃用 ignore_extraallow_extra Config 字段,改用 extra#352 by @liiight
  • 为所有函数添加类型注解,使用 mypy 进行全面测试,#373 by @samuelcolvin
  • 修复 validate_allvalidate_always 的“缺失”错误,#381 by @samuelcolvin
  • 将日期/日期时间解析的秒/毫秒分界点更改为 2e10#385 by @samuelcolvin

v0.18.2 (2019-01-22)

v0.18.1 (2019-01-17)

  • 添加 ConstrainedBytesconbytes 类型,#315 @Gr1N
  • 添加 MANIFEST.in 以将许可证包含在包 .tar.gz 中,#358 by @samuelcolvin

v0.18.0 (2019-01-13)

  • 重大变更:不要对字典的键调用验证器,#254 by @samuelcolvin
  • 修复当默认值为 None 或类型为可选时带有 always=True 的验证器,同时防止对子字段调用 whole 验证器,修复 #132 by @samuelcolvin
  • 改进设置优先级的文档并允许轻松更改,#343 by @samuelcolvin
  • 修复 ignore_extra=Falseallow_population_by_alias=True,修复 #257 by @samuelcolvin
  • 重大变更:将 BaseConfig 属性 min_anystr_lengthmax_anystr_length 默认设置为 None,修复 #349#350 中 by @tiangolo
  • 添加对延迟注解的支持,#348 by @samuelcolvin

v0.17.0 (2018-12-27)

  • 修复 timedelta 作为数字的 schema,#325 by @tiangolo
  • 防止验证器在继承后重复调用,#327 by @samuelcolvin
  • 防止 ipython 中重复的验证器检查,修复 #312 by @samuelcolvin
  • 添加文档中的“使用 Pydantic”部分,#323 by @tiangolo & @samuelcolvin
  • 修复注解为 : dict: list: tuple: set 的字段的 schema 生成,#330 & #335 by @nkonin
  • 为 schema 中作为字典键的受限字符串添加支持,#332 by @tiangolo
  • 支持在 dataclasses 装饰器中传递 Config 类,#276 by @jarekkar (重大变更:这取代了 validate_assignment 参数与 config)
  • 支持嵌套 dataclasses,#334 by @samuelcolvin
  • PyObject 出现 ImportError 时提供更好的错误信息,#309 by @samuelcolvin
  • get_validators 重命名为 __get_validators__,使用旧名称时发出弃用警告,#338 by @samuelcolvin
  • 通过从字段中排除 ClassVar 属性来支持它,#184 by @samuelcolvin

v0.16.1 (2018-12-10)

  • 修复 create_model 正确使用传递的 __config__#320 by @hugoduncan

v0.16.0 (2018-12-03)

  • 重大变更:重构 schema 生成以与 JSON Schema 和 OpenAPI 规范兼容,#308 by @tiangolo
  • schema 添加到 schema 模块中,以从基本模型生成顶级 schema,#308 by @tiangolo
  • Schema 类添加额外字段以声明对 str 和数值的验证,#311 by @tiangolo
  • 将字段上的 _schema 重命名为 schema#318 by @samuelcolvin
  • BaseSettings Config 添加 case_insensitive 选项,#277 by @jasonkuhrt

v0.15.0 (2018-11-18)

v0.14.0 (2018-10-02)

v0.13.1 (2018-09-21)

  • 修复 int_validator 不将 bool 强制转换为 int 的问题 #264 by @nphyatt
  • BaseModel.copy() 添加深拷贝支持 #249, @gangefors

v0.13.0 (2018-08-25)

  • 如果字段名遮蔽了现有的 BaseModel 属性,则引发异常 #242
  • 添加 UrlStrurlstr 类型 #236
  • timedelta json 编码 ISO8601 和总秒数,自定义 json 编码器 #247, by @cfkanesan@samuelcolvin
  • 允许 timedelta 对象作为 timedelta 类型的属性值(匹配 datetime 等行为) #247

v0.12.1 (2018-07-31)

  • 修复使用 typing.Any 定义的字段的 schema 生成 #237

v0.12.0 (2018-07-31)

  • .dict().json() 模型方法中添加 by_alias 参数 #205
  • 添加 Json 类型支持 #214
  • 支持元组 #227
  • schema 的重大改进和更改 #213

v0.11.2 (2018-07-05)

  • 添加 NewType 支持 #115
  • 修复 list, set & tuple 验证 #225
  • 分离 validate_model 方法,允许错误与有效值一起返回 #221

v0.11.1 (2018-07-02)

v0.11.0 (2018-06-28)

  • 使 listtupleset 类型更严格 #86
  • 重大变更:移除 msgpack 解析 #201
  • 添加 FilePathDirectoryPath 类型 #10
  • 模型 schema 生成 #190
  • 模型和 schema 的 JSON 序列化 #133

v0.10.0 (2018-06-11)

  • 添加 Config.allow_population_by_alias #160,感谢 @bendemaree
  • 重大变更:新的错误格式 #179,感谢 @Gr1N
  • 重大变更:移除 Config.min_number_sizeConfig.max_number_size #183,感谢 @Gr1N
  • 重大变更:纠正 conint 等的 ltgt 参数的行为 #188,对于旧行为,请使用 lege #194,感谢 @jaheba
  • 添加错误上下文和通过 Config.error_msg_templates 重新定义错误消息模板的能力 #183,感谢 @Gr1N
  • 修复验证器异常中的拼写错误 #150
  • 将默认值复制到模型值,以便不同模型不共享对象 #154

v0.9.1 (2018-05-10)

  • 允许配置类上的自定义 get_field_config #159
  • 添加 UUID1UUID3UUID4UUID5 类型 #167,感谢 @Gr1N
  • 修改一些不一致的 docstrings 和注解 #173,感谢 @YannLuo
  • 修复异类类型的类型注解 #171,感谢 @Gr1N
  • 在异类类型中重用类型验证器 #171
  • 每月定期更新依赖项 #168
  • 添加 DecimalConstrainedDecimalcondecimal 类型 #170,感谢 @Gr1N

v0.9.0 (2018-04-28)

  • 调整 email-validator 导入错误消息 #145
  • 修复 parse_date()parse_datetime() 在输入为 0 时的解析错误 #144,感谢 @YannLuo
  • 添加 Config.anystr_strip_whitespacestrip_whitespace kwarg 到 constr,默认值为 False #163,感谢 @Gr1N
  • 添加 ConstrainedFloatconfloatPositiveFloatNegativeFloat 类型 #166,感谢 @Gr1N

v0.8.0 (2018-03-25)

  • 修复 inherit_config 的类型注解 #139
  • 重大变更:在验证器中检查无效字段名 #140
  • 验证父模型的属性 #141
  • 重大变更:电子邮件验证现在使用 email-validator #142

v0.7.1 (2018-02-07)

  • 修复 create_model 修改基类的 bug

v0.7.0 (2018-02-06)

  • 增加了与抽象基类 (ABCs) 的兼容性 #123
  • 添加 create_model 方法 #113 #125
  • 重大变更:将模型上的 .config 重命名为 .__config__
  • 重大变更:移除模型上已弃用的 .values(),改用 .dict()
  • 移除 OrderedDict 的使用并使用简单字典 #126
  • 添加 Config.use_enum_values #127
  • 添加形如 @validate('*') 的通配符验证器 #128

v0.6.4 (2018-02-01)

  • 允许 Python 日期和时间对象 #122

v0.6.3 (2017-11-26)

  • 修复没有 README.rst 时的直接安装问题

v0.6.2 (2017-11-13)

  • 验证器使用无效时的错误
  • 更安全地检查 Settings 中的复杂模型

v0.6.1 (2017-11-08)

  • 防止重复验证器,#101
  • 为验证器添加 always kwarg,#102

v0.6.0 (2017-11-07)

  • 赋值验证 #94,感谢 petroswork!
  • 复杂类型的环境变量中的 JSON,#96
  • 为复杂验证添加 validator 装饰器,#97
  • 弃用 values(...) 并替换为 .dict(...)#99

v0.5.0 (2017-10-23)

  • 添加 UUID 验证 #89
  • 如果 indextrack 为 null,则从错误对象 (json) 中移除 #90
  • 改进当提供列表而非字典时的错误文本 #90
  • 向文档添加基准测试表 #91

v0.4.0 (2017-07-08)

  • 在字符串验证错误中显示长度
  • 修复继承期间配置中的别名 #55
  • 简化错误显示
  • truncate 中使用 Unicode 省略号
  • 添加 parse_objparse_rawparse_file 辅助函数 #58
  • 将仅注解字段移到字段列表的开头而不是末尾

v0.3.0 (2017-06-21)

  • 通过 config.allow_mutation = False 实现不可变模型,相关清理和性能改进 #44
  • 不可变辅助方法 construct()copy() #53
  • 允许模型进行 pickle 序列化 #53
  • setattr 被移除,因为 __setattr__ 现在是智能的 #44
  • raise_exception 已移除,模型现在总是引发异常 #44
  • 实例方法验证器已移除
  • 添加了 django-restful-framework 基准测试 #47
  • 修复继承 bug #49
  • 使字符串类型更严格,以便列表、字典等不会被强制转换为字符串。 #52
  • 添加 StrictStr,只允许字符串作为输入 #52

v0.2.1 (2017-06-07)

  • pypi 和 travis 搞砸了 v0.2 的部署,这应该能修复它

v0.2.0 (2017-06-07)

  • 重大变更:模型上的 values() 现在是一个方法而不是属性,接受 includeexclude 参数
  • 允许仅注解字段支持 mypy
  • 为模型添加漂亮的 to_string(pretty=True) 方法

v0.1.0 (2017-06-03)

  • 添加文档
  • 添加历史记录