跳到内容

更新日志

v2.11.1 (2025-03-28)

GitHub 发布

变更内容

修复

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

v2.11.0 (2025-03-27)

GitHub 发布

变更内容

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

打包

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

新特性

  • 为 URL 类型添加 encoded_string() 方法,由 @YassinNouh21#11580 中完成
  • @validate_call 装饰器添加对 defer_build 的支持,由 @Viicos#11584 中完成
  • 允许 @with_config 装饰器与关键字参数一起使用,由 @Viicos#11608 中完成
  • 简化 JSON 模式生成中默认值包含的自定义,由 @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 中完成
  • 重大变更: 将路径类型的核心模式生成逻辑移动到 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 核心模式验证,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11271 中完成

性能

  • 仅在模式构建期间需要时才评估 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 中完成
  • 重构和优化模式清理逻辑,由 @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 模型重用缓存的核心模式,由 @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 模式以避免共享突变数据,由 @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 类中整合模式定义逻辑,由 @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 中完成
  • 修复带有 "examples" 键的 JSON 模式引用收集,由 @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 实例,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11350 中完成
  • 在处理函数模式时使用正确的 JSON 模式模式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11367 中完成
  • 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11356 中完成
  • 始终为任意字典模式包含 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 元数据的可引用核心模式的 JSON 模式生成,由 @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 模型(以及通常的核心模式生成)构建时性能的版本。这是另一个早期 alpha 版本,旨在收集早期用户对核心模式构建问题的反馈。

打包

性能

修复

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

新贡献者

v2.11.0a1 (2025-01-30)

GitHub 发布

变更内容

Pydantic v2.11 是一个主要关注 Pydantic 模型(以及通常的核心模式生成)构建时性能的版本。这是一个早期的 alpha 版本,旨在收集早期用户对核心模式构建问题的反馈。

打包

新特性

  • 支持具有默认值以及边界或约束的未替换类型变量,由 @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 中完成
  • 将路径类型的核心模式生成逻辑移动到 GenerateSchema 类内部,由 @sydney-runkle#10846 中完成
  • deque 模式生成移动到 GenerateSchema 类,由 @sydney-runkle#11239 中完成
  • Mapping 模式生成移动到 GenerateSchema,以完成移除 prepare_annotations_for_known_type 变通方法,由 @sydney-runkle#11247 中完成
  • 移除 Python 3.8 支持,由 @sydney-runkle#11258 中完成
  • 禁用 pydantic-core 核心模式验证,由 @sydney-runkle#11271 中完成

性能

修复

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

新贡献者

v2.10.6 (2025-01-23)

GitHub 发布

更新内容

修复

v2.10.5 (2025-01-08)

GitHub 发布

更新内容

修复

v2.10.4 (2024-12-18)

GitHub 发布

更新内容

打包

修复

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

新贡献者

v2.10.3 (2024-12-03)

GitHub 发布

更新内容

修复

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

v2.10.2 (2024-11-25)

GitHub 发布

更新内容

修复

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

v2.10.1 (2024-11-21)

GitHub 发布

更新内容

打包

修复

新贡献者

v2.10.0 (2024-11-20)

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

GitHub 发布

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

更新内容

打包

新功能

变更

性能

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

修复

新贡献者

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 插件:处理每个字段的 frozen 字段,由 @dmontagu#9935 中贡献
  • 修复 invalid-annotated-type 错误代码中的错别字,由 @sydney-runkle#9948 中贡献
  • 简化 uuidurlip 类型的 schema 生成,由 @sydney-runkle#9975 中贡献
  • date schemas 移动到 _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 中贡献
  • mypy 插件中将 strict=True 应用于 __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 中贡献
  • 当使用带有设置为 'json-unless-none'when_used 的 plain serializers 且默认值为 None 时,不计算 JSON Schema default,由 @Viicos#10121 中贡献
  • 修复 ImportString 特殊情况,由 @sydney-runkle#10137 中贡献
  • 将默认全局变量列入黑名单,以支持带有 __ 前缀注解的异类用户代码,由 @sydney-runkle#10136 中贡献
  • 在 JSON Schema 生成期间,处理具有可用 serialization schema 的 nullable schemas,由 @Viicos#10132 中贡献
  • 重组 BaseModel 注解,由 @kc0506#10110 中贡献
  • 修复当序列化 schema 涉及特定场景时的核心 schema 简化,由 @Viicos#10155 中贡献
  • 添加对在使用带有 AnnotatedPrivateAttr 时使用字符串化注解的支持,由 @Viicos#10157 中贡献
  • 修复 literal 和 enum schemas 的 JSON Schema number 类型,由 @Viicos#10172 中贡献
  • 修复在序列化模式下为具有 plain validators 的字段生成 JSON Schema 的问题,由 @Viicos#10167 中贡献
  • 修复在某些场景中为函数生成无效 JSON Schemas 的问题,由 @Viicos#10188 中贡献
  • 确保生成的 JSON Schemas 在测试中有效,由 @Viicos#10182 中贡献
  • 修复带有自定义序列化器的 key error,由 @sydney-runkle#10200 中贡献
  • 为 NatsDsn 中的允许方案添加 'wss',由 @swelborn#10224 中贡献
  • 修复 MappingMutableMapping 注解以使用 mapping schema 而不是 dict schema,由 @sydney-runkle#10020 中贡献
  • 修复约束日期的 JSON Schema 生成,由 @Viicos#10185 中贡献
  • 修复使用 enums 时的 discriminated union bug regression,由 @kfreezenpydantic/pydantic-core#1286 中贡献
  • 修复使用 * 时带有 computed field 的 field_serializer,由 @nix010pydantic/pydantic-core#1349 中贡献
  • 在推理之前尝试 Union 序列化器中的每个选项,由 @sydney-runklepydantic/pydantic-core#1398 中贡献
  • 修复 strict 模式下的 float 序列化行为,由 @sydney-runklepydantic/pydantic-core#1400 中贡献
  • exactness 引入 Decimal 验证逻辑,以改进 union 验证行为,由 @sydney-runklepydantic/pydantic-core#1405 中贡献
  • 修复新的警告断言以使用 pytest.warns(),由 @mgorny#10241 中贡献
  • 修复在 ModelMetaclass 中清理命名空间时发生的崩溃,由 @Viicos#10242 中贡献
  • 修复模型重建的父命名空间问题,由 @sydney-runkle#10257 中贡献
  • 移除命名空间的 defaults 过滤器,由 @sydney-runkle#10261 中贡献
  • __init__ 中验证模型后使用 identity 而不是 equality,由 @Viicos#10264 中贡献
  • 支持 int 子类的 BigInt 序列化,由 @kxx317pydantic/pydantic-core#1417 中贡献
  • 支持没有 info 的 wrap validators 的签名,由 @sydney-runkle#10277 中贡献
  • 确保在重建 dataclasses 时设置 __pydantic_complete__,由 @Viicos#10291 中贡献
  • TypeAdapter 中遵循 schema_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 发布

