跳转至

更新日志

v2.8.2 (2024-07-03)

GitHub release

有什么变化

Fixes

  • 由 @dmontagu 在 #9838 中修复由可插拔模式验证器导致的断言问题

v2.8.1 (2024-07-03)

GitHub release

发生了什么变化

Packaging

  • 由@sydney-runkle 在 #9801 中将 ruff 提升至 v0.5.0 ,将 pyright 提升至 v1.1.369

  • 由@sydney-runkle 在 #9832 中将 pydantic-core 提升至 v2.20.1pydantic-extra-types 提升至 v2.9.0

Fixes

  • 通过@sydney-runkle 在 #9812 中修复 to_snake 从 v2.7 到 v2.8 的重大更改

  • 由 @sydney-runkle 在 #9818 中修复列表约束 JSON 模式应用程序

  • 支持时间超过 23 由 @nix010 在 pydantic/speedate#64

  • 由 @davidhewitt 在 pydantic/speedate#65 中修复了毫秒小数以错误的比例处理的问题

  • 由 @sydney-runkle 在 pydantic/speedate#71 中正确处理负分数时长

v2.8.0 (2024-07-01)

GitHub release

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

有什么变化

Packaging

  • 通过@sydney-runkle 在 #9673 中的新发布自动更新引文版本

  • 将版权转让给 v1.1.367 ,并由 @adriangb 在 #9674 中为管道 API 添加类型检查测试

  • 由@sydney-runkle 在 #9707 中将 pydantic.v1 存根更新为 v1.10.17

  • 由@sydney-runkle 在 #9741 中进行的通用软件包更新以准备 v2.8.0b1

  • 由@sydney-runkle 在 #9745 中将 pydantic-core 提升至 v2.20.0

  • 在 #9743 中由 @sydney-runkle 为 Python 3.13 添加支持

  • 由@sydney-runkle 在 #9761 中将用于 pdm.lockpdm 版本更新至 v2.16.1

  • 由 @Viicos 在 #9585 中更新至 ruff v0.4.8

新功能

  • 实验性:由 @MarkusSintonen 在 #8939 中为 TypeAdapter 提供 defer_build 支持

  • 由 @NeevCohen 在 #9298 中在 JSON 模式中实现 deprecated 字段

  • 实验性:由 @adriangb 在 #9459 中添加管道 API

  • 在 #9183 中由 @NeevCohen 添加对编程式标题生成的支持

  • 由 @uriyyo 在 #9708 中实现 fail_fast 功能

  • 在 pydantic/pydantic-core#1307 中,由 @josh-newman 添加 ser_json_inf_nan='strings' 模式以生成有效的 JSON

Changes

  • 当 @nix010 在 #9170 中在被忽略的 Annotated 字段中设置“别名”时添加警告

  • 通过@sydney-runkle 在 #9624 中支持 JSON 模式中某些可序列化默认值的序列化

  • 由@sydney-runkle 在 #9697 中放宽 create_model__validators__ 值的类型规范

  • 重大变更:由@sydney-runkle 在 pydantic/pydantic-core#1322 中改进 smart 联合匹配逻辑 您可以在此处阅读更多关于我们的 smart 联合匹配逻辑的信息。在某些情况下,如果需要旧的行为,您可以切换到 left-to-right 模式并更改您的 Union 成员的顺序。

Performance

内部改进
  • ⚡️ 在 pydantic/v1/error_wrappers.py 中由 @misrasaurabh1 将 _display_error_loc() 的速度提高 25% 于 #9653

  • ⚡️ 在 pydantic/json_schema.py 中由 @misrasaurabh1 将 _get_all_json_refs() 的速度提高 34%,在 #9650 中

  • ⚡️ 在 pydantic/dataclasses.py 中由 @misrasaurabh1 将 is_pydantic_dataclass() 的速度提高 41% 于 #9652

  • ⚡️ 在 pydantic/alias_generators.py 中由 @misrasaurabh1 将 to_snake() 的速度提高 27% 于 #9747

  • ⚡️ 在 pydantic/_internal/_decorators.py 中由 @misrasaurabh1 将 unwrap_wrapped_function() 的速度提高 93% 于 #9727

Fixes

  • 在 #9331 中,由 @hramezani 将 __spec__.parent 替换为 __package__

  • 由 @anesmemisevic 在 #9303 中修复 Sequence 类型的输出模型 JSON 模式

  • 在 #9353 中由 @Viicos 修复 _frame_depth 的输入类型

  • 通过 @amitschang 在 #9344 中使 ImportString JSON 模式兼容

  • 在类型检查器中,通过 @idan22moral 在 #9293 中隐藏来自 __init__ 签名的私有属性( PrivateAttr

  • 通过 #9426 中的 @AlexWaygood 使对 TypeVar 默认值的检测对于 CPython PEP-696 实现具有鲁棒性

  • 通过 @Viicos 在 #9450 中修复了内置类型的 PlainSerializer 的使用

  • 由 @ChrisPappalardo 在 #9468 中添加了更强大的自定义验证示例

  • 在 #9476 中,由 @vbmendes 修复了 StringConstraint(strict=False) 的被忽略的 strict 规范

  • 重大变更:由 @Viicos 在 #9479 中使用 PEP 570 语法

  • 在可能的情况下使用 Self ,由 @Viicos 在 #9479 中提出

  • 请勿更改 @Viicos 在 #9480 中的 mypy 插件中的 RootModel.model_construct 签名

  • @OhioDschungel6 在 #9508 中修复了 validation_context 的类型提示

  • 支持由 @alexcouper 在 #9495 中向 TypeAdapter 的 dump_json / dump_python 传递上下文

  • @bjmc 在 #9484 中为 Field() 构造函数更新类型签名

  • 通过@sydney-runkle 在 #9561 中改进内置别名生成器

  • 在 #9570 中由 @Viicos 修复 TypeAdapter 的输入类型

  • 由 @anhpham1509 在 #9584 中为 BaseModel 的 __setstate__ 中的私有字段添加回退默认值

  • 支持 PEP 746 由 @adriangb 在 #9587 中

  • 允许验证器和序列化器函数具有默认值,由 @Viicos 在 #9478 中提出

  • 由 @dmontagu 在 #9606 中修复了 mypy 插件处理协变 TypeVar 字段的错误

  • 由 @sydney-runkle 在 #9623 中修复多个注释/约束应用逻辑

  • 在验证和 JSON 模式中尊重 regex 标志,由 @sydney-runkle 在 #9591 中完成

  • @sydney-runkle 在 #9640 中修复 IpvAnyAddress 的类型提示

  • 允许在 __pydantic_extra__ 上使用字段说明符,由 @dmontagu 在 #9659 中提出

  • 在 #9737 中,由 @sydney-runkle 对文件路径比较使用标准化大小写

  • 修改约束应用逻辑,以允许在 Optional[Decimal] 上的字段约束,由 @lazyhope 在 #9754 中进行

  • validate_call type params fix by @sydney-runkle in #9760
  • 检查由 @s-t-e-v-e-n-k 在 #9702 中通过 pytest.warns() 返回的所有警告

  • 在正则表达式模式中重用 re.Pattern 对象以允许正则表达式标志,由 @sydney-runkle 在 pydantic/pydantic-core#1318 中提出

New Contributors

  • @idan22moral 在 #9294 中做出了他们的首次贡献

  • @anesmemisevic 在 #9303 中做出了他们的首次贡献

  • @max-muoto 在 #9338 中做出了他们的首次贡献

  • @amitschang 在 #9344 中做出了他们的首次贡献

  • @paulmartin91 在 #9410 中做出了他们的首次贡献

  • @OhioDschungel6 在 #9405 中做出了他们的首次贡献

  • @AlexWaygood 在 #9426 中做出了他们的首次贡献

  • @kinuax 在 #9433 中做出了他们的首次贡献

  • @antoni-jamiolkowski 在 #9431 中做出了他们的首次贡献

  • @candleindark 在 #9448 中做出了他们的首次贡献

  • @nix010 在 #9170 中做出了他们的首次贡献

  • @tomy0000000 在 #9457 中做出了他们的首次贡献

  • @vbmendes 在 #9470 中做出了他们的首次贡献

  • @micheleAlberto 在 #9471 中做出了他们的首次贡献

  • @ChrisPappalardo 在 #9468 中做出了他们的首次贡献

  • @blueTurtz 在 #9475 中做出了他们的首次贡献

  • @WinterBlue16 在 #9477 中做出了他们的首次贡献

  • @bittner 在 #9500 中做出了他们的首次贡献

  • @alexcouper 在 #9495 中做出了他们的首次贡献

  • @bjmc 在 #9484 中做出了他们的首次贡献

  • @pjvv 在 #9529 中做出了他们的首次贡献

  • @nedbat 在 #9530 中做出了他们的首次贡献

  • @gunnellEvan 在 #9469 中做出了他们的首次贡献

  • @jaymbans 在 #9531 中做出了他们的首次贡献

  • @MarcBresson 在 #9534 中做出了他们的首次贡献

  • @anhpham1509 在 #9584 中做出了他们的首次贡献

  • @K-dash 在 #9595 中做出了他们的首次贡献

  • @s-t-e-v-e-n-k 在 #9527 中做出了他们的首次贡献

  • @airwoodix 在 #9506 中做出了他们的首次贡献

  • @misrasaurabh1 在 #9653 中做出了他们的首次贡献

  • @AlessandroMiola 在 #9740 中做出了他们的首次贡献

  • @mylapallilavanyaa 在 #9746 中做出了他们的首次贡献

  • @lazyhope 在 #9754 中做出了他们的首次贡献

  • @YassinNouh21 在 #9759 中做出了他们的首次贡献

v2.8.0b1 (2024-06-27)

预发布,详情见 GitHub 发布。

v2.7.4 (2024-06-12)

Github release

有什么变化

Packaging

  • pydantic.v1 提升至 v1.10.16 参考,由 @sydney-runkle 在 #9639 中提出

Fixes

  • 在 #9612 中,由 @vfazio 指定 recursive_guard 作为 FutureRef._evaluate 中的关键字参数

v2.7.3 (2024-06-03)

GitHub release

有什么变化

Packaging

  • 由@sydney-runkle 在 #9550 中将 pydantic-core 提升至 v2.18.4

Fixes

  • 在 Python 中修复 u 样式的 Unicode 字符串 @samuelcolvin 于 pydantic/jiter#110

v2.7.2 (2024-05-28)

GitHub release

有什么变化

Packaging

  • 由@sydney-runkle 在 #9515 中将 pydantic-core 提升至 v2.18.3

Fixes

  • 在 #9331 中,由 @hramezani 将 __spec__.parent 替换为 __package__

  • 通过 @RajatRajdeep 在 pydantic/pydantic-core#1291 中修复以一元负号开头的 int 的验证

  • 由 @sydney-runkle 在 pydantic/pydantic-core#1273 中修复 str 枚举子类验证

  • 在 pydantic/pydantic-core#1297 中,由 @samuelcolvin 支持 BigInt s 在 Literal s 和 Enum s 中

  • 修复:uuid - 允许 str 子类作为输入,由 @davidhewitt 在 pydantic/pydantic-core#1296 中提出

v2.7.1 (2024-04-23)

GitHub release

有什么变化

Packaging

  • 由@sydney-runkle 在 #9307 中将 pydantic-core 提升至 v2.18.2

新功能

  • Ftp 和 Websocket 连接字符串由 @CherrySuryp 在 #9205 中支持

Changes

  • 当存在 时,使用字段描述作为 RootModel 架构描述,由 @LouisGobert 在 #9214 中提出

Fixes

  • 由@sydney-runkle 在 #9223 中针对 AliasChoicesAliasPath 修复 validation_aliasmodel_construct 的行为

  • 在 #9232 中,由 @frost-nzcr4 还原 typing.Literal 并将其导入 TYPE_CHECKING 块之外

  • 修复 Secret 序列化模式,适用于 @sydney-runkle 在 #9240 中的联合

  • 由@sydney-runkle 在 #9279 中使用 use_enum_valuesstrict 应用程序修复为 function-after

  • 在 #9168 中,由 @babygrimes 解决了在定义 model_post_init 的类上 model_constructAttributeError 而失败的情况

  • 通过 @NeevCohen 在 #9287 中使用配置类型修复 model_json_schema

  • 在 pydantic/pydantic-core#1269 中,由 @samuelcolvin 支持将多个零作为 int

  • 通过 @cknv 在 pydantic/pydantic-core#1272 中修复带有前导一元加号的 int 的验证

  • 在 pydantic/pydantic-core#1276 中,由 @davidhewitt 修复 extra != 'ignore'from_attributes=True 之间的交互

  • 在 pydantic/pydantic-core#1274 中,由@sydney-runkle 将来自 Enummissing 函数的错误处理为 ValidationError

  • 通过 @davidhewitt 在 pydantic/pydantic-core#1271 中对 Iterable 验证修复内存泄漏

New Contributors

  • @zzstoatzz 在 #9219 中做出了他们的首次贡献

  • @frost-nzcr4 在 #9232 中做出了他们的首次贡献

  • @CherrySuryp 在 #9205 中做出了他们的首次贡献

  • @vagenas 在 #9268 中做出了他们的首次贡献

  • @ollz272 在 #9262 中做出了他们的首次贡献

  • @babygrimes 在 #9168 中做出了他们的首次贡献

  • @swelborn 在 #9296 中做出了他们的首次贡献

  • @kf-novi 在 #9236 中做出了他们的首次贡献

  • @lgeiger 在 #9288 中做出了他们的首次贡献

v2.7.0 (2024-04-11)

GitHub release

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

有什么变化

Packaging

新功能

  • FieldInfo.description 中提取由 @Viicos 在 #6563 中的属性文档字符串

  • 通过 @Viicos 在 #8611 中添加一个 with_config 装饰器以符合类型规范

  • 允许一个可选的分隔符,将 ByteSize.human_readable 的结果的数值和单位通过 @jks15satoshi 在 #8706 中分开

  • 由 @conradogarciaberrotaran 在 #8519 中添加通用的 Secret 基本类型

  • 利用 Sphinx 库存,在文档中进行交叉引用,由 @Viicos 在 #8682 中提出

  • 由 @geospackle 在 #8767 中添加环境变量以禁用插件

  • 由 @Viicos 在 #8237 中添加对 deprecated 字段的支持

  • 允许 field_serializer('*') 由 @ornariece 在 #9001 中

  • 处理 @alexeyt101 在 #9004 中将 model_config 定义为模型属性的情况

  • 更新 create_model() 以支持 typing.Annotated 作为输入,由 @wannieman98 在 #8947 中提出

  • 通过 @solidguy7 在 #9062 中添加 ClickhouseDsn 支持

  • 在 #9053 中,由 @jag-k 为 re.Pattern[str]pattern 字段添加支持

  • @sydney-runkle 在 #8830 中对 serialize_as_any 运行时设置的支持

  • 由 @Youssefares 在 #9023 中添加对 typing.Self 的支持

  • 通过 @ornariece 在 #8965 中将 context 传递给序列化的能力

  • 在 #9129 中,由 @sydney-runkle 将带有 flarelytics 集成的反馈小部件添加到文档中

  • 在 Python 中对部分 JSON 字符串解析的支持,由 @samuelcolvin 在 pydantic/jiter#66 中提供


在 v2.7.0 中完成,而不是 v2.7.0b1 :

  • 通过 @NeevCohen 在 #9137 中为字段级数字到字符串强制转换选项添加支持

  • 为序列化实用程序更新 warnings 参数,以允许 @Lance-Drane 在 #9166 中发出警告

Changes

  • 由@sydney-runkle 在 #8807 中针对 model_construct 行为与 extra 更正文档和逻辑

  • 由@sydney-runkle 在 #8857 中改进针对不恰当的 RootModel 子类的错误消息

  • 重大变更:在 #8940 中由 @Viicos 使用 PEP570 语法

  • 通过 @dmontagu 在 #8944 中为单项文本向 JSON 模式添加 enumtype

  • 在 #9125 中,由 @sydney-runkle 弃用 update_json_schema 内部函数

  • 将持续时间序列化为小时、分钟、秒,而不是仅以秒为单位,由 @kakilangit 在 pydantic/speedate#50 中完成

  • 在通过 @hungtsetse 在 pydantic/pydantic-core#1203 中将 str 解析为 int 和 float 之前进行修剪

Performance

  • enum 由 @samuelcolvin 在 #9045 中进行的验证器改进

  • 由 @samuelcolvin 在 #9064 中将 enum 验证和序列化移至 Rust

  • 由 @sydney-runkle 在 #9114 中改进嵌套数据类的模式生成

  • 在 JSON 中通过 @samuelcolvin 在 pydantic/jiter#72 中创建 ASCII Python 字符串的快速路径

  • aarch64 上的 SIMD 整数和字符串 JSON 解析(注意:x86 上的 SIMD 将在未来版本中实现),由 @samuelcolvin 在 pydantic/jiter#65 中提出

  • 支持来自 jiter 的 JSON Cow<str> ,由 @davidhewitt 在 pydantic/pydantic-core#1231 中提出

  • 重大性能改进:由 @davidhewitt 在 pydantic/pydantic-core#1248 中更新至 PyO3 0.21 最终版

  • 通过 @samuelcolvin 在 pydantic/pydantic-core#1240 中缓存 Python 字符串