变更内容

打包

  • @sydney-runkle#9801 中将 ruff 升级到 v0.5.0,并将 pyright 升级到 v1.1.369
  • 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 中序列化一些可序列化的 defaults,由 @sydney-runkle#9624 中贡献
  • 放宽 create_model__validators__ 值的类型规范,由 @sydney-runkle#9697 中贡献
  • 重大变更: 改进 smart union 匹配逻辑,由 @sydney-runklepydantic/pydantic-core#1322 中贡献。 您可以在 此处 阅读更多关于我们的 smart union 匹配逻辑的信息。 在某些情况下,如果需要旧的行为,您可以切换到 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 defaults 的检测对于 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 字段的错误,由 @dmontagu#9606 中贡献
  • 修复了多个注解/约束应用逻辑,由 @sydney-runkle#9623 中贡献
  • 在验证和 json schema 中遵循 regex flags,由 @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 中贡献
  • 在 regex 模式中重用 re.Pattern 对象以允许 regex flags,由 @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 中提取属性文档字符串,由 @Viicos#6563 中完成
  • 添加 with_config 装饰器以符合 typing 规范,由 @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 中完成
  • 添加对 re.Pattern[str]pattern 字段的支持,由 @jag-k#9053 中完成
  • 支持 serialize_as_any 运行时设置,由 @sydney-runkle#8830 中完成
  • 添加对 typing.Self 的支持,由 @Youssefares#9023 中完成
  • 能够将 context 传递给序列化,由 @ornariece#8965 中完成
  • 在文档中添加带有 flarelytics 集成的反馈 widget,由 @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 导致的错误,由 @dmontagu#8666 中完成
  • 修复 ByteSize 错误 type 更改问题,由 @sydney-runkle#8681 中完成
  • 修复 dataclasses 中的继承注解问题,由 @sydney-runkle#8679 中完成
  • 修复核心 schema 生成中针对间接定义引用的回归问题,由 @dmontagu#8702 中完成
  • 修复带有 plain validator 的不受支持的类型错误,由 @sydney-runkle#8710 中完成
  • 还原 2.6 版本中的问题修复,修复 schema 构建错误,由 @sydney-runkle#8718 中完成
  • 修复 __pydantic_config__ 对 TypeDict 被忽略的问题,由 @13sin#8734 中完成
  • 修复由于 pytest.warns() 开始在 pytest.raises() 内部工作而导致的 pytest v8.0.0 测试失败问题,由 @mgorny#8678 中完成
  • mypy 插件使用来自 1.x 的 is_valid_field,由 @DanielNoord#8738 中完成
  • 更好地支持 mypy 严格相等标志,由 @dmontagu#8799 中完成
  • 带有 Annotated 类型的 model_json_schema 导出缺少 'required' 参数,由 @LouisGobert#8793 中完成
  • 修复 FieldInfo.__repr_args__ 中的默认包含问题,由 @sydney-runkle#8801 中完成
  • 修复子类模块命名空间中不存在的 dataclass 基类中 forward refs 的解析问题,由 @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 中完成
  • 在 schema 生成的错误消息中添加有关类的信息,由 @Czaki#8917 中完成
  • 使 TypeAdapter 的 typing 与特殊形式兼容,由 @adriangb#8923 中完成
  • 修复 config 行为被烘焙到 enum 的 ref schema 中的问题,由 @dmontagu#8920 中完成
  • 关于错误 model_json_schema 用法的更有帮助的错误提示,由 @sydney-runkle#8928 中完成
  • 修复嵌套的区分联合 schema 生成问题,第 2 部分,由 @sydney-runkle#8932 中完成
  • 修复带有区分器的嵌套 dataclasses / TypedDicts 的 schema 构建问题,由 @sydney-runkle#8950 中完成
  • 删除带有区分联合的 definitions schema 生成的不必要逻辑,由 @sydney-runkle#8951 中完成
  • 修复 mypy 插件中 optionals 的处理问题,由 @dmontagu#9008 中完成
  • 修复 PlainSerializer 与 std 类型构造函数的使用问题,由 @sydney-runkle#9031 中完成
  • 删除插件中不必要的 config 警告,由 @dmontagu#9039 中完成
  • 修复默认值序列化问题,由 @NeevCohen#9066 中完成
  • 修复 Model.__getattr__() 中的额外字段检查问题,由 @NeevCohen#9082 中完成
  • 修复从父类继承的 ClassVar forward ref 问题,由 @alexmojaki#9097 中完成
  • 修复带有 strict True 的 sequence like 验证器问题,由 @andresliszt#8977 中完成
  • 改进字段名称遮蔽父模型中字段时的警告消息,由 @chan-vince#9105 中完成
  • 如果子类中未重新定义遮蔽字段,则不发出警告,由 @chan-vince#9111 中完成
  • 修复带有未替换类型变量的区分联合错误,由 @sydney-runkle#9124 中完成
  • 支持将 deque 传递给 Sequence[blah blah blah] 时进行序列化,由 @sydney-runkle#9128 中完成
  • model_post_init 中从超类型初始化私有属性,由 @Viicos#9134 中完成
  • 修复带有 validation_aliasmodel_construct 问题,由 @ornariece#9144 中完成
  • 确保 json-schema 生成器处理 Literal null 类型,由 @bruno-f-cruz#9135 中完成
  • 在 v2.7.0 中修复:修复 allow extra generic 问题,由 @dmontagu#9193 中完成

新贡献者

v2.7.0b1 (2024-04-03)

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

v2.6.4 (2024-03-12)

GitHub 发布

更新内容

修复

  • 修复 AliasGeneratorcomputed_field 装饰器的使用问题,由 @sydney-runkle#8806 中完成
  • 修复嵌套的区分联合 schema 生成问题,第 2 部分,由 @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,以下描述了这些更新的重大更改,完整更改日志请参阅 此处

新功能

变更

  • 通过 @hramezani#7188 中移除 Python3.7 支持
  • 通过 @davidhewittpydantic/pydantic-core#1129 中移除 Python 3.7,以及 PyPy 3.7 和 3.8
  • BaseModel 构造函数中使用仅位置参数 self,因此任何字段名称都不会与之冲突,由 @ariebovenberg#8072 中完成
  • 使 @validate_call 返回一个函数而不是自定义描述符 - 修复了与继承的绑定问题,并向验证错误添加了 self/cls 参数,由 @alexmojaki#8268 中完成
  • 从 JSON 模式描述中排除 BaseModel 文档字符串,由 @sydney-runkle#8352 中完成
  • model_computed_fields 引入 classproperty 装饰器,由 @Jocelyn-Gas#8437 中完成
  • 如果字段名称与类型冲突,则显式引发错误,由 @Viicos#8243 中完成
  • 为简单类型的联合使用更严格的序列化器,由 @alexdrydew pydantic/pydantic-core#1132 完成

性能

修复

  • 移动已弃用的 BaseConfig 中的 getattr 警告,由 @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 中完成
  • 修复验证器 (classmethod) 之前的 mypy 错误,由 @sydney-runkle#8285 中完成
  • 修复 to_snake 转换,由 @jevins09#8316 中完成
  • 修复 ModelMetaclass.__prepare__ 的类型注解,由 @slanzmich#8305 中完成
  • 当带注解的类型已具有配置时,禁止在初始化 TypeAdapter 时指定 config,由 @sydney-runkle#8365 中完成
  • 修复由递归类型别名参数化的泛型的 JSON 模式中的命名问题,由 @dmontagu#8389 中完成
  • 修复 pydantic people 脚本中的类型注解,由 @shenxiangzhuang#8402 中完成
  • dataclass 签名中添加对字段 alias 的支持,由 @NeevCohen#8387 中完成
  • 修复前向引用中带有 Field(...) 的模式生成错误,由 @dmontagu#8494 中完成
  • 修复通过 model_construct 调用 __dict__ 中的键的顺序,由 @sydney-runkle#8500 中完成
  • 修复当 globals 不包含 __name__ 时模块 path_type 的创建,由 @hramezani#8470 中完成
  • 修复带有 from __future__ import annotations 的 dataclass 的命名空间问题,由 @sydney-runkle#8513 中完成
  • 修复:使函数验证器类型为仅位置参数,由 @pmmmwh#8479 中完成
  • 修复 @deprecated 的用法,由 @Viicos#8294 中完成
  • model_construct 调用中添加更多对私有属性的支持,由 @sydney-runkle#8525 中完成
  • 为类型命名空间使用堆栈,由 @dmontagu#8378 中完成
  • 修复具有引用的类型的 TypeAliasType 的模式构建错误,由 @dmontagu#8526 中完成
  • 在 dataclass 中支持 pydantic.Field(repr=False),由 @tigeryy2#8511 中完成
  • 覆盖 RootModeldataclass_transform 行为,由 @Viicos#8163 中完成
  • 重构签名生成以简化,由 @sydney-runkle#8572 中完成
  • 修复 PlainValidator 注解的顺序错误,由 @Anvil#8567 中完成
  • 修复 computed_field 的 json 序列化的 exclude_none,由 @sydney-runklepydantic/pydantic-core#1098 中完成
  • 支持 yyyy-MM-DD 字符串格式的日期时间,由 @sydney-runklepydantic/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 序列化,由 @edoakespydantic/pydantic-core#1006 中完成

变更

  • 重大变更: 用新的智能联合实现替换 ultra_strict,联合的验证方式已发生重大变化,以提高性能和正确性,我们已努力尽可能减少行为发生变化的案例,有关详细信息,请参阅 PR - 由 @davidhewittpydantic/pydantic-core#867 中完成
  • extra='allow' 时,添加对实例方法重新分配的支持,由 @sydney-runkle#7683 中完成
  • 支持为没有案例的 Enum 类型生成 JSON 模式,由 @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 模式错误,由 @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 中完成
  • 移除 schema 构建缓存,由 @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 中完成
  • 默认情况下,使具有默认值的字段在序列化 schema 中不是必需的,由 @dmontagu#7275 中完成
  • Extra 标记为已弃用,由 @disrupted#7299 中完成
  • 使 EncodedStr 成为数据类,由 @Kludex#7396 中完成
  • annotated_handlers 移动为公开,由 @samuelcolvin#7569 中完成