Fixes

  • 由@sydney-runkle 在 #8614 中修复某些 Sequence 的严格解析

  • 在 #8642 中,由 @anci3ntr0ck 对 __qualname__ 的存在添加检查

  • 处理 __pydantic_extra__ 注释是字符串还是由 @alexmojaki 在 #8659 中继承

  • 由 @Holi0317 在 #8650 中修复 NameEmail 的 json 验证

  • 在 #8651 中,由 @bluenote10 修复 BaseModel 中属性访问的类型安全性

  • 由 @dmontagu 在 #8666 中修复 mypy 插件和 no_strict_optional = True 的错误

  • 修复 ByteSize 错误 type 由 @sydney-runkle 在 #8681 中更改

  • 通过@sydney-runkle 在 #8679 中修复数据类中的继承注释

  • 由 @dmontagu 在 #8702 中修复间接定义引用的核心模式生成中的回归问题

  • 通过@sydney-runkle 在 #8710 中使用普通验证器修复不支持的类型错误

  • 回滚 2.6 版本中有问题的修复,由 @sydney-runkle 在 #8718 中修复模式构建错误

  • 在 #8734 中,由 @13sin 修复了 TypeDict 中被忽略的 __pydantic_config__

  • 通过 #8678 中 @mgorny 的操作,修复由于 pytest.warns()pytest.raises() 内部开始工作而导致的带有 pytest v8.0.0 的测试失败

  • 使用 1.x 中的 is_valid_field 用于 mypy 插件,由 @DanielNoord 在 #8738 中提出

  • 更好地支持 mypy 严格相等标志,由 @dmontagu 在 #8799 中实现

  • 带有注释类型的 model_json_schema 导出缺少“required”参数,由 @LouisGobert 在 #8793 中提出

  • 由@sydney-runkle 在 #8801 中修复 FieldInfo.__repr_args__ 中的默认包含项

  • 通过 @matsjoyce-refeyn 在 #8751 中修复不在子类模块命名空间中的数据类基类中的前向引用的分辨率

  • 由 @devmonkey22 在 #7680 中修复 BaseModel 类型注释,使其可由 typing.get_type_hints 解析

  • 修复:通过@sydney-runkle 在 #8810 中允许带有 AliasGenerator 的空字符串别名

  • 修复测试以及 date -> datetime 时区假设的修复,由 @sydney-runkle 在 #8823 中完成

  • 在 #8837 中,由 @Viicos 解决了使用 ast.Str 时的弃用警告

  • 由 @Viicos 在 #8877 中添加缺失的 deprecated 修饰符

  • 在 #8860 中,如果名称包含电子邮件地址,由 @NeevCohen 修复 NameEmail 的序列化

  • 在 #8917 中,由 @Czaki 在模式生成的错误消息中添加有关类的信息

  • 通过 @adriangb 在 #8923 中使 TypeAdapter 的输入与特殊形式兼容

  • 修复由 @dmontagu 在 #8920 中针对 enum 的引用模式中配置行为被固化的问题

  • 更多关于@sydney-runkle 在 #8928 中错误使用 model_json_schema 的有用错误信息

  • 由 @sydney-runkle 在 #8932 中修复嵌套的可区分联合模式生成,第 2 部分

  • 通过@sydney-runkle 在 #8950 中修复具有判别式的嵌套数据类/类型化字典的模式构建

  • 由 @sydney-runkle 在 #8951 中为具有可区分联合的定义模式生成删除不必要的逻辑

  • 在 #9008 中,由 @dmontagu 修复 mypy 插件中可选内容的处理

  • 通过@sydney-runkle 在 #9031 中修复带有标准类型构造函数的 PlainSerializer 用法

  • 在 #9039 中,由 @dmontagu 为插件中的配置移除不必要的警告

  • 通过 @NeevCohen 在 #9066 中修复默认值序列化

  • Model.__getattr__() 中由 @NeevCohen 在 #9082 修复额外字段检查

  • 通过 @alexmojaki 在 #9097 中修复从父类继承的 ClassVar 前向引用

  • 像验证器一样通过 @andresliszt 在 #8977 中以严格的 True 修复序列

  • 通过 @chan-vince 在 #9105 中改进当字段名称遮蔽父模型中的字段时的警告消息

  • 如果在子类中未由 @chan-vince 在 #9111 中重新定义被遮蔽的字段,则不发出警告

  • 由 @sydney-runkle 在 #9124 中修复未替换类型变量的判别联合错误

  • 支持在由 @sydney-runkle 在 #9128 中传递给 Sequence[blah blah blah] 时对 deque 进行序列化

  • model_post_init 中从父类型初始化私有属性,由 @Viicos 在 #9134 中完成

  • 由 @ornariece 在 #9144 中用 validation_alias 修复 model_construct

  • 确保由 @bruno-f-cruz 在 #9135 中实现的 json-schema 生成器能够处理 Literal null 类型

  • 在 v2.7.0 中修复:由 @dmontagu 在 #9193 中修复允许额外通用项

New Contributors

  • @hungtsetse 在 #8546 中做出了他们的首次贡献

  • @StrawHatDrag0n 在 #8583 中做出了他们的首次贡献

  • @anci3ntr0ck 在 #8642 中做出了他们的首次贡献

  • @Holi0317 在 #8650 中做出了他们的首次贡献

  • @bluenote10 在 #8651 中做出了他们的首次贡献

  • @ADSteele916 在 #8703 中做出了他们的首次贡献

  • @musicinmybrain 在 #8731 中做出了他们的首次贡献

  • @jks15satoshi 在 #8706 中做出了他们的首次贡献

  • @13sin 在 #8734 中做出了他们的首次贡献

  • @DanielNoord 在 #8738 中做出了他们的首次贡献

  • @conradogarciaberrotaran 在 #8519 中做出了他们的首次贡献

  • @chris-griffin 在 #8775 中做出了他们的首次贡献

  • @LouisGobert 在 #8793 中做出了他们的首次贡献

  • @matsjoyce-refeyn 在 #8751 中做出了他们的首次贡献

  • @devmonkey22 在 #7680 中做出了他们的首次贡献

  • @adamency 在 #8847 中做出了他们的首次贡献

  • @MamfTheKramf 在 #8851 中做出了他们的首次贡献

  • @ornariece 在 #9001 中做出了他们的首次贡献

  • @alexeyt101 在 #9004 中做出了他们的首次贡献

  • @wannieman98 在 #8947 中做出了他们的首次贡献

  • @solidguy7 在 #9062 中做出了他们的首次贡献

  • @kloczek 在 #9047 中做出了他们的首次贡献

  • @jag-k 在 #9053 中做出了他们的首次贡献

  • @priya-gitTest 在 #9088 中做出了他们的首次贡献

  • @Youssefares 在 #9023 中做出了他们的首次贡献

  • @chan-vince 在 #9105 中做出了他们的首次贡献

  • @bruno-f-cruz 在 #9135 中做出了他们的首次贡献

  • @Lance-Drane 在 #9166 中做出了他们的首次贡献

v2.7.0b1 (2024-04-03)

预发布,详情见 GitHub 发布。

v2.6.4 (2024-03-12)

GitHub release

有什么变化

Fixes

  • 在 #8806 中,由 @sydney-runkle 修复了使用 AliasGeneratorcomputed_field 装饰器的问题

  • 由 @sydney-runkle 在 #8932 中修复嵌套的可区分联合模式生成,第 2 部分

  • 修复由 @dmontagu 在 #8826 中因 API 延迟导致的 no_strict_optional=True 的错误

v2.6.3 (2024-02-27)

GitHub release

有什么变化

Packaging

  • 在文档中更新 pydantic-settings 版本,由 @hramezani 在 #8906 中完成

Fixes

  • 通过@sydney-runkle 在 #8904 中修复了判别联合模式生成错误

v2.6.2 (2024-02-23)

GitHub release

有什么变化

Packaging

  • 通过@sydney-runkle 在 #8879 中升级到 pydantic-core 2.16.3

Fixes

  • “YYYY-MM-DD”日期字符串强制转换为 datetime 时不应由 @sydney-runkle 在 pydantic/pydantic-core#1193 中推断时区

v2.6.1 (2024-02-05)

GitHub release

有什么变化

Packaging

  • 通过@sydney-runkle 在 #8717 中将版本升级到 pydantic-core 2.16.2

Fixes

  • 由 @dmontagu 在 #8666 中修复 mypy 插件和 no_strict_optional = True 的错误

  • 修复 ByteSize 错误 type 由 @sydney-runkle 在 #8681 中更改

  • 由@sydney-runkle 在 #8679 中修复数据类中继承的 Field 注释

  • 由 @dmontagu 在 #8702 中修复了间接定义引用的核心模式生成中的回归问题

  • 通过@sydney-runkle 在 #8710 中修复了 PlainValidator 不支持的类型错误

  • 回滚 2.6 版本中有问题的修复,由 @sydney-runkle 在 #8718 中修复模式构建错误

  • 在 pydantic/pydantic-core#1174 中,由 @davidhewitt 修复 Union 中大小错误的元组的警告

  • Fix computed_field JSON serializer exclude_none behavior by @sydney-runkle in pydantic/pydantic-core#1187

v2.6.0 (2024-01-23)

GitHub release

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

有什么变化