性能

  • 简化 CoreSchema 的扁平化和内联,由 @adriangb#7523 中完成
  • 移除 CoreSchema 遍历中未使用的副本,由 @adriangb#7528 中完成
  • 为从 CoreSchema 收集定义和无效 schema 添加缓存,由 @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 应用于引用的 schema,由 @adriangb#7381 中完成
  • 强制执行具有双前导下划线的私有属性的行为,由 @lig#7265 中完成
  • 标准化 __get_pydantic_core_schema__ 签名,由 @hramezani#7415 中完成
  • 修复泛型数据类字段突变错误(当使用 TypeAdapter 时),由 @sydney-runkle#7435 中完成
  • 修复 wrap 模式下 model_validatorTypeError,由 @pmmmwh#7496 中完成
  • 改进枚举错误消息,由 @hramezani#7506 中完成
  • 使 repr 适用于在处理 ValidationError 时初始化失败的实例,由 @dmontagu#7439 中完成
  • 修复了通过限制空格的正则表达式拒绝服务问题,由 @prodigysml#7360 中完成
  • 修复处理具有 UUID.version=NoneUUID 值,由 @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 schema defrefs 发生冲突,由 @dmontagu#6566 中完成
  • Path 字段的无效输入提供更清晰的错误,由 @samuelcolvin#6903 中完成
  • 📝 支持坐标类型,由 @yezz123#6906 中完成
  • 修复 py 3.10.0 的 ForwardRef 包装器 (shim until 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 中完成
  • 修复在验证器之前调用两次的数据类注解,由 @davidhewitt#6998 中完成
  • 更新 test-fastapi 取消选择的测试,由 @hramezani#7014 中完成
  • 修复验证器文档格式,由 @hramezani#7015 中完成
  • 修复 model_json_schema 的文档字符串中的拼写错误,由 @AdamVinch-Federated#7032 中完成
  • 使用 pyright 移除未使用的 "type ignores",由 @samuelcolvin#7026 中完成
  • 添加代表 FastAPI 启动时间的基准测试,由 @adriangb#7030 中完成
  • 修复 Enum 子类的 json_encoders,由 @adriangb#7029 中完成
  • 更新关于 base64 编码的 ser_json_bytes 的文档字符串,由 @Viicos#7052 中完成
  • 允许 @validate_call 在异步方法上工作,由 @adriangb#7046 中完成
  • 修复: SettingsSettingsConfigDict 的 mypy 错误,由 @JeanArhancet#7002 中完成
  • 修复一些拼写错误 (重复的单词和 it's/its),由 @eumiro#7063 中完成
  • 修复文档字符串中的拼写错误,由 @harunyasar#7062 中完成
  • 文档: 修复 pydantic-settings 包推荐中损坏的 URL,由 @swetjen#6995 中完成
  • 处理应用于不接受约束的 schema 的约束,由 @adriangb#6951 中完成
  • 用 math.isclose 替换 almost_equal_floats,由 @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 与 set 一起工作,由 @hramezani#7126 中完成
  • 不要总是要求 typing.Generic 作为部分参数化模型的基础,由 @dmontagu#7119 中完成
  • 修复 JSON schema 错误地使用父类核心 schema 的问题,由 @dmontagu#7020 中完成
  • 修复与 TypedDict 和 alias_generator 相关的 xfailed 测试,由 @dmontagu#6940 中完成
  • 改进 NameEmail 的错误消息,由 @dmontagu#6939 中完成
  • 修复泛型计算字段,由 @dmontagu#6988 中完成
  • 在验证期间反映 namedtuple 默认值,由 @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 额外键名,由 @hramezani#7136 中完成

v2.1.1 (2023-07-25)

GitHub 发布

  • 在不必要时跳过 FieldInfo 合并,由 @dmontagu#6862 中完成

v2.1.0 (2023-07-25)

GitHub 发布

  • 添加 StringConstraints 以用作 Annotated 元数据,由 @adriangb#6605 中完成
  • 尝试修复间歇性失败的 CI,由 @adriangb#6683 中完成
  • 移除可选与默认的冗余示例,由 @ehiggs-deliverect#6676 中完成
  • 文档更新,由 @samuelcolvin#6692 中完成
  • 移除验证器文档中的始终验证部分,由 @adriangb#6679 中完成
  • 修复 json schema 生成中的递归错误,由 @adriangb#6720 中完成
  • 修复 secretstr 的不正确的子类检查,由 @AlexVndnblcke#6730 中完成
  • 将 pdm / pdm lockfile 更新至 2.8.0,由 @davidhewitt#6714 中完成
  • 在更多 CI 作业中取消固定 pdm,由 @davidhewitt#6755 中完成
  • 改进文档中辅助包的源位置,由 @davidhewitt#6749 中完成
  • 假设内置函数不接受 info 参数,由 @adriangb#6754 中完成
  • 修复调用 help(BaseModelSubclass) 引发错误的问题,由 @hramezani#6758 中完成
  • 修复 mypy 插件处理 @model_validator(mode="after"),由 @ljodal#6753 中完成
  • 将 pydantic-core 更新至 2.3.1,由 @davidhewitt#6756 中完成
  • 用于设置的 Mypy 插件,由 @hramezani#6760 中完成
  • 对 JSON schema 使用 contentSchema 关键字,由 @dmontagu#6715 中完成
  • 快速路径检查有限小数,由 @davidhewitt#6769 中完成
  • 文档更新,由 @samuelcolvin#6771 中完成
  • 改进 json schema 文档,由 @hramezani#6772 中完成
  • 更新验证器文档,由 @adriangb#6695 中完成
  • 修复 wrap 验证器的类型提示,由 @dmontagu#6788 中完成
  • 🐛 修复 Literal 和其他类型联合的验证警告,由 @lig#6628 中完成
  • 更新 V2 中泛型支持的文档,由 @tpdorsey#6685 中完成
  • 将 pydantic-core 构建信息添加到 version_info(),由 @samuelcolvin#6785 中完成
  • 修复使用带有默认值的槽的 pydantic 数据类,由 @dmontagu#6796 中完成
  • 修复冻结模型的哈希函数继承,由 @dmontagu#6789 中完成
  • ✨ 添加 SkipJsonSchema 注解,由 @Kludex#6653 中完成
  • 如果 Field 使用了无效的字段名称,则报错,由 @dmontagu#6797 中完成
  • GenericModel 添加到 MOVED_IN_V2,由 @adriangb#6776 中完成
  • docs/usage/types/custom.md 中移除未使用的代码,由 @hramezani#6803 中完成
  • 修复 float -> Decimal 强制转换精度损失,由 @adriangb#6810 中完成
  • 从 north star 基准测试中移除电子邮件验证,由 @davidhewitt#6816 中完成
  • 修复 mypy 的链接,由 @progsmile#6824 中完成
  • 改进初始化钩子示例,由 @hramezani#6822 中完成
  • 修复 mongosrv DSN 的默认端口,由 @dmontagu#6827 中完成
  • 改进 API 文档,特别是用法文档和 API 文档之间更多的链接,由 @samuelcolvin#6780 中完成
  • 将 pydantic-core 更新至 2.4.0,由 @davidhewitt#6831 中完成
  • 修复 annotated_types.MaxLen 验证器对自定义序列类型,由 @ImogenBits#6809 中完成
  • 更新 V1,由 @hramezani#6833 中完成
  • 使其可以工作的可调用 JSON schema 额外信息,由 @dmontagu#6798 中完成
  • 修复 InstanceOf 的序列化问题,由 @dmontagu#6829 中完成
  • 添加回对 json_encoders 的支持,由 @adriangb#6811 中完成
  • 在构建 schema 时更新字段注解,由 @dmontagu#6838 中完成
  • 使用 WeakValueDictionary 修复泛型内存泄漏,由 @dmontagu#6681 中完成
  • 添加 config.defer_build 以可选地使模型构建延迟,由 @samuelcolvin#6823 中完成
  • UUID 序列化委托给 pydantic-core,由 @davidhewitt#6850 中完成
  • 更新 json_encoders 文档,由 @adriangb#6848 中完成
  • 修复 staticmethod/classmethod 顺序与 validate_call 的错误消息,由 @dmontagu#6686 中完成
  • 改进 Config 的文档,由 @samuelcolvin#6847 中完成
  • 更新序列化文档以提及 Field.exclude 优先于调用时 include/exclude,由 @hramezani#6851 中完成
  • 通过使 GenerateSchema 公开来允许自定义核心 schema 生成,由 @adriangb#6737 中完成

v2.0.3 (2023-07-05)

GitHub 发布

  • 在迁移文档中提及 PyObject (v1) 移动到 ImportString (v2),由 @slafs#6456 中完成
  • 修复 release-tweet CI,由 @Kludex#6461 中完成
  • 修改关于必需/可选/可空字段的部分,由 @ybressler#6468 中完成
  • 如果类型提示实际上不是类型,则发出警告,由 @adriangb#6479 中完成
  • 用 GetPydanticSchema 替换 TransformSchema,由 @dmontagu#6484 中完成
  • 修复各种注解类型的不可哈希性,以用于缓存泛型容器,由 @dmontagu#6480 中完成
  • PYD-164: 重做自定义类型文档,由 @adriangb#6490 中完成
  • 修复 ci,由 @adriangb#6507 中完成
  • 修复泛型中的前向引用,由 @adriangb#6511 中完成
  • 修复 core_schema.ChainSchema 的序列化 JSON schema 的生成,由 @dmontagu#6515 中完成
  • 记录 Pydantic V2 中 Field.alias 行为的更改,由 @hramezani#6508 中完成
  • 尝试计算具有未定义字段的模型的 json schema 时,提供更好的错误消息,由 @dmontagu#6519 中完成
  • 记录 alias_priority,由 @tpdorsey#6520 中完成
  • 为类型文档添加重定向,由 @tpdorsey#6513 中完成
  • 允许在不发布的情况下更新文档,由 @samuelcolvin#6551 中完成
  • 确保文档测试始终在正确的文件夹中运行,由 @dmontagu#6487 中完成
  • 推迟序列化器函数的返回类型提示的评估,由 @dmontagu#6516 中完成
  • 禁用 Ruff 的 E501 并仅依赖 Black,由 @adriangb#6552 中完成
  • 更新 V2 的 JSON Schema 文档,由 @tpdorsey#6492 中完成
  • 添加循环引用处理的文档,由 @dmontagu#6493 中完成
  • 移除对变更文件的需求,由 @samuelcolvin#6556 中完成
  • 添加 "north star" 基准测试,由 @davidhewitt#6547 中完成
  • 更新 Dataclasses 文档,由 @tpdorsey#6470 中完成
  • ♻️ 在 v1 重定向上使用不同的错误消息,由 @Kludex#6595 中完成
  • ⬆ 将 pydantic-core 升级至 v2.2.0,由 @lig#6589 中完成
  • 修复 IPvAny 的序列化问题,由 @dmontagu#6572 中完成
  • 改进 CI,通过使用 PDM 而不是 pip 安装 typing-extensions,由 @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 的各种文档字符串,由 @dmontagu#6607 中完成
  • 处理可区分联合中的函数验证器,由 @dmontagu#6570 中完成
  • 审查 json_schema.md,由 @tpdorsey#6608 中完成
  • 使 validate_call 在 basemodel 方法上工作,由 @dmontagu#6569 中完成
  • 为大整数 json serde 添加测试,由 @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 以防止意外提交到 main 分支,由 @dmontagu#6636 中完成
  • 修复 MacOS/windows 上 python 3.7 的 PDM CI,由 @dmontagu#6627 中完成
  • 为 pydantic dataclasses 生成更准确的签名,由 @dmontagu#6633 中完成
  • Pydantic V2 的 Url 类型更新,由 @tpdorsey#6638 中完成
  • 修复 transform 文档字符串中的列表 markdown 格式,由 @StefanBRas#6649 中完成
  • 简化 slots_dataclass 的构造以安抚 mypy,由 @davidhewitt#6639 中完成
  • 更新 TypedDict schema 生成文档字符串,由 @adriangb#6651 中完成
  • 检测并使用 lint 错误标记打印语句,由 @dmontagu#6655 中完成
  • 为 pydantic-core PR 766 添加 xfailing 测试,由 @dmontagu#6641 中完成
  • 忽略来自 dataclasses metadata 的无法识别的字段,由 @dmontagu#6634 中完成
  • 使不存在的类 getattr 成为 mypy 错误,由 @dmontagu#6658 中完成
  • 将 pydantic-core 更新到 2.3.0 版本,由 @hramezani#6648 中完成
  • 使用 typing_extensions 中的 OrderedDict,由 @dmontagu#6664 中完成
  • 修复 JSON schema extra callable 的类型提示,由 @dmontagu#6659 中完成

v2.0.2 (2023-07-05)

GitHub 发布

  • 修复了 RootModel 的往返 pickle/unpickle 会更改 __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 schema '$ref',#6343,由 @adriangb 完成
  • 修复子模型中标记联合的多次处理问题,#6340,由 @suharnikov 完成

查看完整变更日志 此处

v2.0 (2023-06-30)

GitHub 发布

Pydantic V2 发布啦! 🎉

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

v2.0b3 (2023-06-16)

Pydantic V2 的第三个 beta 预发布版本

查看完整变更日志 此处

v2.0b2 (2023-06-03)

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

查看完整变更日志 此处

v2.0b1 (2023-06-01)

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

查看完整变更日志 此处

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.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 type 修复,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/9751 中完成
  • utils.py__all__ 中添加 to_lower_camel,由 @sydney-runkle (直接提交)
  • 修复 mypy 1.11 版本的 mypy v1 插件,由 @flaeppe 在 https://github.com/pydantic/pydantic/pull/10139 中完成
  • 修复当 discriminator 具有别名且 .schema(by_alias=False) 时使用的 discriminator 键,由 @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 版本的 mypy v1 插件,由 @ 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 完成
  • 修复了泛型接收 forward refs 的错误,#6130,由 @mark-todd 完成
  • 更新 CI 中内部测试的 FastAPI 安装方法,#6117,由 @Kludex 完成

v1.10.9 (2023-06-07)

  • 修复 Decimal 验证中尾随零未被忽略的问题,#5968,由 @hramezani 完成
  • 修复 v1.4.0 的 mypy 插件,#5928,由 @cdce8p 完成
  • 添加 future 和 past date hypothesis 策略,#5850,由 @bschoenmaeckers 完成
  • 不鼓励将 Cython 3 与 Pydantic 1.x 一起使用,#5845,由 @lig 完成

v1.10.8 (2023-05-23)

  • 修复了 Literaltyping-extension==4.6.0 一起使用时的错误,#5826,由 @hramezani 完成
  • 这解决了 (已关闭) 问题 #3849,其中当数据包含非别名字段名称时,使用可区分联合的别名字段无法验证,#5736,由 @benwah 完成
  • 将 email-validator 依赖项更新到 >=2.0.0post2,#5627,由 @adriangb 完成
  • python/typeshed#9771 中的更改更新 AnyClassMethod#5505,由 @ITProKyle 完成

v1.10.7 (2023-03-22)

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

v1.10.6 (2023-03-08)

  • 实现逻辑以支持通过使用 defaults 识别非标准 callable 并解包 functools.partialfunctools.partialmethod 来创建验证器,在检查签名时,#5126,由 @JensHeinrich 完成
  • 修复了 v1.1.1 的 mypy 插件,并修复了 pydantic dataclasses 的 dataclass_transform 装饰器,#5111,由 @cdce8p 完成
  • 当 discriminator 值不可哈希时,引发 ValidationError 而不是 ConfigError#4773,由 @kurtmckee 完成

v1.10.5 (2023-02-15)

  • 修复了使用复杂模型集的 GenericModel 的参数化基类处理中断的问题,#5052,由 @MarkusSintonen 完成
  • 如果插件配置更改,则使 mypy 缓存失效,#5007,由 @cdce8p 完成
  • 修复了深度复制 pydantic 包装的 dataclass 类型时出现的 RecursionError#4949,由 @mbillingr 完成
  • 修复了 X | Y union 语法破坏 GenericModel 的问题,#4146,由 @thenx 完成
  • 切换 coverage badge 以显示此分支/版本的 coverage,#5060,由 @samuelcolvin 完成

v1.10.4 (2022-12-30)

v1.10.3 (2022-12-29)

注意:v1.10.3 由于 #4885 已从 PyPI "撤回",该问题已在 v1.10.4 中修复

  • 修复了自定义 root 模型的解析,#4883,由 @gou177 完成
  • 修复: 对冻结或空 dataclasses 使用 dataclass 代理,#4878,由 @PrettyWood 完成
  • 修复了模型实例是默认值之一的模型的 schemaschema_json#4781,由 @Bobronium 完成
  • 在文档索引页上添加 Jina AI 作为赞助商,#4767,由 @samuelcolvin 完成
  • 修复: 支持在 DataclassProxy 上赋值,#4695,由 @PrettyWood 完成
  • 添加 postgresql+psycopg 作为 PostgreDsn 的允许 scheme,使其可用于 SQLAlchemy 2,#4689,由 @morian 完成
  • 允许 dict schemas 同时具有 patternPropertiesadditionalProperties#4641,由 @jparise 完成
  • 修复了为带有 unique_items 的可选列表传递 None 时出现的错误,#4568,由 @mfulgo 完成
  • 修复了带有 Callable 参数的 GenericModel 引发 TypeError 的问题,#4551,由 @mfulgo 完成
  • 修复了带有 StrictStr 类型标注的字段 regex,#4538,由 @sisp 完成
  • dataclass_transform 关键字参数名称从 field_descriptors 更正为 field_specifiers#4500,由 @samuelcolvin 完成
  • 修复: 避免在继承 dataclasses 时多次调用 __post_init__#4487,由 @PrettyWood 完成
  • 减小二进制 wheels 的大小,#2276,由 @samuelcolvin 完成

v1.10.2 (2022-09-05)

v1.10.1 (2022-08-31)

  • pydantic.color.Color 类添加 __hash__ 方法,#4454,由 @czaki 完成

v1.10.0 (2022-08-30)

  • 重构整个 pydantic dataclass 装饰器,使其真正像其标准库等效项一样工作。因此,它保留了 __eq____hash__ 等,并使与其非验证版本的比较成为可能。它还修复了字段中 frozen dataclasses 的用法和嵌套 dataclasses 中 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 完成
  • 修复了当 Field 中存在 max_lengthStrictStr 不引发 ValidationError 的问题,#4388,由 @hramezani 完成
  • 使 SecretStrSecretBytes 可哈希,#4387,由 @chbndrhnns 完成
  • 修复了当 Field 中存在 max_lengthStrictBytes 不引发 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 完成
  • 将 repo 移动到 pydantic/pydantic#4348,由 @yezz123 完成
  • 修复了多次验证带有 Extra.forbid 的 dataclass 时出现的 “不允许额外字段” 错误,#4343,由 @detachhead 完成
  • 向文档添加 Python 3.9 和 3.10 示例,#4339,由 @Bobronium 完成
  • 当生成 OpenAPI schema 定义时,可区分联合模型现在使用 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 完成
  • 向 constr 和 conbytes 添加 Config.anystr_upperto_upper kwarg,#4165,由 @satheler 完成
  • 修复了当 setfrozenset 包含默认值时的 JSON schema,#4155,由 @aminalaee 完成
  • 教导 mypy 插件 @validator 装饰的方法是 classmethod,#4102,由 @DMRobertson 完成
  • 改进 mypy 插件检测必需字段的能力,#4086,由 @richardxia 完成
  • 支持 schema 中类型为 Type[] 的字段,#4051,由 @aminalaee 完成
  • const=True 时,在 JSON Schema 中添加 default 值,#4031,由 @aminalaee 完成
  • 向签名生成逻辑添加保留字检查,#4011,由 @strue36 完成
  • 修复了复杂嵌套字段的 Json 策略失败问题,#4005,由 @sergiosim 完成
  • 添加 JSON 兼容的 float 约束 allow_inf_nan#3994,由 @tiangolo 完成
  • env_prefixenv_nested_delimiter 具有共同字符时,移除未定义的行为,#3975,由 @arsenron 完成
  • 支持带有 create_model 的泛型模型,#3945,由 @hot123s 完成
  • 允许子模型覆盖额外的字段信息,#3934,由 @PrettyWood 完成
  • 记录和测试 BaseModel 上的结构模式匹配 (PEP 636),#3920,由 @irgolic 完成
  • 修复了 python timedelta 对象反序列化为负时间 delta 的 ISO 8601 格式错误的问题。减号被序列化在错误的位置 (“P-1DT23H59M59.888735S” 而不是正确的 “-P1DT23H59M59.888735S”),#3899,由 @07pepa 完成
  • 修复了当传递模型实例时,带有别名的可区分联合字段的验证问题,#3846,由 @chornsby 完成
  • 添加 CockroachDsn 类型以验证 CockroachDB 连接字符串。该类型支持以下 scheme: cockroachdb, cockroachdb+psycopg2cockroachdb+asyncpg#3839,由 @blubber 完成
  • 修复 MyPy 插件以不覆盖模型中预先存在的 __init__ 方法,#3824,由 @patrick91 完成
  • 修复 mypy 版本检查,#3783,由 @KotlinIsland 完成
  • 支持覆盖 BaseModel 实例的 dunder 属性,#3777,由 @PrettyWood 完成
  • 添加了 ConstrainedDatecondate#3740,由 @hottwaj 完成
  • 支持 dataclasses 中的 kw_only#3670,由 @detachhead 完成
  • Color 类添加比较方法,#3646,由 @aminalaee 完成
  • 放弃对 python3.6 的支持,相关清理,#3605,由 @samuelcolvin 完成
  • 为 “非 Pascal Case” 驼峰式命名创建了新函数 to_lower_camel()#3463,由 @schlerp 完成
  • 在 Mypy 插件中为 defaultdefault_factory 参数添加检查,#3430,由 @klaa97 完成
  • 修复了 BaseModelinspect.signature 的 mangling 问题,#3413,由 @fix-inspect-signature 完成
  • 添加了 SecretField 抽象类,以便当前和未来的所有 secret 字段 (如 SecretStrSecretBytes) 都将从中派生,#3409,由 @expobrain 完成
  • 支持 PostgresDsn 中的多主机验证,#3337,由 @rglsk 完成
  • 修复了非常小的数值 timedelta 值的解析问题,#3315,由 @samuelcolvin 完成
  • 更新 SecretsSettingsSource 以遵循 config.case_sensitive#3273,由 @JeanArhancet 完成
  • 添加 MongoDB 网络数据源名称 (DSN) schema,#3229,由 @snosratiershad 完成
  • 添加对多个 dotenv 文件的支持,#3222,由 @rekyungmin 完成
  • 当为单个验证器错误地设置了多个字段时,引发显式的 ConfigError#3215,由 @SunsetOrange 完成
  • 允许 TypedDicts required 的 Annotated 内部的 Field 上使用省略号,#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 时,添加通过 __dataclass_transform__ 在 VS Code 中自动完成的支持,#4006,作者:@giuliano-oliveira
  • 从代码库和文档中删除基准测试,#3973,作者:@samuelcolvin
  • CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 的文档,#3972,作者:@samuelcolvin
  • 修复嵌套 Python dataclass 模式回归,#3819,作者:@himbeles
  • 更新关于 Settings 源的延迟评估的文档,#3806,作者:@garyd203
  • 防止 bytes 的子类被转换为 bytes,#3706,作者:@samuelcolvin
  • 修复使用 PEP585 和 PEP604 类型提示时出现的“error checking inheritance of”错误,#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) 更改

  • 支持带有可辨别联合类型的泛型模型,#3551,作者:@PrettyWood
  • 默认情况下保持 json() 的旧行为,#3542,作者:@PrettyWood
  • BaseModel 中删除仅用于类型的 __root__ 属性,#3540,作者:@layday
  • 构建 Python 3.10 wheels,#3539,作者:@mbachry
  • 修复模型 __repr__extra 字段的显示,#3234,作者:@cocolman
  • 通过 Config.copy_on_model_validation 复制的模型始终具有所有字段,#3201,作者:@PrettyWood
  • 来自嵌套字典的嵌套 ORM,#3182,作者:@PrettyWood
  • 修复指向可辨别联合类型部分的链接,作者:@PrettyWood

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

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

v1.8.2 (2021-05-11)

警告

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

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

v1.8.1 (2021-03-03)

v1.8 中回归和新功能的错误修复

  • 允许 Config.field 的元素更新 Field 的元素,#2461,作者:@samuelcolvin
  • 修复带有 BaseModel 字段和自定义根类型的验证,#2449,作者:@PrettyWood
  • fastapi 公开 Pattern 编码器,#2444,作者:@PrettyWood
  • 启用 Hypothesis 插件以在指定 multiple_of 参数时生成约束浮点数,#2442,作者:@tobi-lipede-oodle
  • 避免在使用某些类型(如 EnumLiteral)与泛型模型时出现 RecursionError#2436,作者:@PrettyWood
  • 不要覆盖模型子类中声明的 __hash__#2422,作者:@PrettyWood
  • 修复关于 PathUUID 相关自定义类型的 mypy 报错,#2418,作者:@PrettyWood
  • 正确支持复合类型的可变长度元组,#2416,作者:@PrettyWood

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

v1.7.2 (2020-11-01)

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

v1.7.1 (2020-10-28)

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

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

v1.7 (2020-10-26)

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

亮点

变更

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

v1.6.2 (2021-05-11)

  • 安全修复: 修复 datedatetime 解析,以便传递 'infinity'float('inf')(或它们的负值)不会导致无限循环。请参阅安全公告 CVE-2021-29510

v1.6.1 (2020-07-15)

  • 修复了带有 default_factory 的嵌套模型的验证和解析,#1710,由 @PrettyWood 贡献

v1.6 (2020-07-11)

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

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

v1.5.1 (2020-04-23)

v1.5 (2020-04-18)

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

v1.4 (2020-01-24)

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

v1.3 (2019-12-21)

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

v1.2 (2019-11-28)

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

v1.1.1 (2019-11-20)

  • 修复子模型上使用复杂字段可能导致字段配置不正确的 bug,#1015,由 @samuelcolvin 完成

v1.1 (2019-11-07)

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

v1.0 (2019-10-23)

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

v1.0b2 (2019-10-07)

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

v1.0b1 (2019-10-01)

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

v0.32.2 (2019-08-17)

(文档在此处可用 here

  • 修复 __post_init__ 与 dataclass 继承的用法,修复 #739,由 @samuelcolvin 完成
  • 修复 GenericModels 类上必需字段的验证,#742,由 @amitbl 完成
  • 修复在 GenericModel 字段上定义自定义 Schema#754,由 @amitbl 完成

v0.32.1 (2019-08-08)

  • validate_assignment 开启时,不验证额外的字段,#724,由 @YaraslauZhylko 完成

v0.32 (2019-08-06)

  • ValidationError 错误消息添加模型名称,#676,由 @dmontagu 完成
  • 破坏性更改:删除 BaseModel 上的 __getattr__ 并将 __values__ 重命名为 __dict__,弃用对 __values__ 属性的使用,属性访问速度提高了多达 14 倍,#712,由 @Bobronium 完成
  • 在 Python 3.6 中支持 ForwardRef(不带自引用注解),#706,由 @koxudaxi 完成
  • Config 子类中实现 schema_extra#663,由 @tiangolo 完成

v0.31.1 (2019-07-31)

  • 修复 EnumError 的 json 生成,#697,由 @dmontagu 完成
  • 更新了许多依赖项

v0.31 (2019-07-24)

  • 更好地支持浮点 multiple_of 值,#652,由 @justindujardin 完成
  • 修复 NewTypeLiteral 的 schema 生成,#649,由 @dmontagu 完成
  • 修复 alias_generator 和字段配置冲突,#645,由 @gmetzker 完成,以及 #658,由 @Bobronium 完成
  • 更详细的 EnumError 消息,#673,由 @dmontagu 完成
  • dictjsoncopy 添加高级排除支持,#648,由 @Bobronium 完成
  • 修复具有具体参数化字段的模型的 GenericModel 中的 bug,#672,由 @dmontagu 完成
  • Literal 类型添加文档,#651,由 @dmontagu 完成
  • 为自定义描述符支持添加 Config.keep_untouched#679,由 @Bobronium 完成
  • 在内部使用 inspect.cleandoc 获取模型描述,#657,由 @tiangolo 完成
  • Color 添加到 schema 生成中,由 @euri10 完成
  • 为 Literal 类型添加文档,#651,由 @dmontagu 完成

v0.30.1 (2019-07-15)

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

v0.30 (2019-07-07)

v0.29 (2019-06-19)

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

v0.28 (2019-06-06)

v0.27 (2019-05-30)

  • 破坏性更改 _pydantic_post_init 在验证之前执行 dataclass 的原始 __post_init__#560,由 @HeavenVolkoff 完成
  • 修复对没有指定参数的泛型类型的处理,#550,由 @dmontagu 完成
  • 破坏性更改(可能):这是第一个用 cython 编译的版本,请参阅文档,如果遇到问题,请提交 issue

v0.27.0a1 (2019-05-26)

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

v0.26 (2019-05-22)

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

v0.25 (2019-05-05)

v0.24 (2019-04-23)

  • 修复 ForwardRef 在子类型(如 Union)中的处理,#464,由 @tiangolo 完成
  • 修复 secret 序列化,#465,由 @atheuz 完成
  • 为 dataclasses 支持自定义验证器,#454,由 @primal100 完成
  • 修复 parse_obj 以处理类似 dict 的对象,#472,由 @samuelcolvin 完成
  • 修复嵌套的基于 dataclass 的模型中的 schema 生成,#474,由 @NoAnyLove 完成
  • 修复 PathFilePathDirectoryPath 对象的 json#473,由 @mikegoodspeed 完成

v0.23 (2019-04-04)

  • 改进贡献部分的文档,#441,由 @pilosus 完成
  • 改进 README.rst 以包含关于包的基本信息,#446,由 @pilosus 完成
  • IntEnum 支持,#444,由 @potykion 完成
  • 修复 PyObject 可调用值,#409,由 @pilosus 完成
  • 修复更新后 black 弃用警告,#451,由 @pilosus 完成
  • 修复 ForwardRef 集合 bug,#450,由 @tigerwings 完成
  • 支持专门的 ClassVars#455,由 @tyrylu 完成
  • 修复 ipaddress 类型的 JSON 序列化,#333,由 @pilosus 完成
  • 添加 SecretStrSecretBytes 类型,#452,由 @atheuz 完成

v0.22 (2019-03-29)

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

v0.21.0 (2019-03-15)

  • 修复 NoneIsNotAllowedError 消息中的错别字,#414,由 @YaraslauZhylko 完成
  • 添加 IPvAnyAddressIPv4AddressIPv6Address 类型,#333,由 @pilosus 完成

v0.20.1 (2019-02-26)

v0.20.0 (2019-02-18)

  • 修复 Python 3.8 的测试,#396,由 @samuelcolvin 完成
  • 为交互式会话中的自动完成功能向 dir 方法添加字段,#398,由 @dgasmith 完成
  • 使用 dataclasses 支持 ForwardRef(以及 from __future__ import annotations),#397,由 @samuelcolvin 完成

v0.20.0a1 (2019-02-13)

  • breaking change (maybe): 针对验证器的更复杂的参数解析,现在允许使用 valuesconfigfield 的任何子集,例如 (cls, value, field),但是可变关键字参数("**kwargs")必须命名为 kwargs#388 by @samuelcolvin
  • breaking change: 向 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
  • ConstrainedDecimalConstrainedFloatConstrainedInt 及其相关类型 condecimalconfloatconint 添加 multiple_of 约束 #371,感谢 @StephenBrown2
  • 弃用 ignore_extraallow_extra Config 字段,转而使用 extra#352 by @liiight
  • 向所有函数添加类型注解,使用 mypy 进行完整测试,#373 by @samuelcolvin
  • 修复 validate_allvalidate_always 导致的“missing”错误,#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)

  • breaking change: 不再对字典的键调用验证器,#254 by @samuelcolvin
  • 修复当 default 为 None 或类型为 optional 时,always=True 的验证器,同时阻止为子字段调用 whole 验证器,修复 #132 by @samuelcolvin
  • 改进设置优先级的文档,并允许轻松更改优先级,#343 by @samuelcolvin
  • 修复 ignore_extra=Falseallow_population_by_alias=True,修复 #257 by @samuelcolvin
  • breaking change: 默认将 BaseConfig 属性 min_anystr_lengthmax_anystr_length 设置为 None,修复 #349 in #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 & #326 by @samuelcolvin
  • 修复注解为 : dict: list: tuple: set 的字段的 schema 生成,#330 & #335 by @nkonin
  • 添加对 schema 中作为 dict 键的受约束字符串的支持,#332 by @tiangolo
  • 支持在 dataclasses 装饰器中传递 Config 类,#276 by @jarekkar (breaking change: 这取代了带有 configvalidate_assignment 参数)
  • 支持嵌套 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)

  • breaking change: 重构 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
  • 支持 tuples #227
  • 对 schema 的重大改进和更改 #213

v0.11.2 (2018-07-05)

  • 添加 NewType 支持 #115
  • 修复 listsettuple 验证 #225
  • 分离出 validate_model 方法,允许返回错误以及有效值 #221

v0.11.1 (2018-07-02)

v0.11.0 (2018-06-28)

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

v0.10.0 (2018-06-11)

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

v0.9.1 (2018-05-10)

  • 允许在 config 类上自定义 get_field_config #159
  • 添加 UUID1UUID3UUID4UUID5 类型 #167,感谢 @Gr1N
  • 修改一些不一致的文档字符串和注解 #173,感谢 @YannLuo
  • 修复 exotic 类型的类型注解 #171,感谢 @Gr1N
  • 在 exotic 类型中重用类型验证器 #171
  • 计划每月更新 requirements #168
  • 添加 DecimalConstrainedDecimalcondecimal 类型 #170,感谢 @Gr1N

v0.9.0 (2018-04-28)

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

v0.8.0 (2018-03-25)

  • 修复 inherit_config 的类型注解 #139
  • breaking change: 检查验证器中的无效字段名称 #140
  • 验证父模型的属性 #141
  • breaking change: email 验证现在使用 email-validator #142

v0.7.1 (2018-02-07)

  • 修复 create_model 修改基类的问题

v0.7.0 (2018-02-06)

  • 添加了与抽象基类 (ABC) 的兼容性 #123
  • 添加 create_model 方法 #113 #125
  • breaking change: 将模型上的 .config 重命名为 .__config__
  • breaking change: 移除模型上已弃用的 .values(),请改用 .dict()
  • 移除 OrderedDict 的使用并使用 simple dict #126
  • 添加 Config.use_enum_values #127
  • 添加 @validate('*') 形式的通配符验证器 #128

v0.6.4 (2018-02-01)

  • 允许 Python date 和 times 对象 #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
  • 改进当提供 list 而不是 dict 时的错误文本 #90
  • 向文档添加 benchmarks 表格 #91

v0.4.0 (2017-07-08)

  • 在字符串验证错误中显示长度
  • 修复继承期间 config 中的别名 #55
  • 简化错误显示
  • truncate 中使用 unicode 省略号
  • 添加 parse_objparse_rawparse_file 辅助函数 #58
  • 切换仅注解字段,使其在字段列表中位于最前面而不是最后面

v0.3.0 (2017-06-21)

  • 通过 config.allow_mutation = False 实现 immutable 模型,相关的清理和性能改进 #44
  • immutable 辅助方法 construct()copy() #53
  • 允许模型的 pickling #53
  • setattr 已移除,因为 __setattr__ 现在是智能的 #44
  • raise_exception 已移除,Models 现在始终引发异常 #44
  • 实例方法验证器已移除
  • 添加了 django-restful-framework benchmarks #47
  • 修复继承 bug #49
  • 使 str 类型更严格,以便 list、dict 等不会被强制转换为字符串。#52
  • 添加仅始终将字符串作为输入的 StrictStr #52

v0.2.1 (2017-06-07)

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

v0.2.0 (2017-06-07)

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

v0.1.0 (2017-06-03)

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