Packaging

  • 检查 email-validator 版本 >= 2.0 (由 @commonism 在 #6033 中)

  • 在 #8341 中,由 @Elkiwa 将 ruff 的目标版本升级到 Python 3.8

  • 由 @yezz123 在 #8478 中更新至 pydantic-extra-types==2.4.1

  • 由 @Viicos 在 #8453 中更新至 pyright==1.1.345

  • 将 pydantic-core 从 2.14.6 更新到 2.16.1,这些更新带来的重大变化如下所述,完整的更新日志在此

新功能

  • 由 @ekeew 在 #6874 中添加 NatsDsn

  • 由 @davidhewitt 在 #8159 中添加 ConfigDict.ser_json_inf_nan

  • 由 @adriangb 在 #8222 中添加 types.OnErrorOmit

  • 支持 AliasGenerator 在 #8282 中的 @sydney-runkle 使用

  • 在 #8345 中,由 @sydney-runkle 将 Pydantic 人员页面添加到文档

  • 支持 yyyy-MM-DD 日期时间解析,由 @sydney-runkle 在 #8404 中完成

  • 在 #8507 中,由 @luca-matei 向 ByteSize 类 #8415 添加了位转换

  • 通过 @geospackle 在 #8537 中使用类型 ByteSize 启用 JSON 模式创建

  • 在 #8209 中,由 @alexmojaki 添加 eval_type_backport 以处理较旧 Python 中的联合运算符和内置泛型下标

  • 在 #8552 中由 @dmontagu 为 dataclass 字段 init 添加支持

  • 在 pydantic/pydantic-core#1119 中,由 @davidhewitt 为 ValidationError 实现腌制

  • 通过 @dmontagu 在 pydantic/pydantic-core#865 中添加能够通过 PEP-646 处理“可变参数”元组的统一元组验证器

Changes

  • 在 #7188 中,由 @hramezani 放弃对 Python3.7 的支持

  • 在 pydantic/pydantic-core#1129 中,由 @davidhewitt 放弃 Python 3.7 以及 PyPy 3.7 和 3.8

  • BaseModel 构造函数中使用仅位置的 self ,因此任何字段名都不会与之冲突,由 @ariebovenberg 在 #8072 中提出

  • @validate_call 返回一个函数而不是自定义描述符 - 修复了与继承相关的绑定问题,并由 @alexmojaki 在 #8268 中为验证错误添加了 self/cls 参数

  • 在 #8352 中,由 @sydney-runkle 从 JSON 模式描述中排除 BaseModel 文档字符串

  • 由 @Jocelyn-Gas 在 #8437 中为 model_computed_fields 引入 classproperty 装饰器

  • 如果字段名称与类型冲突,由 @Viicos 在 #8243 中明确引发错误

  • 通过 @alexdrydew 在 pydantic/pydantic-core#1132 中为简单类型的联合使用更严格的序列化器

Performance

  • 由 @lambertsbennett 在 #8054 中添加 Codspeed 分析 Actions 工作流

  • 通过 @samuelcolvin 在 pydantic/pydantic-core#1155 中改进 int 提取

  • 通过 @samuelcolvin 在 pydantic/pydantic-core#1156 中改进递归保护的性能

  • dataclass 由 @samuelcolvin 在 pydantic/pydantic-core#1162 中实现的序列化加速

  • LazyIndexMaps 中查找小型 JSON 对象时避免 HashMap 创建,由 @samuelcolvin 在 pydantic/jiter#55 中提出

  • 使用 hashbrown 加速 Python 字符串缓存,由 @davidhewitt 在 pydantic/jiter#51 中提出

  • 在 pydantic/jiter#48 中,由 @davidhewitt 将 Peak 替换为更高效的 Peek

Fixes

  • 在 #7183 中,由 @tlambert03 将 getattr 警告移至已弃用的 BaseConfig

  • 仅哈希 model_fields ,而非整个 __dict__ ,由 @alexmojaki 在 #7786 中提出

  • mypy 插件中由 @dmontagu 在 #7411 中修复冻结类型时对联合的错误处理

  • 在 #8138 中由 @vincent-hachin-wmx 修复未类型化的 ClassVar 上的 mypy 错误

  • 在 #7825 中,@QuentinSoubeyranAqemia 仅在 BaseModel.__eq__ 中比较 pydantic 字段,而不是整个 __dict__

  • model_validate 方法中更新 strict 文档字符串。由 @LukeTonin 在 #8223 中完成

  • 由 @Viicos 在 #8227 中修复 computed_field 的过载位置

  • 在 #8066 中,由 @ianhfc 修复了多个属性中使用的自定义类型类型转换

  • 修复由 @jusexton 在 #8249 中提出的不允许将 validate_call 装饰器动态分配给类方法的问题

  • 通过 @ibleedicare 在 #8262 中修复 unittest.mock 弃用警告的问题

  • 由 @jusexton 在 #8286 中为 JsonValue 包含子类化基本值的情况添加了测试

  • 在验证器(类方法)之前修复 mypy 错误(由 @sydney-runkle 在 #8285 中)

  • 由 @jevins09 在 #8316 中修复 to_snake 转换

  • 在 #8305 中由 @slanzmich 修复 ModelMetaclass.__prepare__ 的类型注释

  • 在初始化 TypeAdapter 时,如果带注释的类型已经有配置,则不允许 config 规范,由 @sydney-runkle 在 #8365 中提出

  • 通过 @dmontagu 在 #8389 中修复了由递归类型别名参数化的泛型的 JSON 模式的命名问题

  • 在 #8402 中,由 @shenxiangzhuang 修复 pydantic people 脚本中的类型注释

  • 在 #8387 中,由 @NeevCohen 为 dataclass 签名中的字段 alias 添加支持

  • 由 @dmontagu 在 #8494 中修复带有 Field(...) 的前向引用中的模式生成错误

  • 在 #8500 中,由 @sydney-runkle 通过 model_construct 调用修复 __dict__ 中键的顺序

  • 当全局变量不包含 __name__ 时修复 path_type 模块的创建,由 @hramezani 在 #8470 中完成

  • 由 @sydney-runkle 在 #8513 中修复了带有 from __future__ import annotations 的数据类的命名空间问题

  • 修复:由 @pmmmwh 在 #8479 中将函数验证器类型设为仅位置参数

  • 由 @Viicos 在 #8294 中修复 @deprecated 的使用

  • 在 #8525 中,由 @sydney-runkle 为 model_construct 调用添加对私有属性的更多支持

  • 在 #8378 中,由 @dmontagu 为 types 命名空间使用一个栈

  • 通过 @dmontagu 在 #8526 中修复带有 TypeAliasType 的引用类型的模式构建错误

  • 在 #8511 中,由 @tigeryy2 支持数据类中的 pydantic.Field(repr=False)

  • 在 #8163 中,由 @Viicos 为 RootModel 覆盖 dataclass_transform 的行为

  • 由 @sydney-runkle 在 #8572 中为简化而重构签名生成

  • 通过 @Anvil 在 #8567 中修复 PlainValidator 注解的排序错误

  • 在 pydantic/pydantic-core#1098 中,由 @sydney-runkle 修复 exclude_none 对于 computed_field 的 JSON 序列化问题

  • @sydney-runkle 在 pydantic/pydantic-core#1124 中支持用于日期时间的 yyyy-MM-DD 字符串

  • 由 @StrawHatDrag0n 在 #8583 中调整生成模式中定义的顺序

New Contributors

pydantic

  • @ekeew 在 #6874 中做出了他们的首次贡献

  • @lambertsbennett 在 #8054 中做出了他们的首次贡献

  • @vincent-hachin-wmx 在 #8138 中做出了他们的首次贡献

  • @QuentinSoubeyran Aqemia 在 #7825 中做出了他们的首次贡献

  • @ariebovenberg 在 #8072 中做出了他们的首次贡献

  • @LukeTonin 在 #8223 中做出了他们的首次贡献

  • @denisart 在 #8231 中做出了他们的首次贡献

  • @ianhfc 在 #8066 中做出了他们的首次贡献

  • @eonu 在 #8255 中做出了他们的首次贡献

  • @amandahla 在 #8263 中做出了他们的首次贡献

  • @ibleedicare 在 #8262 中做出了他们的首次贡献

  • @jevins09 在 #8316 中做出了他们的首次贡献

  • @cuu508 在 #8322 中做出了他们的首次贡献

  • @slanzmich 在 #8305 中做出了他们的首次贡献

  • @jensenbox 在 #8331 中做出了他们的首次贡献

  • @szepeviktor 在 #8356 中做出了他们的首次贡献

  • @Elkiwa 在 #8341 中做出了他们的首次贡献

  • @parhamfh 在 #8395 中做出了他们的首次贡献

  • @shenxiangzhuang 在 #8402 中做出了他们的首次贡献

  • @NeevCohen 在 #8387 中做出了他们的首次贡献

  • @zby 在 #8497 中做出了他们的首次贡献

  • @patelnets 在 #8491 中做出了他们的首次贡献

  • @edwardwli 在 #8503 中做出了他们的首次贡献

  • @luca-matei 在 #8507 中做出了他们的首次贡献

  • @Jocelyn-Gas 在 #8437 中做出了他们的首次贡献

  • @bL34cHig0 在 #8501 中做出了他们的首次贡献

  • @tigeryy2 在 #8511 中做出了他们的首次贡献

  • @geospackle 在 #8537 中做出了他们的首次贡献

  • @Anvil 在 #8567 中做出了他们的首次贡献

  • @hungtsetse 在 #8546 中做出了他们的首次贡献

  • @StrawHatDrag0n 在 #8583 中做出了他们的首次贡献

pydantic-core

  • @mariuswinger 在 pydantic/pydantic-core#1087 中做出了他们的首次贡献

  • @adamchainz 在 pydantic/pydantic-core#1090 中做出了他们的首次贡献

  • @akx 在 pydantic/pydantic-core#1123 中做出了他们的首次贡献

v2.6.0b1 (2024-01-19)

预发布,详情见 GitHub 发布。

v2.5.3 (2023-12-22)

GitHub release

有什么变化

Packaging

  • uprev pydantic-core to 2.14.6

Fixes

  • 通过 @davidhewitt 在 pydantic/pydantic-core#1125 中修复具有递归定义导致引用循环的内存泄漏

v2.5.2 (2023-11-22)

GitHub release

有什么变化

Packaging

  • uprev pydantic-core to 2.14.5

新功能

  • 由 @davidhewitt 在 #8159 中添加 ConfigDict.ser_json_inf_nan

Fixes

  • 在 pydantic/pydantic-core#1075 中,由@sydney-runkle 修复了将 JSON 键中的 Literal 用作 dict 键时的验证问题

  • 由 @sydney-runkle 在 pydantic/pydantic-core#1076 中修复 custom_initUnion 成员的错误

  • 由@sydney-runkle 在 #8190 中修复 JsonValue bool 序列化

  • 在 pydantic/pydantic-core#1089 中,由 @sydney-runkle 修复了带有 Literal 的不可哈希输入在 Union 中的处理问题

v2.5.1 (2023-11-15)

GitHub release

有什么变化

Packaging

  • 在 #8120 中,由 @samuelcolvin 将 pydantic-core 升级到 2.14.3

Fixes

  • 通过 @dmontagu 在 #8097 中修复包描述限制

  • 在创建具有由@sydney-runkle 在 #8110 中添加的@validate_call 包装字段注释的模型时修复 ValidateCallWrapper 错误

v2.5.0 (2023-11-13)

GitHub release

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

有什么变化

Packaging

  • 将 pydantic-core 从 2.10.1 更新到 2.14.1,这些更新带来的重大变化如下所述,完整的更改日志在此处

  • 由 @Viicos 在 #8075 中更新至 pyright==1.1.335

新功能

  • 允许插件通过 @adriangb 在 #7806 中捕获非 ValidationError 错误

  • 在 #7863 中,由 @chris-spann 支持 create_model() 中的 __doc__ 参数

  • 暴露 regex_engine 标志 - 意味着您可以在 @utkini 在 #7768 中的约束中使用 Rust 或 Python 正则表达式库

  • 在 #7889 中,由 @alexmojaki 从 ComputedFieldInfo 中的类型注解生成的返回类型进行保存

  • 在 #7930 中采用 @Luca-Blight 的 ruff 格式化程序

  • 由 @zakstucke 在 #7626 中向配置添加了 validation_error_cause

  • 在插件中通过 @hramezani 在 #7861 中使要验证的项目路径可用

  • 由 @dmontagu 在 #7983 中添加 CallableDiscriminatorTag

    • CallableDiscriminator 被 @dmontagu 在 #8047 中重命名为 Discriminator

  • 让联合案例标签通过 @dmontagu 在 #8001 中影响联合错误消息

  • 由 @alexmojaki 在 #8013 中将 examplesjson_schema_extra 添加到 @computed_field

  • 由 @dmontagu 在 #7998 中添加 JsonValue 类型

  • 允许 str 作为参数传递给 Discriminator ,由 @dmontagu 在 #8047 中提出

  • 在 pydantic/pydantic-core#1006 中,由 @edoakes 添加 SchemaSerializer.__reduce__ 方法以实现 pickle 序列化

Changes

  • 重大变更:用新的智能联合实现替换 ultra_strict ,验证联合的方式已发生重大变化,以提高性能和正确性,我们努力将行为发生变化的情况数量降至绝对最低,详情见 PR - 由 @davidhewitt 在 pydantic/pydantic-core#867 中提出

  • 在 #7683 中,当 extra='allow' 时,由 @sydney-runkle 添加对实例方法重新分配的支持

  • 支持由 @sydney-runkle 在 #7927 中为无案例的 Enum 类型生成 JSON 模式

  • 如果一个类在 BaseModel 之前从 Generic 继承,则由 @alexmojaki 在 #7891 中发出警告

Performance

  • 新的自定义 JSON 解析器, jiter 由 @samuelcolvin 在 pydantic/pydantic-core#974 中提出

  • 由 @samuelcolvin 在 pydantic/pydantic-core#1063 中为 MacOS M1 构建的 PGO

  • 对所有包导入使用 __getattr__ ,由 @samuelcolvin 在 #7947 中改进导入时间

Fixes

  • 由@sydney-runkle 在 #7677 中修复 mypyRootModel 子类的问题

  • 当 @dmontagu 在 #7698 中评估前向引用时,正确重建 FieldInfo

  • 修复了从 JSON 加载 SecretStr 的失败(v2.4 中的回归),由 @sydney-runkle 在 #7729 中完成

  • 在 #7736 中,由 @sydney-runkle 修复 defer_buildTypeAdapter 的行为

  • 通过 @dmontagu 在 #7742 中提高与旧版 mypy 版本的兼容性

  • 修复:当默认值未由@pmmmwh 在 #7719 中设置时,更新 TypeVar 处理

  • 在 #7761 中,由 @sydney-runkle 支持对 Enum 类型字段的 strict 规范

  • weakref.ref 进行包装而不是通过子类化来修复 cloudpickle 序列化,由 @edoakes 在 #7780 中完成

  • 在子类中保留 model_post_init 内设置的私有属性值,由 @alexmojaki 在 #7775 中提出

  • 由 @alexmojaki 在 #7803 中为不可调用的 json_schema_extra 添加更具体的类型

  • 当由 @alexmojaki 在 #7800 中删除冻结(模型)字段时引发错误

  • 通过@sydney-runkle 在 #7817 中修复具有默认值的模式排序错误

  • 对于 @alexmojaki 在 #7802 中未另行指定的别名,使用生成的别名

  • 支持 strict 规范用于 UUID 类型,由 @sydney-runkle 在 #7865 中

  • JSON 模式:由 @me-and 在 #7810 中修复额外参数处理

  • 修复:由 @PrettyWood 在 #7827 中支持具有继承数据类的 pydantic.Field(kw_only=True)

  • 支持由 @sydney-runkle 在 #7883 中为带有 __slots__ 的类中的方法添加 validate_call 装饰器

  • 通过 @hramezani 在 #7898 中修复带有 dataclasses.field 默认值的 pydantic 数据类问题

  • 由 @sydney-runkle 在 #7899 中修复具有联合类型边界的泛型的模式生成

  • 由 @sydney-runkle 在 #7904 中为 importlib_metadata 在 Python 3.7 上修复版本

  • 支持 PydanticRecursiveRef 中的 | 运算符(并集),由 @alexmojaki 在 #7892 中提出

  • 在 Python 3.12 中由 @dmontagu 在 #7929 中修复 display_as_typeTypeAliasType

  • 由@sydney-runkle 在 #7932 中为 TypedDict 添加对 NotRequired 泛型的支持

  • 让通用的 TypeAliasType 规范通过 @alexdrydew 在 #7893 中生成不同的模式定义

  • 由 @howsunjow 在 #7925 中为继承的数据类的签名添加了修复

  • 通过 @joakimnordling 在 #7881 中使 JSON 模式中的模型名称生成更健壮

  • 通过 @Iipin 在 #7972 中修复验证错误消息(在测试中)的复数形式

  • PrivateAttr 由 @tabassco 从 Annotated 默认位置传递到 #8004

  • 在 #8012 中由 @alexmojaki 显示 SecretBytes 时,不要对字节(可能不是 UTF8)进行解码

  • 在 #7979 中,由 @Mr-Pepe 使用 classmethod 代替 classmethod[Any, Any, Any]

  • @samuelcolvin 在 #8023 中关于无效插件的更清晰错误

  • 由 @samuelcolvin 在 #8027 中修正 pydantic 数据类的导入

  • 由 @dmontagu 在 #8050 中修复引用重新定义的类型别名的模型的不当行为

  • 在 pydantic/pydantic-core#1002 中,由 @sydney-runkle 仅对 Optional 字段进行一次字段验证来修复该字段

  • 在 pydantic/pydantic-core#1014 中,由 @sydney-runkle 修复带有 Dict 键的 definition-ref 错误

  • 修复由@sydney-runkle 在 pydantic/pydantic-core#1017 中允许使用 coerce_numbers_to_str=True 验证 bool 类型的错误

  • 在 pydantic/pydantic-core#1037 中,@davidhewitt 提出不要在浮点数和小数约束中接受 NaN

  • 在 pydantic/pydantic-core#1015 中,由 @michaelhly 为不从 str/int 继承的枚举值添加 lax_strlax_int 支持

  • 在 pydantic/pydantic-core#1039 中,由 @sydney-runkle 支持 UnionList 类型列表中的子类

  • 如果规范化或非规范化输入有效,则允许针对 max_digitsdecimals 的验证通过,由 @sydney-runkle 在 pydantic/pydantic-core#1049 中提出

  • 修复:@Iipin 在 pydantic/pydantic-core#1050 中对 ValidationError 消息的正确复数形式处理

  • 禁止 @davidhewitt 在 pydantic/speedate#52 和 pydantic/pydantic-core#1060 中输入的字符串 '-'datetime

  • 修复:由 @davidhewitt 在 pydantic/pydantic-core#1062 中解决的 NaN 和 Inf 浮点数序列化问题

  • 通过 @davidhewitt 在 pydantic/pydantic-core#1068 中恢复许多与 manylinux 兼容的 PGO 构建

New Contributors

pydantic

  • @schneebuzz 在 #7699 中做出了他们的首次贡献

  • @edoakes 在 #7780 中做出了他们的首次贡献

  • @alexmojaki 在 #7775 中做出了他们的首次贡献

  • @NickG123 在 #7751 中做出了他们的首次贡献

  • @gowthamgts 在 #7830 中做出了他们的首次贡献

  • @jamesbraza 在 #7848 中做出了他们的首次贡献

  • @laundmo 在 #7850 中做出了他们的首次贡献

  • @rahmatnazali 在 #7870 中做出了他们的首次贡献

  • @waterfountain1996 在 #7878 中做出了他们的首次贡献

  • @chris-spann 在 #7863 中做出了他们的首次贡献

  • @me-and 在 #7810 中做出了他们的首次贡献

  • @utkini 在 #7768 中做出了他们的首次贡献

  • @bn-l 在 #7744 中做出了他们的首次贡献

  • @alexdrydew 在 #7893 中做出了他们的首次贡献

  • @Luca-Blight 在 #7930 中做出了他们的首次贡献

  • @howsunjow 在 #7925 中做出了他们的首次贡献

  • @joakimnordling 在 #7881 中做出了他们的首次贡献

  • @icfly2 在 #7976 中做出了他们的首次贡献

  • @Yummy-Yums 在 #8003 中做出了他们的首次贡献

  • @Iipin 在 #7972 中做出了他们的首次贡献

  • @tabassco 在 #8004 中做出了他们的首次贡献

  • @Mr-Pepe 在 #7979 中做出了他们的首次贡献

  • @0x00cl 在 #8010 中做出了他们的首次贡献

  • @barraponto 在 #8032 中做出了他们的首次贡献

pydantic-core

  • @sisp 在 pydantic/pydantic-core#995 中做出了他们的首次贡献

  • @michaelhly 在 pydantic/pydantic-core#1015 中做出了他们的首次贡献

v2.5.0b1 (2023-11-09)

预发布,详情见 GitHub 发布。

v2.4.2 (2023-09-27)

GitHub release

有什么变化

Fixes

  • @dmontagu 在 #7647 中修复了判别联合序列的 JSON 模式的错误

  • 在 #7646 中由 @adriangb 修复有区别的联合中的模式引用

  • 由 @adriangb 在 #7653 中修复递归模型的 JSON 模式生成

  • 由 @adriangb 在 #7654 中为通用模型修复 models_json_schema

  • 通过 @adriangb 在 #7658 中修复通用模型签名的失败测试

New Contributors

  • @austinorr 在 #7657 中做出了他们的首次贡献

  • @peterHoburg 在 #7670 中做出了他们的首次贡献

v2.4.1 (2023-09-26)

GitHub release

有什么变化

Packaging

  • 在 #7633 中,由 @davidhewitt 将 pydantic-core 更新至 2.10.1

Fixes

  • 在 #7606 中,由 @adriangb 将未替换的类型变量序列化为 Any

  • 通过 @adriangb 在 #7624 中删除模式构建缓存

  • 修复了一个由 @dmontagu 在 #7625 中提出的 JSON 模式额外内容未进行 JSON 编码的问题

v2.4.0 (2023-09-22)

GitHub release

有什么变化

Packaging

  • 通过 @samuelcolvin 在 #7542 中将 pydantic-core 更新至 2.10.0

新功能

  • 由 @dmontagu 在 #7286 中添加 Base64Url 类型

  • 由 @lig 在 #7508 中实现从 numberstr 的可选强制转换

  • 如果有数据和字段名称,允许在所有验证器中访问 field_namedata ,由 @samuelcolvin 在 #7542 中提出

  • 由 @hramezani 在 #7552 中添加 BaseModel.model_validate_stringsTypeAdapter.validate_strings

  • 在 #6820 中,由 @lig、@samuelcolvin 和 @Kludex 添加 Pydantic plugins 实验性实现

Changes

  • 不要在子类中用私有属性覆盖 model_post_init ,由 @Viicos 在 #7302 中提出

  • 在 #7275 中,@dmontagu 使具有默认值的字段在序列化模式中默认不被要求

  • 马克 Extra 被 @disrupted 在 #7299 中标记为已弃用

  • 通过 @Kludex 在 #7396 中将 EncodedStr 设为数据类

  • 由 @samuelcolvin 在 #7569 中将 annotated_handlers 设为公开

Performance

  • 由 @adriangb 在 #7523 中简化 CoreSchema 的展平和内联

  • 在 #7528 中删除 @adriangb 走过时未使用的副本 CoreSchema

  • 在 #7527 中,由 @adriangb 为从 CoreSchema 收集定义和无效模式添加缓存

  • 急切地解决有区别的联合类型,并缓存我们无法处理的情况,由 @adriangb 在 #7529 中完成

  • 在 #7536 中,由 @adriangb 构建热路径时,将 dict.getdict.setdefault 替换为更详细的版本 CoreSchema

  • 缓存无效 CoreSchema 由 @adriangb 在 #7535 中发现

  • 通过 @adriangb 在 #7565 中允许禁用 CoreSchema 验证以加快启动时间

Fixes

  • 通过 @dmontagu 在 #7272 中修复来自父类的 TypedDict 的配置检测

  • 通过 @dmontagu 在 #7274 中修复具有异常 MRO 的冻结模型的哈希函数生成

  • 在 #7281 中,由 @hramezani 使 strict 配置在路径字段中可覆盖

  • GenerateJsonSchema 中默认使用 ser_json_<timedelta|bytes> ,由 @Kludex 在 #7269 中

  • 在 #7319 中,由 @andree0 添加了一项检查,以验证别名是否为 Python 的标识符

  • 当计算字段在 #7346 中覆盖由 @sydney-runkle 定义的字段时引发错误

  • 通过 @adriangb 在 #7381 中修复对引用模式应用 SkipValidation

  • 在 #7265 中,由 @lig 强制执行具有双前导下划线的私有属性的行为

  • 在 #7415 中由 @hramezani 标准化 __get_pydantic_core_schema__ 签名

  • 修复通用数据类字段变异错误(当使用 TypeAdapter 时),由 @sydney-runkle 在 #7435 中完成

  • wrap 模式下由 @pmmmwh 在 #7496 中修复 TypeError 上的 model_validator

  • 通过 @hramezani 在 #7506 中改进枚举错误消息

  • 在 #7439 中,当 @dmontagu 处理 ValidationError 时,使 repr 对初始化失败的实例起作用

  • 通过 @prodigysml 在 #7360 中限制空格修复了正则表达式拒绝服务问题

  • 修复 @lig 在 #7566 中对具有 UUID.version=NoneUUID 值的处理

  • 修复 __iter__ 返回私有 cached_property 信息,由 @sydney-runkle 在 #7570 中完成

  • 由 @samuelcolvin 在 #7594 中对版本信息消息的改进

New Contributors

  • @15498 号在 #7238 中做出了他们的首次贡献

  • @GabrielCappelli 在 #7213 中做出了他们的首次贡献

  • @tobni 在 #7184 中做出了他们的首次贡献

  • @redruin1 在 #7282 中做出了他们的首次贡献

  • @FacerAin 在 #7288 中做出了他们的首次贡献

  • @acdha 在 #7297 中做出了他们的首次贡献

  • @andree0 在 #7319 中做出了他们的首次贡献

  • @gordonhart 在 #7375 中做出了他们的首次贡献

  • @pmmmwh 在 #7496 中做出了他们的首次贡献

  • @disrupted 在 #7299 中做出了他们的首次贡献

  • @prodigysml 在 #7360 中做出了他们的首次贡献

v2.3.0 (2023-08-23)

GitHub release

  • 🔥 由 @lig 在 #7168 中从存储库中删除孤立的更改文件

  • 在文档中添加复制按钮,由 @Kludex 在 #7190 中完成

  • 由 @Kludex 在 #7189 中修复关于 JSON 类型的文档

  • 在 CI 中由 @hramezani 在 #7191 将 mypy 1.5.0 更新到 1.5.1

  • 由 @samuelcolvin 在 #7200 中修复下载链接徽章

  • 由 @samuelcolvin 在 #7212 中将 2.2.1 添加到更改日志

  • 通过 @dmontagu 在 #7154 中使 ModelWrapValidator 协议通用化

  • 由 @samuelcolvin 在 #7214 中更正 Field(..., exclude: bool) 文档

  • 在 #7193 中,通过 @adriangb 将阴影属性设为警告而不是错误

  • 由 @Kludex 在 #7192 中编写的文档 Base64StrBase64Bytes

  • 首先由 @samuelcolvin 在 #7024 中修复 config.defer_build 的序列化案例

  • 在 #7210 中由 @samuelcolvin 清理 JSON 模式中的模型文档字符串

  • 修复 #7228(拼写错误):将 validators.md 中的文档更正为 validate_default 参数,由 @lmmx 在 #7229 中完成

  • ✅ 由 @lig 在 #7019 中为 TzInfopydantic-core 实现 tzinfo.fromutc 方法

  • 由 @hramezani 在 #7197 中对 __get_validators__ 的支持

v2.2.1 (2023-08-18)

GitHub release

  • 针对根模型进行 xfail 测试额外停止 xfail ,由 @dmontagu 在 #6937 中完成

  • 通过 @mciucu 在 #7160 中对相同对象的第二次访问停止来优化递归检测

  • fix link in docs by @tlambert03 in #7166
  • 在 pydantic/pydantic-core#900 中,由 @adriangb 将 MiMalloc 替换为默认分配器

  • 在 #7176 中,由 @adriangb 将 pydantic-core 升级到 2.6.1 并准备 2.2.1 版本的发布

v2.2.0 (2023-08-17)

GitHub release

  • 在文档网站上,由 @nomadmtb 在 #6869 中将“pipx install”安装命令拆分为两个命令

  • 在 #6852 中由 @hramezani 弃用 Field.include

  • 通过 @hramezani 在 #6880 中修复默认工厂错误消息中的拼写错误

  • 简化打字处理。在 GenerateSchema 中由 @dmontagu 注释于 #6887

  • 在 CI 中重新启用 FastAPI 测试,由 @dmontagu 在 #6883 中完成

  • 通过 @dmontagu 在 #6566 中使与 json 模式 defrefs 的冲突更难发生

  • @samuelcolvin 在 #6903 中针对 Path 字段的无效输入的清理错误

  • :备忘录: 由 @yezz123 在 #6906 中支持坐标类型

  • 修复针对 Python 3.10.0 的 ForwardRef 包装器(在 bpo-45166 之前的垫片),由 @randomir 在 #6919 中完成

  • 修复由 @dmontagu 在 #6918 中与 RootModel 复制相关的不当行为

  • 修复由 @dmontagu 在 #6923 中提出的由 ParamSpec 导致的递归错误问题

  • 由 @Kludex 在 #6924 中向《迁移指南》添加有关受约束类的部分

  • 在 #6925 中,由 @Viicos 使用 main 分支处理徽章链接

  • 为 @carlbordum 在 #6926 中提出的 v1/v2 注释差异添加测试

  • 通过 @dmontagu 在 #6921 中使 v1 mypy 插件同时适用于 v1 和 v2

  • 修复了通用模型无法通过 @dmontagu 在 #6933 中使用 BaseModel 进行参数化的问题

  • 在 #6938 中,由 @dmontagu 移除带有别名的可区分联合的 xfail

  • 通过 @andresliszt 在 #6965 中向计算字段添加 field_serializer

  • 使用由 @JeanArhancet 在 #6952 中提出的带有 Type[Union[...]] 的 union_schema

  • 通过 @adriangb 在 #6981 中修复继承的 TypedDict 属性/配置

  • 在 #6998 中,由 @davidhewitt 修复了在验证器调用两次之前标注的数据类

  • 由 @hramezani 在 #7014 中取消选择的更新测试 - fastapi 测试

  • 在 #7015 中由 @hramezani 修复验证器文档格式

  • 在 #7032 中,由 @AdamVinch-Federated 修复 model_json_schema 的文档字符串中的错别字

  • 通过 @samuelcolvin 在 #7026 中使用 pyright 移除未使用的“类型忽略”

  • 在 #7030 中由 @adriangb 添加代表 FastAPI 启动时间的基准

  • 在 #7029 中由 @adriangb 修复了 Enum 子类的 json_encoders

  • 由 @Viicos 在 #7052 中更新关于 base64 编码的 ser_json_bytes 的文档字符串

  • 允许 @validate_call 通过 @adriangb 在 #7046 中处理异步方法

  • 修复:由 @JeanArhancet 在 #7002 中处理的与 SettingsSettingsConfigDict 相关的 mypy 错误

  • 由 @eumiro 在 #7063 中修复了一些拼写错误(重复的单词以及 it's/its)

  • 通过 @harunyasar 在 #7062 中修复文档字符串中的错别字

  • 文档:修复由 @swetjen 在 #6995 中提出的 pydantic-settings 包推荐中的损坏 URL

  • 在 #6951 中,由 @adriangb 处理应用于不接受它的模式的约束

  • 在 #7082 中,由 @eumiro 将 almost_equal_floats 替换为 math.isclose

  • 由 @davidhewitt 在 #7077 中将 pydantic-core 升级到 2.5.0

  • 添加 short_version 并由 @hramezani 在 #7115 中用于链接

  • 📝 由 @Kludex 在 #7113 中向 RootModel 添加使用链接

  • 在 #7116 中,由 @Kludex 回滚“修复 mongosrv DSN 的默认端口 (#6827)”

  • 在使用文档和迁移指南中阐明 validate_default 和 _Unset 的处理方式,由 @benbenbang 在 #6950 中完成

  • 在 #7086 中由 @Viicos 调整 Field.exclude 的文档

  • 在 #7103 中,@Viicos 表示不需要 validate_assignment 使用 Field.frozen

  • @samuelcolvin 在 #7040 中对 _core_utils 的调整

  • 通过 @hramezani 在 #7126 中使 DefaultDict 与集合一起工作

  • 不要总是要求输入。在 #7119 中,@dmontagu 将泛型作为部分参数化模型的基础

  • 在 #7020 中,由 @dmontagu 修复了 JSON 模式错误使用父类核心模式的问题

  • 由 @dmontagu 在 #6940 中修复与 TypedDict 和 alias_generator 相关的失败测试

  • 由 @dmontagu 在 #6939 中改进 NameEmail 的错误消息

  • 由 @dmontagu 在 #6988 中修复通用计算字段

  • 在 #7144 中,由 @dmontagu 在验证期间反映 namedtuple 的默认值

  • 更新依赖项,修复 pydantic-core 的使用,由 @dmontagu 在 #7150 中修复 CI 问题

  • 在 #7118 中由 @hramezani 添加 mypy 1.5.0

  • 在 #7056 中由 @adriangb 处理非 JSON 原生枚举值

  • 文档 round_trip 在 Json 类型文档中,由 @jc-louis 在 #7137 中提供

  • 放松签名检查,以更好地支持内置函数和 C 扩展函数作为验证器,由 @adriangb 在 #7101 中提出

  • 由 @davidhewitt 在 #7151 中添加 union_mode='left_to_right'

  • 包括由 @yvalencia91 在 #7124 中针对继承排序的错误消息提示

  • 在 #7153 中,@dmontagu 修复了一个文档链接,并解决了另外两个的一些警告

  • 在 #7136 中,由 @hramezani 将字段额外键名称包含在警告中

v2.1.1 (2023-07-25)

GitHub release

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

v2.1.0 (2023-07-25)

GitHub release

  • 添加 StringConstraints 以供 @adriangb 在 #6605 中用作带注释的元数据

  • 尝试由 @adriangb 在 #6683 中修复间歇性失败的 CI

  • 删除可选与默认的冗余示例。由 @ehiggs-deliverect 在 #6676 中

  • 文档由 @samuelcolvin 在 #6692 中更新

  • 在 #6679 中,由 @adriangb 移除验证器文档中的“始终验证”部分

  • 通过 @adriangb 在 #6720 中修复了 JSON 模式生成中的递归错误

  • 由 @AlexVndnblcke 在 #6730 中修复 secretstr 的子类错误检查

  • 由 @davidhewitt 在 #6714 中将 pdm / pdm 锁定文件更新至 2.8.0

  • 在更多 CI 工作中取消固定 PDM,由 @davidhewitt 在 #6755 中操作

  • 在文档中为辅助包改进源位置,由 @davidhewitt 在 #6749 中完成

  • 假设内置函数不接受 @adriangb 在 #6754 中的 info 参数

  • 修复了由 @hramezani 在 #6758 中提出的调用 help(BaseModelSubclass) 会引发错误的漏洞

  • 在 #6753 中由 @ljodal 修复 mypy 插件对 @model_validator(mode="after") 的处理

  • 由 @davidhewitt 在 #6756 中将 pydantic-core 更新至 2.3.1

  • 由 @hramezani 在 #6760 中为设置提供的 Mypy 插件

  • 使用 contentSchema 关键字用于 JSON 模式,由 @dmontagu 在 #6715 中提出

  • 由 @davidhewitt 在 #6769 中进行的有限小数的快速路径检查

  • 文档由 @samuelcolvin 在 #6771 中更新

  • 通过 @hramezani 在 #6772 中改进 json 模式文档

  • 由 @adriangb 在 #6695 中更新验证器文档

  • 通过 @dmontagu 在 #6788 中修复包装验证器的类型提示

  • 🐛 由 @lig 在 #6628 中修复了 Literal 与其他类型联合的验证警告

  • 在 #6685 中,由 @tpdorsey 为 V2 中的泛型支持更新文档

  • 在 #6785 中,由 @samuelcolvin 将 pydantic-core 构建信息添加到 version_info()

  • 在 #6796 中,由 @dmontagu 修复使用具有默认值的插槽的 pydantic 数据类

  • 由 @dmontagu 在 #6789 中修复冻结模型的哈希函数继承问题

  • ✨ 由 @Kludex 在 #6653 中添加 SkipJsonSchema 注释

  • 如果在 #6797 中使用了无效的字段名称与 Field 一起使用,则会出错,由 @dmontagu 提出

  • 由 @adriangb 在 #6776 中将 GenericModel 添加到 MOVED_IN_V2

  • 在 #6803 中,由 @hramezani 从 docs/usage/types/custom.md 中删除未使用的代码

  • 通过 @adriangb 在 #6810 中修复 float -> Decimal 强制转换精度损失

  • 在 #6816 中,由 @davidhewitt 从北极星基准中移除电子邮件验证

  • 通过 @progsmile 在 #6824 中修复与 mypy 的链接

  • 通过 @hramezani 在 #6822 中改进初始化钩子示例

  • 由 @dmontagu 在 #6827 中修复 mongosrv DSN 的默认端口

  • 改进 API 文档,特别是由 @samuelcolvin 在 #6780 中增加使用和 API 文档之间的更多链接

  • 由 @davidhewitt 在 #6831 中将 pydantic-core 更新至 2.4.0

  • 通过 @ImogenBits 在 #6809 中修复针对自定义序列类型的 annotated_types.MaxLen 验证器

  • 由 @hramezani 在 #6833 中更新 V1

  • 使可调用的 JSON 模式额外工作由 @dmontagu 在 #6798 中完成

  • 由 @dmontagu 在 #6829 中修复 InstanceOf 的序列化问题

  • 在 #6811 中由 @adriangb 重新添加对 json_encoders 的支持

  • 在 #6838 中由 @dmontagu 构建模式时更新字段注释

  • 使用 WeakValueDictionary 由 @dmontagu 在 #6681 中修复通用内存泄漏

  • 通过 @samuelcolvin 在 #6823 中添加 config.defer_build 以可选地使模型构建变得懒惰

  • 委托 UUID 序列化给 pydantic-core 由 @davidhewitt 在 #6850 中

  • 由 @adriangb 在 #6848 中更新 json_encoders 文档

  • 通过 @dmontagu 在 #6686 中使用 validate_call 修复 staticmethod / classmethod 订单的错误消息

  • 由 @samuelcolvin 在 #6847 中改进 Config 的文档

  • 更新序列化文档,提及 Field.exclude 在调用时优先于 include/exclude ,由 @hramezani 在 #6851 中完成

  • 允许通过在 #6737 中由 @adriangb 公开 GenerateSchema 来自定义核心模式生成

v2.0.3 (2023-07-05)

GitHub release

  • 在迁移文档中提及由 @slafs 在 #6456 中从 PyObject(v1)迁移到 ImportString(v2)

  • 通过 @Kludex 在 #6461 中修复发布推文的持续集成

  • 修改关于必填/可选/可为空字段的部分。由 @ybressler 在 #6468 中完成

  • 如果类型提示实际上不是一种类型,则发出警告,由 @adriangb 在 #6479 中提出

  • 在 #6484 中,由 @dmontagu 将 TransformSchema 替换为 GetPydanticSchema

  • 修复各种注释类型的不可哈希性,以便 @dmontagu 在 #6480 中用于缓存通用容器

  • PYD-164:由 @adriangb 在 #6490 中重新编写自定义类型文档

  • 由 @adriangb 在 #6507 中修复持续集成

  • 通过 @adriangb 在 #6511 中修复泛型中的前向引用

  • 通过 @dmontagu 在 #6515 中修复 core_schema.ChainSchema 的序列化 JSON 模式生成

  • 由 @hramezani 在 #6508 中记录 Pydantic V2 中 Field.alias 行为的变化

  • 在 #6519 中,由 @dmontagu 给出更好的错误消息,尝试计算具有未定义字段的模型的 JSON 模式

  • 文档 alias_priority 由 @tpdorsey 在 #6520 中

  • 由 @tpdorsey 在 #6513 中为类型文档添加重定向

  • 允许由 @samuelcolvin 在 #6551 中无需发布即可更新文档

  • 通过 @dmontagu 在 #6487 中确保文档测试始终在正确的文件夹中运行

  • 在 #6516 中,由 @dmontagu 推迟对序列化函数的返回类型提示的评估

  • 在 #6552 中,从 Ruff 中禁用 E501,并仅依赖 @adriangb 的 Black

  • 由 @tpdorsey 在 #6492 中更新 V2 的 JSON 模式文档

  • 添加由 @dmontagu 在 #6493 中处理循环引用的文档

  • 通过 @samuelcolvin 在 #6556 中消除更改文件的需求

  • 在 #6547 中由 @davidhewitt 添加“北极星”基准

  • 由 @tpdorsey 在 #6470 中更新数据类文档

  • ♻️ 在 v1 重定向中使用不同的错误消息,由 @Kludex 在 #6595 中提出

  • ⬆ 由 @lig 在 #6589 中将 pydantic-core 升级到 v2.2.0

  • 由 @dmontagu 在 #6572 中修复 IPvAny 的序列化

  • 通过 @adriangb 在 #6602 中使用 PDM 而非 pip 安装 typing-extensions 来改进持续集成

  • 由 @lig 在 #6603 中添加 enum 错误类型文档

  • 🐛 由 @lig 在 #6559 中修复了针对 Unicode 字符串的 max_length 问题

  • 由 @tpdorsey 在 #6604 中添加通过 pydantic.v1 访问功能的文档

  • 在由 @adriangb 在 #6562 中对模型进行迭代时包含额外内容

  • 通过 @adriangb 在 #6514 中修复 model_validator 的类型问题

  • 由 @adriangb 在 #6327 中对十进制验证器进行润色

  • 通过 @dmontagu 在 #6607 中使用固定的 pytest 示例修复各种文档字符串

  • 在 #6570 中由 @dmontagu 处理判别联合中的函数验证器

  • 审查由 @tpdorsey 在 #6608 中的 json_schema.md

  • 通过 @dmontagu 在 #6569 中使 validate_call 对 basemodel 方法起作用

  • 由 @davidhewitt 在 #6614 中为大整数 JSON 序列化/反序列化添加测试

  • 通过 @hramezani 在 #6616 中修复了带有 dataclasses.field default_factorypydantic 数据类问题

  • 由 @zakstucke 在 #6617 中修复了 TypeAdapter 的 mypy 类型推断

  • 通过 @dmontagu 在 #6609 中使将 None 用作泛型参数可行

  • 通过 @dmontagu 在 #6568 中使 $ref 用作别名生效

  • 在迁移指南中添加关于 AnyUrl 等更改的注释,由 @davidhewitt 在 #6618 中完成

  • 🐛 支持由 @lig 在 #6622 中使用 FieldRootModel 上定义 json_schema_extra

  • 由 @dmontagu 在 #6636 中更新 pre-commit 以防止意外提交到主分支

  • 由 @dmontagu 在 #6627 中修复 MacOS/Windows 上 Python 3.7 的 PDM CI

  • 通过 @dmontagu 在 #6633 中为 pydantic 数据类生成更准确的签名

  • 由 @tpdorsey 在 #6638 中对 Pydantic V2 的 Url 类型进行的更新

  • 在 #6649 中,由 @StefanBRas 修复 transform 文档字符串中的 Markdown 列表

  • 通过 @davidhewitt 在 #6639 中简化 slots_dataclass 构造以安抚 mypy

  • 由 @adriangb 在 #6651 中更新 TypedDict 模式生成文档字符串

  • 检测并排查 @dmontagu 在 #6655 中的打印错误

  • 为 @dmontagu 在 #6641 中关于 pydantic-core PR 766 添加失败测试

  • 在 #6634 中,由 @dmontagu 忽略数据类元数据中无法识别的字段

  • 通过 @dmontagu 在 #6658 中使不存在的类 getattr 成为 mypy 错误

  • 由 @hramezani 在 #6648 中将 pydantic-core 更新至 2.3.0

  • 使用 @dmontagu 在 #6664 中来自 typing_extensions 的 OrderedDict

  • 修复由 @dmontagu 在 #6659 中针对 JSON 模式额外可调用的类型提示

v2.0.2 (2023-07-05)

GitHub release

  • 修复了往返腌制/解腌制 RootModel 会更改 __dict__ 的值的错误,#6457 由 @dmontagu 提出

  • 允许单项可区分联合,#6405 由 @dmontagu 提出

  • 修复枚举的联合解析问题,#6440 由 @dmontagu 提出

  • 文档:修复了 constr 文档,将旧的 regex 重命名为新的 pattern ,#6452 由 @miili 完成

  • 更改 GenerateJsonSchema.generate_definitions 签名,#6436 由 @dmontagu

在此查看完整的更改日志

v2.0.1 (2023-07-04)

GitHub release

Pydantic V2 的首次补丁发布

  • 通过 setattr 添加的额外字段(例如 m.some_extra_field = 'extra_value' )如果 model_config extra='allowed' ,则会添加到 .model_extra 。由 @aaraney 修复 #6333、#6365

  • 自动为自定义类型解包 JSON 模式 '$ref',#6343 由 @adriangb

  • 修复子模型中带标签的联合的多重处理,#6340 由 @suharnikov

在此查看完整的更改日志

v2.0 (2023-06-30)

GitHub release

Pydantic V2 is here! 🎉

查看此帖以获取更多详情。

v2.0b3 (2023-06-16)

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

在此查看完整的更改日志

v2.0b2 (2023-06-03)

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

在此查看完整的更改日志

v2.0b1 (2023-06-01)

Pydantic V2 的首次测试版预发布

在此查看完整的更改日志

v2.0a4 (2023-05-05)

Pydantic V2 的第四次预发布版

在此查看完整的更改日志

v2.0a3 (2023-04-20)

Pydantic V2 的第三个预发布版本

在此查看完整的更改日志

v2.0a2 (2023-04-12)

Pydantic V2 的第二个预发布版本

在此查看完整的更改日志

v2.0a1 (2023-04-03)

Pydantic V2 的首次预发布!

查看此帖以获取更多详情。

v1.10.17 (2024-06-20)

  • 在 https://github.com/pydantic/pydantic/pull/9644 中,由 @vfazio 为 1.10.x 宣传 Python 3.12!第二部分

  • v1 命名空间中的镜像模块,由 @exs-dwoodward 在 https://github.com/pydantic/pydantic/pull/9660 中修复了 python>3.11 中的类型和对象解析问题

  • setup: remove upper bound from python_requires by @vfazio in https://github.com/pydantic/pydantic/pull/9685

v1.10.16 (2024-06-11)

v1.10.15 (2024-04-03)

v1.10.14 (2024-01-19)

  • 由 @dmontagu 在 #7690 中更新 install.md

  • 在 #7740 中,由 @sydney-runkle 修复 ci 以仅在发布时部署文档

  • 由 @sydney-runkle 在 #8540 和 #8587 中针对 V1 的 Ubuntu 修复

  • 修复由 @rdbisme 在 #8407 中复制数据类时的 cached_property 处理

v1.10.13 (2023-09-27)

  • 修复:对 pydantic.validate_email 、#7673 添加最大长度检查,由 @hramezani 完成

  • 文档:修复用于安装 v1 的 pip 命令,#6930 由 @chbndrhnns

v1.10.12 (2023-07-24)

  • 修复了在 deque 验证时 maxlen 属性被丢弃的问题。仅当双端队列项已被键入时才会发生。更改了 _validate_sequence_like 函数,#6581 由 @maciekglowka 完成

v1.10.11 (2023-07-04)

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

v1.10.10 (2023-06-30)

  • 在设置管理中添加 Pydantic Json 字段支持,#6250 由 @hramezani 完成

  • 修复了不可哈希值的字面量验证器错误,#6188 由 @markus1978 提交

  • 修复了泛型接收前向引用的错误,#6130 由 @mark-todd 提交

  • 在 CI 中为内部测试更新 FastAPI 的安装方法,#6117 由 @Kludex

v1.10.9 (2023-06-07)

  • 修复十进制验证中未忽略的尾随零,#5968 由 @hramezani

  • Fix mypy plugin for v1.4.0, #5928 by @cdce8p
  • 添加未来和过去日期假设策略,#5850 由 @bschoenmaeckers

  • 不建议在 Pydantic 1.x 中使用 Cython 3,#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、#5505 中的更改更新 AnyClassMethod ,由 @ITProKyle 完成

v1.10.7 (2023-03-22)

  • 修复使用 ConstrainedStr 从模型创建模式,将 regex 作为字典键,#5223 由 @matejetz

  • 解决由 explicit_package_bases=True 导致的 mypy 插件中的错误,#5191 由 @dmontagu 提出

  • 在 mypy 插件中为没有默认参数的 Field 添加隐式默认值,#5190 由 @dmontagu

  • 修复在判别联合中用作字面值的枚举值生成的模式,#5188 由 @javibookline

  • 修复当用户在其自身的类中定义 from_orm 时由 pydantic mypy 插件导致的 mypy 错误,#5187 由 @dmontagu 提出

  • 修复与 pydantic 数据类、mypy 版本 1.1.1 和自定义 mypy 插件一起使用的 InitVar ,#5162 由 @cdce8p 提出

v1.10.6 (2023-03-08)

  • 实现逻辑以支持通过使用默认值从非标准可调用对象创建验证器,并在检查签名时解包 functools.partialfunctools.partialmethod ,#5126 由 @JensHeinrich

  • 修复 v1.1.1 的 mypy 插件,并修复 pydantic 数据类的 dataclass_transform 装饰器,#5111 由 @cdce8p 完成

  • 当判别器值不可哈希时,引发 ValidationError ,而不是 ConfigError ,#4773 由 @kurtmckee

v1.10.5 (2023-02-15)

  • 修复带有 GenericModel 的参数化基础处理错误,适用于复杂模型集,#5052 由 @MarkusSintonen 提出

  • 如果插件配置发生更改,则使 mypy 缓存无效,#5007 由 @cdce8p

  • 修复在深度复制由 pydantic 包装的数据类类型时的 RecursionError 问题,#4949 由 @mbillingr 提出

  • 修复 X | Y 联合语法错误 GenericModel ,#4146 由 @thenx

  • 将覆盖范围徽章切换为显示此分支/版本的覆盖范围,#5060 由 @samuelcolvin

v1.10.4 (2022-12-30)

  • 将依赖项更改为 typing-extensions>=4.2.0 ,#4885 ,由 @samuelcolvin 操作

v1.10.3 (2022-12-29)


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

  • 修复自定义根模型的解析,#4883 由 @gou177

  • 修复:对冻结或空的数据类使用数据类代理,#4878 由 @PrettyWood

  • 在模型实例为默认值之一的模型上修复 schemaschema_json ,#4781 由 @Bobronium 提出

  • 在文档索引页面的赞助商中添加 Jina AI,#4767 ,由 @samuelcolvin

  • 修复:支持在 DataclassProxy 、#4695 上的赋值,#4695 由 @PrettyWood 完成

  • postgresql+psycopg 添加为 PostgreDsn 的允许方案,以便其可与 SQLAlchemy 2 一起使用,#4689 由 @morian 提出

  • 允许字典模式同时具有 patternPropertiesadditionalProperties ,#4641 由 @jparise 提出

  • 修复了由 @mfulgo 提出的在可选列表中传递 None 时的错误 unique_items , #4568

  • 使用 Callable 参数修复 GenericModel 时引发了 TypeError ,#4551 由 @mfulgo 提出

  • 使用 StrictStr 类型注释修复字段正则表达式,#4538 由 @sisp 完成

  • dataclass_transform 关键字参数名称从 field_descriptors 更正为 field_specifiers ,#4500 由 @samuelcolvin 完成

  • 修复:在数据类被继承时避免多次调用 __post_init__ ,#4487 由 @PrettyWood

  • 减小二进制轮的大小,#2276 由 @samuelcolvin

v1.10.2 (2022-09-05)

  • 还原更改:还原 URL 部分的百分比编码,该编码最初由 @samuelcolvin 在 #4224、#4470 中添加

  • 防止长(长度 > 4_300 )字符串/字节作为 int 字段的输入,参见 python/cpython#95778 和 CVE-2020-10735,#1477 由 @samuelcolvin

  • 修复:数据类包装器并非总是被调用,#4477 由 @PrettyWood 提交

  • 在解析 mypy 配置时在 Python 3.11 上使用 tomllib ,#4476 由 @hauntsaninja

  • GenericModel 缓存的基本修复,以检测 Union 模型中参数的顺序,#4474 由 @sveinugu 完成

  • 修复在使用诸如 listdict 作为 default_factory 这样的裸类型时的 mypy 插件,#4457 由 @samuelcolvin

v1.10.1 (2022-08-31)

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

v1.10.0 (2022-08-30)

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

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

v1.10.0b1 (2022-08-24)

预发布,详情见 GitHub 发布。

v1.10.0a2 (2022-08-24)

预发布,详情见 GitHub 发布。

v1.10.0a1 (2022-08-22)

预发布,详情见 GitHub 发布。

v1.9.2 (2022-08-11)

还原重大更改:v1.9.1 引入了一个重大更改,默认情况下对模型字段进行深度复制,此版本还原了默认行为以匹配 v1.9.0 及之前的版本,同时还通过 copy_on_model_validation = 'deep' 允许深度复制行为。有关更多信息,请参阅 #4092 。

  • 允许对模型字段进行浅拷贝, Config.copy_on_model_validation 现在是一个字符串,必须是 'none''deep''shallow' ,分别对应不拷贝、深度拷贝和浅拷贝;默认 'shallow' ,#4093 由 @timkpaine 提供

v1.9.1 (2022-05-19)

Thank you to pydantic's sponsors: @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 for their kind support.

  • 限制 generics._generic_types_cachegenerics._assigned_parameters 的大小,以避免内存使用量无限制增加,#4083 由 @samuelcolvin

  • 将 Jupyverse 和 FPS 作为使用 pydantic 的 Jupyter 项目添加,#4082 由 @davidbrochart

  • 在类型不是模型时加快 pydantic 模型的 __isinstancecheck__ 速度,还可能避免内存“泄漏”,#4081 由 @samuelcolvin 提出

  • 修复对 FieldInfo 的原地修改,该修改导致了与 PEP 593 类型别名相关的问题,#4067 由 @adriangb 提出

  • 通过 @giuliano-oliveira 在使用 pydantic.dataclasses.dataclass 、#4006 时,在 VS Code 中通过 __dataclass_transform__ 添加自动完成支持

  • 从代码库和文档中删除基准测试,#3973 由 @samuelcolvin

  • 在 CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 上的文档,#3972 由 @samuelcolvin

  • 修复嵌套的 Python 数据类模式回归,#3819 由 @himbeles

  • 更新有关 Settings 中源的惰性求值的文档,#3806 由 @garyd203

  • 防止字节的子类被转换为字节,#3706 由 @samuelcolvin

  • 修复了在使用 PEP585 和 PEP604 类型提示时“错误检查继承”的问题,#3681 由 @aleksul 提出

  • 允许在模型中进行自引用 ClassVar s ,#3679 由 @samuelcolvin

  • 重大更改,见 #4106:修复与自引用数据类相关的问题,#3675 由 @uriyyo 提出

  • 在呈现的 URL 中包含非标准端口号,#3652 由 @dolfinus

  • Config.copy_on_model_validation 进行的是深拷贝而非浅拷贝,#3641 由 @PrettyWood 发布

  • 修复:明确判别联合不支持单例,#3636 由 @tommilligan

  • setup.py 添加 read_text(encoding='utf-8') ,#3625 由 @hswong3i

  • 修复列表中可区分联合的 JSON 模式生成,#3608 由 @samuelcolvin

v1.9.0 (2021-12-31)

Thank you to pydantic's sponsors: @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 for their kind support.

Highlights

  • 添加 Python 3.10 支持,#2885 由 @PrettyWood

  • 被歧视的工会,#619 作者:@PrettyWood

  • Config.smart_union 为了更好的联合逻辑,#2092 由 @PrettyWood

  • 适用于 Macos M1 CPU 的二进制文件,#3498 由 @samuelcolvin 提供

  • 复杂类型可以通过嵌套的环境变量进行设置,例如 foo___bar 、#3159 ,由 @Air-Mark 提供

  • 为 pydantic 文档添加暗黑模式,#2913 由 @gbdlin 提出

  • 通过 __dataclass_transform__ 、#2721 为 VS Code 添加自动完成支持,由 @tiangolo 完成

  • 将“exclude”添加为字段参数,以便可以使用模型配置进行配置,#660 由 @daviskirk

v1.9.0 (2021-12-31) Changes

  • update_forward_refs 应用于 Config.json_encodes 以防止通过字符串定义的类型中的名称冲突,#3583 由 @samuelcolvin 提出

  • 扩展 pydantic 的 mypy 插件以支持 mypy 版本 0.9100.9200.9210.930 ,#3573 和 #3594 ,由 @PrettyWood、@christianbundy、@samuelcolvin 完成

v1.9.0a2 (2021-12-24) Changes

  • 支持具有可区分联合的泛型模型,#3551 由 @PrettyWood

  • 默认情况下保留 json() 的旧行为,#3542 由 @PrettyWood 提供

  • BaseModel 、#3540 中移除了仅输入的 __root__ 属性,由 @layday 操作

  • 构建 Python 3.10 轮子,#3539 由 @mbachry

  • 修复具有模型 __repr__ 、#3234 的 extra 字段的显示,由 @cocolman 完成

  • 通过 Config.copy_on_model_validation 复制的模型始终具有所有字段,#3201 由 @PrettyWood 提供

  • 来自嵌套字典的嵌套 ORM,#3182 由 @PrettyWood

  • 通过 @PrettyWood 修复指向可区分联合部分的链接

v1.9.0a1 (2021-12-18) Changes

  • Field() 中添加对 Decimal 特定验证配置的支持,除了使用 condecimal() 之外,以便编辑器和工具能够提供更好的支持,#3507 由 @tiangolo 提出

  • 将适用于配备 M1 CPU 的 MacOS 的 arm64 二进制文件添加到 PyPI,#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 负责

  • 在将字典子类用作字段类型时避免字典强制转换,#3122 由 @PrettyWood

  • 添加对 object 类型的支持,#3062 由 @PrettyWood

  • 将 pydantic 数据类更新为保留父类上的 _special 属性,#3043 由 @zulrang 完成

  • 为错误对象添加一个 TypedDict 类,#3038 由 @matthewhughes934

  • 修复将注释的子类用作默认值的支持,#3018 由 @JacobHayes 提出

  • 使 create_model_from_typeddict 符合 mypy 规范,#3008 由 @PrettyWood 完成

  • 在使用 PrivateAttr 、#2989 时实现多重继承,由 @hmvp 完成

  • 将环境变量解析为 JSON,如果它们具有带有复杂子字段的 Union 类型,#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

  • 更新关于用于构建文档的 Python 版本的贡献文档,#2856 由 @paxcodes

  • 阐明关于 pydantic 对自定义验证和严格类型检查的支持的文档,尽管 pydantic 主要是一个解析库,#2855 由 @paxcodes

  • 修复 Deque 字段的模式生成,#2810 由 @sergejkozin 提出

  • 修复在混合约束和 Literal 时的一个边缘情况,#2794 由 @PrettyWood 提出

  • 修复当 NamedTupleTypedDict 直接用作 Pydantic 模型中的字段类型时推迟的注释解析,#2760 由 @jameysharp 提出

  • 修复当 mypy 插件在 construct 方法调用中针对 BaseSettings 派生类失败时的错误,#2753 由 @uriyyo

  • pydantic.create_model 函数添加函数重载,#2748 由 @uriyyo

  • 修复与 self 字段声明相关的 mypy 插件问题,#2743 由 @uriyyo 提出

  • 行“用户初始化时提供的字段:”末尾的冒号表明其后的代码与之相关。将其更改为句号,#2733 由 @krisaoe

  • 将变量 schema 重命名为 schema_ ,以避免全局变量名称的遮蔽,#2724 ,由 @shahriyarr

  • 通过 __dataclass_transform__ 、#2721 为 VS Code 添加自动完成支持,由 @tiangolo 完成

  • BaseConfig 中添加缺失的类型注释并处理 max_length = 0 ,#2719 由 @PrettyWood 负责

  • orm_mode 检查更改为允许使用字典进行递归 ORM 模式解析,#2718 由 @nuno-andre 提出

  • 将《Talk Python To Me》播客的第 313 集,其中迈克尔·肯尼迪(Michael Kennedy)和塞缪尔·科尔文(Samuel Colvin)讨论了 Pydantic,添加到文档中,#2712 由 @RatulMaharaj

  • 修复当字段类型为 NamedTuple 且具有默认值时的 JSON 模式生成,#2707 由 @PrettyWood

  • Enum 字段现在在模式生成中正确支持额外的 kwargs,#2697 由 @sammchardy 提交

  • 重大更改,见 #3780:使引用的 pydantic 模型的序列化成为可能,#2650 由 @PrettyWood 提出

  • uniqueItems 选项添加到 ConstrainedList ,#2618 由 @nuno-andre

  • 尝试在模型创建时自动评估前向引用,#2588 由 @uriyyo

  • 将文档预览和覆盖范围显示切换为使用 smokeshow,#2580 ,作者 @samuelcolvin

  • 向 pydantic 模块添加 __version__ 属性,#2572 由 @paxcodes 提出

  • PostgresDsn 、#2567 添加 postgresql+asyncpgpostgresql+pg8000postgresql+psycopg2postgresql+psycopg2cffipostgresql+py-postgresqlpostgresql+pygresql 方案,由 @postgres-asyncpg 完成

  • 当指定 decimal_places 参数时,启用 Hypothesis 插件生成受约束的十进制数,#2524 由 @cwe5590

  • 允许 collections.abc.Callable 在 Python 3.9 中用作类型,#2519 由 @daviskirk 提出

  • 文档更新:关于使用 pip install 时如何自定义编译 pydantic 的方法,在 setup.py 中的小改动以在编译时允许自定义 CFLAGS,#2517 由 @peterroelants 提出

  • 消除 default_factory 的副作用,即使设置了 Config.validate_all ,也仅运行一次,#2515 由 @PrettyWood

  • AnyUrl 主机的 IP 正则表达式添加前视。这允许具有类似 IP 的 DNS 标签的 URL 进行验证,因为它们是完全有效的主机名,#2512 由 @sbv-csis 提出

  • 在生成的 JSON 模式中为定长元组设置 minItemsmaxItems ,#2497 由 @PrettyWood

  • strict 参数添加到 conbytes ,#2489 由 @koxudaxi

  • 在通用模型中支持用户定义的通用字段类型,#2465 由 @daviskirk

  • 在文档中添加 GetterDict 子类化的示例和简短说明,#2463 由 @nuno-andre 提出

  • 添加 KafkaDsn 类型, HttpUrl 现在对于 http 默认端口为 80 ,对于 https 默认端口为 443 ,#2447 由 @MihanixA

  • 添加 PastDateFutureDate 类型,#2425 由 @Kludex

  • 支持为具有子类型的 Generic 字段生成模式,#2375 由 @maximberg 提出

  • 修复(编码器):将 NameEmail 序列化为字符串,#2341 由 @alecgerona 完成

  • 如有可能,在 Union 中添加 Config.smart_union 以防止强制操作,更多信息请参阅文档,#2092 由 @PrettyWood

  • 添加将 typing.Counter 用作模型字段类型的能力,#2060 由 @uriyyo

  • 在构建新的参数化类时向 __bases__ 添加参数化子类,以便 A <: B => A[int] <: B[int] ,#2007 由 @diabolo-dan

  • 创建允许符合 RFC 8089 的 URL 的 FileUrl 类型。添加 host_required 参数,默认情况下为 TrueAnyUrl 及其子类), FalseRedisDsnFileUrl 中,#1983 由 @vgerak

  • 添加 confrozenset() ,类似于 conset()conlist() ,#1897 由 @PrettyWood

  • 如果被重写,则停止调用父类 root_validator ,#1895 由 @PrettyWood 提出

  • repr (默认为 True )参数添加到 Field ,以使其在 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

  • 通过生成有效名称来修复带有枚举的模式生成,#2575 由 @PrettyWood

  • 修复带有枚举成员的 Literal 的 JSON 模式生成,#2536 由 @PrettyWood

  • 修复在创建类期间作为关键字参数传递的配置声明中的错误,#2532 由 @uriyyo

  • 允许在类 kwargs 中传递 json_encoders ,#2521 由 @layday

  • 支持具有自定义 __eq__ 、#2483 的任意类型,由 @PrettyWood 提供

  • 支持在 validate_arguments 中的 Annotated 以及使用 Python 3.9 的通用模型中,#2483 由 @PrettyWood

v1.8.1 (2021-03-03)

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

  • 允许 Config.field 的元素更新 Field 的元素,#2461 由 @samuelcolvin

  • 使用 BaseModel 字段和自定义根类型修复验证,#2449 由 @PrettyWood 完成

  • Pattern 编码器暴露给 fastapi ,#2444 由 @PrettyWood

  • 当指定 multiple_of 参数时,启用 Hypothesis 插件生成受约束的浮点数,#2442 由 @tobi-lipede-oodle

  • 在使用某些类型(如 EnumLiteral )与通用模型时避免 RecursionError ,#2436 由 @PrettyWood

  • 不要在模型的子类中覆盖已声明的 __hash__ ,#2422 由 @PrettyWood

  • 修复与 PathUUID 相关的自定义类型的 mypy 投诉,#2418 由 @PrettyWood 提出

  • 支持复合类型的适当可变长度元组,#2416 由 @PrettyWood

v1.8 (2021-02-26)

Thank you to pydantic's sponsors: @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 for their kind support.

Highlights

  • 用于测试的假设插件,#2097 由 @Zac-HD

  • 支持 NamedTupleTypedDict ,#2216 由 @PrettyWood 提供

  • 支持模型字段上的 Annotated 提示,#2147 由 @JacobHayes 提出

  • frozen 参数在 Config 上以允许模型被哈希,#1880 由 @rhuille

Changes

  • 重大变更,从 v1 中删除旧的弃用别名,#2415 由 @samuelcolvin 提出

    • 删除文档中关于迁移到 v1 的注释

    • 移除 Schema ,其已被 Field 取代

    • 移除 Config.case_insensitive ,其已被 Config.case_sensitive 取代(默认 False

    • 移除被 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 中处理像 list[str] 这样的 typing.GenericAlias 对象,#2399 由 @daviskirk 完成

  • 通过允许使用 pydantic Field'metadata' 的 kwarg of dataclasses.field 改进 pydantic dataclass 的字段声明,#2384 由 @PrettyWood 提出

  • typing-extensions 作为必需的依赖项,#2368 由 @samuelcolvin 提出

  • 使 resolve_annotations 更宽松,允许缺少模块,#2363 由 @samuelcolvin

  • 允许通过类关键字参数配置模型,#2356 由 @Bobronium

  • 防止 Mapping 子类总是被强制转换为 dict ,#2325 由 @ofek

  • 修复:允许 None 用于类型 Optional[conset / conlist] ,#2320 由 @PrettyWood

  • 支持空元组类型,#2318 由 @PrettyWood 提出

  • 修复: python_requires 元数据要求 >=3.6.1,#2306 由 @hukkinj1 完成

  • 正确编码 Decimal ,无论有无小数位,#2293 由 @hultner

  • 修复:在 BaseModel.copy(update=…) 中更新 __fields_set__ ,#2290 由 @PrettyWood 完成

  • 修复:通过 @PrettyWood 保持带有 BaseModel.construct() 、#2281 的字段的顺序

  • 支持为通用字段生成模式,#2262 由 @maximberg

  • 修复 validate_decorator ,以使 **kwargs 在关键字与 *args**kwargs 名称相同时不排除值,#2251 由 @cybojenix 提出

  • 按照原生函数的行为,在 validate_arguments 中防止使用关键字参数覆盖位置参数,#2249 由 @cybojenix 提出

  • con* 类型的函数添加文档,#2242 由 @tayoogunbiyi 完成

  • 在使用带有嵌套模型的 parse_obj() 时支持自定义根类型(又名 __root__ ),#2238 由 @PrettyWood 提出

  • 支持自定义根类型(又名 __root__ )与 from_orm() ,#2237 由 @PrettyWood

  • 在创建模型时,确保基于 @kollmats 的 #1944 和 @samuelcolvin 的 #2228,Cython 化的函数保持不变

  • 解决转换为 Pydantic 的标准库数据类的前向引用,#2220 由 @PrettyWood 提出

  • 添加对 NamedTupleTypedDict 类型的支持。在 BaseModel 或 pydantic dataclass 内部使用时,现在会处理和验证这两种类型。还添加了两个实用工具 create_model_from_namedtuplecreate_model_from_typeddict ,#2216 由 @PrettyWood 完成

  • 当类型为 Union[Type[...], ...] 、#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

  • 仅发出警告以允许不存在的机密目录,#2175 由 @davidolrik

  • 修复 URL 正则表达式以解析不带查询字符串的片段,#2168 由 @andrewmwhite

  • 修复:确保始终返回 Literal 字段类型中的一个值,#2166 由 @PrettyWood

  • 支持模型字段上的 typing.Annotated 提示。现在可以在类型提示中使用 Annotated[..., Field(...) 设置 Field ;所有其他注释将被忽略,但仍可通过 get_type_hints(..., include_extras=True) 、#2147 由 @JacobHayes 查看

  • ConstrainedBytes 中添加了 StrictBytes 类型以及 strict=False 选项,#2136 由 @rlizzo 完成

  • constrconbytes 添加了 Config.anystr_lowerto_lower 关键字参数,#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 s 而无需重新注释它们,#2061 由 @layday

  • Pattern 类型添加默认编码器,#2045 由 @PrettyWood 完成

  • Add NonNegativeInt, NonPositiveInt, NonNegativeFloat, NonPositiveFloat, #1975 by @mdavis-xyz
  • 在颜色的字符串格式中使用 % 表示百分比,#1960 由 @EdwardBetts

  • 修复了在从多个具有在不同类中声明的相同名称的 BaseModel 构建模式时导致 KeyError 被引发的问题,#1912 由 @JSextonn

  • rediss (通过 SSL 的 Redis)协议添加到 RedisDsn 允许没有 user 部分的 URL(例如, rediss://:pass@localhost ),#1911 由 @TrDex

  • Config 添加一个新的 frozen 布尔型参数(默认值: False )。设置 frozen=True 会执行 allow_mutation=False 所做的一切,并且还会为模型生成一个 __hash__() 方法。如果所有属性都是可哈希的,这会使模型的实例有可能是可哈希的,#1880 由 @rhuille

  • 修复具有相同名称的多个枚举的模式生成,#1857 由 @PrettyWood

  • PaymentCardNumber 类型中为 13/19 位 VISA 信用卡添加了支持,#1416 由 @AlexanderSov 完成

  • 修复:在使用递归 GenericModel 时防止 RecursionError ,#1370 由 @xppt

  • 在 JSON 模式中,将 enum 用于 typing.Literal ,#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)

Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen, @meadsteve for their kind support.

  • 修复:为必填(可选)字段设置正确的默认值,#2142 由 @PrettyWood

  • 修复:支持带有通用模型的 underscore_attrs_are_private ,#2138 由 @PrettyWood 提出

  • 修复:当 validate_assignment 开启时,在 root_validator 中更新所有修改的字段值,#2116 由 @PrettyWood

  • 允许对从内置的 dataclasses.dataclass 动态创建的 pydantic.dataclasses.dataclass 进行腌制,#2111 由 @aimestereo

  • 修复了一个回归问题,其中枚举字段不会将关键字参数传播到模式,#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)

Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen for their kind support.

  • 修复将配置作为参数传递时 validate_arguments 的注释,#2055 由 @layday

  • 修复使用 PrivateAttr 、#2048 时的 mypy 赋值错误,由 @aphedges 提出

  • 修复在覆盖 __init__ 时导致 TypeErrorunderscore_attrs_are_private 问题,#2047 由 @samuelcolvin 提出

  • 修复了 v1.7 中引入的回归问题,该问题涉及当 validate_assignment=True 、#2044 时字段验证器中的异常处理,由 @johnsabath 提出

  • 修复:pydantic dataclass 可以继承自 stdlib dataclassConfig.arbitrary_types_allowed 受支持,#2042 由 @PrettyWood

v1.7 (2020-10-26)

Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api for their kind support.

Highlights

  • Python 3.9 支持,感谢 @PrettyWood

  • 私有模型属性,感谢 @Bobronium

  • “机密文件”在 BaseSettings 中的支持,感谢 @mdgilene

  • 将标准库数据类转换为 Pydantic 数据类,并在模型中使用标准库数据类,感谢 @PrettyWood

Changes

  • 重大变更:移除 __field_defaults__ ,添加 default_factory 支持并带有 BaseModel.construct 。在 __fields__ 属性中的字段上使用 .get_default() 方法替代,#1732 由 @PrettyWood

  • 重新安排 CI 以将代码检查作为单独的作业运行,为不同任务拆分安装配方,#2020 由 @samuelcolvin

  • 允许泛型模型的子类将超类的某些或所有类型参数具体化,同时在子类中定义新的类型参数,#2005 由 @choogeboom

  • BaseModel.__setattr__ 中使用正确的 values 参数类型调用验证器,当模型配置中的 validate_assignment = True 时,#1999 由 @me-ransh

  • 强制 fields.Undefined 为单例对象,修复继承的通用模型模式,#1981 由 @daviskirk

  • 在源代码分发中包含测试,#1976 由 @sbraz

  • 添加使用带有秘密类型的 min_length/max_length 约束的能力,#1974 由 @uriyyo

  • 还要在 validate_assignment 开启时检查 root_validators ,#1971 由 @PrettyWood 提供

  • 修复当存在自定义验证器时常量验证器不运行的问题,#1957 由 @hmvp 提出

  • deque 添加到字段类型中,#1935 由 @wozniakty

  • 为 Python 3.9 添加基本支持,#1832 由 @PrettyWood

  • 修复 exporting_models.md#modelcopy 锚点中的错别字和不正确的描述,#1821 由 @KimMachineGun 提出

  • BaseSettings 添加了读取“机密文件”的能力,#1820 由 @mdgilene

  • 添加 parse_raw_as 实用功能,#1812 由 @PrettyWood

  • 支持 dotenv 文件的主目录相对路径(例如 ~/.env ),#1803 由 @PrettyWood 提出

  • 澄清 parse_file 的文档,表明该参数应该是文件路径而不是类文件对象,#1794 由 @mdavis-xyz 提出

  • 修复当一个类嵌套在 BaseModel 中且名为 Model 时 mypy 插件的误报,#1770 由 @selimb 提出

  • 在模式生成中添加 Pattern 类型的基本支持,#1767 由 @PrettyWood

  • 支持枚举模式中的自定义标题、描述和默认值,#1748 由 @PrettyWood 提出

  • use_enum_values 为 True 时正确表示 Literal 枚举,#1747 由 @noelevans

  • 允许将时区信息添加到要格式化为时间对象的字符串中。允许的格式为 Z 表示 UTC 或偏移量表示绝对的正或负时间偏移。或者可以省略时区数据,#1744 由 @noelevans

  • ForwardRef 添加带有 Python 3.6 签名的存根 __init__ ,#1738 由 @sirtelemak 完成

  • 修复嵌套模型中前向引用和可选字段的行为,#1736 由 @PrettyWood

  • EnumIntEnum 作为字段的有效类型添加,#1735 由 @PrettyWood 提出

  • create_model__module__ 参数的默认值从 None 更改为 'pydantic.main' 。将创建的具体模型的引用设置为其模块以允许序列化(不适用于在函数中创建的模型),#1686 由 @Bobronium

  • 添加私有属性支持,#1679 由 @Bobronium 提出

  • config 添加到 @validate_arguments ,#1663 由 @samuelcolvin

  • 允许子代设置模型覆盖父代设置模型中定义的字段的环境变量名称,这些字段的 Config 中带有 env 。此前,仅适用 env_prefix 配置选项,#1561 由@ojomio

  • 在创建模式 $ref 时支持 ref_template ,#1479 由 @kilo59 提供

  • PyObject 添加一个 __call__ 存根,以便 mypy 知道它是可调用的,#1352 由 @brianmaissy

  • pydantic.dataclasses.dataclass 装饰器现在支持内置的 dataclasses.dataclass 。因此,可以轻松地将现有的 dataclass 转换以添加 Pydantic 验证。此外,还支持嵌套的数据类,#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 报头格式,@flapili 的 #1654

  • 文档默认 regex 锚定语义,#1648 由 @yurikhan

  • 在 class_validators.py 中使用 chain.from_iterable 。这是使用 itertools.chain 的一种更快速、更地道的方式。它不是计算可迭代对象中的所有项并将它们存储在内存中,而是逐个计算,并且从不存储为一个巨大的列表。这可以节省运行时间和内存空间,#1642 由 @cool-RR

  • 添加 conset() ,类似于 conlist() ,#1623 由 @patrickkwang

  • 使 Pydantic 错误(可)序列化,#1616 由 @PrettyWood 提出

  • 允许对 dotenv 文件进行自定义编码,#1615 由 @PrettyWood 提出

  • 确保 SchemaExtraCallable 始终被定义以在 BaseConfig 上获得类型提示,#1614 由 @PrettyWood

  • 更新日期时间解析器以支持负时间戳,#1600 由 @mlbiche

  • 更新 mypy,移除 AnyTypeType[Any] 的别名,#1598 由 @samuelcolvin 提出

  • 调整根验证器的处理方式,以便从所有失败的根验证器中汇总错误,而不是仅报告第一个失败的根验证器,#1586 由 @beezee

  • 使 __modify_schema__ 在枚举上应用于枚举模式而不是使用枚举的字段,#1581 由 @therefromhere

  • 修复在高级包含/排除中与索引键结合使用 __all__ 键时的行为,这些字段是序列,#1579 由 @xspirus

  • 子类验证器在引用父类中定义的 List 字段时不会运行,当 each_item=True 。在文档中添加了一个示例来说明这一点,#1566 由 @samueldeklund

  • 在模式中将 schema.field_class_to_schema 更改为支持 frozenset ,#1557 由 @wangpeibao 完成

  • 仅针对字段模式调用 __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 一次,并在模式中不设置默认值,以避免 default_factory 的某些副作用,#1491 由 @PrettyWood 提出

  • 添加了有关将数据类转储为 JSON 的文档,#1487 由 @mikegrima 完成

  • BaseModel.__signature__ 设为仅类可用,因此从模型实例获取 __signature__ 将会引发 AttributeError ,#1466 由 @Bobronium

  • 在秘密类型的模式中包含 'format': 'password' ,#1424 由 @atheuz 提出

  • 修改 ConstrainedFloat 上的模式约束,以便如果 exclusiveMinimum 和最小值等于 -math.inf ,则它们不包含在模式中,如果 maximum 等于 math.inf ,则 exclusiveMaximummaximum 不包含在模式中,#1417 由 @vdwees 提出

  • .dict() 中压缩内部 __root__ 字典(并且,推而广之,在 .json() 中),#1414 由 @patrickkwang

  • const 验证器移至后置验证器,以便对解析后的值进行验证,#1410 由 @selimb 提出

  • 修复模型验证以处理嵌套的字面值,例如 Literal['foo', Literal['bar']] 、#1364 ,由 @DBCerigo 完成

  • RedisDsn 中删除 user_required = True ,不需要用户和密码,#1275 由 @samuelcolvin

  • 从具有 Union 和自定义 Field 的字段的模式中删除多余的 allOf ,#1209 由 @mostaphaRoudsari

  • 将 OpenAPI 模式生成的更新输出所有枚举作为单独的模型。现在,模型不再在模型模式中内联枚举值,而是使用 $ref 属性指向枚举定义,#1173 由 @calvinwyoung 提出

v1.5.1 (2020-04-23)

  • 使用 extra: allow 生成签名从不使用字段名称,#1418 由 @prettywood

  • 避免修改 Field 的默认值,#1412 由 @prettywood

v1.5 (2020-04-18)

  • .dict()._iter() 、... 、不可变的、#1404 制定包含/排除参数,由 @AlexECX 完成

  • model._iter() 中的包含/排除操作始终使用字段的真实名称,无论 by_alias 如何,#1397 由 @AlexECX 提出

  • 将构造正则表达式示例更新为包含起始行和结束行,#1396 由 @lmcnearney

  • 确认 shallow 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 方法使文档制作秘密类型可转储,#1328 由 @atheuz

  • 将所有测试和构建移至 GitHub Actions,添加 Windows 和 macOS 二进制文件,感谢 @StephenBrown2 的诸多帮助,#1326 由 @samuelcolvin 提交

  • PaymentCardNumberPaymentCardBrand 中修复卡号长度检查,现在 PaymentCardBrandstr 继承,#1317 由 @samuelcolvin 完成

  • BaseModelRepresentation 继承,以便在覆盖 __str__ 时让 mypy 满意,#1310 由 @FuegoFro

  • 允许 None 作为所有可选列表字段的输入,#1307 由 @prettywood

  • datetime 字段添加到 default_factory 示例中,#1301 由 @StephenBrown2 完成

  • 允许已知类型的子类使用超类编码器进行编码,#1291 由 @StephenBrown2

  • 通过 @masalim2 从具有 '__all__' 、#1286 的子模型/字典列表/元组的所有元素中排除导出字段

  • 将 pydantic.color.Color 对象作为 Color 字段的可用输入,#1258 由 @leosussan

  • 在示例中,将可为空的字段类型写为 Optional ,以便这些是有效的 mypy 注释,#1248 由 @kokes

  • 使 pattern_validator() 接受预编译的 Pattern 对象。将 str_validator() 的返回类型修正为 str ,#1237 由 @adamgreg

  • 记录如何管理泛型和继承,#1229 由 @esadruhn

  • update_forward_refs() BaseModel 方法现在复制类模块的 __dict__ 而不是对其进行修改,#1228 由 @paul-ilyin

  • 支持使用 @validate_arguments 、#1222 的实例方法和类方法,由 @samuelcolvin 提供

  • default_factory 参数添加到 Field 中,通过传递一个零参数的可调用对象来创建动态默认值,#1210 由 @prettywood 提供

  • 添加对 NewTypeListOptional 等的支持,#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 、#1166 完成 Luhn 算法,由 @cuencandres 完成

  • 添加对实现 __get_validators__ (如自定义数据类型)的泛型的支持,#1159 由 @tiangolo 提出

  • 为无限生成器添加支持,使用 Iterable ,#1152 ,由 @tiangolo 完成

  • 修复 url_regex 以接受在第一个字符之后带有 +-. 的模式,#1142 由 @samuelcolvin

  • version_info() 移至 version.py ,建议在问题中使用,#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 、#1011 添加对使用“dotenv”文件的支持,由 @acnebs 完成

v1.3 (2019-12-21)

  • schemaschema_model 更改为通过使用其 __pydantic_model__ 功能来处理数据类,#792 由 @aviramha

  • 添加了一个选项,如果使用关键字 skip_on_failure=True 进行值验证失败,则跳过 root_validator ,#1049 由 @aviramha 完成

  • 允许 Config.schema_extra 可调用,以便对生成的模式进行后处理,#1054 由 @selimb 提出

  • 将 mypy 更新至 0.750 版本,#1057 由 @dmontagu 完成

  • 诱使 Cython 允许 str 子类化,#1061 由 @skewty

  • 除非属性 __schema_attributes__True ,否则防止将类型属性添加到模式中,#1064 由 @samuelcolvin

  • BaseModel.parse_file 更改为使用 Config.json_loads ,#1067 由 @kierandarcy

  • 针对可选的 Json 字段的修复,#1073 由 @volker48 完成

  • 将使用 Cython 编译时的默认线程数更改为 1,允许通过 CYTHON_NTHREADS 环境变量进行覆盖,#1074 由 @samuelcolvin 提出

  • 在 Pydantic 的 CI 测试期间运行 FastAPI 测试,#1075 由 @tiangolo

  • 我的 mypy 严格性约束,以及对类型注释的相关调整,#1077 由 @samuelcolvin

  • __eq__ 添加到 SecretStr 和 SecretBytes 以允许“值相等”,#1079 由 @sbv-trueenergy

  • 修复嵌套 None 情况的模式生成,#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)

  • 可能的重大更改:添加对所需 Optionalname: Optional[AnyType] = Field(...) 的支持,并重构 ModelField 创建以保留 required 参数值,#1031 由 @tiangolo 提出;详情见此处

  • cattrs 、#513 添加基准测试,由 @sebastianmika 完成

  • exclude_none 选项添加到 dict() 及其好友,#587 由 @niknetniko

  • valideer 、#670 添加基准测试,由 @gsakkis 完成

  • 为将数据临时解析为任意与 pydantic 兼容的类型添加 parse_obj_asparse_file_as 函数,#934 由 @dmontagu 提出

  • 向验证器添加 allow_reuse 参数,从而允许验证器重用,#940 由 @dmontagu 提出

  • 为自定义根模型添加映射类型的支持,#958 由 @dmontagu

  • Mypy 插件对数据类的支持,#966 由 @koxudaxi

  • 添加对数据类默认工厂的支持,#968 由 @ahirner 提出

  • 添加一个 ByteSize 类型用于将字节字符串( 1GB )转换为普通字节,#977 由 @dgasmith

  • 修复 @samuelcolvin 提出的关于 @root_validator(pre=True) 、#984 的 mypy 投诉

  • 将 Python 3.8 的 manylinux 二进制文件添加到 PyPI,同时支持 manylinux2010,#994 由 @samuelcolvin

  • 将字节大小转换为另一个单位,#995 由 @dgasmith 完成

  • 修复模型的 __str____repr__ 继承,#1022 由 @samuelcolvin 完成

  • 在文档中添加推荐部分,#1025 由 @sullivancolin 提出

  • 为 Python 3.8 添加对 typing.Literal 的支持,#1026 由 @dmontagu 完成

v1.1.1 (2019-11-20)

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

v1.1 (2019-11-07)

  • 添加一个用于类型检查的 mypy 插件 BaseModel.__init__ 及更多,#722 由 @dmontagu

  • 更改 GenericModel.__class_getitem__ 的返回类型类型提示以防止 PyCharm 警告,#936 由 @dmontagu 提出

  • 修复 Any 的使用以允许 None ,还支持 TypeVar ,从而允许使用未参数化的集合类型,例如 DictList ,#962 由 @samuelcolvin

  • 在子字段上设置 FieldInfo 以修复复杂嵌套类型的模式生成,#965 由 @samuelcolvin 提出

v1.0 (2019-10-23)

  • 重大变更:弃用 Model.fields 属性,改用 Model.__fields__ ,#883 由 @samuelcolvin 提出

  • 重大变更:更改别名的优先级,使子模型别名覆盖父别名,包括使用 alias_generator 、#904 (由 @samuelcolvin 提出)

  • 重大更改:将 skip_defaults 重命名为 exclude_unset ,并添加排除实际默认值的能力,#915 由 @dmontagu

  • **kwargs 添加到 pydantic.main.ModelMetaclass.__new__ ,以便 __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 提出

  • case_insensitiveBaseSettings 配置上的弃用警告,#885 由 @samuelcolvin 发出

  • 对于 BaseSettings 递归地合并环境变量和代码内的值,只要它们合并在一起时能创建一个有效的对象,以允许拆分初始化参数,#888 由 @idmitrievsky

  • 更改秘密类型示例,#890 由 @ashears

  • Model.construct() 的签名更改得更用户友好,记录 construct() 的用法,#898 由 @samuelcolvin

  • construct() 方法添加示例,#907 由 @ashears

  • 改进对复杂类型的 Field 约束的使用,如果约束不可执行则引发错误,还支持模式中带有省略号 Tuple[X, ...]SequenceFrozenSet 的元组,#909 由 @samuelcolvin

  • 为布尔值缺失有效值更新文档,#911 由 @trim21

  • 针对 ModelField 、#912 的更好的 str / repr 逻辑,由 @samuelcolvin 提出

  • 修复 ConstrainedList ,更新模式生成以反映 min_itemsmax_items Field() 参数,#917 由 @samuelcolvin

  • 允许在 dict()includeexclude 参数中设置抽象集合(例如字典键),#921 由 @samuelcolvin

  • 通过使用 pydantic_encoder 修复 ValidationError.json() 上的 JSON 序列化错误,#922 由 @samuelcolvin 负责

  • 阐明 remove_untouched 的用法,改进没有验证器的类型的错误消息,#926 由 @retnikt

v1.0b2 (2019-10-07)

  • StrictBool typecheck 标记为 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 提出

  • 重大变更:由 @dmontagu 对 bool 、#617 的解析行为进行修改

  • 重大变更: 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 提出

  • 重大更改:由 @Raphael-C-Almeida 向 post_init_post_parse 添加了对 initvars 的支持,#748

  • 重大更改:对于具有自定义根的模型,使 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

  • __repr__ 方法添加到 ErrorWrapper ,#738 由 @samuelcolvin

  • 为数据类中的 FrozenSet 成员添加了支持,并在尝试使用 Pydantic 不支持的 typing 模块中的类型时提供了更好的错误,#745 由 @djpetti 提出

  • 为 Pycharm 插件添加文档,#750 由 @koxudaxi

  • 修复文档中的错误示例,#753 由 @dmontagu 提出

  • 将与打字相关的对象移至 pydantic.typing ,#761 ,由 @samuelcolvin 操作

  • ErrorWrapperValidationError 和日期时间解析的小性能改进,#763 由 @samuelcolvin 完成

  • datetime / date / time / timedelta 类型的改进:更具描述性的错误,将错误更改为 value_error 而非 type_error ,支持字节,#766 由 @samuelcolvin

  • 修复具有多个允许值的 Literal 类型的错误消息,#770 由 @dmontagu 提出

  • 通过将下划线转换为空格改进了 JSON 模式中的自动生成的 title 字段,#772 由 @skewty

  • 支持 mypy --no-implicit-reexport 用于数据类,同时尊重 pydantic 本身中的 --no-implicit-reexport ,#783 由 @samuelcolvin 提出

  • 添加 PaymentCardNumber 类型,#790 由 @matin

  • 修复列表的常量验证,#794 由 @hmvp

  • 在不允许有额外字段的模型的架构中将 additionalProperties 设置为 false,#796 由 @Code0x58 提出

  • EmailStr 验证方法现在根据 RFC 5321 以区分大小写的方式返回本地部分,#798 由 @henriklindgren 提出

  • 增加了对 ConstrainedFloatConstrainedIntConstrainedStr 严格性验证的能力,并添加了 StrictFloatStrictInt 类,#799 由 @DerRidda 完成

  • 改进对 NoneOptional 的处理,在验证器上用 each_item 替换 whole (反向含义,默认 False ),#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)

(文档可在此处获取)

  • 修复带有数据类继承的 __post_init__ 用法,由 @samuelcolvin 修复 #739

  • 修复 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 、#697 修复 JSON 生成,由 @dmontagu 完成

  • 更新众多依赖项

v0.31 (2019-07-24)

  • 对浮点 multiple_of 值的更好支持,#652 由 @justindujardin

  • NewTypeLiteral 修复模式生成,#649 由 @dmontagu 完成

  • 修复 alias_generator 和字段配置冲突,#645 由 @gmetzker 处理,#658 由 @Bobronium 处理

  • 针对 EnumError 、#673 的更详细消息,由 @dmontagu 提供

  • dictjsoncopy 增加高级排除支持,#648 由 @Bobronium 完成

  • 修复 GenericModel 中具有具体参数化字段的模型的错误,#672 由 @dmontagu 提出

  • Literal 类型添加文档,#651 由 @dmontagu 完成

  • 为自定义描述符支持添加 Config.keep_untouched ,#679 由 @Bobronium 提出

  • 在内部使用 inspect.cleandoc 获取模型描述,#657 由 @tiangolo 提供

  • Color 添加到模式生成中,由 @euri10 完成

  • 为 Literal 类型添加文档,#651 由 @dmontagu

v0.30.1 (2019-07-15)

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

v0.30 (2019-07-07)

  • 在代码中强制使用单引号,#612 由 @samuelcolvin 提出

  • 修复数据类继承和 __post_init__ 、#606 导致的无限递归,由 @Hanaasagi 完成

  • 由 @dmontagu 为 GenericModel 、#610 修复默认值

  • 明确自引用模型需要 Python 3.7 及以上版本,#616 由 @vlcinsky

  • 修复类型的截断,#611 由 @dmontagu

  • 添加 alias_generator 支持,#622 由 @Bobronium

  • 修复未参数化的泛型类型模式生成,#625 由 @dmontagu

  • 修复具有对同一模型的多个/循环引用的模式生成,#621 由 @tiangolo 和 @wongpat 完成

  • 支持自定义根类型,#628 由 @koxudaxi 提出

  • parse_obj 中支持 self 作为字段名称,#632 由 @samuelcolvin

v0.29 (2019-06-19)

  • support dataclasses.InitVar, #592 by @pfrederiks
  • 更新了文档,以阐明在属性注释下定义多种类型时 Union 的用法,并展示类型顺序如何影响所提供值的编组,#594 由 @somada141 完成

  • add conlist type, #583 by @hmvp
  • 为泛型添加支持,#595 由 @dmontagu 提出

v0.28 (2019-06-06)

  • 修复在 Python 3.7 中使用具有循环引用的模型时对 JSON 模式生成的支持,#572 由 @tiangolo

  • 支持 __post_init_post_parse__ 在数据类上,#567 由 @sevaho

  • 允许将数据类转储为 JSON,#575 由 @samuelcolvin 和 @DanielOberg 完成

  • ORM 模式,#562 由 @samuelcolvin

  • 在 IPython 上修复 pydantic.compiled ,#573 由 @dmontagu 和 @samuelcolvin 完成

  • add StrictBool type, #579 by @cazgp

v0.27 (2019-05-30)

  • 重大更改 _pydantic_post_init 在验证之前执行数据类的原始 __post_init__ ,#560 由 @HeavenVolkoff

  • 修复未指定参数的泛型类型的处理,#550 由 @dmontagu

  • 重大变更(可能):这是使用 Cython 编译的第一个版本,请查看文档,如果遇到问题请提交问题报告

v0.27.0a1 (2019-05-26)

  • listtupleset 、#540 修复 JSON 模式,由 @tiangolo 完成

  • 使用 Cython 编译, manylinux 二进制文件,其他一些性能改进,#548 由 @samuelcolvin 完成

v0.26 (2019-05-22)

  • IPvAnyAddressIPvAnyInterfaceIPvAnyNetwork #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 的模式生成进行修复 #532 由 @euri10 完成

  • 添加 Color 类型,#504 由 @pilosus 和 @samuelcolvin

v0.25 (2019-05-05)

  • 改进关于自引用模型和注释的文档,#487 由 @theenglishway

  • 使用额外的密钥修复 .dict() ,#490 由 @JaewonKim 完成

  • Schema 、#434 中支持 const 关键字,由 @Sean1708

v0.24 (2019-04-23)

  • 修复子类型中 ForwardRef 的处理,例如 Union 、#464 ,由 @tiangolo 完成

  • 修复秘密序列化,#465 由 @atheuz

  • 支持数据类的自定义验证器,#454 由 @primal100 提出

  • 修复 parse_obj 以应对类似字典的对象,#472 由 @samuelcolvin

  • 修复嵌套基于数据类的模型中的模式生成,#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 收集错误,#450 由 @tigerwings

  • 支持专业的 ClassVars ,#455 由 @tyrylu

  • 修复 ipaddress 类型的 JSON 序列化,#333 由 @pilosus 完成

  • 添加 SecretStrSecretBytes 类型,#452 由 @atheuz

v0.22 (2019-03-29)

  • ipaddress 标准库添加 IPv{4,6,Any}NetworkIPv{4,6,Any}Interface 类型,#333 由 @pilosus

  • datetime 类型添加文档,#386 由 @pilosus 完成

  • 修复基于数据类模型中的模式生成,#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)

  • 修复 parse_obj 和类似方法的类型提示,#405 由 @erosennin 提出

  • 修复子模型验证,#403 由 @samuelcolvin

  • ValidationError.json 、#406 的正确类型提示,由 @layday 提供

v0.20.0 (2019-02-18)

  • 修复针对 Python 3.8 的测试,#396 由 @samuelcolvin

  • 在交互式会话中为 dir 方法添加字段以实现自动完成,#398 由 @dgasmith 提出

  • 支持 ForwardRef (因此也支持 from __future__ import annotations )使用数据类,#397 由 @samuelcolvin 提出

v0.20.0a1 (2019-02-13)

  • 重大更改(可能):验证器的参数解析更加复杂,现在允许 valuesconfigfield 的任何子集,例如 (cls, value, field) ,但是可变关键字参数(“ **kwargs ”)必须称为 kwargs ,#388 由 @samuelcolvin

  • 重大更改:向 BaseModel.dict() 添加 skip_defaults 参数以允许跳过未明确设置的字段, Model.construct() 的签名已更改,#389 由 @dgasmith 完成

  • 为 PEP-561 支持添加 py.typed 标记文件,#391 由 @je-l 完成

  • 修复针对多重继承/混入的 extra 行为,#394 由 @YaraslauZhylko 提出

v0.19.0 (2019-02-04)

  • Support Callable type hint, fix #279 by @proofit404
  • 修复带有 validator 修饰符的字段的模式,由 @tiangolo 修复 #375

  • multiple_of 约束添加到 ConstrainedDecimalConstrainedFloatConstrainedInt 及其相关类型 condecimalconfloatconint #371,感谢 @StephenBrown2

  • 已弃用 ignore_extraallow_extra 配置字段,转而支持 extra ,#352 由 @liiight 提出

  • 为所有函数添加类型注释,使用 mypy 进行全面测试,#373 由 @samuelcolvin

  • 针对 validate_allvalidate_always 的“缺失”错误的修复,#381 由 @samuelcolvin 完成

  • 将日期/日期时间解析的第二个/毫秒分水岭更改为 2e10 ,#385 ,由 @samuelcolvin 完成

v0.18.2 (2019-01-22)

  • 修复带有 Optional 字段的模式生成,由 @samuelcolvin 修复 #361

v0.18.1 (2019-01-17)

  • 添加 ConstrainedBytesconbytes 类型,#315 @Gr1N

  • 在包中添加 MANIFEST.in 以包含许可证 .tar.gz ,#358 由 @samuelcolvin

v0.18.0 (2019-01-13)

  • 重大变更:不要对字典的键调用验证器,#254 由 @samuelcolvin

  • 当默认值为 None 或类型为可选时,使用 always=True 修复验证器,同时防止为子字段调用 whole 验证器,由 @samuelcolvin 修复 #132

  • 改进设置优先级的文档,并允许其轻松更改,#343 由 @samuelcolvin

  • 修复 ignore_extra=Falseallow_population_by_alias=True ,由 @samuelcolvin 修复 #257

  • 重大变更:默认将 BaseConfig 属性 min_anystr_lengthmax_anystr_length 设置为 None ,由 @tiangolo 在 #350 中修复 #349

  • 添加对延迟注释的支持,#348 由 @samuelcolvin

v0.17.0 (2018-12-27)

  • timedelta 的模式修复为数字,#325 由 @tiangolo 完成

  • 防止验证器在继承后被反复调用,#327 由 @samuelcolvin

  • 在 IPython 中防止重复验证器检查,由 @samuelcolvin 修复 #312

  • 在文档中添加“使用 Pydantic”部分,#323 由 @tiangolo 提交,#326 由 @samuelcolvin 提交

  • 修复由 @nkonin 标注为 : dict: list: tuple: set 、#330 及 #335 的字段的模式生成

  • 在模式中为作为字典键的受约束字符串添加支持,#332 由 @tiangolo

  • 在数据类装饰器中支持传递 Config 类,#276 由 @jarekkar (重大更改:此操作取代了带有 configvalidate_assignment 参数)

  • 对嵌套数据类的支持,#334 由 @samuelcolvin

  • 获取带有 PyObjectImportError 时出现更好的错误,#309 由 @samuelcolvin

  • get_validators 重命名为 __get_validators__ ,使用旧名称时发出弃用警告,#338 由 @samuelcolvin

  • 通过从字段中排除此类属性来支持 ClassVar ,#184 由 @samuelcolvin 提供

v0.16.1 (2018-12-10)

  • 修复 create_model 以正确使用传入的 __config__ ,#320 由 @hugoduncan

v0.16.0 (2018-12-03)

  • 重大变更:重构模式生成以与 JSON 模式和 OpenAPI 规范兼容,#308 由 @tiangolo

  • schema 添加到 schema 模块,以便从基础模型生成顶级模式,#308 由 @tiangolo

  • Schema 类添加其他字段,以声明对 str 和数值的验证,#311 由 @tiangolo

  • 在字段上将 _schema 重命名为 schema ,#318 由 @samuelcolvin 操作

  • case_insensitive 选项添加到 BaseSettings Config ,#277 由 @jasonkuhrt

v0.15.0 (2018-11-18)

  • 将代码库迁移为使用 black,#287 由 @samuelcolvin

  • 修复设置中别名的使用,#286 由 @jasonkuhrt 和 @samuelcolvin 完成

  • 修复 parse_date 、#298 中的日期时间解析,由 @samuelcolvin 完成

  • 允许数据类继承,由 @samuelcolvin 修复 #293

  • fix PyObject = None, fix #305 by @samuelcolvin
  • 允许 Pattern 类型,由 @samuelcolvin 修复 #303

v0.14.0 (2018-10-02)

  • 数据类装饰器,#269 由 @Gaunt 和 @samuelcolvin 提出

v0.13.1 (2018-09-21)

  • 修复 int_validator 未将 bool 转换为 int 的问题 #264 由 @nphyatt 提出

  • BaseModel.copy() #249、@gangefors 添加深度复制支持

v0.13.0 (2018-08-25)

  • 如果字段的名称遮蔽了现有的 BaseModel 属性 #242,则引发异常

  • 添加 UrlStrurlstr 类型 #236

  • 时间差 json 编码 ISO8601 和总秒数,自定义 json 编码器 #247,由 @cfkanesan 和 @samuelcolvin

  • 允许 timedelta 对象作为 timedelta 类型属性的值(与 datetime 等行为匹配) #247

v0.12.1 (2018-07-31)

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

v0.12.0 (2018-07-31)

  • .dict().json() 模型方法中添加 by_alias 参数 #205

  • add Json type support #214
  • support tuples #227
  • 架构 #213 的重大改进和变更

v0.11.2 (2018-07-05)

  • add NewType support #115
  • 修复 listsettuple 验证 #225

  • 分离出 validate_model 方法,允许错误与有效值一起返回 #221

v0.11.1 (2018-07-02)

  • 支持 Python 3.7 #216,感谢 @layday

  • 在模型 #209 中允许任意类型,谢谢 @oldPadavan

v0.11.0 (2018-06-28)

  • 使 listtupleset 类型更严格 #86

  • breaking change: remove msgpack parsing #201
  • 添加 FilePathDirectoryPath 类型 #10

  • 模型模式生成 #190

  • 模型和模式的 JSON 序列化 #133

v0.10.0 (2018-06-11)

  • 添加 Config.allow_population_by_alias #160,谢谢 @bendemaree

  • 重大变更:新的错误格式 #179,感谢 @Gr1N

  • 重大更改:移除了 Config.min_number_sizeConfig.max_number_size #183,感谢 @Gr1N

  • 重大更改:将 ltgt 参数对 conint 等的行为纠正。#188 对于旧行为,请使用 lege #194,感谢 @jaheba

  • 添加了错误上下文,并能够使用 Config.error_msg_templates #183 重新定义错误消息模板,感谢 @Gr1N

  • 修复验证器异常 #150 中的错别字

  • 复制默认为模型值,因此不同的模型不会共享对象 #154

v0.9.1 (2018-05-10)

  • 允许在配置类上自定义 get_field_config #159

  • 添加 UUID1UUID3UUID4UUID5 类型 #167,感谢 @Gr1N

  • 修改一些不一致的文档字符串和注释 #173,感谢 @YannLuo

  • 修复外来类型的类型注释 #171,感谢 @Gr1N

  • 在奇异类型中重复使用类型验证器 #171

  • 每月计划的需求更新 #168

  • 添加 DecimalConstrainedDecimalcondecimal 类型 #170,谢谢 @Gr1N

v0.9.0 (2018-04-28)

  • 调整电子邮件验证器导入错误消息 #145

  • 修复输入为 0 #144 时 parse_date()parse_datetime() 的解析错误,感谢 @YannLuo

  • Config.anystr_strip_whitespacestrip_whitespace 关键字参数添加到 constr ,默认值为 False #163,谢谢 @Gr1N

  • 添加 ConstrainedFloatconfloatPositiveFloatNegativeFloat 类型 #166,感谢 @Gr1N

v0.8.0 (2018-03-25)

  • 修复 inherit_config #139 的类型注释

  • 重大变更:在验证器中检查无效的字段名称 #140

  • 验证父模型的属性 #141

  • 重大更改:电子邮件验证现在使用 email-validator #142

v0.7.1 (2018-02-07)

  • 修复与 create_model 修改基类相关的错误

v0.7.0 (2018-02-06)

  • 增加了与抽象基类(ABCs)的兼容性 #123

  • add create_model method #113 #125
  • 重大更改:在模型中将 .config 重命名为 .__config__

  • 重大更改:在模型中删除已弃用的 .values() ,改用 .dict()

  • 删除对 OrderedDict 的使用并使用简单的字典 #126

  • add Config.use_enum_values #127
  • 添加形式为 @validate('*') #128 的通配符验证器

v0.6.4 (2018-02-01)

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

v0.6.3 (2017-11-26)

  • 修复在没有 README.rst 存在的情况下直接安装

v0.6.2 (2017-11-13)

  • 无效验证器使用的错误

  • Settings 中对复杂模型进行更安全的检查

v0.6.1 (2017-11-08)

  • 防止重复的验证器,#101

  • always 关键字参数添加到验证器中,#102

v0.6.0 (2017-11-07)

  • 任务验证 #94,感谢 petroswork!

  • 环境变量中用于复杂类型的 JSON,#96

  • 为复杂验证添加 validator 装饰器,#97

  • 贬值 values(...) 并用 .dict(...) 替换,#99

v0.5.0 (2017-10-23)

  • 添加 UUID 验证 #89
  • 如果错误对象(JSON)中的 indextrack 为 null,则将其从错误对象中移除 #90

  • 改进当提供列表而非字典时的错误文本 #90

  • 将基准测试表添加到文档 #91

v0.4.0 (2017-07-08)

  • 在字符串验证错误中显示长度

  • 在继承期间修复配置中的别名 #55

  • 简化错误显示
  • truncate 中使用 Unicode 省略号

  • 添加 parse_objparse_rawparse_file 辅助函数 #58

  • 将仅注释字段切换为在字段列表中排在首位而不是最后一位

v0.3.0 (2017-06-21)

  • 通过 config.allow_mutation = False 的不可变模型,相关的清理和性能改进 #44

  • 不可变的辅助方法 construct()copy() #53

  • 允许对模型进行腌制 #53

  • setattr 已被移除,因为 __setattr__ 现在是智能的 #44

  • raise_exception 已移除,模型现在总是抛出异常 #44

  • 实例方法验证器已移除

  • django-restful-framework 基准测试已添加 #47

  • fix inheritance bug #49
  • 使 str 类型更严格,以便列表、字典等不会被强制转换为字符串。#52

  • 添加 StrictStr ,其仅始终将字符串作为输入 #52

v0.2.1 (2017-06-07)

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

v0.2.0 (2017-06-07)

  • 重大变更:模型中的 values() 现在是一个方法而不是属性,接受 includeexclude 参数

  • 允许仅注释字段支持 mypy

  • 为模型添加漂亮的 to_string(pretty=True) 方法

v0.1.0 (2017-06-03)

  • add docs
  • add history

本文总阅读量