更新日志
v2.12.1 (2025-10-13)¶
更新内容¶
这是 2.12 的第一个补丁版本,解决了初始 2.12.0 版本中的大部分(但并非全部)回归问题。
修复¶
- 检查验证器和序列化器时不要评估注解,由 @Viicos 在 #12355 中完成
- 确保在 Python 3.14 中将
None转换为NoneType,由 @Viicos 在 #12370 中完成 - 使用 Python 3.14 时回溯 V1 运行时警告,由 @Viicos 在 #12367 中完成
- 修复无效验证器签名的错误消息,由 @Viicos 在 #12366 中完成
- 在
ValidationInfo中填充字段名称以验证默认值,由 @Viicos 在 pydantic-core#1826 中完成 - 在
MultiHostUrl构建器中编码凭据,由 @willswire 在 pydantic-core#1829 中完成 - 使用
serialize_as_any序列化标志时遵守字段序列化器,由 @davidhewitt 在 pydantic-core#1829 中完成 - 修复各种
RootModel序列化问题,由 @davidhewitt 在 pydantic-core#1836 中完成
新贡献者¶
- @willswire 在 pydantic-core#1829 中做出了首次贡献
v2.12.0 (2025-10-07)¶
更新内容¶
这是最终的 2.12 版本。它包含了 20 位外部贡献者的工作,提供了有用的新特性,以及对 Python 3.14 的初步支持。此版本还包含了一些次要更改(根据我们的版本策略,这些更改不被视为破坏性更改)。升级前请务必查看这些更改。
请注意,Pydantic V1 不兼容 Python 3.14 及更高版本.
变更(有关 2.11 以来新增的变更,请参阅 alpha 和 beta 版本)
打包¶
新特性¶
- 向 validate 函数添加
extra参数,由 @anvilpete 在 #12233 中完成 - 添加
exclude_computed_fields序列化选项,由 @Viicos 在 #12334 中完成 - 添加
preverse_empty_pathURL 选项,由 @Viicos 在 #12336 中完成 - 为 JSON Schema 生成添加
union_format参数,由 @Viicos 在 #12147 中完成 - 为
create_model添加__qualname__参数,由 @Atry 在 #12001 中完成
修复¶
- 在管道 API 中不要尝试从 lambda 定义推断名称,由 @Viicos 在 #12289 中完成
- 在
TypeAdapter中为函数使用正确的命名空间,由 @Viicos 在 #12324 中完成 - 在
TypeAdapter中为上下文类型注解使用Any,由 @inducer 在 #12279 中完成 - 在
pydantic.fields.__all__中公开FieldInfo,由 @Viicos 在 #12339 中完成 - 在
@validate_call中遵守validation_alias,由 @Viicos 在 #12340 中完成 - 在插件 API 中使用
Any作为上下文注解,由 @Viicos 在 #12341 中完成 - 在可能的情况下,在警告中使用正确的
stacklevel,由 @Viicos 在 #12342 中完成
新贡献者¶
- @anvilpete 在 #12233 中做出了首次贡献
- @JonathanWindell 在 #12327 中做出了首次贡献
- @inducer 在 #12279 中做出了首次贡献
- @Atry 在 #12001 中做出了首次贡献
v2.12.0b1 (2025-10-03)¶
这是即将发布的 2.12 版本的第一个 beta 版本。
更新内容¶
打包¶
新特性¶
- 在字段级别添加对
exclude_if的支持,由 @andresliszt 在 #12141 中完成 - 添加
ValidateAs注解辅助工具,由 @Viicos 在 #11942 中完成 - 添加时间类型验证和 JSON 序列化的配置选项,由 @ollz272 在 #12068 中完成
- 添加对 PEP 728 的支持,由 @Viicos 在 #12179 中完成
- 在序列化错误中添加字段名称,由 @NicolasPllr1 在 pydantic-core#1799 中完成
- 添加保留空 URL 路径的选项,由 @davidhewitt 在 pydantic-core#1789 中完成
变更¶
- 如果安装了不兼容的
pydantic-core版本,则引发错误,由 @Viicos 在 #12196 中完成 - 删除实验性功能的运行时警告,由 @Viicos 在 #12265 中完成
- 在 Pydantic 模型上注册虚拟子类时发出警告,由 @Viicos 在 #11669 中完成
修复¶
- 修复 Pydantic 模型上
__getattr__()行为,当属性引发AttributeError且存在额外值时,由 @raspuchin 在 #12106 中完成 - 添加测试以防止 Pydantic 模型用作注解元数据时的回归,由 @Viicos 在 #12133 中完成
- 允许在设置了
validate_assignment的 Pydantic 数据类上使用属性设置器,由 @Viicos 在 #12173 中完成 - 修复即将发布的 mypy 版本的 mypy v2 插件,由 @cdce8p 在 #12209 中完成
- 在函数 JSON Schema 中遵守自定义标题,由 @Viicos 在 #11892 中完成
- 修复具有
name属性的对象的ImportStringJSON 序列化,由 @chr1sj0nes 在 #12219 中完成 - 在 mypy 插件中不要在被方法覆盖的字段上出错,由 @Viicos 在 #12290 中完成
新贡献者¶
- @raspuchin 在 #12106 中做出了首次贡献
- @chr1sj0nes 在 #12219 中做出了首次贡献
v2.12.0a1 (2025-07-26)¶
这是即将发布的 2.12 版本的第一个 alpha 版本,增加了对 Python 3.14 的初步支持。
更新内容¶
新特性¶
- 添加
__pydantic_on_complete__()钩子,模型完全准备就绪后调用,由 @DouweM 在 #11762 中完成 - 添加对 Python 3.14 的初步支持,由 @Viicos 在 #11991 中完成
- 为
Decimal类型向 JSON schema 添加正则表达式模式,由 @Dima-Bulavenko 在 #11987 中完成 - 添加对数据类字段
doc属性的支持,由 @Viicos 在 #12077 中完成 - 添加实验性
MISSING哨兵,由 @Viicos 在 #11883 中完成
变更¶
- 允许在
create_model()中同时指定配置和基类,由 @Viicos 在 #11714 中完成 - 将一些字段逻辑移出
GenerateSchema类,由 @Viicos 在 #11733 中完成 - 在 Python 3.13 及更高版本上始终使用
inspect.getsourcelines()进行文档字符串提取,由 @Viicos 在 #11829 中完成 - 仅支持最新 Mypy 版本,由 @Viicos 在 #11832 中完成
- 不要在模型验证器后将隐式转换到类方法,由 @Viicos 在 #11957 中完成
- 重构
FieldInfo创建实现,由 @Viicos 在 #11898 中完成 - 使
Secret具有协变性,由 @bluenote10 在 #12008 中完成 - 当字段特定元数据用于无效上下文时发出警告,由 @Viicos 在 #12028 中完成
修复¶
- 在 JSON Schema 中序列化默认值时正确获取纯序列化器函数,由 @Viicos 在 #11721 中完成
- 移除泛型缓存变通方法,由 @Viicos 在 #11755 中完成
- 移除 Decimal 约束的强制转换,由 @Viicos 在 #11772 中完成
- 修复 mypy 插件中展开根类型时崩溃的问题,由 @Viicos 在 #11735 中完成
- 仅在所有字段都完成后才将模型标记为完成,由 @DouweM 在 #11759 中完成
- 在验证器核心模式中不提供
field_name,由 @DouweM 在 #11761 中完成 - 修复递归泛型模型的问题,由 @Viicos 在 #11775 中完成
- 修复在命名空间检查期间私有属性的限定名称比较问题,由 @karta9821 在 #11803 中完成
- 确保 Pydantic 数据类在使用槽位和设置了
validate_assignment时可以被反序列化,由 @Viicos 在 #11769 中完成 - 在 schema 收集期间遍历
function-beforeschema,由 @Viicos 在 #11801 中完成 - 修复 stdlib 数据类检查问题,由 @Viicos 在 #11822 中完成
- 在应用类型变量映射后检查
FieldInfo是否完成,由 @Viicos 在 #11855 中完成 - 在
model_rebuild()中不删除模拟验证器/序列化器,由 @Viicos 在 #11890 中完成 - 在 schema 生成之前重建数据类字段,由 @Viicos 在 #11949 中完成
- 始终将原始字段赋值存储在
FieldInfo上,由 @Viicos 在 #11946 中完成 - 不使用已弃用的方法作为默认字段值,由 @Viicos 在 #11914 中完成
- 允许可调用鉴别器应用于 PEP 695 类型别名,由 @Viicos 在 #11941 中完成
- 使用
SkipValidation时抑制核心 schema 生成警告,由 @ygsh0816 在 #12002 中完成 - 当
validate_default设置为True时,不对无效的Field()默认值发出类型检查错误,由 @Viicos 在 #11988 中完成 - 重构逻辑以支持数据类中的 Pydantic
Field()函数,由 @Viicos 在 #12051 中完成
打包¶
- 更新项目元数据以使用 PEP 639,由 @Viicos 在 #11694 中完成
- 将
mkdocs-llmstxt升级到 v0.2.0,由 @Viicos 在 #11725 中完成 - 将
pydantic-core升级到 v2.35.1,由 @Viicos 在 #11963 中完成 - 将 dawidd6/action-download-artifact 从 10 升级到 11,由 @dependabot[bot] 在 #12033 中完成
- 将 astral-sh/setup-uv 从 5 升级到 6,由 @dependabot[bot] 在 #11826 中完成
- 将 mypy 更新到 1.17.0,由 @Viicos 在 #12076 中完成
新贡献者¶
- @parth-paradkar 在 #11695 中做出了首次贡献
- @dqkqd 在 #11739 中做出了首次贡献
- @fhightower 在 #11722 中做出了首次贡献
- @gbaian10 在 #11766 中做出了首次贡献
- @DouweM 在 #11759 中做出了首次贡献
- @bowenliang123 在 #11719 中做出了首次贡献
- @rawwar 在 #11799 中做出了首次贡献
- @karta9821 在 #11803 中做出了首次贡献
- @jinnovation 在 #11834 中做出了首次贡献
- @zmievsa 在 #11861 中做出了首次贡献
- @Otto-AA 在 #11860 中做出了首次贡献
- @ygsh0816 在 #12002 中做出了首次贡献
- @lukland 在 #12015 中做出了首次贡献
- @Dima-Bulavenko 在 #11987 中做出了首次贡献
- @GSemikozov 在 #12050 中做出了首次贡献
- @hannah-heywa 在 #12082 中做出了首次贡献
v2.11.7 (2025-06-14)¶
更新内容¶
修复¶
v2.11.6 (2025-06-13)¶
更新内容¶
修复¶
v2.11.5 (2025-05-22)¶
更新内容¶
修复¶
- 在应用类型变量映射后检查
FieldInfo是否完成,由 @Viicos 在 #11855 中完成 - 在
model_rebuild()中不删除模拟验证器/序列化器,由 @Viicos 在 #11890 中完成 - 在模型重建时不要重复元数据,由 @Viicos 在 #11902 中完成
v2.11.4 (2025-04-29)¶
更新内容¶
打包¶
变更¶
- 允许在
create_model()中同时指定配置和基类,由 @Viicos 在 #11714 中完成。此更改已回溯,因为以前可以(尽管并非有意支持)将model_config作为字段提供,这使得同时提供配置和基类成为可能。
修复¶
- 移除泛型缓存变通方法,由 @Viicos 在 #11755 中完成
- 移除 Decimal 约束的强制转换,由 @Viicos 在 #11772 中完成
- 修复 mypy 插件中展开根类型时崩溃的问题,由 @Viicos 在 #11735 中完成
- 修复递归泛型模型的问题,由 @Viicos 在 #11775 中完成
- 在 schema 收集期间遍历
function-beforeschema,由 @Viicos 在 #11801 中完成
v2.11.3 (2025-04-08)¶
更新内容¶
打包¶
修复¶
v2.11.2 (2025-04-03)¶
更新内容¶
修复¶
- 将
pydantic-core升级到 v2.33.1,由 @Viicos 在 #11678 中完成 - 确保
__pydantic_private__存在后才设置私有属性,由 @Viicos 在 #11666 中完成 - 使用父类字段时,不覆盖
FieldInfo._complete,由 @Viicos 在 #11668 中完成 - 在应用区分联合时提供可用定义,由 @Viicos 在 #11670 中完成
- 在 mypy 插件中,不对变量展开根类型,由 @Viicos 在 #11676 中完成
- 在模型字段弃用消息中提及属性名称,由 @Viicos 在 #11674 中完成
- 正确验证参数化映射,由 @Viicos 在 #11658 中完成
v2.11.1 (2025-03-28)¶
更新内容¶
修复¶
v2.11.0 (2025-03-27)¶
更新内容¶
Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。有关更多详细信息,请参阅博客文章。
打包¶
新特性¶
- 向 URL 类型添加
encoded_string()方法,由 @YassinNouh21 在 #11580 中完成 - 添加对
@validate_call装饰器与defer_build的支持,由 @Viicos 在 #11584 中完成 - 允许
@with_config装饰器与关键字参数一起使用,由 @Viicos 在 #11608 中完成 - 简化 JSON Schema 生成中默认值包含的自定义,由 @Viicos 在 #11634 中完成
- 添加
generate_arguments_schema()函数,由 @Viicos 在 #11572 中完成
修复¶
- 允许泛型类型字典用于解包的可变关键字参数,由 @Viicos 在 #11571 中完成
- 修复在涉及缓存属性和自引用模型时计算模型字符串表示的运行时错误,由 @Viicos 在 #11579 中完成
- 在使用管道 API 中的省略号时保留其他步骤,由 @Viicos 在 #11626 中完成
- 修复延迟鉴别器应用逻辑,由 @Viicos 在 #11591 中完成
新贡献者¶
v2.11.0b2 (2025-03-17)¶
更新内容¶
打包¶
新特性¶
修复¶
新贡献者¶
v2.11.0b1 (2025-03-06)¶
更新内容¶
打包¶
- 添加
check_pydantic_core_version()函数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11324 中完成 - 移除
greenlet开发依赖,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11351 中完成 - 使用
typing-inspection库,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11479 中完成 - 将
pydantic-core升级到v2.31.1,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11526 中完成
新特性¶
- 支持同时具有默认值、界限或约束的未替代类型变量,由 @FyZzyss 在 https://github.com/pydantic/pydantic/pull/10789 中完成
- 向
FieldInfo添加default_factory_takes_validated_data属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11034 中完成 - 当泛型别名在
type[]内部使用时引发更好的错误,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11088 中完成 - 正确支持 PEP 695 泛型语法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11189 中完成
- 正确支持类型变量默认值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11332 中完成
- 添加对验证 v6、v7、v8 UUID 的支持,由 @astei 在 https://github.com/pydantic/pydantic/pull/11436 中完成
- 改进别名配置 API,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11468 中完成
变更¶
- 重做
create_model字段定义格式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11032 中完成 - 当字段被注解为 final 且带有默认值时发出弃用警告,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11168 中完成
- 弃用在实例上访问
model_fields和model_computed_fields,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11169 中完成 - 重大变更: 将路径类型的核心 schema 生成逻辑移到
GenerateSchema类中,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10846 中完成 - 移除对 Python 3.8 的支持,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11258 中完成
- 优化对
get_type_ref的调用,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10863 中完成 - 禁用
pydantic-core核心 schema 验证,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11271 中完成
性能¶
- 仅在 schema 构建期间需要时才评估
FieldInfo注解,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10769 中完成 - 通过缓存 setter 函数提高 Pydantic 模型
__setattr__性能,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/10868 中完成 - 提高注解应用性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11186 中完成
- 提高
_typing_extra模块的性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11255 中完成 - 重构和优化 schema 清理逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11244 中完成
- 在创建
CoreConfig实例时创建一个字典,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11384 中完成 - 升级
pydantic-core并因此使用SchemaValidator和SchemaSerializer缓存,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11402 中完成 - 为参数化泛型 Pydantic 模型重用缓存的核心 schema,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/11434 中完成
修复¶
- 改进
TypeAdapter实例的 repr,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10872 中完成 - 在实例化参数化的
TypeAdapter时使用正确的帧,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10893 中完成 - 在 mypy 插件中,将具有默认值的 final 字段推断为类变量,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11121 中完成
- 如果使用 PEP 695 类型别名,递归地解包
Literal值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11114 中完成 - 覆盖
ModelMetaclass上的__subclasscheck__以避免内存泄漏和性能问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11116 中完成 - 移除未使用的
_extract_get_pydantic_json_schema()参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11155 中完成 - 改进歧视联合对无效联合变体的错误消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11161 中完成
- 如果使用
Annotated形式,解包 PEP 695 类型别名,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11109 中完成 - 在
deprecated_instance_property警告中添加缺失的 stacklevel,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11200 中完成 - 复制
WithJsonSchemaschema 以避免共享变异数据,由 @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中完成 - 在参数化另一个模型时,不缓存参数化模型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10704 中完成
- 向
CoreMetadata定义添加歧视联合相关元数据条目,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11216 中完成 - 整合
_Definitions类中的 schema 定义逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11208 中完成 - 在 mypy 插件中支持使用
root类型的值初始化根模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11212 中完成 - 修复数据类和
use_attribute_docstrings的各种问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11246 中完成 - 仅在
decimal_places_validator中需要时计算标准化小数位数,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11281 中完成 - 在 mypy 插件中添加对
validation_alias的支持,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11295 中完成 - 修复 JSON Schema 引用收集与
"examples"键的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11305 中完成 - 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11298 中完成
- 简化
GenerateJsonSchema.literal_schema()实现,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11321 中完成 - 为
ClickHouseDsn添加额外的允许方案,由 @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中完成 - 将 decimal 约束强制转换为
Decimal实例,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11350 中完成 - 在处理函数 schema 时使用正确的 JSON Schema 模式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11367 中完成
- 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11356 中完成
- 对于任意字典 schema 始终包含
additionalProperties: True,由 @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中完成 - 在序列化方法中公开
fallback参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11398 中完成 - 修复路径序列化行为,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11416 中完成
- 在模型重建期间不重用验证器和序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11429 中完成
- 重建模型时收集模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11388 中完成
- 允许在冻结模型上更改缓存属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11432 中完成
- 修复
Sequence类型的元组序列化,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11435 中完成 - 修复:在同时定义
__get_pydantic_core_schema__的类上不检查__get_validators__,由 @tlambert03 在 https://github.com/pydantic/pydantic/pull/11444 中完成 - 允许可调用实例用作序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11451 中完成
- 改进使用属性覆盖字段时抛出的错误,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11459 中完成
- 修复 JSON Schema 生成与包含 JSON 元数据的可引用核心 schema 的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11475 中完成
- 支持对联合成员类型进行严格指定,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11481 中完成
- 当
validate_by_alias为False时,隐式将validate_by_name设置为True,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11503 中完成 - 在 mypy 插件中合成
BaseSettings.__init__签名时更改Any的类型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11497 中完成 - 支持引用其他类型变量的类型变量默认值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11520 中完成
- 修复年份为零时的
ValueError,由 @davidhewitt 在 https://github.com/pydantic/pydantic-core/pull/1583 中完成 dataclassInitVar在序列化时应该不是必需的,由 @sydney-runkle 在 https://github.com/pydantic/pydantic-core/pull/1602 中完成
新贡献者¶
- @FyZzyss 在 https://github.com/pydantic/pydantic/pull/10789 中做出了首次贡献
- @tamird 在 https://github.com/pydantic/pydantic/pull/10948 中做出了首次贡献
- @felixxm 在 https://github.com/pydantic/pydantic/pull/11077 中做出了首次贡献
- @alexprabhat99 在 https://github.com/pydantic/pydantic/pull/11082 中做出了首次贡献
- @Kharianne 在 https://github.com/pydantic/pydantic/pull/11111 中做出了首次贡献
- @mdaffad 在 https://github.com/pydantic/pydantic/pull/11177 中做出了首次贡献
- @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中做出了首次贡献
- @thomasfrimannkoren 在 https://github.com/pydantic/pydantic/pull/11251 中做出了首次贡献
- @usernameMAI 在 https://github.com/pydantic/pydantic/pull/11275 中做出了首次贡献
- @ananiavito 在 https://github.com/pydantic/pydantic/pull/11302 中做出了首次贡献
- @pawamoy 在 https://github.com/pydantic/pydantic/pull/11311 中做出了首次贡献
- @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中做出了首次贡献
- @kauabh 在 https://github.com/pydantic/pydantic/pull/11369 中做出了首次贡献
- @jaceklaskowski 在 https://github.com/pydantic/pydantic/pull/11353 中做出了首次贡献
- @tmpbeing 在 https://github.com/pydantic/pydantic/pull/11375 中做出了首次贡献
- @petyosi 在 https://github.com/pydantic/pydantic/pull/11405 中做出了首次贡献
- @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中做出了首次贡献
- @mikeedjones 在 https://github.com/pydantic/pydantic/pull/11402 中做出了首次贡献
- @astei 在 https://github.com/pydantic/pydantic/pull/11436 中做出了首次贡献
- @dsayling 在 https://github.com/pydantic/pydantic/pull/11522 中做出了首次贡献
- @sobolevn 在 https://github.com/pydantic/pydantic-core/pull/1645 中做出了首次贡献
v2.11.0a2 (2025-02-10)¶
更新内容¶
Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。这是另一个早期 alpha 版本,旨在收集用户在使用核心 schema 构建时遇到的早期反馈。
打包¶
- 将
ruff从 0.9.2 升级到 0.9.5,由 @Viicos 在 #11407 中完成 - 将
pydantic-core升级到 v2.29.0,由 @mikeedjones 在 #11402 中完成 - 使用本地构建的带有符号和 pgo 的 rust,由 @davidhewitt 在 #11403 中完成
性能¶
- 在创建
CoreConfig实例时创建一个字典,由 @sydney-runkle 在 #11384 中完成
修复¶
- 在处理函数 schema 时使用正确的 JSON Schema 模式,由 @Viicos 在 #11367 中完成
- 修复 JSON Schema 引用逻辑与
examples键的问题,由 @Viicos 在 #11366 中完成 - 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 #11356 中完成
- 对于任意字典 schema 始终包含
additionalProperties: True,由 @austinyu 在 #11392 中完成 - 在序列化方法中公开
fallback参数,由 @Viicos 在 #11398 中完成 - 修复路径序列化行为,由 @sydney-runkle 在 #11416 中完成
新贡献者¶
- @kauabh 在 #11369 中做出了首次贡献
- @jaceklaskowski 在 #11353 中做出了首次贡献
- @tmpbeing 在 #11375 中做出了首次贡献
- @petyosi 在 #11405 中做出了首次贡献
- @austinyu 在 #11392 中做出了首次贡献
- @mikeedjones 在 #11402 中做出了首次贡献
v2.11.0a1 (2025-01-30)¶
更新内容¶
Pydantic v2.11 是一个强烈关注 Pydantic 模型构建时性能(以及核心 schema 生成)的版本。这是一个早期 alpha 版本,旨在收集用户在使用核心 schema 构建时遇到的早期反馈。
打包¶
- 将 dawidd6/action-download-artifact 从 6 升级到 7,由 @dependabot 在 #11018 中完成
- 在 Python 3.12+ 上重新启用 memray 相关测试,由 @Viicos 在 #11191 中完成
- 将 astral-sh/setup-uv 升级到 5,由 @dependabot 在 #11205 中完成
- 将
ruff升级到 v0.9.0,由 @sydney-runkle 在 #11254 中完成 - 定期更新
uv.lock依赖项,由 @sydney-runkle 在 #11333 中完成 - 添加
check_pydantic_core_version()函数,由 @Viicos 在 #11324 中完成 - 移除
greenlet开发依赖项,由 @Viicos 在 #11351 中完成 - 将
pydantic-core升级到 v2.28.0,由 @Viicos 在 #11364 中完成
新特性¶
- 支持同时具有默认值、界限或约束的未替代类型变量,由 @FyZzyss 在 #10789 中完成
- 向
FieldInfo添加default_factory_takes_validated_data属性,由 @Viicos 在 #11034 中完成 - 当泛型别名在
type[]内部使用时引发更好的错误,由 @Viicos 在 #11088 中完成 - 正确支持 PEP 695 泛型语法,由 @Viicos 在 #11189 中完成
- 正确支持类型变量默认值,由 @Viicos 在 #11332 中完成
变更¶
- 重做
create_model字段定义格式,由 @Viicos 在 #11032 中完成 - 当字段被注解为 final 且带有默认值时发出弃用警告,由 @Viicos 在 #11168 中完成
- 弃用在实例上访问
model_fields和model_computed_fields,由 @Viicos 在 #11169 中完成 - 将路径类型的核心 schema 生成逻辑移到
GenerateSchema类中,由 @sydney-runkle 在 #10846 中完成 - 将
dequeschema 生成移至GenerateSchema类,以完成prepare_annotations_for_known_type变通方法的移除,由 @sydney-runkle 在 #11239 中完成 - 将
Mappingschema 生成移至GenerateSchema,以完成prepare_annotations_for_known_type变通方法的移除,由 @sydney-runkle 在 #11247 中完成 - 移除对 Python 3.8 的支持,由 @sydney-runkle 在 #11258 中完成
- 禁用
pydantic-core核心 schema 验证,由 @sydney-runkle 在 #11271 中完成
性能¶
- 仅在 schema 构建期间需要时才评估
FieldInfo注解,由 @Viicos 在 #10769 中完成 - 优化对
get_type_ref的调用,由 @Viicos 在 #10863 中完成 - 通过缓存 setter 函数提高 Pydantic 模型
__setattr__性能,由 @MarkusSintonen 在 #10868 中完成 - 提高注解应用性能,由 @Viicos 在 #11186 中完成
- 提高
_typing_extra模块的性能,由 @Viicos 在 #11255 中完成 - 重构和优化 schema 清理逻辑,由 @Viicos 和 @MarkusSintonen 在 #11244 中完成
修复¶
- 添加
_internal/_validators.py的验证测试,由 @tkasuz 在 #10763 中完成 - 改进
TypeAdapter实例的 repr,由 @sydney-runkle 在 #10872 中完成 - 回滚“ci:使用本地构建的带有调试符号的 pydantic-core”,由 @sydney-runkle 在 #10942 中完成
- 重新启用所有 FastAPI 测试,由 @tamird 在 #10948 中完成
- 修复 HISTORY.md 中的拼写错误,由 @felixxm 在 #11077 中完成
- 在 mypy 插件中,将具有默认值的 final 字段推断为类变量,由 @Viicos 在 #11121 中完成
- 如果使用 PEP 695 类型别名,递归地解包
Literal值,由 @Viicos 在 #11114 中完成 - 覆盖
ModelMetaclass上的__subclasscheck__以避免内存泄漏和性能问题,由 @Viicos 在 #11116 中完成 - 移除未使用的
_extract_get_pydantic_json_schema()参数,由 @Viicos 在 #11155 中完成 - 将 FastAPI 和 SQLModel 添加到第三方测试中,由 @sydney-runkle 在 #11044 中完成
- 修复第三方测试的条件表达式语法,由 @Viicos 在 #11162 中完成
- 将 FastAPI 测试移至第三方工作流,由 @Viicos 在 #11164 中完成
- 改进歧视联合对无效联合变体的错误消息,由 @Viicos 在 #11161 中完成
- 如果使用
Annotated形式,解包 PEP 695 类型别名,由 @Viicos 在 #11109 中完成 - 在第三方失败的问题创建中包含
openapi-python-client检查,使用main分支,由 @sydney-runkle 在 #11182 中完成 - 添加 pandera 第三方测试,由 @Viicos 在 #11193 中完成
- 添加 ODMantic 第三方测试,由 @sydney-runkle 在 #11197 中完成
- 在
deprecated_instance_property警告中添加缺失的 stacklevel,由 @Viicos 在 #11200 中完成 - 复制
WithJsonSchemaschema 以避免共享变异数据,由 @thejcannon 在 #11014 中完成 - 在参数化另一个模型时,不缓存参数化模型,由 @Viicos 在 #10704 中完成
- 重新启用 Beanie 第三方测试,由 @Viicos 在 #11214 中完成
- 向
CoreMetadata定义添加歧视联合相关元数据条目,由 @Viicos 在 #11216 中完成 - 整合
_Definitions类中的 schema 定义逻辑,由 @Viicos 在 #11208 中完成 - 在 mypy 插件中支持使用
root类型的值初始化根模型字段,由 @Viicos 在 #11212 中完成 - 修复数据类和
use_attribute_docstrings的各种问题,由 @Viicos 在 #11246 中完成 - 仅在
decimal_places_validator中需要时计算标准化小数位数,由 @misrasaurabh1 在 #11281 中完成 - 修复验证错误文档中两个错位的句子,由 @ananiavito 在 #11302 中完成
- 修复文档中 mkdocstrings 清单示例,由 @pawamoy 在 #11311 中完成
- 在 mypy 插件中添加对
validation_alias的支持,由 @Viicos 在 #11295 中完成 - 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos 在 #11298 中完成
- 简化
GenerateJsonSchema.literal_schema()实现,由 @misrasaurabh1 在 #11321 中完成 - 为
ClickHouseDsn添加额外的允许方案,由 @Maze21127 在 #11319 中完成 - 将 decimal 约束强制转换为
Decimal实例,由 @Viicos 在 #11350 中完成 - 修复年份为零时的
ValueError,由 @davidhewitt 在 pydantic-core#1583 中完成
新贡献者¶
- @FyZzyss 在 #10789 中做出了首次贡献
- @tamird 在 #10948 中做出了首次贡献
- @felixxm 在 #11077 中做出了首次贡献
- @alexprabhat99 在 #11082 中做出了首次贡献
- @Kharianne 在 #11111 中做出了首次贡献
- @mdaffad 在 #11177 中做出了首次贡献
- @thejcannon 在 #11014 中做出了首次贡献
- @thomasfrimannkoren 在 #11251 中做出了首次贡献
- @usernameMAI 在 #11275 中做出了首次贡献
- @ananiavito 在 #11302 中做出了首次贡献
- @pawamoy 在 #11311 中做出了首次贡献
- @Maze21127 在 #11319 中做出了首次贡献
v2.10.6 (2025-01-23)¶
更新内容¶
修复¶
- 修复 JSON Schema 引用收集与
'examples'键的问题,由 @Viicos 在 #11325 中完成 - 修复 url python 序列化问题,由 @sydney-runkle 在 #11331 中完成
v2.10.5 (2025-01-08)¶
更新内容¶
修复¶
- 移除 Pydantic 模型自定义 MRO 实现,由 @Viicos 在 #11184 中完成
- 修复联合类型的 URL 序列化,由 @sydney-runkle 在 #11233 中完成
v2.10.4 (2024-12-18)¶
更新内容¶
打包¶
- 将
pydantic-core升级到 v2.27.2,由 @davidhewitt 在 #11138 中完成
修复¶
- 修复
AnyUrl对象的比较,由 @alexprabhat99 在 #11082 中完成 - 正确获取函数的 PEP 695 类型参数,不从签名获取注解,由 @Viicos 在 #11093 中完成
- 在函数 schema 中包含 JSON Schema 输入核心 schema,由 @Viicos 在 #11085 中完成
- 向
_BaseUrl添加len以避免 TypeError,由 @Kharianne 在 #11111 中完成 - 确保从已见引用中移除类型引用,由 @Viicos 在 #11143 中完成
新贡献者¶
- @FyZzyss 在 #10789 中做出了首次贡献
- @tamird 在 #10948 中做出了首次贡献
- @felixxm 在 #11077 中做出了首次贡献
- @alexprabhat99 在 #11082 中做出了首次贡献
- @Kharianne 在 #11111 中做出了首次贡献
v2.10.3 (2024-12-03)¶
更新内容¶
修复¶
- 当在 Pydantic 数据类上设置
defer_build时设置字段,由 @Viicos 在 #10984 中完成 - 不解析
dict核心 schema 键的 JSON Schema 引用,由 @Viicos 在 #10989 中完成 - 在评估
PlainSerializer和WrapSerializer函数的返回类型时使用函数的全局变量,由 @Viicos 在 #11008 中完成 - 修复 URL 的 host required 强制,使其与 v2.9 行为兼容,由 @sydney-runkle 在 #11027 中完成
- 向
FieldInfo添加default_factory_takes_validated_data属性,由 @Viicos 在 #11034 中完成 - 修复
serialization模式下的 URL json schema,由 @sydney-runkle 在 #11035 中完成
v2.10.2 (2024-11-25)¶
更新内容¶
修复¶
- 仅在 schema 构建期间需要时才评估 FieldInfo 注解,由 @Viicos 在 #10769 中完成
- 不对私有字段评估注解,由 @Viicos 在 #10962 中完成
- 支持
Secret类型和Url类型的任何序列化,由 @sydney-runkle 在 #10947 中完成 - 修复
Field.default的类型提示以兼容 Python 3.8 和 3.9,由 @Viicos 在 #10972 中完成 - 为 URL 类型添加哈希支持,由 @sydney-runkle 在 #10975 中完成
- 对类型检查器隐藏
BaseModel.__replace__定义,由 @Viicos 在 #10979 中完成
v2.10.1 (2024-11-21)¶
更新内容¶
打包¶
- 将
pydantic-core版本升级到v2.27.1,由 @sydney-runkle 在 #10938 中完成
修复¶
- 在实例化参数化的
TypeAdapter时使用正确的帧,由 @Viicos 在 #10893 中完成 - 放宽对
default_factory工具中已验证数据的检查,由 @sydney-runkle 在 #10909 中完成 - 修复
model_fields和model_computed_fields的类型检查问题,由 @sydney-runkle 在 #10911 中完成 - 在 stdlib
dataclass的 schema 生成期间使用父配置,由 @sydney-runkle 在 #10928 中完成 - 在评估序列化器和
computed_field返回类型时使用函数的globals,由 @Viicos 在 #10929 中完成 - 修复 URL 约束应用,由 @sydney-runkle 在 #10922 中完成
- 修复不同验证方法下的 URL 相等性,由 @sydney-runkle 在 #10934 中完成
- 修复当指定为
''时 JSON schema 标题的问题,由 @sydney-runkle 在 #10936 中完成 - 修复
complex推理的python模式序列化,由 @sydney-runkle 在 pydantic-core#1549 中完成
新贡献者¶
v2.10.0 (2024-11-20)¶
v2.10.0 中发布的代码实际上与 v2.10.0b2 的代码相同。
请参阅 v2.10 发布博客文章了解亮点!
更新内容¶
打包¶
- 将
pydantic-core升级到v2.27.0,由 @sydney-runkle 在 #10825 中完成 - 将 pdm 替换为 uv,由 @frfahim 在 #10727 中完成
新功能¶
- 支持
fractions.Fraction,由 @sydney-runkle 在 #10318 中完成 - 支持
Hashable进行 JSON 验证,由 @sydney-runkle 在 #10324 中完成 - 为
linux系统添加SocketPath类型,由 @theunkn0wn1 在 #10378 中完成 - 允许 JSON schema
examples中使用任意引用,由 @sydney-runkle 在 #10417 中完成 - 支持 Pydantic 数据类的
defer_build,由 @Viicos 在 #10313 中完成 - 为嵌套的 v1 模型添加 v1 / v2 不兼容警告,由 @sydney-runkle 在 #10431 中完成
- 添加对解包
TypedDict的支持,以使用@validate_call类型提示可变关键字参数,由 @Viicos 在 #10416 中完成 - 支持
protected_namespaces中的编译模式,由 @sydney-runkle 在 #10522 中完成 - 添加对 JSON schema 中
propertyNames的支持,由 @FlorianSW 在 #10478 中完成 - 为 Python 3.13+ 支持添加
__replace__协议,由 @sydney-runkle 在 #10596 中完成 - 为 JSON schema 生成公开
sort方法,由 @sydney-runkle 在 #10595 中完成 - 添加
@validate_call可调用参数的运行时验证,由 @kc0506 在 #10627 中完成 - 添加
experimental_allow_partial支持,由 @samuelcolvin 在 #10748 中完成 - 支持将已验证数据作为参数的默认工厂,由 @Viicos 在 #10678 中完成
- 允许子类化
ValidationError和PydanticCustomError,由 @Youssefares 在 pydantic/pydantic-core#1413 中完成 - 为
experimental_allow_partial添加trailing-strings支持,由 @sydney-runkle 在 #10825 中完成 - 为
TypeAdapter添加rebuild()方法并简化defer_build模式,由 @sydney-runkle 在 #10537 中完成 - 改进
TypeAdapter实例的 repr,由 @sydney-runkle 在 #10872 中完成
更改¶
- 在接口更稳定之前,不允许自定义
SchemaGenerator,由 @sydney-runkle 在 #10303 中完成 - 在
TypeAdapters上干净地执行defer_build,移除实验性标志,由 @sydney-runkle 在 #10329 中完成 - 修复泛型子类的
mro,由 @kc0506 在 #10100 中完成 - 在 JSON Schema 标题生成时去除空格,由 @sydney-runkle 在 #10404 中完成
- 为
Base64Bytes类型使用b64decode和b64encode,由 @sydney-runkle 在 #10486 中完成 - 放宽受保护命名空间配置默认值,由 @sydney-runkle 在 #10441 中完成
- 如果实例的 origin 是 OG 类的子类,则重新验证参数化泛型,由 @sydney-runkle 在 #10666 中完成
- 如果在
@dataclass装饰器和__pydantic_config__属性中都指定了配置,则发出警告,由 @sydney-runkle 在 #10406 中完成 - 建议不要将
Ellipsis(...) 与Field一起使用,由 @Viicos 在 #10661 中完成 - 将 pydantic url 类型迁移到子类化而不是注解方法,由 @sydney-runkle 在 #10662 中完成
- 更改
Literal和Enums的 JSON schema 生成,由 @Viicos 在 #10692 中完成 - 在替换类型变量时简化涉及
Any或Never的联合,由 @Viicos 在 #10338 中完成 - 解码
base64字节时不需要填充,由 @bschoenmaeckers 在 pydantic/pydantic-core#1448 中完成 - 支持从公元前 1 年开始的所有日期,由 @changhc 在 pydantic/speedate#77 中完成
性能¶
- Schema 清理:在 schema 遍历期间跳过不必要的复制,由 @Viicos 在 #10286 中完成
- 重构注解评估的命名空间逻辑,由 @Viicos 在 #10530 中完成
- 改进边缘情况下的电子邮件正则表达式,由 @AlekseyLobanov 在 #10601 中完成
CoreMetadata重构,重点关注文档、schema 构建时间性能和降低复杂性,由 @sydney-runkle 在 #10675 中完成
修复¶
- 移除带有
field_serializer的computed_field上的守护检查,由 @nix010 在 #10390 中完成 - 修复
v2.9.0中的Predicate问题,由 @sydney-runkle 在 #10321 中完成 - 修复
annotated-types绑定,由 @sydney-runkle 在 #10327 中完成 - 将
tzdata安装要求变为可选的timezone依赖项,由 @jakob-keller 在 #10331 中完成 - 在构建
namedtuple核心 schema 时使用正确的类型命名空间,由 @Viicos 在 #10337 中完成 - 修复命名空间检查期间字符串化注解的评估,由 @Viicos 在 #10347 中完成
- 修复
IncEx类型别名定义,由 @Viicos 在 #10339 中完成 - 尝试评估私有属性的注解时不报错,由 @Viicos 在 #10358 中完成
- 修复嵌套类型语句,由 @kc0506 在 #10369 中完成
- 改进
ModelMetaclass.mro的类型,由 @Viicos 在 #10372 中完成 - 修复已弃用的
computed_field的类访问,由 @Viicos 在 #10391 中完成 - 确保
inspect.iscoroutinefunction适用于使用@validate_call装饰的协程,由 @MovisLi 在 #10374 中完成 - 修复在类上使用带有 PEP 695 的
validate_call时的NameError,由 @kc0506 在 #10380 中完成 - 修复
ZoneInfo与各种无效类型的兼容性,由 @sydney-runkle 在 #10408 中完成 - 修复带有注解的空
model_config上的PydanticUserError,由 @cdwilson 在 #10412 中完成 - 修复
_IncEx类型别名中的方差问题,只允许True,由 @Viicos 在 #10414 中完成 - 修复使用
PlainValidator时序列化 schema 的生成,由 @Viicos 在 #10427 中完成 - 修复序列化 schema 包含引用时 schema 生成错误,由 @Viicos 在 #10444 中完成
- 在为
json_schema_input_type生成 schema 时尽可能内联引用,由 @Viicos 在 #10439 中完成 - 修复
Representation中的递归参数,由 @Viicos 在 #10480 中完成 - 修复内置函数类型的表示,由 @kschwab 在 #10479 中完成
- 为十进制约束(
max_digits和decimal_places)添加 python 验证器,由 @sydney-runkle 在 #10506 中完成 - 在 schema 生成期间仅从当前类获取
__pydantic_core_schema__,由 @Viicos 在 #10518 中完成 - 修复
BaseModel弃用警告的stacklevel,由 @sydney-runkle 在 #10520 中完成 - 修复
BaseModel.__init__中的警告stacklevel,由 @Viicos 在 #10526 中完成 - 改进判别器应用程序中不可评估引用的错误处理,由 @sydney-runkle 在 #10440 中完成
- 更改
ConfigWrapper.core_config的签名以直接获取标题,由 @Viicos 在 #10562 中完成 - 对于没有配置的数据类,不要使用堆栈中的前一个配置,由 @Viicos 在 #10576 中完成
- 修复
mode='python'的 IP 类型的序列化,由 @sydney-runkle 在 #10594 中完成 - 支持
Base64Etc类型的约束应用,由 @sydney-runkle 在 #10584 中完成 - 修复
validate_call忽略Annotated中Field的问题,由 @kc0506 在 #10610 中完成 - 当
Self无效时引发错误,由 @kc0506 在 #10609 中完成 - 使用
core_schema.InvalidSchema而不是元数据注入 + 检查,由 @sydney-runkle 在 #10523 中完成 - 调整类型别名逻辑,由 @kc0506 在 #10643 中完成
- 支持将
type与typing.Self和类型别名一起使用,由 @kc0506 在 #10621 中完成 - 为
Field和PrivateAttr函数使用重载,由 @Viicos 在 #10651 中完成 - 清理
mypy插件实现,由 @Viicos 在 #10669 中完成 - 正确检查
typing_extensions变体的TypeAliasType,由 @Daraan 在 #10713 中完成 - 允许
BaseModel.model_copy()中的任何映射,由 @Viicos 在 #10751 中完成 - 修复 url 的
isinstance行为,由 @sydney-runkle 在 #10766 中完成 - 确保
cached_property可以设置在 Pydantic 模型上,由 @Viicos 在 #10774 中完成 - 修复字面量中基本类型的相等性检查,由 @sydney-runkle 在 pydantic/pydantic-core#1459 中完成
- 正确强制执行 URL 的
host_required,由 @Viicos 在 pydantic/pydantic-core#1488 中完成 - 修复当
coerce_numbers_to_str启用且字符串包含无效 Unicode 字符时的问题,由 @andrey-berenda 在 pydantic/pydantic-core#1515 中完成 - 修复
Enum中complex值的序列化,由 @changhc 在 pydantic/pydantic-core#1524 中完成 - 重构
_typing_extra模块,由 @Viicos 在 #10725 中完成 - 支持 URL 的直观相等性,由 @sydney-runkle 在 #10798 中完成
- 将
bytearray添加到TypeAdapter.validate_json签名中,由 @samuelcolvin 在 #10802 中完成 - 确保在将方法描述符用作
Field的默认值时执行类访问,由 @Viicos 在 #10816 中完成 - 修复
validate_call的循环导入问题,由 @sydney-runkle 在 #10807 中完成 - 修复使用引用其他类型别名的类型别名时的错误,由 @Viicos 在 #10809 中完成
- 修复
IncEx类型别名以与 mypy 兼容,由 @Viicos 在 #10813 中完成 - 使
__signature__成为惰性属性,不深度复制默认值,由 @Viicos 在 #10818 中完成 - 也使数据类的
__signature__惰性化,由 @sydney-runkle 在 #10832 中完成 - 将所有单主机 url 类从
AnyUrl继承,以保留 v2.9 的行为,由 @sydney-runkle 在 #10856 中完成
新贡献者¶
- @jakob-keller 在 #10331 中首次贡献
- @MovisLi 在 #10374 中首次贡献
- @joaopalmeiro 在 #10405 中首次贡献
- @theunkn0wn1 在 #10378 中首次贡献
- @cdwilson 在 #10412 中首次贡献
- @dlax 在 #10421 中首次贡献
- @kschwab 在 #10479 中首次贡献
- @santibreo 在 #10453 中首次贡献
- @FlorianSW 在 #10478 中首次贡献
- @tkasuz 在 #10555 中首次贡献
- @AlekseyLobanov 在 #10601 中首次贡献
- @NiclasvanEyk 在 #10667 中首次贡献
- @mschoettle 在 #10677 中首次贡献
- @Daraan 在 #10713 中首次贡献
- @k4nar 在 #10736 中首次贡献
- @UriyaHarpeness 在 #10740 中首次贡献
- @frfahim 在 #10727 中首次贡献
v2.10.0b2 (2024-11-13)¶
预发布版本,详见 GitHub 发布。
v2.10.0b1 (2024-11-06)¶
预发布版本,详见 GitHub 发布。
v2.9.2 (2024-09-17)¶
更新内容¶
修复¶
- 尝试评估私有属性的注解时不报错,由 @Viicos 在 #10358 中完成
- 添加关于设计健全
Callable判别器的注释,由 @sydney-runkle 在 #10400 中完成 - 修复使用
PlainValidator时序列化 schema 的生成,由 @Viicos 在 #10427 中完成 - 修复
Union序列化警告,由 @sydney-runkle 在 pydantic/pydantic-core#1449 中完成 - 修复
_IncEx类型别名中的方差问题,只允许True,由 @Viicos 在 #10414 中完成 - 修复
ZoneInfo与各种无效类型的验证,由 @sydney-runkle 在 #10408 中完成
v2.9.1 (2024-09-09)¶
更新内容¶
修复¶
- 修复 v2.9.0 中的 Predicate 问题,由 @sydney-runkle 在 #10321 中完成
- 修复
annotated-types绑定到>=0.6.0,由 @sydney-runkle 在 #10327 中完成 - 将
tzdata安装要求变为可选的timezone依赖项,由 @jakob-keller 在 #10331 中完成 - 修复
IncExc类型别名定义,由 @Viicos 在 #10339 中完成 - 在构建 namedtuple 核心 schema 时使用正确的类型命名空间,由 @Viicos 在 #10337 中完成
- 修复命名空间检查期间字符串化注解的评估,由 @Viicos 在 #10347 中完成
- 修复带有别名生成器的标记联合序列化,由 @sydney-runkle 在 pydantic/pydantic-core#1442 中完成
v2.9.0 (2024-09-05)¶
v2.9.0 中发布的代码实际上与 v2.9.0b2 的代码相同。
更新内容¶
打包¶
- 将
ruff升级到v0.5.0,将pyright升级到v1.1.369,由 @sydney-runkle 在 #9801 中完成 - 将
pydantic-extra-types升级到v2.9.0,由 @sydney-runkle 在 #9832 中完成 - 支持与
pdm v2.18.1兼容,由 @Viicos 在 #10138 中完成 - 将
v1版本存根升级到v1.10.18,由 @sydney-runkle 在 #10214 中完成 - 将
pydantic-core升级到v2.23.2,由 @sydney-runkle 在 #10311 中完成
新功能¶
- 添加对
ZoneInfo的支持,由 @Youssefares 在 #9896 中完成 - 添加
Config.val_json_bytes,由 @josh-newman 在 #9770 中完成 - 为 Snowflake 添加 DSN,由 @aditkumar72 在 #10128 中完成
- 支持
complex数字,由 @changhc 在 #9654 中完成 - 添加对
annotated_types.Not的支持,由 @aditkumar72 在 #10210 中完成 - 允许
WithJsonSchema注入带有http或https链接的$ref,由 @dAIsySHEng1 在 #9863 中完成 - 允许验证器自定义验证 JSON schema,由 @Viicos 在 #10094 中完成
- 支持参数化
PathLike类型,由 @nix010 在 #9764 中完成 - 添加标记联合序列化器,该序列化器尝试使用
str或callable判别器选择正确的序列化器,由 @sydney-runkle 在 pydantic/pydantic-core#1397 中完成
更改¶
- 重大更改:合并
dict类型json_schema_extra,由 @sydney-runkle 在 #9792 中完成- 有关此更改的更多信息(如何复制旧行为),请参见 此处
- 重构已知(通常是泛型)类型的注解注入,由 @sydney-runkle 在 #9979 中完成
- 将注解兼容性错误移至验证阶段,由 @sydney-runkle 在 #9999 中完成
- 改进字符串约束(如
pattern)对不兼容类型的运行时错误消息,由 @sydney-runkle 在 #10158 中完成 - 移除
'allOf'JSON schema 变通方法,由 @dpeachey 在 #10029 中完成 - 从
CoreMetadata中移除typed_dict_cls数据,由 @sydney-runkle 在 #10180 中完成 - 弃用将字典传递给
Examples类,由 @Viicos 在 #10181 中完成 - 从内部元数据构造中移除
initial_metadata,由 @sydney-runkle 在 #10194 中完成 - 使用
re.Pattern.search而不是re.Pattern.match以与rust行为保持一致,由 @tinez 在 pydantic/pydantic-core#1368 中完成 - 在
pydantic-core序列化警告中显示类型错误数据的值,由 @BoxyUwU 在 pydantic/pydantic-core#1377 中完成 - 重大更改:在
pydantic-core中,将核心 schema 中metadata的类型提示从Any->Dict[str, Any] | None更改,由 @sydney-runkle 在 pydantic/pydantic-core#1411 中完成 - 当模型验证器未返回
self时引发有用的警告,由 @sydney-runkle 在 #10255 中完成
性能¶
- 初步开始改进模块导入时间,主要使用缓存,由 @sydney-runkle 在 #10009 中完成
- 为
BaseModel使用缓存的内部导入,由 @sydney-runkle 在 #10013 中完成 - 简化内部泛型逻辑 - 移除生成器开销,由 @sydney-runkle 在 #10059 中完成
- 从类型命名空间中移除默认模块全局变量,由 @sydney-runkle 在 #10123 中完成
- 性能提升:在大多数情况下跳过缓存父命名空间,由 @sydney-runkle 在 #10113 中完成
- 使用已复制的 ns 更新 ns 堆栈,由 @sydney-runkle 在 #10267 中完成
次要内部改进¶
- ⚡️ 在
pydantic/_internal/_validators.py中将multiple_of_validator()的速度提高了 31%,由 @misrasaurabh1 在 #9839 中完成 - ⚡️ 在
pydantic/fields.py中将ModelPrivateAttr.__set_name__()的速度提高了 18%,由 @misrasaurabh1 在 #9841 中完成 - ⚡️ 在
pydantic/dataclasses.py中将dataclass()的速度提高了 7%,由 @misrasaurabh1 在 #9843 中完成 - ⚡️ 在
pydantic/_internal/_signature.py中将函数_field_name_for_signature的速度提高了 37%,由 @misrasaurabh1 在 #9951 中完成 - ⚡️ 在
pydantic/_internal/_generate_schema.py中将方法GenerateSchema._unpack_refs_defs的速度提高了 26%,由 @misrasaurabh1 在 #9949 中完成 - ⚡️ 在
pydantic/_internal/_generate_schema.py中将函数apply_each_item_validators的速度提高了 100%,由 @misrasaurabh1 在 #9950 中完成 - ⚡️ 在
pydantic/_internal/_config.py中将方法ConfigWrapper.core_config的速度提高了 28%,由 @misrasaurabh1 在 #9953 中完成
修复¶
- 尊重
Literal类型上的use_enum_values,由 @kwint 在 #9787 中完成 - 防止异构
BaseModel/RootModel继承的类型错误,由 @dmontagu 在 #9913 中完成 - 修复带有 field_validator 装饰器的方法的类型问题,由 @dmontagu 在 #9914 中完成
- 在验证器文档中将验证器工厂中的
str类型注解替换为Any,由 @maximilianfellhuber 在 #9885 中完成 - 修复分配属性 setter 时
ComputedFieldInfo.wrapped_property指针,由 @tlambert03 在 #9892 中完成 - 修复
main.IncEnx的递归类型,由 @tlambert03 在 #9924 中完成 - 允许使用
type[Annotated[...]],由 @Viicos 在 #9932 中完成 mypy插件:按字段处理冻结字段,由 @dmontagu 在 #9935 中完成- 修复
invalid-annotated-type错误代码中的拼写错误,由 @sydney-runkle 在 #9948 中完成 - 简化
uuid、url和ip类型的 schema 生成,由 @sydney-runkle 在 #9975 中完成 - 将
dateschema 移至_generate_schema.py,由 @sydney-runkle 在 #9976 中完成 - 将
decimal.Decimal验证移至_generate_schema.py,由 @sydney-runkle 在 #9977 中完成 - 简化
_std_types_schema.py中的 IP 地址 schema,由 @sydney-runkle 在 #9959 中完成 - 修复一些潜在泛型
GenerateSchema.match_type选项的类型注解,由 @sydney-runkle 在 #9961 中完成 - 向“has conflict”警告添加类名,由 @msabramo 在 #9964 中完成
- 修复
dataclass忽略 Annotated 中传递的default_factory的问题,由 @kc0506 在 #9971 中完成 - 修复
Sequence忽略discriminator的问题,由 @kc0506 在 #9980 中完成 - 修复
IPvAnyAddress和IPvAnyInterface的类型,由 @haoyun 在 #9990 中完成 - 修复
mypy插件中 v1 模型的假阳性问题,其中from_orm检查需要 from_attributes=True 配置,由 @radekwlsk 在 #9938 中完成 - 将
strict=True应用于mypy插件中的__init__,由 @kc0506 在 #9998 中完成 - 重构
deque注解的应用,由 @sydney-runkle 在 #10018 中完成 - 在未能评估前向引用时引发更好的用户错误,由 @Viicos 在 #10030 中完成
- 修复特定情况下
__pydantic_extra__注解的评估,由 @Viicos 在 #10070 中完成 - 修复
dataclasses的frozen强制执行,由 @sydney-runkle 在 #10066 中完成 - 移除处理未使用
__get_pydantic_core_schema__签名的逻辑,由 @Viicos 在 #10075 中完成 - 一致地使用
is_annotated,由 @Viicos 在 #10095 中完成 - 修复
PydanticDeprecatedSince26拼写错误,由 @kc0506 在 #10101 中完成 - 改进
pyright测试,重构模型装饰器签名,由 @Viicos 在 #10092 中完成 - 修复
ip序列化逻辑,由 @sydney-runkle 在 #10112 中完成 - 当
dataclasses的 frozen 被定义两次时发出警告,由 @mochi22 在 #10082 中完成 - 当 plain serializers 与
when_used设置为'json-unless-none'且默认值为None时,不计算 JSON Schema 默认值,由 @Viicos 在 #10121 中完成 - 修复
ImportString特殊情况,由 @sydney-runkle 在 #10137 中完成 - 黑名单默认全局变量以支持带有
__前缀注解的异构用户代码,由 @sydney-runkle 在 #10136 中完成 - 在 JSON Schema 生成期间处理带有
serializationschema 的nullableschema,由 @Viicos 在 #10132 中完成 - 重组
BaseModel注解,由 @kc0506 在 #10110 中完成 - 修复特定场景中涉及序列化 schema 的核心 schema 简化,由 @Viicos 在 #10155 中完成
- 添加对将
PrivateAttr与Annotated一起使用时的字符串化注解的支持,由 @Viicos 在 #10157 中完成 - 修复字面量和枚举 schema 的 JSON Schema
number类型,由 @Viicos 在 #10172 中完成 - 修复序列化模式下具有普通验证器的字段的 JSON Schema 生成,由 @Viicos 在 #10167 中完成
- 修复在某些场景中为函数生成无效 JSON Schemas 的问题,由 @Viicos 在 #10188 中完成
- 确保生成的 JSON Schemas 在测试中有效,由 @Viicos 在 #10182 中完成
- 修复自定义序列化器的键错误,由 @sydney-runkle 在 #10200 中完成
- 为 NatsDsn 允许的 schemes 添加 'wss',由 @swelborn 在 #10224 中完成
- 修复
Mapping和MutableMapping注解以使用映射 schema 而不是 dict schema,由 @sydney-runkle 在 #10020 中完成 - 修复受限日期的 JSON Schema 生成,由 @Viicos 在 #10185 中完成
- 修复使用枚举时判别联合 bug 回归,由 @kfreezen 在 pydantic/pydantic-core#1286 中完成
- 修复
field_serializer与计算字段一起使用时使用*的问题,由 @nix010 在 pydantic/pydantic-core#1349 中完成 - 在推断之前尝试
Union序列化器中的每个选项,由 @sydney-runkle 在 pydantic/pydantic-core#1398 中完成 - 修复
strict模式下float序列化行为,由 @sydney-runkle 在 pydantic/pydantic-core#1400 中完成 - 在 Decimal 验证逻辑中引入
exactness以改进联合验证行为,由 @sydney-runkle 在 pydantic/pydantic-core#1405 中完成 - 修复新警告断言以使用
pytest.warns(),由 @mgorny 在 #10241 中完成 - 修复
ModelMetaclass清理命名空间时崩溃的问题,由 @Viicos 在 #10242 中完成 - 修复模型重建的父命名空间问题,由 @sydney-runkle 在 #10257 中完成
- 移除命名空间的默认过滤器,由 @sydney-runkle 在 #10261 中完成
- 在
__init__中验证模型后使用身份而不是相等性,由 @Viicos 在 #10264 中完成 - 支持
int子类的BigInt序列化,由 @kxx317 在 pydantic/pydantic-core#1417 中完成 - 支持没有
info的包装验证器的签名,由 @sydney-runkle 在 #10277 中完成 - 确保在重建
dataclasses时设置__pydantic_complete__,由 @Viicos 在 #10291 中完成 - 尊重
TypeAdapter中schema_generator配置值,由 @sydney-runkle 在 #10300 中完成
新贡献者¶
pydantic¶
- @kwint 在 #9787 中首次贡献
- @seekinginfiniteloop 在 #9822 中首次贡献
- @a-alexander 在 #9848 中首次贡献
- @maximilianfellhuber 在 #9885 中首次贡献
- @karmaBonfire 在 #9945 中首次贡献
- @s-rigaud 在 #9958 中首次贡献
- @msabramo 在 #9964 中首次贡献
- @DimaCybr 在 #9972 中首次贡献
- @kc0506 在 #9971 中首次贡献
- @haoyun 在 #9990 中首次贡献
- @radekwlsk 在 #9938 中首次贡献
- @dpeachey 在 #10029 中首次贡献
- @BoxyUwU 在 #10085 中首次贡献
- @mochi22 在 #10082 中首次贡献
- @aditkumar72 在 #10128 中首次贡献
- @changhc 在 #9654 中首次贡献
- @insumanth 在 #10229 中首次贡献
- @AdolfoVillalobos 在 #10240 中首次贡献
- @bllchmbrs 在 #10270 中首次贡献
pydantic-core¶
- @kfreezen 在 pydantic/pydantic-core#1286 中首次贡献
- @tinez 在 pydantic/pydantic-core#1368 中首次贡献
- @fft001 在 pydantic/pydantic-core#1362 中首次贡献
- @nix010 在 pydantic/pydantic-core#1349 中首次贡献
- @BoxyUwU 在 pydantic/pydantic-core#1379 中首次贡献
- @candleindark 在 pydantic/pydantic-core#1404 中首次贡献
- @changhc 在 pydantic/pydantic-core#1331 中首次贡献
v2.9.0b2 (2024-08-30)¶
预发布版本,详见 GitHub 发布。
v2.9.0b1 (2024-08-26)¶
预发布版本,详见 GitHub 发布。
v2.8.2 (2024-07-03)¶
更新内容¶
修复¶
v2.8.1 (2024-07-03)¶
更新内容¶
打包¶
- 将
ruff升级到v0.5.0,将pyright升级到v1.1.369,由 @sydney-runkle 在 #9801 中完成 - 将
pydantic-core升级到v2.20.1,pydantic-extra-types升级到v2.9.0,由 @sydney-runkle 在 #9832 中完成
修复¶
- 修复 v2.7 -> v2.8 中
to_snake的重大更改,由 @sydney-runkle 在 #9812 中完成 - 修复列表约束 json schema 应用,由 @sydney-runkle 在 #9818 中完成
- 支持超过 23 的时间长度,由 @nix010 在 pydantic/speedate#64 中完成
- 修复以错误比例处理毫秒小数部分,由 @davidhewitt 在 pydantic/speedate#65 中完成
- 正确处理负小数持续时间,由 @sydney-runkle 在 pydantic/speedate#71 中完成
v2.8.0 (2024-07-01)¶
v2.8.0 中发布的代码与 v2.8.0b1 的代码功能相同。
更新内容¶
打包¶
- 新版本发布时自动更新引文版本,由 @sydney-runkle 在 #9673 中完成
- 将 pyright 升级到
v1.1.367并为管道 API 添加类型检查测试,由 @adriangb 在 #9674 中完成 - 将
pydantic.v1存根更新到v1.10.17,由 @sydney-runkle 在 #9707 中完成 - 通用软件包更新以准备
v2.8.0b1,由 @sydney-runkle 在 #9741 中完成 - 将
pydantic-core升级到v2.20.0,由 @sydney-runkle 在 #9745 中完成 - 添加对 Python 3.13 的支持,由 @sydney-runkle 在 #9743 中完成
- 将用于
pdm.lock的pdm版本更新到 v2.16.1,由 @sydney-runkle 在 #9761 中完成 - 更新到
ruffv0.4.8,由 @Viicos 在 #9585 中完成
新功能¶
- 实验性:支持
TypeAdapter的defer_build,由 @MarkusSintonen 在 #8939 中完成 - 在 json schema 中实现
deprecated字段,由 @NeevCohen 在 #9298 中完成 - 实验性:添加管道 API,由 @adriangb 在 #9459 中完成
- 添加对编程标题生成 的支持,由 @NeevCohen 在 #9183 中完成
- 实现
fail_fast功能,由 @uriyyo 在 #9708 中完成 - 添加
ser_json_inf_nan='strings'模式以生成有效 JSON,由 @josh-newman 在 pydantic/pydantic-core#1307 中完成
更改¶
- 当忽略的
Annotated字段中设置了“alias”时添加警告,由 @nix010 在 #9170 中完成 - 支持 JSON schema 中某些可序列化默认值的序列化,由 @sydney-runkle 在 #9624 中完成
- 放宽
create_model中__validators__值的类型规范,由 @sydney-runkle 在 #9697 中完成 - 重大更改:改进
smart联合匹配逻辑,由 @sydney-runkle 在 pydantic/pydantic-core#1322 中完成。您可以在 此处 阅读有关我们的smart联合匹配逻辑的更多信息。在某些情况下,如果需要旧行为,您可以切换到left-to-right模式并更改Union成员的顺序。
性能¶
内部改进¶
- ⚡️ 在
pydantic/v1/error_wrappers.py中将_display_error_loc()的速度提高了 25%,由 @misrasaurabh1 在 #9653 中完成 - ⚡️ 在
pydantic/json_schema.py中将_get_all_json_refs()的速度提高了 34%,由 @misrasaurabh1 在 #9650 中完成 - ⚡️ 在
pydantic/dataclasses.py中将is_pydantic_dataclass()的速度提高了 41%,由 @misrasaurabh1 在 #9652 中完成 - ⚡️ 在
pydantic/alias_generators.py中将to_snake()的速度提高了 27%,由 @misrasaurabh1 在 #9747 中完成 - ⚡️ 在
pydantic/_internal/_decorators.py中将unwrap_wrapped_function()的速度提高了 93%,由 @misrasaurabh1 在 #9727 中完成
修复¶
- 将
__spec__.parent替换为__package__,由 @hramezani 在 #9331 中完成 - 修复
Sequence类型的输出模型 JSON Schema,由 @anesmemisevic 在 #9303 中完成 - 修复
_frame_depth的类型,由 @Viicos 在 #9353 中完成 - 使
ImportString与 json schema 兼容,由 @amitschang 在 #9344 中完成 - 在类型检查器中从
__init__签名隐藏私有属性(PrivateAttr),由 @idan22moral 在 #9293 中完成 - 使
TypeVar默认值的检测对 CPythonPEP-696实现具有鲁棒性,由 @AlexWaygood 在 #9426 中完成 - 修复
PlainSerializer与内置类型的使用,由 @Viicos 在 #9450 中完成 - 添加更健壮的自定义验证示例,由 @ChrisPappalardo 在 #9468 中完成
- 修复
StringConstraint(strict=False)忽略strict规范的问题,由 @vbmendes 在 #9476 中完成 - 重大更改:使用 PEP 570 语法,由 @Viicos 在 #9479 中完成
- 尽可能使用
Self,由 @Viicos 在 #9479 中完成 - 在
mypy插件中不更改RootModel.model_construct签名,由 @Viicos 在 #9480 中完成 - 修复
validation_context的类型提示,由 @OhioDschungel6 在 #9508 中完成 - 支持将上下文传递给 TypeAdapter 的
dump_json/dump_python,由 @alexcouper 在 #9495 中完成 - 更新
Field()构造函数的类型签名,由 @bjmc 在 #9484 中完成 - 改进内置别名生成器,由 @sydney-runkle 在 #9561 中完成
- 修复
TypeAdapter的类型,由 @Viicos 在 #9570 中完成 - 在 BaseModel 的
__setstate__中为私有字段添加回退默认值,由 @anhpham1509 在 #9584 中完成 - 支持
PEP 746,由 @adriangb 在 #9587 中完成 - 允许验证器和序列化器函数具有默认值,由 @Viicos 在 #9478 中完成
- 修复 mypy 插件处理协变
TypeVar字段的 bug,由 @dmontagu 在 #9606 中完成 - 修复多个注解/约束应用逻辑,由 @sydney-runkle 在 #9623 中完成
- 尊重验证和 json schema 中的
regex标志,由 @sydney-runkle 在 #9591 中完成 - 修复
IpvAnyAddress上的类型提示,由 @sydney-runkle 在 #9640 中完成 - 允许在
__pydantic_extra__上指定字段,由 @dmontagu 在 #9659 中完成 - 为文件路径比较使用规范化大小写,由 @sydney-runkle 在 #9737 中完成
- 修改约束应用逻辑以允许
Optional[Decimal]上的字段约束,由 @lazyhope 在 #9754 中完成 validate_call类型参数修复,由 @sydney-runkle 在 #9760 中完成- 检查 pytest.warns() 返回的所有警告,由 @s-t-e-v-e-n-k 在 #9702 中完成
- 在正则表达式模式中重用
re.Pattern对象以允许正则表达式标志,由 @sydney-runkle 在 pydantic/pydantic-core#1318 中完成
新贡献者¶
- @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)¶
更新内容¶
打包¶
- 将
pydantic.v1升级到v1.10.16引用,由 @sydney-runkle 在 #9639 中完成
修复¶
v2.7.3 (2024-06-03)¶
更新内容¶
打包¶
- 将
pydantic-core升级到v2.18.4,由 @sydney-runkle 在 #9550 中完成
修复¶
- 修复 python 中 u 风格 unicode 字符串的问题 @samuelcolvin 在 pydantic/jiter#110 中完成
v2.7.2 (2024-05-28)¶
更新内容¶
打包¶
- 将
pydantic-core升级到v2.18.3,由 @sydney-runkle 在 #9515 中完成
修复¶
- 将
__spec__.parent替换为__package__,由 @hramezani 在 #9331 中完成 - 修复带有前导一元减号的
int验证,由 @RajatRajdeep 在 pydantic/pydantic-core#1291 中完成 - 修复枚举的
str子类验证,由 @sydney-runkle 在 pydantic/pydantic-core#1273 中完成 - 支持
Literal和Enum中的BigInt,由 @samuelcolvin 在 pydantic/pydantic-core#1297 中完成 - 修复:uuid - 允许
str子类作为输入,由 @davidhewitt 在 pydantic/pydantic-core#1296 中完成
v2.7.1 (2024-04-23)¶
更新内容¶
打包¶
- 将
pydantic-core升级到v2.18.2,由 @sydney-runkle 在 #9307 中完成
新功能¶
- Ftp 和 Websocket 连接字符串支持,由 @CherrySuryp 在 #9205 中完成
更改¶
- 当存在
…时,使用字段描述作为 RootModel schema 描述,由 @LouisGobert 在 #9214 中完成
修复¶
- 修复
validation_alias与AliasChoices和AliasPath的model_construct行为,由 @sydney-runkle 在 #9223 中完成 - 回滚
typing.Literal并在 TYPE_CHECKING 块外导入它,由 @frost-nzcr4 在 #9232 中完成 - 修复
Secret序列化 schema,适用于联合类型,由 @sydney-runkle 在 #9240 中完成 - 修复
strict应用到带有use_enum_values的function-after,由 @sydney-runkle 在 #9279 中完成 - 处理在定义
model_post_init的类上model_construct失败并出现AttributeError的情况,由 @babygrimes 在 #9168 中完成 - 修复带有配置类型的
model_json_schema,由 @NeevCohen 在 #9287 中完成 - 支持多个零作为
int,由 @samuelcolvin 在 pydantic/pydantic-core#1269 中完成 - 修复带有前导一元加号的
int验证,由 @cknv 在 pydantic/pydantic-core#1272 中完成 - 修复
extra != 'ignore'和from_attributes=True之间的交互,由 @davidhewitt 在 pydantic/pydantic-core#1276 中完成 - 将
Enum的missing函数中的错误作为ValidationError处理,由 @sydney-runkle 在 pydantic/pydantic-core#1274 中完成 - 修复
Iterable验证的内存泄漏,由 @davidhewitt 在 pydantic/pydantic-core#1271 中完成
新贡献者¶
- @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)¶
v2.7.0 中发布的代码实际上与 v2.7.0b1 的代码相同。
更新内容¶
打包¶
- 重组
pyproject.toml部分,由 @Viicos 在 #8899 中完成 - 将
pydantic-core升级到v2.18.1,由 @sydney-runkle 在 #9211 中完成 - 采用
jiterv0.2.0,由 @samuelcolvin 在 pydantic/pydantic-core#1250 中完成
新功能¶
- 从
FieldInfo.description中提取属性 docstrings,由 @Viicos 在 #6563 中完成 - 添加
with_config装饰器以符合类型规范,由 @Viicos 在 #8611 中完成 - 允许在
ByteSize.human_readable的结果中可选地分隔值和单位,由 @jks15satoshi 在 #8706 中完成 - 添加泛型
Secret基类型,由 @conradogarciaberrotaran 在 #8519 中完成 - 在文档中利用
Sphinx索引进行交叉引用,由 @Viicos 在 #8682 中完成 - 添加环境变量以禁用插件,由 @geospackle 在 #8767 中完成
- 添加对
deprecated字段的支持,由 @Viicos 在 #8237 中完成 - 允许
field_serializer('*'),由 @ornariece 在 #9001 中完成 - 处理
model_config被定义为模型属性的情况,由 @alexeyt101 在 #9004 中完成 - 更新
create_model()以支持typing.Annotated作为输入,由 @wannieman98 在 #8947 中完成 - 添加
ClickhouseDsn支持,由 @solidguy7 在 #9062 中完成 - 添加对
pattern字段的re.Pattern[str]的支持,由 @jag-k 在 #9053 中完成 - 支持
serialize_as_any运行时设置,由 @sydney-runkle 在 #8830 中完成 - 添加对
typing.Self的支持,由 @Youssefares 在 #9023 中完成 - 能够将
context传递给序列化,由 @ornariece 在 #8965 中完成 - 添加带有 flarelytics 集成的文档反馈小部件,由 @sydney-runkle 在 #9129 中完成
- 支持在 Python 中解析部分 JSON 字符串,由 @samuelcolvin 在 pydantic/jiter#66 中完成
在 v2.7.0 而非 v2.7.0b1 中最终确定
- 添加对字段级别数字到字符串强制转换选项的支持,由 @NeevCohen 在 #9137 中完成
- 更新序列化实用程序的
warnings参数以允许引发警告,由 @Lance-Drane 在 #9166 中完成
更改¶
- 更正
model_construct行为与extra的文档和逻辑,由 @sydney-runkle 在 #8807 中完成 - 改进不正确
RootModel子类的错误消息,由 @sydney-runkle 在 #8857 中完成 - 重大更改:使用
PEP570语法,由 @Viicos 在 #8940 中完成 - 为单个项目字面量的 JSON schema 添加
enum和type,由 @dmontagu 在 #8944 中完成 - 弃用
update_json_schema内部函数,由 @sydney-runkle 在 #9125 中完成 - 将持续时间序列化为小时分钟秒,而不是仅秒,由 @kakilangit 在 pydantic/speedate#50 中完成
- 在解析为 int 和 float 之前修剪字符串,作者:@hungtsetse,提交于 pydantic/pydantic-core#1203
性能¶
enum验证器改进,作者:@samuelcolvin,提交于 #9045- 将
enum验证和序列化移至 Rust,作者:@samuelcolvin,提交于 #9064 - 改进嵌套数据类的模式生成,作者:@sydney-runkle,提交于 #9114
- JSON 中 ASCII Python 字符串创建的快速路径,作者:@samuelcolvin,提交于 pydantic/jiter#72
aarch64上的 SIMD 整数和字符串 JSON 解析(注意: x86 上的 SIMD 将在未来的版本中实现),作者:@samuelcolvin,提交于 pydantic/jiter#65- 支持
jiter的 JSONCow<str>,作者:@davidhewitt,提交于 pydantic/pydantic-core#1231 - 重大性能改进:更新到 PyO3 0.21 final,作者:@davidhewitt,提交于 pydantic/pydantic-core#1248
- 缓存 Python 字符串,作者:@samuelcolvin,提交于 pydantic/pydantic-core#1240
修复¶
- 修复某些
Sequence的严格解析,作者:@sydney-runkle,提交于 #8614 - 添加
__qualname__存在性检查,作者:@anci3ntr0ck,提交于 #8642 - 处理
__pydantic_extra__注解是字符串或继承的,作者:@alexmojaki,提交于 #8659 - 修复
NameEmail的 json 验证,作者:@Holi0317,提交于 #8650 - 修复
BaseModel中属性访问的类型安全问题,作者:@bluenote10,提交于 #8651 - 修复
mypy插件和no_strict_optional = True的 bug,作者:@dmontagu,提交于 #8666 - 修复
ByteSize错误type更改,作者:@sydney-runkle,提交于 #8681 - 修复数据类中继承注解的问题,作者:@sydney-runkle,提交于 #8679
- 修复间接定义引用导致的核心模式生成中的回归问题,作者:@dmontagu,提交于 #8702
- 修复普通验证器不支持类型的问题,作者:@sydney-runkle,提交于 #8710
- 回滚 2.6 版本中存在问题的修复,修复模式构建 bug,作者:@sydney-runkle,提交于 #8718
- 修复 TypeDict 忽略
__pydantic_config__的问题,作者:@13sin,提交于 #8734 - 修复
pytest v8.0.0测试失败问题,原因是pytest.warns()开始在pytest.raises()内部工作,作者:@mgorny,提交于 #8678 - 为
mypy插件使用 1.x 中的is_valid_field,作者:@DanielNoord,提交于 #8738 - 更好地支持
mypy严格相等标志,作者:@dmontagu,提交于 #8799 - 带有 Annotated 类型的
model_json_schema导出缺少“必需”参数,作者:@LouisGobert,提交于 #8793 - 修复
FieldInfo.__repr_args__中默认值的包含问题,作者:@sydney-runkle,提交于 #8801 - 修复不在子类模块命名空间中的数据类基类中转发引用的解析问题,作者:@matsjoyce-refeyn,提交于 #8751
- 修复
BaseModel类型注解以兼容typing.get_type_hints,作者:@devmonkey22,提交于 #7680 - 修复:允许
AliasGenerator使用空字符串别名,作者:@sydney-runkle,提交于 #8810 - 修复测试以及
date->datetime时区假设修复,作者:@sydney-runkle,提交于 #8823 - 修复使用
ast.Str导致的弃用警告,作者:@Viicos,提交于 #8837 - 添加缺少的
deprecated装饰器,作者:@Viicos,提交于 #8877 - 修复
NameEmail的序列化问题,如果名称包含电子邮件地址,作者:@NeevCohen,提交于 #8860 - 在模式生成错误消息中添加类信息,作者:@Czaki,提交于 #8917
- 使
TypeAdapter的类型与特殊形式兼容,作者:@adriangb,提交于 #8923 - 修复
enum的 ref 模式中配置行为被固化的问题,作者:@dmontagu,提交于 #8920 - 关于错误
model_json_schema用法的更有帮助的错误信息,作者:@sydney-runkle,提交于 #8928 - 修复嵌套判别联合模式生成,第二部分,作者:@sydney-runkle,提交于 #8932
- 修复带有判别符的嵌套数据类/TypedDicts 的模式构建,作者:@sydney-runkle,提交于 #8950
- 移除判别联合定义模式生成中不必要的逻辑,作者:@sydney-runkle,提交于 #8951
- 修复
mypy插件中可选值的处理问题,作者:@dmontagu,提交于 #9008 - 修复
PlainSerializer与标准类型构造函数的使用问题,作者:@sydney-runkle,提交于 #9031 - 移除插件中关于配置的不必要警告,作者:@dmontagu,提交于 #9039
- 修复默认值序列化问题,作者:@NeevCohen,提交于 #9066
- 修复
Model.__getattr__()中的额外字段检查,作者:@NeevCohen,提交于 #9082 - 修复从父类继承的
ClassVar转发引用问题,作者:@alexmojaki,提交于 #9097 - 修复严格模式下序列验证器问题,作者:@andresliszt,提交于 #8977
- 改进当字段名与父模型中的字段名冲突时的警告信息,作者:@chan-vince,提交于 #9105
- 如果字段在子类中未重新定义,则不警告被遮蔽的字段,作者:@chan-vince,提交于 #9111
- 修复判别联合与未替换类型变量的 bug,作者:@sydney-runkle,提交于 #9124
- 支持当传递给
Sequence[blah blah blah]时deque的序列化,作者:@sydney-runkle,提交于 #9128 - 在
model_post_init中从超类型初始化私有属性,作者:@Viicos,提交于 #9134 - 修复
model_construct与validation_alias的问题,作者:@ornariece,提交于 #9144 - 确保 json-schema 生成器处理
Literalnull类型,作者:@bruno-f-cruz,提交于 #9135 - v2.7.0 中已修复:修复允许额外泛型问题,作者:@dmontagu,提交于 #9193
新贡献者¶
- @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)¶
更新内容¶
修复¶
- 修复
AliasGenerator与computed_field装饰器配合使用的问题,作者:@sydney-runkle,提交于 #8806 - 修复嵌套判别联合模式生成,第二部分,作者:@sydney-runkle,提交于 #8932
- 修复 API 延迟导致的
no_strict_optional=True问题,作者:@dmontagu,提交于 #8826
v2.6.3 (2024-02-27)¶
更新内容¶
打包¶
- 更新文档中的
pydantic-settings版本,作者:@hramezani,提交于 #8906
修复¶
- 修复判别联合模式生成 bug,作者:@sydney-runkle,提交于 #8904
v2.6.2 (2024-02-23)¶
更新内容¶
打包¶
- 升级到
pydantic-core2.16.3,作者:@sydney-runkle,提交于 #8879
修复¶
- 'YYYY-MM-DD' 日期字符串强制转换为 datetime 不应推断时区,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1193
v2.6.1 (2024-02-05)¶
更新内容¶
打包¶
- 升级到
pydantic-core2.16.2,作者:@sydney-runkle,提交于 #8717
修复¶
- 修复
mypy插件和no_strict_optional = True的 bug,作者:@dmontagu,提交于 #8666 - 修复
ByteSize错误type更改,作者:@sydney-runkle,提交于 #8681 - 修复数据类中继承
Field注解的问题,作者:@sydney-runkle,提交于 #8679 - 修复间接定义引用导致的核心模式生成中的回归问题,作者:@dmontagu,提交于 #8702
- 修复
PlainValidator不支持类型的问题,作者:@sydney-runkle,提交于 #8710 - 回滚 2.6 版本中存在问题的修复,修复模式构建 bug,作者:@sydney-runkle,提交于 #8718
- 修复
Union中元组大小不正确的警告,作者:@davidhewitt,提交于 pydantic/pydantic-core#1174 - 修复
computed_fieldJSON 序列化器exclude_none行为,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1187
v2.6.0 (2024-01-23)¶
v2.6.0 中发布的代码实际上与 v2.6.0b1 中的代码相同。
更新内容¶
打包¶
- 检查
email-validator版本 >= 2.0,作者:@commonism,提交于 #6033 - 将 `ruff`` 目标版本升级到 Python 3.8,作者:@Elkiwa,提交于 #8341
- 更新到
pydantic-extra-types==2.4.1,作者:@yezz123,提交于 #8478 - 更新到
pyright==1.1.345,作者:@Viicos,提交于 #8453 - 将 pydantic-core 从 2.14.6 更新到 2.16.1,这些更新带来的重大更改如下所述,完整的更改日志请见 此处
新功能¶
- 添加
NatsDsn,作者:@ekeew,提交于 #6874 - 添加
ConfigDict.ser_json_inf_nan,作者:@davidhewitt,提交于 #8159 - 添加
types.OnErrorOmit,作者:@adriangb,提交于 #8222 - 支持
AliasGenerator用法,作者:@sydney-runkle,提交于 #8282 - 添加 Pydantic 人员页面到文档,作者:@sydney-runkle,提交于 #8345
- 支持
yyyy-MM-DDdatetime 解析,作者:@sydney-runkle,提交于 #8404 - 向
ByteSize类添加比特转换 #8415,作者:@luca-matei,提交于 #8507 - 使用类型
ByteSize启用 json schema 创建,作者:@geospackle,提交于 #8537 - 添加
eval_type_backport以处理旧版 Python 中的联合运算符和内置泛型下标,作者:@alexmojaki,提交于 #8209 - 添加对
dataclass字段init的支持,作者:@dmontagu,提交于 #8552 - 实现
ValidationError的 pickle 序列化,作者:@davidhewitt,提交于 pydantic/pydantic-core#1119 - 添加统一的元组验证器,可通过 PEP-646 处理“可变参数”元组,作者:@dmontagu,提交于 pydantic/pydantic-core#865
更改¶
- 放弃 Python3.7 支持,作者:@hramezani,提交于 #7188
- 放弃 Python 3.7,以及 PyPy 3.7 和 3.8,作者:@davidhewitt,提交于 pydantic/pydantic-core#1129
- 在
BaseModel构造函数中使用仅位置参数self,以避免字段名与其冲突,作者:@ariebovenberg,提交于 #8072 - 使
@validate_call返回一个函数而不是自定义描述符 - 修复了继承的绑定问题,并为验证错误添加了self/cls参数,作者:@alexmojaki,提交于 #8268 - 从 JSON schema 描述中排除
BaseModel文档字符串,作者:@sydney-runkle,提交于 #8352 - 为
model_computed_fields引入classproperty装饰器,作者:@Jocelyn-Gas,提交于 #8437 - 如果字段名与类型冲突,明确引发错误,作者:@Viicos,提交于 #8243
- 为简单类型的联合使用更严格的序列化器,作者:@alexdrydew pydantic/pydantic-core#1132
性能¶
- 添加 Codspeed 分析 Actions 工作流,作者:@lambertsbennett,提交于 #8054
- 改进
int提取,作者:@samuelcolvin,提交于 pydantic/pydantic-core#1155 - 改进递归保护的性能,作者:@samuelcolvin,提交于 pydantic/pydantic-core#1156
dataclass序列化加速,作者:@samuelcolvin,提交于 pydantic/pydantic-core#1162- 在
LazyIndexMaps中查找小型 JSON 对象时避免创建HashMap,作者:@samuelcolvin,提交于 pydantic/jiter#55 - 使用 hashbrown 加速 Python 字符串缓存,作者:@davidhewitt,提交于 pydantic/jiter#51
- 将
Peak替换为更高效的Peek,作者:@davidhewitt,提交于 pydantic/jiter#48
修复¶
- 将
getattr警告移至弃用的BaseConfig中,作者:@tlambert03,提交于 #7183 - 仅哈希
model_fields,而不是整个__dict__,作者:@alexmojaki,提交于 #7786 - 修复
mypy插件在冻结类型时处理联合类型的问题,作者:@dmontagu,提交于 #7411 - 修复未类型化
ClassVar上的mypy错误,作者:@vincent-hachin-wmx,提交于 #8138 - 在
BaseModel.__eq__中只比较 pydantic 字段,而不是整个__dict__,作者:@QuentinSoubeyranAqemia,提交于 #7825 - 更新
model_validate方法中的strict文档字符串,作者:@LukeTonin,提交于 #8223 - 修复
computed_field的重载位置,作者:@Viicos,提交于 #8227 - 修复在多个属性中使用的自定义类型类型转换问题,作者:@ianhfc,提交于 #8066
- 修复不允许
validate_call装饰器动态分配给类方法的问题,作者:@jusexton,提交于 #8249 - 修复
unittest.mock弃用警告问题,作者:@ibleedicare,提交于 #8262 - 添加了
JsonValue包含子类化的原始值的情况的测试,作者:@jusexton,提交于 #8286 - 修复 before 验证器 (classmethod) 之前的
mypy错误,作者:@sydney-runkle,提交于 #8285 - 修复
to_snake转换,作者:@jevins09,提交于 #8316 - 修复
ModelMetaclass.__prepare__的类型注解,作者:@slanzmich,提交于 #8305 - 当注解类型已包含配置时,不允许在初始化
TypeAdapter时指定config,作者:@sydney-runkle,提交于 #8365 - 修复 JSON schema 中泛型参数化递归类型别名导致命名问题,作者:@dmontagu,提交于 #8389
- 修复 pydantic people 脚本中的类型注解,作者:@shenxiangzhuang,提交于 #8402
- 添加对
dataclass签名中字段alias的支持,作者:@NeevCohen,提交于 #8387 - 修复
Field(...)在转发引用中导致模式生成 bug,作者:@dmontagu,提交于 #8494 - 修复
model_construct调用中__dict__的键顺序问题,作者:@sydney-runkle,提交于 #8500 - 修复当 globals 不包含
__name__时模块path_type创建问题,作者:@hramezani,提交于 #8470 - 修复带有
from __future__ import annotations的数据类命名空间问题,作者:@sydney-runkle,提交于 #8513 - 修复:使函数验证器类型仅为位置参数,作者:@pmmmwh,提交于 #8479
- 修复
@deprecated的用法,作者:@Viicos,提交于 #8294 - 在
model_construct调用中添加对私有属性的更多支持,作者:@sydney-runkle,提交于 #8525 - 为类型命名空间使用堆栈,作者:@dmontagu,提交于 #8378
- 修复带有 refs 类型的
TypeAliasType的模式构建 bug,作者:@dmontagu,提交于 #8526 - 支持数据类中的
pydantic.Field(repr=False),作者:@tigeryy2,提交于 #8511 - 覆盖
RootModel的dataclass_transform行为,作者:@Viicos,提交于 #8163 - 重构签名生成以简化,作者:@sydney-runkle,提交于 #8572
- 修复 PlainValidator 注解的顺序 bug,作者:@Anvil,提交于 #8567
- 修复
computed_fieldjson 序列化的exclude_none,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1098 - 支持用于 datetime 的 yyyy-MM-DD 字符串,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1124
- 调整生成的模式中定义的顺序,作者:@StrawHatDrag0n,提交于 #8583
新贡献者¶
pydantic¶
- @ekeew 在 #6874 中首次做出贡献
- @lambertsbennett 在 #8054 中首次做出贡献
- @vincent-hachin-wmx 在 #8138 中首次做出贡献
- @QuentinSoubeyranAqemia 在 #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)¶
更新内容¶
打包¶
- 将
pydantic-core升级到 2.14.6
修复¶
- 修复递归定义创建引用循环导致的内存泄漏,作者:@davidhewitt,提交于 pydantic/pydantic-core#1125
v2.5.2 (2023-11-22)¶
更新内容¶
打包¶
- 将
pydantic-core升级到 2.14.5
新功能¶
- 添加
ConfigDict.ser_json_inf_nan,作者:@davidhewitt,提交于 #8159
修复¶
- 修复
Literal从 JSON 键作为dict键使用时的验证问题,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1075 - 修复
Union成员上custom_init的 bug,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1076 - 修复
JsonValuebool序列化问题,作者:@sydney-runkle,提交于 #8190 - 修复
Union中Literal处理不可哈希输入的问题,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1089
v2.5.1 (2023-11-15)¶
更新内容¶
打包¶
- 将 pydantic-core 升级到 2.14.3,作者:@samuelcolvin,提交于 #8120
修复¶
- 修复包描述限制问题,作者:@dmontagu,提交于 #8097
- 修复
ValidateCallWrapper错误,当创建的模型具有 @validate_call 包装的字段注解时,作者:@sydney-runkle,提交于 #8110
v2.5.0 (2023-11-13)¶
v2.5.0 中发布的代码在功能上与 v2.5.0b1 中的代码相同。
更新内容¶
打包¶
- 将 pydantic-core 从 2.10.1 更新到 2.14.1,这些更新带来的重大更改如下所述,完整的更改日志请见 此处
- 更新到
pyright==1.1.335,作者:@Viicos,提交于 #8075
新功能¶
- 允许插件捕获非
ValidationError错误,作者:@adriangb,提交于 #7806 - 支持
create_model()中的__doc__参数,作者:@chris-spann,提交于 #7863 - 公开
regex_engine标志 - 意味着您可以在约束中使用 Rust 或 Python 正则表达式库,作者:@utkini,提交于 #7768 - 保存从
ComputedFieldInfo中类型注解生成的返回类型,作者:@alexmojaki,提交于 #7889 - 采用
ruff格式化程序,作者:@Luca-Blight,提交于 #7930 - 向配置添加
validation_error_cause,作者:@zakstucke,提交于 #7626 - 使要验证的项的路径在插件中可用,作者:@hramezani,提交于 #7861
- 添加
CallableDiscriminator和Tag,作者:@dmontagu,提交于 #7983 - 使联合案例标签影响联合错误消息,作者:@dmontagu,提交于 #8001
- 向
@computed_field添加examples和json_schema_extra,作者:@alexmojaki,提交于 #8013 - 添加
JsonValue类型,作者:@dmontagu,提交于 #7998 - 允许
str作为Discriminator的参数,作者:@dmontagu,提交于 #8047 - 添加
SchemaSerializer.__reduce__方法以启用 pickle 序列化,作者:@edoakes,提交于 pydantic/pydantic-core#1006
更改¶
- 重大更改: 将
ultra_strict替换为新的智能联合实现,联合验证方式已显著更改以提高性能和正确性,我们已努力将行为更改的案例数降至最低,详情请参阅 PR - 作者:@davidhewitt,提交于 pydantic/pydantic-core#867 - 当
extra='allow'时,添加对实例方法重新分配的支持,作者:@sydney-runkle,提交于 #7683 - 支持没有案例的
Enum类型的 JSON schema 生成,作者:@sydney-runkle,提交于 #7927 - 如果类在
BaseModel之前继承Generic,则发出警告,作者:@alexmojaki,提交于 #7891
性能¶
- 新的自定义 JSON 解析器
jiter,作者:@samuelcolvin,提交于 pydantic/pydantic-core#974 - MacOS M1 的 PGO 构建,作者:@samuelcolvin,提交于 pydantic/pydantic-core#1063
- 对所有包导入使用
__getattr__,提高导入时间,作者:@samuelcolvin,提交于 #7947
修复¶
- 修复
RootModel子类化的mypy问题,作者:@sydney-runkle,提交于 #7677 - 当转发引用被评估时,正确重建
FieldInfo,作者:@dmontagu,提交于 #7698 - 修复从 JSON 加载
SecretStr失败(v2.4 中的回归),作者:@sydney-runkle,提交于 #7729 - 修复
TypeAdapter的defer_build行为,作者:@sydney-runkle,提交于 #7736 - 提高与旧版
mypy的兼容性,作者:@dmontagu,提交于 #7742 - 修复:当未设置默认值时更新
TypeVar处理,作者:@pmmmwh,提交于 #7719 - 支持在
Enum类型字段上指定strict,作者:@sydney-runkle,提交于 #7761 - 包装
weakref.ref而不是子类化,以修复cloudpickle序列化,作者:@edoakes,提交于 #7780 - 在子类中保留
model_post_init中设置的私有属性的值,作者:@alexmojaki,提交于 #7775 - 为不可调用
json_schema_extra添加更具体的类型,作者:@alexmojaki,提交于 #7803 - 删除冻结(模型)字段时引发错误,作者:@alexmojaki,提交于 #7800
- 修复默认值导致的模式排序 bug,作者:@sydney-runkle,提交于 #7817
- 对于未另外指定的别名,使用生成的别名,作者:@alexmojaki,提交于 #7802
- 支持
UUID类型的strict规范,作者:@sydney-runkle,提交于 #7865 - JSON schema:修复额外参数处理,作者:@me-and,提交于 #7810
- 修复:支持继承数据类中的
pydantic.Field(kw_only=True),作者:@PrettyWood,提交于 #7827 - 支持带有
__slots__的类中方法的validate_call装饰器,作者:@sydney-runkle,提交于 #7883 - 修复 pydantic 数据类与
dataclasses.field默认值的问题,作者:@hramezani,提交于 #7898 - 修复带有联合类型边界的泛型模式生成,作者:@sydney-runkle,提交于 #7899
- 修复 python 3.7 中
importlib_metadata的版本,作者:@sydney-runkle,提交于 #7904 - 支持 PydanticRecursiveRef 中的
|运算符 (Union),作者:@alexmojaki,提交于 #7892 - 修复 python 3.12 中
TypeAliasType的display_as_type,作者:@dmontagu,提交于 #7929 - 在
TypedDict中添加对NotRequired泛型的支持,作者:@sydney-runkle,提交于 #7932 - 使泛型
TypeAliasType规范生成不同的模式定义,作者:@alexdrydew,提交于 #7893 - 添加了继承数据类签名的修复,作者:@howsunjow,提交于 #7925
- 使 JSON schema 中的模型名称生成更健壮,作者:@joakimnordling,提交于 #7881
- 修复验证错误消息中的复数形式(在测试中),作者:@Iipin,提交于 #7972
PrivateAttr从Annotated默认位置传递,作者:@tabassco,提交于 #8004- 在显示 SecretBytes 时不解码字节(可能不是 UTF8),作者:@alexmojaki,提交于 #8012
- 使用
classmethod而不是classmethod[Any, Any, Any],作者:@Mr-Pepe,提交于 #7979 - 无效插件的更清晰错误信息,作者:@samuelcolvin,提交于 #8023
- 更正 pydantic 数据类导入,作者:@samuelcolvin,提交于 #8027
- 修复引用重新定义类型别名的模型的错误行为,作者:@dmontagu,提交于 #8050
- 修复
Optional字段与validate_default仅执行一个字段验证的问题,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1002 - 修复
Dict键的definition-refbug,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1014 - 修复允许验证
bool类型与coerce_numbers_to_str=True的 bug,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1017 - 在 float 和 decimal 约束中不接受
NaN,作者:@davidhewitt,提交于 pydantic/pydantic-core#1037 - 添加
lax_str和lax_int支持枚举值不继承自 str/int 的情况,作者:@michaelhly,提交于 pydantic/pydantic-core#1015 - 支持
Union的List类型中列表中的子类,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1039 - 允许对
max_digits和decimals的验证通过,如果规范化或非规范化输入有效,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1049 - 修复:
ValidationError消息中的正确复数形式,作者:@Iipin,提交于 pydantic/pydantic-core#1050 - 不允许字符串
'-'作为datetime输入,作者:@davidhewitt,提交于 pydantic/speedate#52 和 pydantic/pydantic-core#1060 - 修复:NaN 和 Inf 浮点数序列化,作者:@davidhewitt,提交于 pydantic/pydantic-core#1062
- 恢复 manylinux 兼容的 PGO 构建,作者:@davidhewitt,提交于 pydantic/pydantic-core#1068
新贡献者¶
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)¶
更新内容¶
修复¶
- 修复判别联合序列的 JSON schema bug,作者:@dmontagu,提交于 #7647
- 修复判别联合中的模式引用,作者:@adriangb,提交于 #7646
- 修复递归模型的 json schema 生成问题,作者:@adriangb,提交于 #7653
- 修复泛型模型的
models_json_schema,作者:@adriangb,提交于 #7654 - 修复泛型模型签名的 xfailed 测试,作者:@adriangb,提交于 #7658
新贡献者¶
- @austinorr 在 #7657 中首次做出贡献
- @peterHoburg 在 #7670 中首次做出贡献
v2.4.1 (2023-09-26)¶
更新内容¶
打包¶
- 将 pydantic-core 更新到 2.10.1,作者:@davidhewitt,提交于 #7633
修复¶
- 将未替换的类型变量序列化为
Any,作者:@adriangb,提交于 #7606 - 移除模式构建缓存,作者:@adriangb,提交于 #7624
- 修复 JSON schema 附加项未进行 JSON 编码的问题,作者:@dmontagu,提交于 #7625
v2.4.0 (2023-09-22)¶
更新内容¶
打包¶
- 将 pydantic-core 更新到 2.10.0,作者:@samuelcolvin,提交于 #7542
新功能¶
- 添加
Base64Url类型,作者:@dmontagu,提交于 #7286 - 实现可选的
number到str强制转换,作者:@lig,提交于 #7508 - 如果存在数据和字段名,允许在所有验证器中访问
field_name和data,作者:@samuelcolvin,提交于 #7542 - 添加
BaseModel.model_validate_strings和TypeAdapter.validate_strings,作者:@hramezani,提交于 #7552 - 添加 Pydantic
plugins实验性实现,作者:@lig @samuelcolvin 和 @Kludex,提交于 #6820
更改¶
- 在子类中不带私有属性时,不覆盖
model_post_init,作者:@Viicos,提交于 #7302 - 默认情况下,使带有默认值的字段在序列化模式中不被要求,作者:@dmontagu,提交于 #7275
- 将
Extra标记为已弃用,作者:@disrupted,提交于 #7299 - 使
EncodedStr成为数据类,作者:@Kludex,提交于 #7396 - 将
annotated_handlers设为公共,作者:@samuelcolvin,提交于 #7569
性能¶
- 简化
CoreSchema的扁平化和内联,作者:@adriangb,提交于 #7523 - 移除
CoreSchema遍历中未使用的复制,作者:@adriangb,提交于 #7528 - 添加缓存以从 CoreSchema 中收集定义和无效模式,作者:@adriangb,提交于 #7527
- 积极解析判别联合,并缓存无法解析的情况,作者:@adriangb,提交于 #7529
- 在
CoreSchema构建热路径中将dict.get和dict.setdefault替换为更详细的版本,作者:@adriangb,提交于 #7536 - 缓存无效
CoreSchema发现,作者:@adriangb,提交于 #7535 - 允许禁用
CoreSchema验证以加快启动时间,作者:@adriangb,提交于 #7565
修复¶
- 修复
TypedDict从祖先类检测配置的问题,作者:@dmontagu,提交于 #7272 - 修复具有异常 MRO 的冻结模型的哈希函数生成问题,作者:@dmontagu,提交于 #7274
- 使 Path 字段中的
strict配置可覆盖,作者:@hramezani,提交于 #7281 - 在
GenerateJsonSchema中默认使用ser_json_<timedelta|bytes>,作者:@Kludex,提交于 #7269 - 添加一个检查,确保别名在 Python 中被验证为标识符,作者:@andree0,提交于 #7319
- 当计算字段覆盖字段时引发错误,作者:@sydney-runkle,提交于 #7346
- 修复将
SkipValidation应用于引用模式的问题,作者:@adriangb,提交于 #7381 - 强制私有属性具有双下划线前缀的行为,作者:@lig,提交于 #7265
- 标准化
__get_pydantic_core_schema__签名,作者:@hramezani,提交于 #7415 - 修复泛型数据类字段突变 bug(使用
TypeAdapter时),作者:@sydney-runkle,提交于 #7435 - 修复
wrap模式下model_validator的TypeError,作者:@pmmmwh,提交于 #7496 - 改进枚举错误消息,作者:@hramezani,提交于 #7506
- 修复处理
ValidationError时,初始化失败的实例的repr,作者:@dmontagu,提交于 #7439 - 通过限制空格修复正则表达式拒绝服务问题,作者:@prodigysml,提交于 #7360
- 修复处理
UUID值具有UUID.version=None的问题,作者:@lig,提交于 #7566 - 修复
__iter__返回私有cached_property信息的问题,作者:@sydney-runkle,提交于 #7570 - 改进版本信息消息,作者:@samuelcolvin,提交于 #7594
新贡献者¶
- @15498th 在 #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)¶
- 🔥 移除仓库中孤立的更改文件,作者:@lig,提交于 #7168
- 在文档上添加复制按钮,作者:@Kludex,提交于 #7190
- 修复 JSON 类型文档,作者:@Kludex,提交于 #7189
- 在 CI 中将 mypy 1.5.0 更新到 1.5.1,作者:@hramezani,提交于 #7191
- 修复下载链接徽章,作者:@samuelcolvin,提交于 #7200
- 将 2.2.1 添加到更改日志,作者:@samuelcolvin,提交于 #7212
- 使 ModelWrapValidator 协议泛型化,作者:@dmontagu,提交于 #7154
- 更正
Field(..., exclude: bool)文档,作者:@samuelcolvin,提交于 #7214 - 将遮蔽属性更改为警告而不是错误,作者:@adriangb,提交于 #7193
- 文档
Base64Str和Base64Bytes,作者:@Kludex,提交于 #7192 - 修复序列化优先情况下的
config.defer_build,作者:@samuelcolvin,提交于 #7024 - 清理 JSON Schema 中的 Model 文档字符串,作者:@samuelcolvin,提交于 #7210
- 修复 #7228(拼写错误):
validators.md中的文档更正validate_defaultkwarg,作者:@lmmx,提交于 #7229 - ✅ 在
pydantic-core中为TzInfo实现tzinfo.fromutc方法,作者:@lig,提交于 #7019 - 支持
__get_validators__,作者:@hramezani,提交于 #7197
v2.2.1 (2023-08-18)¶
- 使 root model extra 的
xfailing 测试停止xfailing,作者:@dmontagu,提交于 #6937 - 通过在第二次访问相同对象时停止来优化递归检测,作者 @mciucu,在 #7160
- 修复文档中的链接,作者 @tlambert03,在 #7166
- 将 MiMalloc 替换为默认分配器,作者 @adriangb,在 pydantic/pydantic-core#900
- 将 pydantic-core 升级到 2.6.1 并准备 2.2.1 版本发布,作者 @adriangb,在 #7176
v2.2.0 (2023-08-17)¶
- 将文档站点上的 "pipx install" 安装命令拆分为两个命令,作者 @nomadmtb,在 #6869
- 弃用
Field.include,作者 @hramezani,在 #6852 - 修复默认工厂错误消息中的拼写错误,作者 @hramezani,在 #6880
- 简化 GenerateSchema 中 typing.Annotated 的处理,作者 @dmontagu,在 #6887
- 在 CI 中重新启用 fastapi 测试,作者 @dmontagu,在 #6883
- 使 json 模式定义引用更难发生冲突,作者 @dmontagu,在 #6566
- 为
Path字段的无效输入提供更清晰的错误,作者 @samuelcolvin,在 #6903 支持坐标类型,作者 @yezz123,在 #6906
- 修复 py 3.10.0 的
ForwardRef包装器(bpo-45166 的垫片),作者 @randomir,在 #6919 - 修复与 RootModel 复制相关的错误行为,作者 @dmontagu,在 #6918
- 修复由 ParamSpec 引起的递归错误问题,作者 @dmontagu,在 #6923
- 向迁移指南添加有关 Constrained 类的部分,作者 @Kludex,在 #6924
- 使用
main分支作为徽章链接,作者 @Viicos,在 #6925 - 添加 v1/v2 Annotated 差异的测试,作者 @carlbordum,在 #6926
- 使 v1 mypy 插件同时适用于 v1 和 v2,作者 @dmontagu,在 #6921
- 修复泛型模型无法使用 BaseModel 进行参数化的问题,作者 @dmontagu,在 #6933
- 移除带别名的判别联合的 xfail,作者 @dmontagu,在 #6938
- 向 computed_field 添加 field_serializer,作者 @andresliszt,在 #6965
- 将 union_schema 与 Type[Union[...]] 一起使用,作者 @JeanArhancet,在 #6952
- 修复继承的 typeddict 属性/配置,作者 @adriangb,在 #6981
- 修复 dataclass Annotated 之前验证器被调用两次的问题,作者 @davidhewitt,在 #6998
- 更新 test-fastapi 取消选择的测试,作者 @hramezani,在 #7014
- 修复验证器文档格式,作者 @hramezani,在 #7015
- 修复 model_json_schema 的 docstring 中的拼写错误,作者 @AdamVinch-Federated,在 #7032
- 移除 pyright 未使用的“类型忽略”,作者 @samuelcolvin,在 #7026
- 添加表示 FastAPI 启动时间的基准测试,作者 @adriangb,在 #7030
- 修复 Enum 子类的 json_encoders,作者 @adriangb,在 #7029
- 更新
ser_json_bytes关于 base64 编码的 docstring,作者 @Viicos,在 #7052 - 允许
@validate_call在异步方法上工作,作者 @adriangb,在 #7046 - 修复:
Settings和SettingsConfigDict的 mypy 错误,作者 @JeanArhancet,在 #7002 - 修复一些拼写错误(重复的单词和 it's/its),作者 @eumiro,在 #7063
- 修复 docstring 中的拼写错误,作者 @harunyasar,在 #7062
- 文档:修复 pydantic-settings 包推荐中损坏的 URL,作者 @swetjen,在 #6995
- 处理将约束应用于不接受它的模式的情况,作者 @adriangb,在 #6951
- 将 almost_equal_floats 替换为 math.isclose,作者 @eumiro,在 #7082
- 将 pydantic-core 升级到 2.5.0,作者 @davidhewitt,在 #7077
- 添加
short_version并在链接中使用它,作者 @hramezani,在 #7115 - 📝 在
RootModel中添加用法链接,作者 @Kludex,在 #7113 - 恢复“修复 mongosrv DSN 的默认端口 (#6827)”,作者 @Kludex,在 #7116
- 在用法文档和迁移指南中澄清 validate_default 和 _Unset 处理,作者 @benbenbang,在 #6950
- 调整
Field.exclude的文档,作者 @Viicos,在 #7086 - 不要求
validate_assignment使用Field.frozen,作者 @Viicos,在 #7103 - 调整
_core_utils,作者 @samuelcolvin,在 #7040 - 使 DefaultDict 适用于集合,作者 @hramezani,在 #7126
- 对于部分参数化的模型,不总是要求 typing.Generic 作为基类,作者 @dmontagu,在 #7119
- 修复 JSON 模式错误使用父类核心模式的问题,作者 @dmontagu,在 #7020
- 修复与 TypedDict 和 alias_generator 相关的 xfailed 测试,作者 @dmontagu,在 #6940
- 改进 NameEmail 的错误消息,作者 @dmontagu,在 #6939
- 修复泛型计算字段,作者 @dmontagu,在 #6988
- 在验证期间反映命名元组的默认值,作者 @dmontagu,在 #7144
- 更新依赖项,修复 pydantic-core 用法,修复 CI 问题,作者 @dmontagu,在 #7150
- 添加 mypy 1.5.0,作者 @hramezani,在 #7118
- 处理非 json 原生枚举值,作者 @adriangb,在 #7056
- 在 Json 类型文档中记录
round_trip,作者 @jc-louis,在 #7137 - 放宽签名检查以更好地支持内置函数和 C 扩展函数作为验证器,作者 @adriangb,在 #7101
- 添加 union_mode='left_to_right',作者 @davidhewitt,在 #7151
- 为继承顺序添加错误消息提示,作者 @yvalencia91,在 #7124
- 修复一个文档链接并解决另外两个警告,作者 @dmontagu,在 #7153
- 在警告中包含 Field extra 键名,作者 @hramezani,在 #7136
v2.1.1 (2023-07-25)¶
v2.1.0 (2023-07-25)¶
- 添加
StringConstraints用于 Annotated 元数据,作者 @adriangb,在 #6605 - 尝试修复间歇性失败的 CI,作者 @adriangb,在 #6683
- 删除可选与默认的冗余示例,作者 @ehiggs-deliverect,在 #6676
- 文档更新,作者 @samuelcolvin,在 #6692
- 移除验证器文档中的“始终验证”部分,作者 @adriangb,在 #6679
- 修复 json 模式生成中的递归错误,作者 @adriangb,在 #6720
- 修复 secretstr 不正确的子类检查,作者 @AlexVndnblcke,在 #6730
- 将 pdm / pdm 锁定文件更新到 2.8.0,作者 @davidhewitt,在 #6714
- 在更多 CI 作业中取消固定 pdm,作者 @davidhewitt,在 #6755
- 改进文档中辅助包的源位置,作者 @davidhewitt,在 #6749
- 假设内置函数不接受 info 参数,作者 @adriangb,在 #6754
- 修复调用
help(BaseModelSubclass)导致错误的问题,作者 @hramezani,在 #6758 - 修复
@model_validator(mode="after")的 mypy 插件处理,作者 @ljodal,在 #6753 - 将 pydantic-core 更新到 2.3.1,作者 @davidhewitt,在 #6756
- 用于设置的 Mypy 插件,作者 @hramezani,在 #6760
- 将
contentSchema关键字用于 JSON 模式,作者 @dmontagu,在 #6715 - 快速检查有限小数,作者 @davidhewitt,在 #6769
- 文档更新,作者 @samuelcolvin,在 #6771
- 改进 json 模式文档,作者 @hramezani,在 #6772
- 更新验证器文档,作者 @adriangb,在 #6695
- 修复 wrap 验证器的类型提示,作者 @dmontagu,在 #6788
- 🐛 修复 Literal 和其他类型联合的验证警告,作者 @lig,在 #6628
- 更新 V2 中泛型支持的文档,作者 @tpdorsey,在 #6685
- 将 pydantic-core 构建信息添加到
version_info(),作者 @samuelcolvin,在 #6785 - 修复使用带有默认值的插槽的 pydantic dataclass,作者 @dmontagu,在 #6796
- 修复冻结模型的哈希函数继承,作者 @dmontagu,在 #6789
- ✨ 添加
SkipJsonSchema注解,作者 @Kludex,在 #6653 - 如果 Field 使用了无效字段名,则报错,作者 @dmontagu,在 #6797
- 将
GenericModel添加到MOVED_IN_V2,作者 @adriangb,在 #6776 - 移除
docs/usage/types/custom.md中未使用的代码,作者 @hramezani,在 #6803 - 修复
float->Decimal强制转换精度损失,作者 @adriangb,在 #6810 - 从北极星基准测试中移除电子邮件验证,作者 @davidhewitt,在 #6816
- 修复 mypy 链接,作者 @progsmile,在 #6824
- 改进初始化钩子示例,作者 @hramezani,在 #6822
- 修复 mongosrv DSN 的默认端口,作者 @dmontagu,在 #6827
- 改进 API 文档,特别是增加用法和 API 文档之间的链接,作者 @samuelcolvin,在 #6780
- 将 pydantic-core 更新到 2.4.0,作者 @davidhewitt,在 #6831
- 修复
annotated_types.MaxLen验证器用于自定义序列类型,作者 @ImogenBits,在 #6809 - 更新 V1,作者 @hramezani,在 #6833
- 使可调用 JSON 模式 extra 工作,作者 @dmontagu,在 #6798
- 修复
InstanceOf的序列化问题,作者 @dmontagu,在 #6829 - 重新添加对
json_encoders的支持,作者 @adriangb,在 #6811 - 在构建模式时更新字段注解,作者 @dmontagu,在 #6838
- 使用
WeakValueDictionary修复泛型内存泄漏,作者 @dmontagu,在 #6681 - 添加
config.defer_build以选择性地使模型构建惰性化,作者 @samuelcolvin,在 #6823 - 将
UUID序列化委托给 pydantic-core,作者 @davidhewitt,在 #6850 - 更新
json_encoders文档,作者 @adriangb,在 #6848 - 修复
staticmethod/classmethod顺序与 validate_call 的错误消息,作者 @dmontagu,在 #6686 - 改进
Config的文档,作者 @samuelcolvin,在 #6847 - 更新序列化文档,提及
Field.exclude优先于调用时include/exclude,作者 @hramezani,在 #6851 - 通过公开
GenerateSchema允许自定义核心模式生成,作者 @adriangb,在 #6737
v2.0.3 (2023-07-05)¶
- 在迁移文档中提及 PyObject (v1) 迁移到 ImportString (v2),作者 @slafs,在 #6456
- 修复 release-tweet CI,作者 @Kludex,在 #6461
- 修订必填/可选/可空字段部分,作者 @ybressler,在 #6468
- 如果类型提示实际上不是类型,则发出警告,作者 @adriangb,在 #6479
- 将 TransformSchema 替换为 GetPydanticSchema,作者 @dmontagu,在 #6484
- 修复各种注解类型的不可哈希性,用于缓存泛型容器,作者 @dmontagu,在 #6480
- PYD-164: 重做自定义类型文档,作者 @adriangb,在 #6490
- 修复 ci,作者 @adriangb,在 #6507
- 修复泛型中的前向引用,作者 @adriangb,在 #6511
- 修复 core_schema.ChainSchema 的序列化 JSON 模式生成,作者 @dmontagu,在 #6515
- 记录 Pydantic V2 中
Field.alias行为的变化,作者 @hramezani,在 #6508 - 尝试计算具有未定义字段的模型的 json 模式时提供更好的错误消息,作者 @dmontagu,在 #6519
- 记录
alias_priority,作者 @tpdorsey,在 #6520 - 添加类型文档的重定向,作者 @tpdorsey,在 #6513
- 允许在不发布的情况下更新文档,作者 @samuelcolvin,在 #6551
- 确保文档测试始终在正确的文件夹中运行,作者 @dmontagu,在 #6487
- 延迟评估序列化器函数的返回类型提示,作者 @dmontagu,在 #6516
- 从 Ruff 禁用 E501 并只依赖 Black,作者 @adriangb,在 #6552
- 更新 V2 的 JSON 模式文档,作者 @tpdorsey,在 #6492
- 添加循环引用处理的文档,作者 @dmontagu,在 #6493
- 移除对更改文件的需求,作者 @samuelcolvin,在 #6556
- 添加“北极星”基准测试,作者 @davidhewitt,在 #6547
- 更新 Dataclasses 文档,作者 @tpdorsey,在 #6470
- ♻️ 在 v1 重定向上使用不同的错误消息,作者 @Kludex,在 #6595
- ⬆ 升级
pydantic-core到 v2.2.0,作者 @lig,在 #6589 - 修复 IPvAny 的序列化,作者 @dmontagu,在 #6572
- 通过使用 PDM 而不是 pip 安装 typing-extensions 来改进 CI,作者 @adriangb,在 #6602
- 添加
enum错误类型文档,作者 @lig,在 #6603 - 🐛 修复 unicode 字符串的
max_length,作者 @lig,在 #6559 - 添加文档,说明如何通过
pydantic.v1访问功能,作者 @tpdorsey,在 #6604 - 在迭代模型时包含 extra,作者 @adriangb,在 #6562
- 修复 model_validator 的类型,作者 @adriangb,在 #6514
- 调整 Decimal 验证器,作者 @adriangb,在 #6327
- 修复使用固定 pytest-examples 的各种 docstrings,作者 @dmontagu,在 #6607
- 在判别联合中处理函数验证器,作者 @dmontagu,在 #6570
- 审查 json_schema.md,作者 @tpdorsey,在 #6608
- 使 validate_call 在 basemodel 方法上工作,作者 @dmontagu,在 #6569
- 添加大整数 json 序列化/反序列化测试,作者 @davidhewitt,在 #6614
- 修复 pydantic dataclass 与 dataclasses.field default_factory 的问题,作者 @hramezani,在 #6616
- 修复 TypeAdapter 的 mypy 类型推断,作者 @zakstucke,在 #6617
- 使其可以使用 None 作为泛型参数,作者 @dmontagu,在 #6609
- 使其可以将
$ref用作别名,作者 @dmontagu,在 #6568 - 向迁移指南添加关于
AnyUrl等更改的注释,作者 @davidhewitt,在 #6618 - 🐛 支持在
RootModel上使用Field定义json_schema_extra,作者 @lig,在 #6622 - 更新 pre-commit 以防止意外提交到主分支,作者 @dmontagu,在 #6636
- 修复 MacOS/windows 上 python 3.7 的 PDM CI,作者 @dmontagu,在 #6627
- 为 pydantic dataclass 生成更准确的签名,作者 @dmontagu,在 #6633
- Pydantic V2 的 Url 类型更新,作者 @tpdorsey,在 #6638
- 修复
transformdocstring 中的列表 markdown,作者 @StefanBRas,在 #6649 - 简化 slots_dataclass 构造以安抚 mypy,作者 @davidhewitt,在 #6639
- 更新 TypedDict 模式生成 docstring,作者 @adriangb,在 #6651
- 检测并对打印输出进行 lint 错误检查,作者 @dmontagu,在 #6655
- 为 pydantic-core PR 766 添加 xfailing 测试,作者 @dmontagu,在 #6641
- 忽略来自 dataclasses 元数据中无法识别的字段,作者 @dmontagu,在 #6634
- 使不存在的类 getattr 成为 mypy 错误,作者 @dmontagu,在 #6658
- 将 pydantic-core 更新到 2.3.0,作者 @hramezani,在 #6648
- 使用 typing_extensions 中的 OrderedDict,作者 @dmontagu,在 #6664
- 修复 JSON 模式额外可调用项的类型提示,作者 @dmontagu,在 #6659
v2.0.2 (2023-07-05)¶
- 修复循环序列化/反序列化
RootModel会改变__dict__值的问题,#6457,作者 @dmontagu - 允许单项判别联合,#6405,作者 @dmontagu
- 修复枚举联合解析问题,#6440,作者 @dmontagu
- 文档:修复
constr文档,将旧的regex重命名为新的pattern,#6452,作者 @miili - 更改
GenerateJsonSchema.generate_definitions签名,#6436,作者 @dmontagu
查看完整更新日志 此处
v2.0.1 (2023-07-04)¶
Pydantic V2 的第一个补丁版本
- 通过
setattr添加的额外字段(即m.some_extra_field = 'extra_value')如果model_configextra='allowed',则会添加到.model_extra。修复了 #6333,#6365,作者 @aaraney - 自动解包自定义类型的 JSON 模式 '$ref',#6343,作者 @adriangb
- 修复子模型中标记联合的多次处理,#6340,作者 @suharnikov
查看完整更新日志 此处
v2.0 (2023-06-30)¶
Pydantic V2 来了!
有关更多详细信息,请参阅 此文章。
v2.0b3 (2023-06-16)¶
Pydantic V2 的第三个测试预发布版本
查看完整更新日志 此处
v2.0b2 (2023-06-03)¶
向 TypeAdapter.validate_python 和 BaseModel.model_validate 添加 from_attributes 运行时标志。
查看完整更新日志 此处
v2.0b1 (2023-06-01)¶
Pydantic V2 的第一个测试预发布版本
查看完整更新日志 此处
v2.0a4 (2023-05-05)¶
Pydantic V2 的第四个预发布版本
查看完整更新日志 此处
v2.0a3 (2023-04-20)¶
Pydantic V2 的第三个预发布版本
查看完整更新日志 此处
v2.0a2 (2023-04-12)¶
Pydantic V2 的第二个预发布版本
查看完整更新日志 此处
v2.0a1 (2023-04-03)¶
Pydantic V2 的第一个预发布版本!
有关更多详细信息,请参阅 此文章。
v1.10.21 (2025-01-10)¶
- 修复与 ForwardRef._evaluate 和 Python < 3.12.4 的兼容性,作者 @griels,在 https://github.com/pydantic/pydantic/pull/11232
v1.10.20 (2025-01-07)¶
此版本提供了对 Python 3.13 的适当支持,并为此版本发布了(Cythonized)轮子。因此,Cython 已从 0.29.x 更新到 3.0.x。
- CI 和构建生态系统的通用维护,作者 @Viicos,在 https://github.com/pydantic/pydantic/pull/10847
- 将 Cython 更新到
3.0.x。 - 正确处理 Python 3.13 弃用警告。
- 将打包迁移到
pyproject.toml,利用 PEP 517 构建选项。 - 使用
build而不是直接调用setup.py。 - 更新各种 Github Actions 版本。
- 将 Cython 更新到
- 替换文档中过时的 stpmex 链接,作者 @jaredenorris,在 https://github.com/pydantic/pydantic/pull/10997
v1.10.19 (2024-11-06)¶
- 当 v2 模型嵌套在 v1 模型中时添加警告,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/10432
- 修复 V1
isinstance检查中的弃用警告,作者 @alicederyn,在 https://github.com/pydantic/pydantic/pull/10645
v1.10.18 (2024-08-22)¶
- V1 中的 Eval 类型修复,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/9751
- 将
to_lower_camel添加到utils.py中的__all__,作者 @sydney-runkle (直接提交) - 修复
mypyv1 插件以适应 mypy 1.11 版本,作者 @flaeppe,在 https://github.com/pydantic/pydantic/pull/10139 - 修复当鉴别器具有别名且
.schema(by_alias=False)时使用的鉴别器键,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/10146
v1.10.17 (2024-06-20)¶
- 为 1.10.x 宣传 Python 3.12!第二部分,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9644
v1命名空间中的镜像模块,以修复 python>3.11 中的类型和对象解析,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9660- setup: 移除 python_requires 的上限,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9685
v1.10.16 (2024-06-11)¶
- 在 FutureRef._evaluate 中将 recursive_guard 指定为 kwarg,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9612
- 修复 mypy v1 插件以适应即将发布的 mypy 版本,作者 @cdce8p,在 https://github.com/pydantic/pydantic/pull/9586
- 直接从 v1 命名空间导入模块/对象,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9162
v1.10.15 (2024-04-03)¶
- 向 Pydantic v1 添加 pydantic.v1 命名空间,作者 @exs-dmiketa,在 https://github.com/pydantic/pydantic/pull/9042
- 放宽 V1 的 typing-extensions 版本,作者 @SonOfLilit,在 https://github.com/pydantic/pydantic/pull/8819
- mypy 的补丁修复,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/8765
v1.10.14 (2024-01-19)¶
- 更新 install.md,作者 @dmontagu,在 #7690
- 修复 ci 以仅在发布时部署文档,作者 @sydney-runkle,在 #7740
- V1 的 Ubuntu 修复,作者 @sydney-runkle,在 #8540 和 #8587
- 修复 dataclasses 复制时 cached_property 处理问题,作者 @rdbisme,在 #8407
v1.10.13 (2023-09-27)¶
- 修复:向
pydantic.validate_email添加最大长度检查,#7673,作者 @hramezani - 文档:修复安装 v1 的 pip 命令,#6930,作者 @chbndrhnns
v1.10.12 (2023-07-24)¶
- 修复了
deque验证时maxlen属性被丢弃的问题。仅当 deque 项已类型化时发生。更改了_validate_sequence_like函数,#6581,作者 @maciekglowka
v1.10.11 (2023-07-04)¶
- 在 tools.py 中通过相对路径而不是绝对路径导入 create_model - 以便在复制到 V2 分支时不会导入 V2 代码,#6361,作者 @SharathHuddar
v1.10.10 (2023-06-30)¶
- 添加 Pydantic
Json字段支持到设置管理,#6250,作者 @hramezani - 修复不可哈希值的字面量验证器错误,#6188,作者 @markus1978
- 修复泛型接收前向引用时的错误,#6130,作者 @mark-todd
- 更新 CI 中内部测试的 FastAPI 安装方法,#6117,作者 @Kludex
v1.10.9 (2023-06-07)¶
- 修复 Decimal 验证中未忽略尾随零的问题,#5968,作者 @hramezani
- 修复 mypy 插件以适应 v1.4.0,#5928,作者 @cdce8p
- 添加未来和过去日期假设策略,#5850,作者 @bschoenmaeckers
- 不鼓励在 Pydantic 1.x 中使用 Cython 3,#5845,作者 @lig
v1.10.8 (2023-05-23)¶
- 修复
Literal与typing-extension==4.6.0的用法中的错误,#5826,作者 @hramezani - 这解决了(已关闭的)问题 #3849,即当数据包含非别名字段名时,使用判别联合的别名字段无法验证的问题,#5736,作者 @benwah
- 更新 email-validator 依赖项到 >=2.0.0post2,#5627,作者 @adriangb
- 更新
AnyClassMethod以适应 python/typeshed#9771 中的更改,#5505,作者 @ITProKyle
v1.10.7 (2023-03-22)¶
- 修复使用
ConstrainedStr和regex作为字典键从模型创建模式的问题,#5223,作者 @matejetz - 解决 mypy 插件中由 explicit_package_bases=True 引起的错误,#5191,作者 @dmontagu
- 在 mypy 插件中为没有默认参数的 Field 添加隐式默认值,#5190,作者 @dmontagu
- 修复用于判别联合中用作 Literals 的 Enum 值的生成模式,#5188,作者 @javibookline
- 修复当用户在其自己的类中定义
from_orm时,pydantic mypy 插件导致的 mypy 失败,#5187,作者 @dmontagu - 修复
InitVar与 pydantic dataclass、mypy 版本1.1.1和自定义 mypy 插件的用法,#5162,作者 @cdce8p
v1.10.6 (2023-03-08)¶
- 实现逻辑以支持使用默认值识别非标准可调用项并解包
functools.partial和functools.partialmethod进行签名检查,从而从非标准可调用项创建验证器,#5126,作者 @JensHeinrich - 修复 mypy 插件以适应 v1.1.1,并修复 pydantic dataclass 的
dataclass_transform装饰器,#5111,作者 @cdce8p - 当判别器值为不可哈希时,抛出显式
ValidationError,而不是ConfigError,#4773,作者 @kurtmckee
v1.10.5 (2023-02-15)¶
- 修复
GenericModel复杂模型集处理带参数基类时的错误,#5052,作者 @MarkusSintonen - 如果插件配置更改,则使 mypy 缓存失效,#5007,作者 @cdce8p
- 修复深拷贝 pydantic 包装的 dataclass 类型时发生的
RecursionError,#4949,作者 @mbillingr - 修复
X | Y联合语法破坏GenericModel的问题,#4146,作者 @thenx - 将覆盖率徽章切换到显示此分支/版本的覆盖率,#5060,作者 @samuelcolvin
v1.10.4 (2022-12-30)¶
- 将依赖项更改为
typing-extensions>=4.2.0,#4885,作者 @samuelcolvin
v1.10.3 (2022-12-29)¶
注意:v1.10.3 因 #4885 而从 PyPI “撤回”,此问题已在 v1.10.4 中修复
- 修复自定义根模型的解析,#4883,作者 @gou177
- 修复:对冻结或空 dataclasses 使用 dataclass 代理,#4878,作者 @PrettyWood
- 修复模型中 schema 和 schema_json,其中模型实例是默认值之一,#4781,作者 @Bobronium
- 将 Jina AI 添加到文档首页的赞助商,#4767,作者 @samuelcolvin
- 修复:支持
DataclassProxy上的赋值,#4695,作者 @PrettyWood - 添加
postgresql+psycopg作为PostgreDsn的允许方案,使其可与 SQLAlchemy 2 一起使用,#4689,作者 @morian - 允许字典模式同时具有
patternProperties和additionalProperties,#4641,作者 @jparise - 修复可选列表和
unique_items传递 None 时的错误,#4568,作者 @mfulgo - 修复
GenericModel与Callable参数一起使用时引发TypeError的问题,#4551,作者 @mfulgo - 修复
StrictStr类型注解的字段正则表达式,#4538,作者 @sisp - 更正
dataclass_transform关键字参数名,从field_descriptors到field_specifiers,#4500,作者 @samuelcolvin - 修复:避免继承 dataclass 时
__post_init__多次调用,#4487,作者 @PrettyWood - 减小二进制轮子的大小,#2276,作者 @samuelcolvin
v1.10.2 (2022-09-05)¶
- 回滚更改: v1.9.1 引入了一项重大更改,其中模型字段默认进行深拷贝,此版本将默认行为恢复为与 v1.9.0 及之前版本匹配,同时还允许通过
copy_on_model_validation = 'deep'进行深拷贝行为。有关更多信息,请参阅 #4092。 - 防止将长字符串/字节(长度 >
4_300)作为整数字段的输入,参见 python/cpython#95778 和 CVE-2020-10735,#1477,作者 @samuelcolvin - 修复:dataclass 包装器并非总是被调用,#4477,作者 @PrettyWood
- 在 Python 3.11 上解析
mypy配置时使用tomllib,#4476,作者 @hauntsaninja GenericModel缓存的基本修复,用于检测Union模型中参数的顺序,#4474,作者 @sveinugu- 修复 mypy 插件在使用裸类型(如
list和dict)作为default_factory时的错误,#4457,作者 @samuelcolvin
v1.10.1 (2022-08-31)¶
v1.10.0 (2022-08-30)¶
- 重构整个 pydantic
dataclass装饰器,使其真正像其标准库对应物一样。因此它保留了__eq__、__hash__等,并使得与未验证版本的比较成为可能。它还修复了字段中使用frozendataclass 和嵌套 dataclass 中使用default_factory的问题。已添加对Config.extra的支持。最后,现在可以直接通过dict进行配置自定义,#2557,作者 @PrettyWood
重大变更compiled布尔值(pydantic 是否使用 cython 编译)已从main.py移动到version.py- 现在
Config.extra受支持,dataclass默认忽略额外参数(如BaseModel)
- 修复
BaseModel中 PrivateAttrs 的 PEP487__set_name__协议,#4407,作者 @tlambert03 - 允许通过
Config中的parse_env_var对环境变量进行自定义解析,#4406,作者 @acmiyaguchi - 将
master重命名为main,#4405,作者 @hramezani - 修复
StrictStr在Field中存在max_length时不引发ValidationError的问题,#4388,作者 @hramezani - 使
SecretStr和SecretBytes可哈希,#4387,作者 @chbndrhnns - 修复
StrictBytes在Field中存在max_length时不引发ValidationError的问题,#4380,作者 @JeanArhancet - 添加对裸
type的支持,#4375,作者 @hramezani - 支持 Python 3.11,包括 PyPI 中的 3.11 二进制文件,#4374,作者 @samuelcolvin
- 添加对
re.Pattern的支持,#4366,作者 @hramezani - 修复当未定义
__post_init__时__post_init_post_parse__被错误地传递关键字参数的问题,#4361,作者 @hramezani - 修复从
pydantic.typing而非typing隐式导入ForwardRef和Callable的问题,并暴露MappingIntStrAny,#4358,作者 @aminalaee - 从
dataclass装饰器中移除Any类型,以便它可以在disallow_any_exprmypy 选项下使用,#4356,作者 @DetachHead - 将仓库移动到
pydantic/pydantic,#4348,作者 @yezz123 - 修复当具有
Extra.forbid的 dataclass 被多次验证时“不允许额外字段”的错误,#4343,作者 @detachhead - 向文档添加 Python 3.9 和 3.10 示例,#4339,作者 @Bobronium
- 判别联合模型现在在生成 OpenAPI 模式定义时使用
oneOf而不是anyOf,#4335,作者 @MaxwellPayne - 允许类型检查器推断
Json类型的内部类型。Json[list[str]]现在将被推断为list[str],应使用Json[Any]而不是纯Json。运行时行为未改变,#4332,作者 @Bobronium - 通过使用
alias is not None检查而不是bool(alias)允许空字符串别名,#4253,作者 @sergeytsaplin - 更新
Field.outer_type_中的ForwardRef,#4249,作者 @JacobHayes __dataclass_transform__的使用已替换为typing_extensions.dataclass_transform,这是根据 PEP 681 将 pydantic 模型标记为 dataclass 的首选方式,#4241,作者 @multimeric- 验证嵌套
NamedTuple字段时使用父模型的Config,#4219,作者 @synek - 更新
BaseModel.construct以处理别名字段,#4192,作者 @kylebamos - 捕获
smart_deepcopy中某些引发的错误,如果发生则回退到deepcopy,#4184,作者 @coneybeare - 添加
Config.anystr_upper和to_upperkwarg 到 constr 和 conbytes,#4165,作者 @satheler - 修复
set和frozenset在包含默认值时的 JSON 模式,#4155,作者 @aminalaee - 告知 mypy 插件,用
@validator装饰的方法是类方法,#4102,作者 @DMRobertson - 改进 mypy 插件检测必填字段的能力,#4086,作者 @richardxia
- 支持模式中
Type[]类型的字段,#4051,作者 @aminalaee - 当
const=True时,在 JSON Schema 中添加default值,#4031,作者 @aminalaee - 向签名生成逻辑添加保留字检查,#4011,作者 @strue36
- 修复复杂嵌套字段的 Json 策略失败问题,#4005,作者 @sergiosim
- 添加 JSON 兼容的浮点约束
allow_inf_nan,#3994,作者 @tiangolo - 移除当
env_prefix与env_nested_delimiter有共同字符时未定义行为,#3975,作者 @arsenron - 支持带有
create_model的泛型模型,#3945,作者 @hot123s - 允许子模型覆盖额外字段信息,#3934,作者 @PrettyWood
- 记录并测试
BaseModel上的结构化模式匹配(PEP 636),#3920,作者 @irgolic - 修复 python timedelta 对象到 ISO 8601 负时间差的错误反序列化。负号序列化位置不正确(“P-1DT23H59M59.888735S”而不是正确的“-P1DT23H59M59.888735S”),#3899,作者 @07pepa
- 修复当传递模型实例时,带别名的判别联合字段的验证,#3846,作者 @chornsby
- 添加 CockroachDsn 类型以验证 CockroachDB 连接字符串。该类型支持以下方案:
cockroachdb、cockroachdb+psycopg2和cockroachdb+asyncpg,#3839,作者 @blubber - 修复 MyPy 插件,使其不会覆盖模型中预先存在的
__init__方法,#3824,作者 @patrick91 - 修复 mypy 版本检查,#3783,作者 @KotlinIsland
- 支持覆盖
BaseModel实例的双下划线属性,#3777,作者 @PrettyWood - 添加
ConstrainedDate和condate,#3740,作者 @hottwaj - 支持 dataclass 中的
kw_only,#3670,作者 @detachhead - 为
Color类添加比较方法,#3646,作者 @aminalaee - 放弃对 python3.6 的支持,以及相关的清理工作,#3605,作者 @samuelcolvin
- 创建了新函数
to_lower_camel()用于“非 Pascal 大小写”的驼峰式命名法,#3463,作者 @schlerp - 在 Mypy 插件中添加对
default和default_factory参数的检查,#3430,作者 @klaa97 - 修复
BaseModel的inspect.signature的损坏,#3413,作者 @fix-inspect-signature - 添加
SecretField抽象类,以便所有当前和未来的秘密字段,如SecretStr和SecretBytes,都将派生自它,#3409,作者 @expobrain - 支持
PostgresDsn中的多主机验证,#3337,作者 @rglsk - 修复解析非常小的数字 timedelta 值的问题,#3315,作者 @samuelcolvin
- 更新
SecretsSettingsSource以尊重config.case_sensitive,#3273,作者 @JeanArhancet - 添加 MongoDB 网络数据源名称 (DSN) 模式,#3229,作者 @snosratiershad
- 添加对多个 dotenv 文件的支持,#3222,作者 @rekyungmin
- 当多个字段错误地为一个验证器设置时,抛出显式的
ConfigError,#3215,作者 @SunsetOrange - 允许
Field内Annotated的省略号用于TypedDicts必需字段,#3133,作者 @ezegomez - 捕获
int_validator中的溢出错误,#3112,作者 @ojii - 向
Representation类添加__rich_repr__方法,使 Rich 能够进行漂亮的打印,#3099,作者 @willmcgugan - 在
AnyUrl和后代类型中添加百分比编码,#3061,作者 @FaresAhmedb validate_arguments装饰器现在支持alias,#3019,作者 @MAD-py- 避免
AnyUrl和 IP 地址字段中的__dict__和__weakref__属性,#2890,作者 @nuno-andre - 添加在字段类型注解中使用
Final的能力,#2766,作者 @uriyyo - 更新要求为
typing_extensions>=4.1.0以保证dataclass_transform可用,#4424,作者 @commonism - 将 Explosion 和 AWS 添加到主要赞助商,#4413,作者 @samuelcolvin
- 更新
copy_on_model_validation的文档以反映最近的更改,#4369,作者 @samuelcolvin - 如果
__slots__传递给create_model,则发出运行时警告,然后忽略__slots__,#4432,作者 @samuelcolvin - 向
BaseSettings.Config添加类型提示以避免 mypy 错误,同时更正文档中的 mypy 版本兼容性通知,#4450,作者 @samuelcolvin
v1.10.0b1 (2022-08-24)¶
预发布版,详情请参阅 GitHub 版本。
v1.10.0a2 (2022-08-24)¶
预发布版,详情请参阅 GitHub 版本。
v1.10.0a1 (2022-08-22)¶
预发布版,详情请参阅 GitHub 版本。
v1.9.2 (2022-08-11)¶
回滚重大更改:v1.9.1 引入了一项重大更改,其中模型字段默认进行深拷贝,此版本将默认行为恢复为与 v1.9.0 及之前版本匹配,同时还允许通过 copy_on_model_validation = 'deep' 进行深拷贝行为。有关更多信息,请参阅 #4092。
- 允许模型字段的浅拷贝,
Config.copy_on_model_validation现在是一个字符串,必须是'none'、'deep'或'shallow',分别对应不复制、深拷贝和浅拷贝;默认为'shallow',#4093,作者 @timkpaine
v1.9.1 (2022-05-19)¶
感谢 pydantic 的赞助商:@tiangolo、@stellargraph、@JonasKs、@grillazz、@Mazyod、@kevinalh、@chdsbd、@povilasb、@povilasb、@jina-ai、@mainframeindustries、@robusta-dev、@SendCloud、@rszamszur、@jodal、@hardbyte、@corleyma、@daddycocoaman、@Rehket、@jokull、@reillysiemens、@westonsteimel、@primer-io、@koxudaxi、@browniebroke、@stradivari96、@adriangb、@kamalgill、@jqueguiner、@dev-zero、@datarootsio、@RedCarpetUp 的慷慨支持。
- 限制
generics._generic_types_cache和generics._assigned_parameters的大小,以避免内存使用无限制增加,#4083,作者 @samuelcolvin - 添加 Jupyverse 和 FPS 作为使用 pydantic 的 Jupyter 项目,#4082,作者 @davidbrochart
- 加快 pydantic 模型上
__isinstancecheck__的速度,当类型不是模型时,也可能避免内存“泄漏”,#4081,作者 @samuelcolvin - 修复了
FieldInfo的原地修改,导致 PEP 593 类型别名出现问题,#4067,作者 @adriangb - 在使用
pydantic.dataclasses.dataclass时,添加对 VS Code 中通过__dataclass_transform__进行自动补全的支持,#4006,作者 @giuliano-oliveira - 从代码库和文档中移除基准测试,#3973,作者 @samuelcolvin
- 在 CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 文档,#3972,作者 @samuelcolvin
- 修复嵌套 Python dataclass 模式回归问题,#3819,作者 @himbeles
- 更新关于 Settings 来源延迟评估的文档,#3806,作者 @garyd203
- 防止字节子类转换为字节,#3706,作者 @samuelcolvin
- 修复使用 PEP585 和 PEP604 类型提示时“检查继承错误”的问题,#3681,作者 @aleksul
- 允许模型中的自引用
ClassVar,#3679,作者 @samuelcolvin - 重大更改,参见 #4106:修复自引用 dataclass 的问题,#3675,作者 @uriyyo
- 在渲染的 URL 中包含非标准端口号,#3652,作者 @dolfinus
Config.copy_on_model_validation执行深拷贝而非浅拷贝,#3641,作者 @PrettyWood- 修复:澄清判别联合不支持单例,#3636,作者 @tommilligan
- 为
setup.py添加read_text(encoding='utf-8'),#3625,作者 @hswong3i - 修复列表中判别联合的 JSON Schema 生成,#3608,作者 @samuelcolvin
v1.9.0 (2021-12-31)¶
感谢 pydantic 的赞助商:@sthagen、@timdrijvers、@toinbis、@koxudaxi、@ginomempin、@primer-io、@and-semakin、@westonsteimel、@reillysiemens、@es3n1n、@jokull、@JonasKs、@Rehket、@corleyma、@daddycocoaman、@hardbyte、@datarootsio、@jodal、@aminalaee、@rafsaf、@jqueguiner、@chdsbd、@kevinalh、@Mazyod、@grillazz、@JonasKs、@simw、@leynier、@xfenix 的慷慨支持。
亮点¶
- 添加 Python 3.10 支持,#2885,作者 @PrettyWood
- 判别联合(又称标记联合),#619,作者 @PrettyWood
Config.smart_union优化联合逻辑,#2092 by @PrettyWood- 适用于 Macos M1 CPU 的二进制文件,#3498 by @samuelcolvin
- 复杂类型可以通过嵌套环境变量设置,例如
foo___bar,#3159 by @Air-Mark - 为 pydantic 文档添加深色模式,#2913 by @gbdlin
- 通过
__dataclass_transform__添加 VS Code 自动完成支持,#2721 by @tiangolo - 将 "exclude" 添加为字段参数,以便可以使用模型配置进行配置,#660 by @daviskirk
v1.9.0 (2021-12-31) 更改¶
- 将
update_forward_refs应用于Config.json_encodes,防止通过字符串定义的类型出现名称冲突,#3583 by @samuelcolvin - 扩展 pydantic 的 mypy 插件以支持 mypy 版本
0.910、0.920、0.921和0.930,#3573 & #3594 by @PrettyWood、@christianbundy、@samuelcolvin
v1.9.0a2 (2021-12-24) 更改¶
- 支持带区分联合的泛型模型,#3551 by @PrettyWood
- 默认保持
json()的旧行为,#3542 by @PrettyWood - 从
BaseModel中移除仅用于类型提示的__root__属性,#3540 by @layday - 构建 Python 3.10 wheel,#3539 by @mbachry
- 修复使用模型
__repr__时extra字段的显示问题,#3234 by @cocolman - 通过
Config.copy_on_model_validation复制的模型始终具有所有字段,#3201 by @PrettyWood - 来自嵌套字典的嵌套 ORM,#3182 by @PrettyWood
- 修复到区分联合部分的链接 by @PrettyWood
v1.9.0a1 (2021-12-18) 更改¶
- 在
Field()中添加对Decimal特定验证配置的支持,除了使用condecimal()之外,以提供更好的编辑器和工具支持,#3507 by @tiangolo - 为 PyPI 添加适用于 MacOS M1 CPU 的
arm64二进制文件,#3498 by @samuelcolvin - 修复当使用包含
Any或object的Union类型时,None被认为是无效的问题,#3444 by @tharradine - 生成字段 schema 时,如果存在,将可选的
field参数 (类型为pydantic.fields.ModelField) 传递给__modify_schema__(),#3434 by @jasujm - 修复 pydantic 无法解析
typing.ClassVar字符串类型注释的问题,#3401 by @uriyyo - 提及 Python >= 3.9.2 作为
typing_extensions.TypedDict的替代方案,#3374 by @BvB93 - 将自定义错误示例中的验证器方法名称更改为更准确地描述验证器正在做什么;从
name_must_contain_space更改为value_must_equal_bar,#3327 by @michaelrios28 - 添加
AmqpDsn类,#3254 by @kludex - 在生成的 JSON schema 中始终使用
Enum值作为默认值,#3190 by @joaommartins - 添加对 Mypy 0.920 的支持,#3175 by @christianbundy
validate_arguments现在支持extra自定义(以前总是Extra.forbid),#3161 by @PrettyWood- 复杂类型可以通过嵌套环境变量设置,#3159 by @Air-Mark
- 修复 mypy 插件以根据
pydantic.utils.is_valid_field收集字段,使其忽略未类型化的私有变量,#3146 by @hi-ogawa - 修复
validate_arguments与Config.validate_all的问题,#3135 by @PrettyWood - 当使用 dict 子类作为字段类型时,避免 dict 强制转换,#3122 by @PrettyWood
- 添加对
object类型的支持,#3062 by @PrettyWood - 更新 pydantic dataclasses 以保留父类上的
_special属性,#3043 by @zulrang - 为错误对象添加
TypedDict类,#3038 by @matthewhughes934 - 修复将注释的子类用作默认值时的支持问题,#3018 by @JacobHayes
- 使
create_model_from_typeddict符合 mypy 标准,#3008 by @PrettyWood - 使用
PrivateAttr时使多重继承生效,#2989 by @hmvp - 如果环境变量具有带有复杂子字段的
Union类型,则将其解析为 JSON,#2936 by @cbartz - 防止
StrictStr允许Enum值(其中枚举继承自str),#2929 by @samuelcolvin - 使
SecretsSettingsSource解析从秘密文件获取的复杂类型字段的值,就像从环境变量获取一样,#2917 by @davidmreed - 为 pydantic 文档添加深色模式,#2913 by @gbdlin
- 使
pydantic-mypy插件与pyproject.toml配置兼容,与mypy更改保持一致。有关更多信息,请参阅文档,#2908 by @jrwalk - 添加 Python 3.10 支持,#2885,作者 @PrettyWood
- 正确解析带
Json[T]的泛型模型,#2860 by @geekingfrog - 更新贡献文档,关于用于构建文档的 Python 版本,#2856 by @paxcodes
- 澄清文档,关于 pydantic 对自定义验证和严格类型检查的支持,尽管 pydantic 主要是一个解析库,#2855 by @paxcodes
- 修复
Deque字段的 schema 生成问题,#2810 by @sergejkozin - 修复约束和
Literal混合使用时的边缘情况,#2794 by @PrettyWood - 修复
NamedTuple和TypedDict在 Pydantic 模型中直接用作字段类型时,推迟注释解析的问题,#2760 by @jameysharp - 修复
mypy插件在BaseSettings派生类的construct方法调用失败的问题,#2753 by @uriyyo - 为
pydantic.create_model函数添加函数重载,#2748 by @uriyyo - 修复 mypy 插件中 self 字段声明的问题,#2743 by @uriyyo
- 行 "The fields which were supplied when user was initialised:" 末尾的冒号表明其后的代码与此相关。已将其更改为句点,#2733 by @krisaoe
- 将变量
schema重命名为schema_以避免与全局变量名冲突,#2724 by @shahriyarr - 通过
__dataclass_transform__添加 VS Code 自动完成支持,#2721 by @tiangolo - 在
BaseConfig中添加缺失的类型注释并处理max_length = 0,#2719 by @PrettyWood - 更改
orm_mode检查以允许使用字典进行递归 ORM 模式解析,#2718 by @nuno-andre - 将 Michael Kennedy 和 Samuel Colvin 讨论 Pydantic 的 Talk Python To Me 播客第 313 集添加到文档中,#2712 by @RatulMaharaj
- 修复当字段类型为
NamedTuple且具有默认值时 JSON schema 的生成问题,#2707 by @PrettyWood Enum字段现在在 schema 生成中正确支持额外的 kwargs,#2697 by @sammchardy- 破坏性更改,参见 #3780:使引用 pydantic 模型的序列化成为可能,#2650 by @PrettyWood
- 为
ConstrainedList添加uniqueItems选项,#2618 by @nuno-andre - 尝试在模型创建时自动评估前向引用,#2588 by @uriyyo
- 切换文档预览和覆盖率显示以使用 smokeshow,#2580 by @samuelcolvin
- 为 pydantic 模块添加
__version__属性,#2572 by @paxcodes - 为
PostgresDsn添加postgresql+asyncpg、postgresql+pg8000、postgresql+psycopg2、postgresql+psycopg2cffi、postgresql+py-postgresql和postgresql+pygresql方案,#2567 by @postgres-asyncpg - 启用 Hypothesis 插件以在指定
decimal_places参数时生成受约束的 Decimal,#2524 by @cwe5590 - 允许
collections.abc.Callable在 Python 3.9 中用作类型,#2519 by @daviskirk - 文档更新,说明如何在使用 pip install 时自定义编译 pydantic,对
setup.py进行了小改动以允许在编译时使用自定义 CFLAGS,#2517 by @peterroelants - 删除
default_factory的副作用,即使设置了Config.validate_all也只运行一次,#2515 by @PrettyWood - 为
AnyUrl主机的 IP 正则表达式添加先行断言。这允许看起来像 IP 的 DNS 标签的 URL 进行验证,因为它们是完全有效的主机名,#2512 by @sbv-csis - 在生成的固定长度元组的 JSON schema 中设置
minItems和maxItems,#2497 by @PrettyWood - 为
conbytes添加strict参数,#2489 by @koxudaxi - 支持泛型模型中的用户定义泛型字段类型,#2465 by @daviskirk
- 在文档中添加关于
GetterDict子类的示例和简短解释,#2463 by @nuno-andre - 添加
KafkaDsn类型,HttpUrl现在 http 默认端口为 80,https 默认端口为 443,#2447 by @MihanixA - 添加
PastDate和FutureDate类型,#2425 by @Kludex - 支持生成带子类型的
Generic字段的 schema,#2375 by @maximberg - 修复(编码器):将
NameEmail序列化为 str,#2341 by @alecgerona - 添加
Config.smart_union以尽可能防止Union中的强制转换,有关更多信息,请参见文档,#2092 by @PrettyWood - 添加将
typing.Counter用作模型字段类型的功能,#2060 by @uriyyo - 在构造新的参数化类时,将参数化子类添加到
__bases__,以便A <: B => A[int] <: B[int],#2007 by @diabolo-dan - 创建
FileUrl类型,允许符合 RFC 8089 的 URL。添加host_required参数,默认情况下为True(AnyUrl及其子类),在RedisDsn、FileUrl中为False,#1983 by @vgerak - 添加
confrozenset(),类似于conset()和conlist(),#1897 by @PrettyWood - 如果被覆盖,停止调用父类
root_validator,#1895 by @PrettyWood - 为
Field添加repr(默认为True)参数,以将其从BaseModel的默认表示中隐藏,#1831 by @fnep - 接受空的查询/片段 URL 部分,#1807 by @xavier
v1.8.2 (2021-05-11)¶
警告
v1.8.2 修复了一个“中等”级别的安全漏洞。请尽快升级。参见安全公告 CVE-2021-29510
- 安全修复: 修复
date和datetime解析,以防止传入'infinity'或float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510 - 通过生成有效名称修复 Enum 的 schema 生成问题,#2575 by @PrettyWood
- 修复带有枚举成员
Literal的 JSON schema 生成问题,#2536 by @PrettyWood - 修复在类创建期间作为关键字参数传递的配置声明的错误,#2532 by @uriyyo
- 允许在类 kwargs 中传递
json_encoders,#2521 by @layday - 支持带有自定义
__eq__的任意类型,#2483 by @PrettyWood - 在 Python 3.9 中支持
validate_arguments和泛型模型中的Annotated提示,#2483 by @PrettyWood
v1.8.1 (2021-03-03)¶
修复了 v1.8 引起的回归和新功能错误
- 允许
Config.field的元素更新Field的元素,#2461 by @samuelcolvin - 修复带有
BaseModel字段和自定义根类型的验证问题,#2449 by @PrettyWood - 将
Pattern编码器暴露给fastapi,#2444 by @PrettyWood - 启用 Hypothesis 插件以在指定
multiple_of参数时生成受约束的浮点数,#2442 by @tobi-lipede-oodle - 避免在使用某些类型(如
Enum或Literal)与泛型模型时出现RecursionError,#2436 by @PrettyWood - 不要覆盖模型子类中声明的
__hash__,#2422 by @PrettyWood - 修复
mypy对Path和UUID相关自定义类型的抱怨,#2418 by @PrettyWood - 正确支持复合类型的可变长度元组,#2416 by @PrettyWood
v1.8 (2021-02-26)¶
感谢 pydantic 的赞助商:@jorgecarleitao、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@koxudaxi、@timdrijvers、@mkeen、@meadsteve、@ginomempin、@primer-io、@and-semakin、@tomthorogood、@AjitZK、@westonsteimel、@Mazyod、@christippett、@CarlosDomingues、@Kludex、@r-m-n 的慷慨支持。
亮点¶
- Hypothesis 插件用于测试,#2097 by @Zac-HD
- 支持
NamedTuple和TypedDict,#2216 by @PrettyWood - 支持 模型字段上的
Annotated提示,#2147 by @JacobHayes Config上的frozen参数,允许模型被哈希,#1880 by @rhuille
更改¶
- 破坏性更改,删除 v1 中的旧弃用别名,#2415 by @samuelcolvin
- 删除文档中关于迁移到 v1 的注意事项
- 移除已被
Field替换的Schema - 移除已被
Config.case_sensitive(默认False) 替换的Config.case_insensitive - 移除已被
Config.allow_population_by_field_name替换的Config.allow_population_by_alias - 移除已被
model.__fields__替换的model.fields - 移除已被
str(model)替换的model.to_string() - 移除已被
model.__dict__替换的model.__values__
- 破坏性更改: 始终只验证
each_item的第一子级项目。实际上,某些复合类型在某些边缘情况下验证的是最后一子级项目,#1933 by @PrettyWood - 更新文档扩展以修复本地语法高亮显示,#2400 by @daviskirk
- 修复:允许
utils.lenient_issubclass在 Python >= 3.9 中处理typing.GenericAlias对象,如list[str],#2399 by @daviskirk - 通过允许使用 pydantic
Field或dataclasses.field的'metadata'kwarg,改进 pydanticdataclass的字段声明,#2384 by @PrettyWood - 将
typing-extensions设为必需依赖项,#2368 by @samuelcolvin - 使
resolve_annotations更宽松,允许缺少模块,#2363 by @samuelcolvin - 允许通过类 kwargs 配置模型,#2356 by @Bobronium
- 阻止
Mapping子类总是被强制转换为dict,#2325 by @ofek - 修复:允许
Optional[conset / conlist]类型为None,#2320 by @PrettyWood - 支持空元组类型,#2318 by @PrettyWood
- 修复:
python_requires元数据要求 >=3.6.1,#2306 by @hukkinj1 - 正确编码带或不带小数位的
Decimal,#2293 by @hultner - 修复:在
BaseModel.copy(update=…)中更新__fields_set__,#2290 by @PrettyWood - 修复:使用
BaseModel.construct()时保留字段顺序,#2281 by @PrettyWood - 支持为泛型字段生成 schema,#2262 by @maximberg
- 修复
validate_decorator,使其在关键字与*args或**kwargs名称相同的情况下不排除值,#2251 by @cybojenix - 按照原生函数的行为,防止
validate_arguments中位置参数被关键字参数覆盖,#2249 by @cybojenix - 添加
con*类型函数的文档,#2242 by @tayoogunbiyi - 使用嵌套模型调用
parse_obj()时支持自定义根类型(即__root__),#2238 by @PrettyWood - 通过
from_orm()支持自定义根类型(aka__root__),#2237 by @PrettyWood - 根据 #1944 by @kollmats,确保在创建模型时 cythonized 函数保持不变,#2228 by @samuelcolvin
- 解析转换为 pydantic dataclasses 的 stdlib dataclasses 的前向引用,#2220 by @PrettyWood
- 添加对
NamedTuple和TypedDict类型的支持。这两种类型现在在BaseModel或 pydanticdataclass中使用时都会被处理和验证。还添加了两个实用函数create_model_from_namedtuple和create_model_from_typeddict,#2216 by @PrettyWood - 当类型为
Union[Type[...], ...]时,不要忽略带注释的字段,#2213 by @PrettyWood - 当
root_validator未返回dict(例如None) 时,引发用户友好的TypeError,#2209 by @masalim2 - 在
strict_url字段类型的allowed_schemes参数中添加FrozenSet[str]类型注释,#2198 by @Midnighter - 为
Field添加allow_mutation约束,#2195 by @sblack-usu - 允许使用带
default_factory的Field作为用validate_arguments装饰的函数的参数,#2176 by @thomascobb - 允许不存在的秘密目录,只发出警告,#2175 by @davidolrik
- 修复 URL 正则表达式以解析不带查询字符串的片段,#2168 by @andrewmwhite
- 修复:确保始终返回
Literal字段类型中的一个值,#2166 by @PrettyWood - 支持模型字段上的
typing.Annotated提示。现在可以使用Annotated[..., Field(...)]在类型提示中设置Field;所有其他注释都会被忽略,但仍可通过get_type_hints(..., include_extras=True)可见,#2147 by @JacobHayes - 添加了
StrictBytes类型以及ConstrainedBytes的strict=False选项,#2136 by @rlizzo - 添加了
Config.anystr_lower和to_lowerkwarg 到constr和conbytes,#2134 by @tayoogunbiyi - 支持纯
typing.Tuple类型,#2132 by @PrettyWood - 添加一个绑定方法
validate到用validate_arguments装饰的函数,以验证参数而不实际调用函数,#2127 by @PrettyWood - 添加自定义设置源(添加/禁用/更改优先级顺序)的功能,#2107 by @kozlek
- 修复 mypy 对大多数自定义 pydantic 类型的抱怨,#2098 by @PrettyWood
- 添加一个用于 Pydantic 自定义类型进行更轻松的基于属性的测试的 Hypothesis 插件 - 用法详情在此,#2097 by @Zac-HD
- 添加
None、NoneType或Literal[None]的验证器,#2095 by @PrettyWood - 正确处理带有默认值的
Callable类型字段,#2094 by @PrettyWood - 更新了
create_model返回类型注释,使其返回继承自__base__参数的类型,#2071 by @uriyyo - 添加合并的
json_encoders继承,#2064 by @art049 - 允许在子模型中覆盖
ClassVar,而无需重新注释它们,#2061 by @layday - 添加
Pattern类型的默认编码器,#2045 by @PrettyWood - 添加
NonNegativeInt、NonPositiveInt、NonNegativeFloat、NonPositiveFloat,#1975 by @mdavis-xyz - 在颜色字符串格式中使用 % 表示百分比,#1960 by @EdwardBetts
- 修复了在从多个具有相同名称的
BaseModel(在单独的类中声明)构建 schema 时引发KeyError的问题,#1912 by @JSextonn - 向
RedisDsn添加rediss(通过 SSL 的 Redis)协议,允许不带user部分的 URL(例如rediss://:pass@localhost),#1911 by @TrDex - 向
Config添加一个新的frozen布尔参数(默认值:False)。设置frozen=True会执行allow_mutation=False所做的一切,并且还为模型生成一个__hash__()方法。如果所有属性都是可哈希的,这会使模型的实例可能可哈希,#1880 by @rhuille - 修复多个具有相同名称的 Enum 的 schema 生成问题,#1857 by @PrettyWood
- 添加了对
PaymentCardNumber类型中 13/19 位 VISA 信用卡的支付卡支持,#1416 by @AlexanderSov - 修复:在使用递归
GenericModel时防止RecursionError,#1370 by @xppt - 在 JSON schema 中使用
enum来表示typing.Literal,#1350 by @PrettyWood - 修复:一些递归模型不需要
update_forward_refs,并且悄无声息地行为不正确,#1201 by @PrettyWood - 修复了泛型模型中的错误,当字段的类型变量嵌套在另一个类型中时(例如
a: List[T]),它们被认为是具体的。这使得这些模型可以按预期进行子类化和组合,#947 by @daviskirk - 添加
Config.copy_on_model_validation标志。当设置为False时,pydantic 将在验证时保持用作字段的模型不变,而不是重新构造(复制)它们,#265 by @PrettyWood
v1.7.4 (2021-05-11)¶
- 安全修复: 修复
date和datetime解析,以防止传入'infinity'或float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510
v1.7.3 (2020-11-30)¶
感谢 pydantic 的赞助商:@timdrijvers、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@jorgecarleitao、@koxudaxi、@primer-api、@mkeen、@meadsteve 的慷慨支持。
- 修复:为必填(可选)字段设置正确的默认值,#2142 by @PrettyWood
- 修复:支持带有泛型模型的
underscore_attrs_are_private,#2138 by @PrettyWood - 修复:当
validate_assignment开启时,在root_validator中更新所有修改过的字段值,#2116 by @PrettyWood - 允许对从内置
dataclasses.dataclass动态创建的pydantic.dataclasses.dataclass进行 pickle 操作,#2111 by @aimestereo - 修复了 Enum 字段不会将关键字参数传递给 schema 的回归问题,#2109 by @bm424
- 当设置
Config.underscore_attrs_are_private时,忽略__doc__作为私有属性,#2090 by @PrettyWood
v1.7.2 (2020-11-01)¶
- 修复慢速
GenericModel具体模型创建问题,允许在模块中重用GenericModel具体名称,#2078 by @Bobronium - 当设置
validate_assignment时,保持字段的顺序,#2073 by @PrettyWood - 当 stdlib
dataclass转换为 pydanticdataclass时,转发所有参数,#2065 by @PrettyWood
v1.7.1 (2020-10-28)¶
感谢 pydantic 的赞助商:@timdrijvers、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@jorgecarleitao、@koxudaxi、@primer-api、@mkeen 的慷慨支持。
- 修复将配置作为参数传递时
validate_arguments的注释问题,#2055 by @layday - 修复使用
PrivateAttr时 mypy 赋值错误,#2048 by @aphedges - 修复
underscore_attrs_are_private在覆盖__init__时导致TypeError的问题,#2047 by @samuelcolvin - 修复 v1.7 引入的回归问题,涉及
validate_assignment=True时字段验证器中的异常处理,#2044 by @johnsabath - 修复:pydantic
dataclass可以继承自 stdlibdataclass,并且支持Config.arbitrary_types_allowed,#2042 by @PrettyWood
v1.7 (2020-10-26)¶
感谢 pydantic 的赞助商:@timdrijvers、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@jorgecarleitao、@koxudaxi、@primer-api 的慷慨支持。
亮点¶
- Python 3.9 支持,感谢 @PrettyWood
- 私有模型属性,感谢 @Bobronium
BaseSettings中的“秘密文件”支持,感谢 @mdgilene- 将 stdlib dataclasses 转换为 pydantic dataclasses 并在模型中使用 stdlib dataclasses,感谢 @PrettyWood
更改¶
- 破坏性更改: 移除
__field_defaults__,添加BaseModel.construct对default_factory的支持。请改用__fields__属性中字段的.get_default()方法,#1732 by @PrettyWood - 重新安排 CI 以将 linting 作为单独的作业运行,拆分不同任务的安装配方,#2020 by @samuelcolvin
- 允许泛型模型的子类使其超类的一些或所有类型参数具体化,同时也在子类中定义新的类型参数,#2005 by @choogeboom
- 当模型配置中
validate_assignment = True时,在BaseModel.__setattr__中使用正确的values参数类型调用验证器,#1999 by @me-ransh - 强制
fields.Undefined为单例对象,修复继承的泛型模型 schema,#1981 by @daviskirk - 在源分发中包含测试,#1976 by @sbraz
- 添加使用
min_length/max_length约束与秘密类型的功能,#1974 by @uriyyo - 当
validate_assignment开启时,也检查root_validators,#1971 by @PrettyWood - 修复存在自定义验证器时常量验证器不运行的问题,#1957 by @hmvp
- 将
deque添加到字段类型,#1935 by @wozniakty - 添加对 Python 3.9 的基本支持,#1832 by @PrettyWood
- 修复 exporting_models.md#modelcopy 锚点中的拼写错误和不正确的描述,#1821 by @KimMachineGun
- 添加了
BaseSettings读取“秘密文件”的功能,#1820 by @mdgilene - 添加
parse_raw_as实用函数,#1812 by @PrettyWood - 支持
dotenv文件的家目录相对路径(例如~/.env),#1803 by @PrettyWood - 澄清
parse_file的文档,以显示参数应为文件 路径 而非类文件对象,#1794 by @mdavis-xyz - 修复 mypy 插件中当
BaseModel内嵌套的类名为Model时出现的假阳性问题,#1770 by @selimb - 添加对 schema 生成中 Pattern 类型的基本支持,#1767 by @PrettyWood
- 支持枚举的 schema 中自定义标题、描述和默认值,#1748 by @PrettyWood
- 当
use_enum_values为 True 时,正确表示Literal枚举,#1747 by @noelevans - 允许将时区信息添加到字符串,以便格式化为时间对象。允许的格式包括 UTC 的
Z或绝对正/负时间偏移的偏移量。也可以省略时区数据,#1744 by @noelevans - 为
ForwardRef添加带有 Python 3.6 签名的 stub__init__,#1738 by @sirtelemak - 修复嵌套模型中前向引用和可选字段的行为问题,#1736 by @PrettyWood
- 添加
Enum和IntEnum作为字段的有效类型,#1735 by @PrettyWood - 将
create_model的__module__参数的默认值从None更改为'pydantic.main'。将创建的具体模型的引用设置为其模块,以允许进行 pickle 操作(不适用于在函数中创建的模型),#1686 by @Bobronium - 添加私有属性支持,#1679 by @Bobronium
- 向
@validate_arguments添加config,#1663 by @samuelcolvin - 允许派生 Settings 模型使用其
Config中的env覆盖父 Settings 模型中定义的字段的环境变量名称。以前只有env_prefix配置选项适用,#1561 by @ojomio - 在创建 schema
$ref时支持ref_template,#1479 by @kilo59 - 为
PyObject添加一个__call__存根,以便 mypy 知道它是可调用的,#1352 by @brianmaissy pydantic.dataclasses.dataclass装饰器现在支持内置的dataclasses.dataclass。因此,可以轻松地将现有dataclass转换为添加 Pydantic 验证。此外,还支持嵌套 dataclasses,#744 by @PrettyWood
v1.6.2 (2021-05-11)¶
- 安全修复: 修复
date和datetime解析,以防止传入'infinity'或float('inf')(或它们的负值)导致无限循环,参见安全公告 CVE-2021-29510
v1.6.1 (2020-07-15)¶
- 修复带有
default_factory的嵌套模型的验证和解析问题,#1710 by @PrettyWood
v1.6 (2020-07-11)¶
感谢 pydantic 的赞助商:@matin、@tiangolo、@chdsbd、@jorgecarleitao 以及 1 位匿名赞助商的慷慨支持。
- 修改
conlist和conset的验证器,使其不再具有always=True,#1682 by @samuelcolvin - 向
AnyUrl添加端口检查(不能超过 65536)端口是 16 位无符号整数:0 <= port <= 2**16-1来源:rfc793 头格式,#1654 by @flapili - 记录默认的
regex锚定语义,#1648 by @yurikhan - 在 class_validators.py 中使用
chain.from_iterable。这是一种更快、更惯用的使用itertools.chain的方式。它不会计算可迭代对象中的所有项目并将其存储在内存中,而是逐个计算它们,并且从不作为大列表存储。这可以节省运行时和内存空间,#1642 by @cool-RR - 添加
conset(),类似于conlist(),#1623 by @patrickkwang - 使 Pydantic 错误(可)pickle,#1616 by @PrettyWood
- 允许对
dotenv文件进行自定义编码,#1615 by @PrettyWood - 确保始终定义
SchemaExtraCallable,以便在 BaseConfig 上获取类型提示,#1614 by @PrettyWood - 更新日期时间解析器以支持负时间戳,#1600 by @mlbiche
- 更新 mypy,删除
AnyType作为Type[Any]的别名,#1598 by @samuelcolvin - 调整根验证器的处理方式,以便从所有失败的根验证器聚合错误,而不是只报告第一个失败的根验证器,#1586 by @beezee
- 使 Enums 上的
__modify_schema__应用于枚举 schema,而不是使用枚举的字段,#1581 by @therefromhere - 修复
__all__键与序列字段的高级包含/排除中的索引键一起使用时的行为,#1579 by @xspirus - 当
each_item=True时,子类验证器在引用父类中定义的List字段时不运行。在文档中添加了一个示例说明此问题,#1566 by @samueldeklund - 将
schema.field_class_to_schema更改为支持 schema 中的frozenset,#1557 by @wangpeibao - 仅为字段 schema 调用
__modify_schema__,#1552 by @PrettyWood - 移动
fields.py中field.validate_always的赋值,以便验证器的always参数在继承时起作用,#1545 by @dcHHH - 添加了通过 16 字节字符串(例如
b'\x12\x34\x56\x78' * 4)进行 UUID 实例化的支持。这样做是为了支持 sqlalchemy 中的BINARY(16)列,#1541 by @shawnwall - 添加一个测试断言
default_factory可以返回一个单例,#1523 by @therefromhere - 添加
NameEmail.__eq__,以便重复的NameEmail实例被评估为相等,#1514 by @stephen-bunn - 在 pydantic 文档站点中添加 datamodel-code-generator 链接,#1500 by @koxudaxi
- 在文档中添加了“Pydantic 讨论”部分,并链接到 Alexander Hultnér 的“Pydantic 简介”视频,#1499 by @hultner
- 通过尽可能只调用一次
default_factory并且不在 schema 中设置默认值,避免default_factory的一些副作用,#1491 by @PrettyWood - 添加了关于将 dataclasses 导出为 JSON 的文档,#1487 by @mikegrima
- 使
BaseModel.__signature__仅为类属性,因此从模型实例获取__signature__将引发AttributeError,#1466 by @Bobronium - 在秘密类型的 schema 中包含
'format': 'password',#1424 by @atheuz - 修改
ConstrainedFloat的 schema 约束,以便exclusiveMinimum和 minimum 不包含在 schema 中(如果它们等于-math.inf),并且exclusiveMaximum和maximum不包含在 schema 中(如果它们等于math.inf),#1417 by @vdwees - 在
.dict()(以及通过扩展,在.json())中压缩内部__root__字典,#1414 by @patrickkwang - 将
const验证器移至后验证器,以便它验证解析后的值,#1410 by @selimb - 修复模型验证以处理嵌套字面量,例如
Literal['foo', Literal['bar']],#1364 by @DBCerigo - 从
RedisDsn中移除user_required = True,用户和密码都不是必需的,#1275 by @samuelcolvin - 为带有
Union和自定义Field的字段从 schema 中移除额外的allOf,#1209 by @mostaphaRoudsari - 更新 OpenAPI schema 生成,将所有枚举作为单独的模型输出。模型现在使用
$ref属性指向枚举定义,而不是将枚举值内联到模型 schema 中,#1173 by @calvinwyoung
v1.5.1 (2020-04-23)¶
- 带有
extra: allow的签名生成从不使用字段名,#1418 by @prettywood - 避免修改
Field默认值,#1412 by @prettywood
v1.5 (2020-04-18)¶
- 使
.dict()、._iter()等的 includes/excludes 参数不可变,#1404 by @AlexECX - 在
model._iter()中,无论by_alias如何,始终使用字段的真实名称进行包含/排除,#1397 by @AlexECX - 更新 constr regex 示例以包含起始和结束行,#1396 by @lmcnearney
- 确认浅拷贝
model.copy()确实是属性的浅拷贝,#1383 by @samuelcolvin - 将
main.create_model()的model_name参数重命名为__model_name,以允许将model_name用作字段名,#1367 by @kittipatv - 在 mypy 插件中,将引发异常替换为对非 Var 属性的静默通过,#1345 by @b0g3r
- 移除 Python 3.8 的
typing_extensions依赖项,#1342 by @prettywood - 使
SecretStr和SecretBytes初始化幂等,#1330 by @atheuz - 记录如何使用 json 方法使秘密类型可转储,#1328 by @atheuz
- 将所有测试和构建转移到 github actions,添加 windows 和 macos 二进制文件,非常感谢 @StephenBrown2 的大力帮助,#1326 by @samuelcolvin
- 修复
PaymentCardNumber中的卡号长度检查,PaymentCardBrand现在继承自str,#1317 by @samuelcolvin - 让
BaseModel继承自Representation,以便在覆盖__str__时使 mypy 满意,#1310 by @FuegoFro - 允许将
None作为所有可选列表字段的输入,#1307 by @prettywood - 为
default_factory示例添加datetime字段,#1301 by @StephenBrown2 - 允许已知类型的子类使用超类编码器进行编码,#1291 by @StephenBrown2
- 使用
'__all__'从子模型/字典列表/元组的所有元素中排除导出的字段,#1286 by @masalim2 - 添加 pydantic.color.Color 对象作为 Color 字段的可用输入,#1258 by @leosussan
- 在示例中,可空字段的类型设置为
Optional,以便它们是有效的 mypy 注释,#1248 by @kokes - 使
pattern_validator()接受预编译的Pattern对象。修复str_validator()返回类型为str,#1237 by @adamgreg - 文档如何管理泛型和继承,#1229 by @esadruhn
- BaseModel 的
update_forward_refs()方法现在复制类模块的__dict__,而不是修改它,#1228 by @paul-ilyin - 支持带有
@validate_arguments的实例方法和类方法,#1222 by @samuelcolvin - 为
Field添加default_factory参数,通过传递一个零参数可调用对象来创建动态默认值,#1210 by @prettywood - 添加对
List、Optional等的NewType支持,#1207 by @Kazy - 修复
root_validator的 mypy 签名,#1192 by @samuelcolvin - 修复了嵌套“自定义根类型”模型的解析问题,#1190 by @Shados
- 添加
validate_arguments函数装饰器,用于检查函数的参数是否与类型注释匹配,#1179 by @samuelcolvin - 为模型添加
__signature__,#1034 by @Bobronium - 重构
._iter()方法,dict(model)的速度提升 10 倍,#1017 by @Bobronium
v1.4 (2020-01-24)¶
- 破坏性更改: 别名优先级逻辑已更改,字段上的别名始终优先于
alias_generator中的别名,以避免错误/意外行为,有关详细信息,请参阅此处,#1178 by @samuelcolvin - 添加对 TLD 中 Unicode 和 Punycode 的支持,#1182 by @jamescurtin
- 修复赋值期间验证器中
cls参数的问题,#1172 by @samuelcolvin - 完成
PaymentCardNumber的 Luhn 算法,PaymentCardBrand现在继承自str,#1166 by @cuencandres - 添加对实现
__get_validators__的泛型的支持,例如自定义数据类型,#1159 by @tiangolo - 添加对
Iterable的无限生成器的支持,#1152 by @tiangolo - 修复
url_regex以接受第一个字符后带有+、-和.的方案,#1142 by @samuelcolvin - 将
version_info()移动到version.py,建议在问题中使用它,#1138 by @samuelcolvin - 通过延迟某些模块加载和正则表达式编译,将 pydantic 导入时间缩短约 50%,#1127 by @samuelcolvin
- 修复
EmailStr和NameEmail在 cython 中接受自身的实例,#1126 by @koxudaxi - 将模型类传递给
Config.schema_extra可调用对象,#1125 by @therefromhere - 修复 URL 中用户名和密码的正则表达式,#1115 by @samuelcolvin
- 添加对嵌套泛型模型的支持,#1104 by @dmontagu
- 为
__init__.py添加__all__以防止 mypy 中的“隐式重新导出”错误,#1072 by @samuelcolvin - 添加对
BaseSettings使用“dotenv”文件的支持,#1011 by @acnebs
v1.3 (2019-12-21)¶
- 更改
schema和schema_model以通过使用其__pydantic_model__功能处理 dataclasses,#792 by @aviramha - 添加了
root_validator选项,如果值验证失败,可以使用关键字skip_on_failure=True跳过,#1049 by @aviramha - 允许
Config.schema_extra是一个可调用对象,以便可以对生成的 schema 进行后处理,#1054 by @selimb - 更新 mypy 到版本 0.750,#1057 by @dmontagu
- 欺骗 Cython 允许 str 子类化,#1061 by @skewty
- 防止类型属性被添加到 schema,除非属性
__schema_attributes__为True,#1064 by @samuelcolvin - 更改
BaseModel.parse_file以使用Config.json_loads,#1067 by @kierandarcy - 修复可选
Json字段的问题,#1073 by @volker48 - 将使用 cython 编译时使用的默认线程数更改为 1,允许通过
CYTHON_NTHREADS环境变量覆盖,#1074 by @samuelcolvin - 在 Pydantic 的 CI 测试期间运行 FastAPI 测试,#1075 by @tiangolo
- 我的 mypy 严格性约束,以及相关的类型注释调整,#1077 by @samuelcolvin
- 为 SecretStr 和 SecretBytes 添加
__eq__以允许“值相等”,#1079 by @sbv-trueenergy - 修复嵌套 None 情况下的 schema 生成问题,#1088 by @lutostag
- 对序列类对象的一致性检查,#1090 by @samuelcolvin
- 修复
BaseSettings在与env_prefix一起使用时Config继承问题,#1091 by @samuelcolvin - 修复
__modify_schema__在与field_class_to_schema*冲突时的问题,#1102 by @samuelcolvin - 文档:修复关于填充
BaseSettings子类属性时环境变量名称大小写敏感性的解释,#1105 by @tribals - 重命名文档中的 django-rest-framework 基准测试,#1119 by @frankie567
v1.2 (2019-11-28)¶
- 可能的破坏性更改: 添加对
name: Optional[AnyType] = Field(...)的必需Optional的支持,并重构ModelField创建以保留required参数值,#1031 by @tiangolo;有关详细信息,请参阅此处 - 添加
cattrs的基准测试,#513 by @sebastianmika - 为
dict()和相关函数添加exclude_none选项,#587 by @niknetniko - 添加
valideer的基准测试,#670 by @gsakkis - 添加
parse_obj_as和parse_file_as函数,用于将数据临时解析为任意 pydantic 兼容类型,#934 by @dmontagu - 为验证器添加
allow_reuse参数,从而允许验证器重用,#940 by @dmontagu - 添加对自定义根模型的映射类型支持,#958 by @dmontagu
- 对 dataclasses 的 Mypy 插件支持,#966 by @koxudaxi
- 添加对 dataclasses 默认工厂的支持,#968 by @ahirner
- 添加
ByteSize类型用于将字节字符串(1GB)转换为普通字节,#977 by @dgasmith - 修复 mypy 关于
@root_validator(pre=True)的抱怨,#984 by @samuelcolvin - 为 Python 3.8 添加 manylinux 二进制文件到 pypi,同时支持 manylinux2010,#994 by @samuelcolvin
- 添加 ByteSize 转换为另一个单位的功能,#995 by @dgasmith
- 修复模型的
__str__和__repr__继承,#1022 by @samuelcolvin - 在文档中添加推荐部分,#1025 by @sullivancolin
- 为 Python 3.8 添加对
typing.Literal的支持,#1026 by @dmontagu
v1.1.1 (2019-11-20)¶
- 修复子模型上复杂字段使用可能导致字段配置不正确的错误,#1015 by @samuelcolvin
v1.1 (2019-11-07)¶
- 为
BaseModel.__init__和更多功能添加 mypy 插件以进行类型检查,#722 by @dmontagu - 更改
GenericModel.__class_getitem__的返回类型类型提示,以防止 PyCharm 警告,#936 by @dmontagu - 修复
Any的用法以允许None,还支持TypeVar,从而允许使用未参数化的集合类型,例如Dict和List,#962 by @samuelcolvin - 在子字段上设置
FieldInfo,以修复复杂嵌套类型的 schema 生成问题,#965 by @samuelcolvin
v1.0 (2019-10-23)¶
- 破坏性更改: 弃用
Model.fields属性,改用Model.__fields__,#883 by @samuelcolvin - 破坏性更改: 更改别名的优先级,使子模型别名覆盖父别名,包括使用
alias_generator,#904 by @samuelcolvin - 破坏性更改: 将
skip_defaults重命名为exclude_unset,并添加排除实际默认值的功能,#915 by @dmontagu - 在
pydantic.main.ModelMetaclass.__new__中添加**kwargs,以便__init_subclass__可以在扩展的BaseModel类上接受自定义参数,#867 by @retnikt - 修复具有默认值的字段类型,#880 by @koxudaxi
- 当设置模型使用
alias而非env时,使用FutureWarning而非DeprecationWarning,#881 by @samuelcolvin - 修复
BaseSettings继承和alias被设置为None的问题,#882 by @samuelcolvin - 修改
__repr__和__str__方法,使其在所有公共类中保持一致,添加__pretty__以支持 python-devtools,#884 by @samuelcolvin - 关于
BaseSettings配置中的case_insensitive的弃用警告,#885 by @samuelcolvin - 对于
BaseSettings,递归合并环境变量和代码内值,只要它们合并后能创建一个有效的对象,以允许拆分初始化参数,#888 by @idmitrievsky - 更改秘密类型示例,#890 by @ashears
- 更改
Model.construct()的签名以使其更易于使用,并记录construct()的用法,#898 by @samuelcolvin - 添加
construct()方法的示例,#907 by @ashears - 改进复杂类型上
Field约束的使用,如果约束无法执行则引发错误,并在 schema 中支持带省略号Tuple[X, ...]的元组、Sequence和FrozenSet,#909 by @samuelcolvin - 更新缺少有效布尔值的文档,#911 by @trim21
- 更好的
ModelField的str/repr逻辑,#912 by @samuelcolvin - 修复
ConstrainedList,更新 schema 生成以反映min_items和max_itemsField()参数,#917 by @samuelcolvin - 允许在
dict()的include和exclude参数中使用抽象集合(例如,字典键),#921 by @samuelcolvin - 通过使用
pydantic_encoder修复ValidationError.json()上的 JSON 序列化错误,#922 by @samuelcolvin - 阐明
remove_untouched的用法,改进没有验证器的类型的错误消息,#926 by @retnikt
v1.0b2 (2019-10-07)¶
- 将
StrictBool类型检查标记为bool,以允许默认值而不会出现 mypy 错误,#690 by @dmontagu - 将文档构建从 sphinx 转移到 mkdocs,重写大部分文档,#856 by @samuelcolvin
- 为
GenericModel子类添加自定义命名方案支持,#859 by @dmontagu - 将
if TYPE_CHECKING:添加到测试覆盖率的排除行中,#874 by @dmontagu - 将
allow_population_by_alias重命名为allow_population_by_field_name,删除不必要的警告,#875 by @samuelcolvin
v1.0b1 (2019-10-01)¶
- 重大变更: 将
Schema重命名为Field,并将其设为函数以满足 mypy 的要求,#577 by @samuelcolvin - 重大变更: 修改
bool的解析行为,#617 by @dmontagu - 重大变更: 不再识别
get_validators,请使用__get_validators__。不再识别Config.ignore_extra和Config.allow_extra,请使用Config.extra,#720 by @samuelcolvin - 重大变更: 修改
BaseSettings的默认配置设置;case_insensitive重命名为case_sensitive,默认值更改为case_sensitive = False,env_prefix默认值更改为''- 例如无前缀,#721 by @dmontagu - 重大变更: 实现
root_validator并将根错误从__obj__重命名为__root__,#729 by @samuelcolvin - 重大变更: 更改
dict(model)的行为,以便子模型不再转换为字典,#733 by @samuelcolvin - 重大变更: 为
post_init_post_parse添加了initvars支持,#748 by @Raphael-C-Almeida - 重大变更: 使
BaseModel.json()仅对具有自定义根的模型序列化__root__键,#752 by @dmontagu - 重大变更:
URL解析逻辑的完全重写,#755 by @samuelcolvin - 重大变更: 在子类未提供字段确定时保留超类注解,#757 by @dmontagu
- 重大变更:
BaseSettings现在使用特殊的env设置来定义要读取哪些环境变量,而不是别名,#847 by @samuelcolvin - 添加对验证器中
assert语句的支持,#653 by @abdusco - 更新文档以指定
pydantic.dataclasses.dataclass的使用和继承pydantic.BaseModel,#710 by @maddosaurus - 通过
json_loads和json_dumpsConfig属性允许自定义 JSON 解码和编码,#714 by @samuelcolvin - 使所有带注解的字段按照声明的顺序出现,#715 by @dmontagu
- 使用 pytest 测试
mypy集成,#735 by @dmontagu - 为
ErrorWrapper添加__repr__方法,#738 by @samuelcolvin - 添加了对 dataclasses 中
FrozenSet成员的支持,并在尝试使用 Pydantic 不支持的typing模块中的类型时提供了更好的错误提示,#745 by @djpetti - 添加 Pycharm 插件文档,#750 by @koxudaxi
- 修复文档中损坏的示例,#753 by @dmontagu
- 将与类型相关的对象移至
pydantic.typing,#761 by @samuelcolvin ErrorWrapper、ValidationError和日期时间解析的次要性能改进,#763 by @samuelcolvindatetime/date/time/timedelta类型的改进:更具描述性的错误,将错误更改为value_error而非type_error,支持字节,#766 by @samuelcolvin- 修复
Literal类型具有多个允许值时的错误消息,#770 by @dmontagu - 通过将下划线转换为空格,改进 JSON schema 中自动生成的
title字段,#772 by @skewty - 支持 dataclasses 的
mypy --no-implicit-reexport,同时在 pydantic 本身中尊重--no-implicit-reexport,#783 by @samuelcolvin - 添加
PaymentCardNumber类型,#790 by @matin - 修复列表的 const 验证,#794 by @hmvp
- 对于不允许额外字段的模型,将 schema 中的
additionalProperties设置为 false,#796 by @Code0x58 EmailStr验证方法现在根据 RFC 5321 返回本地部分区分大小写,#798 by @henriklindgren- 增加了对
ConstrainedFloat、ConstrainedInt和ConstrainedStr验证严格性的能力,并添加了StrictFloat和StrictInt类,#799 by @DerRidda - 改进了对
None和Optional的处理,将验证器上的whole替换为each_item(反向含义,默认False),#803 by @samuelcolvin - 添加对
Type[T]类型提示的支持,#807 by @timonbimon - 通过移除
change_exceptions提高性能,改变 pydantic 错误的构建方式,#819 by @samuelcolvin - 修复当
BaseModel类型的模型字段在解析期间导致ValidationError时出现的错误消息,#820 by @dmontagu - 允许在
Config上使用getter_dict,修改GetterDict以使其更像Mapping对象,从而更易于使用,#821 by @samuelcolvin - 仅在基本
GenericModel类上检查TypeVar参数,#842 by @zpencerq - 将
Model._schema_cache重命名为Model.__schema_cache__,Model._json_encoder重命名为Model.__json_encoder__,Model._custom_root_type重命名为Model.__custom_root_type__,#851 by @samuelcolvin
v0.32.2 (2019-08-17)¶
(文档可在 此处 获取)
- 修复 dataclass 继承中
__post_init__的用法,修复 #739 by @samuelcolvin - 修复 GenericModels 类上必填字段的验证,#742 by @amitbl
- 修复在
GenericModel字段上定义自定义Schema的问题,#754 by @amitbl
v0.32.1 (2019-08-08)¶
- 当
validate_assignment开启时,不验证额外字段,#724 by @YaraslauZhylko
v0.32 (2019-08-06)¶
- 将模型名称添加到
ValidationError错误消息中,#676 by @dmontagu - 重大变更:移除
BaseModel上的__getattr__并将__values__重命名为__dict__,使用__values__属性时发出弃用警告,属性访问速度提高达 14 倍,#712 by @Bobronium - 在 Python 3.6 中支持
ForwardRef(不带自引用注解),#706 by @koxudaxi - 在
Config子类中实现schema_extra,#663 by @tiangolo
v0.31.1 (2019-07-31)¶
v0.31 (2019-07-24)¶
- 更好地支持浮点型
multiple_of值,#652 by @justindujardin - 修复
NewType和Literal的 schema 生成,#649 by @dmontagu - 修复
alias_generator和字段配置冲突,#645 by @gmetzker 和 #658 by @Bobronium EnumError更详细的消息,#673 by @dmontagu- 为
dict、json和copy添加高级排除支持,#648 by @Bobronium - 修复
GenericModel中具有具体参数化字段的模型错误,#672 by @dmontagu - 添加
Literal类型文档,#651 by @dmontagu - 添加
Config.keep_untouched以支持自定义描述符,#679 by @Bobronium - 内部使用
inspect.cleandoc获取模型描述,#657 by @tiangolo - 添加
Color到 schema 生成,by @euri10 - 添加 Literal 类型文档,#651 by @dmontagu
v0.30.1 (2019-07-15)¶
v0.30 (2019-07-07)¶
- 代码中强制使用单引号,#612 by @samuelcolvin
- 修复 dataclass 继承和
__post_init__的无限递归问题,#606 by @Hanaasagi - 修复
GenericModel的默认值,#610 by @dmontagu - 澄清自引用模型需要 Python 3.7+,#616 by @vlcinsky
- 修复类型截断,#611 by @dmontagu
- 添加
alias_generator支持,#622 by @Bobronium - 修复无参数泛型类型 schema 生成,#625 by @dmontagu
- 修复具有对同一模型的多个/循环引用的 schema 生成,#621 by @tiangolo 和 @wongpat
- 支持自定义根类型,#628 by @koxudaxi
- 在
parse_obj中支持self作为字段名,#632 by @samuelcolvin
v0.29 (2019-06-19)¶
- 支持 dataclasses.InitVar,#592 by @pfrederiks
- 更新文档以阐明在属性注解下定义多个类型时
Union的用法,并展示类型顺序如何影响提供值的编组,#594 by @somada141 - 添加
conlist类型,#583 by @hmvp - 添加对泛型的支持,#595 by @dmontagu
v0.28 (2019-06-06)¶
- 修复 Python 3.7 中使用带有循环引用的模型时 JSON Schema 生成的问题,#572 by @tiangolo
- 支持 dataclasses 上的
__post_init_post_parse__,#567 by @sevaho - 允许将 dataclasses 导出为 JSON,#575 by @samuelcolvin 和 @DanielOberg
- ORM 模式,#562 by @samuelcolvin
- 修复 ipython 上的
pydantic.compiled,#573 by @dmontagu 和 @samuelcolvin - 添加
StrictBool类型,#579 by @cazgp
v0.27 (2019-05-30)¶
- 重大变更
_pydantic_post_init在验证前执行 dataclass 的原始__post_init__,#560 by @HeavenVolkoff - 修复未指定参数的泛型类型处理问题,#550 by @dmontagu
- 重大变更 (可能):这是第一个用 cython 编译的版本,请查阅文档,如果遇到问题请提交 issue
v0.27.0a1 (2019-05-26)¶
- 修复
list、tuple和set的 JSON Schema,#540 by @tiangolo - 使用 cython 编译,
manylinux二进制文件,以及其他一些性能改进,#548 by @samuelcolvin
v0.26 (2019-05-22)¶
- 修复
IPvAnyAddress、IPvAnyInterface、IPvAnyNetwork的 schema 生成 #498 by @pilosus - 修复可变长度元组支持,#495 by @pilosus
- 修复
create_model的返回类型提示,#526 by @dmontagu - 重大变更: 修复
.dict(skip_keys=True)跳过通过别名设置的值(这涉及将validate_model()更改为始终返回Tuple[Dict[str, Any], Set[str], Optional[ValidationError]]),#517 by @sommd - 修复
IPv4Address、IPv6Address、IPv4Interface、IPv6Interface、IPv4Network、IPv6Network的 schema 生成 #532 by @euri10 - 添加
Color类型,#504 by @pilosus 和 @samuelcolvin
v0.25 (2019-05-05)¶
- 改进了关于自引用模型和注解的文档,#487 by @theenglishway
- 修复
.dict()与额外键的问题,#490 by @JaewonKim - 支持
Schema中的const关键字,#434 by @Sean1708
v0.24 (2019-04-23)¶
- 修复
Union等子类型中ForwardRef的处理问题,#464 by @tiangolo - 修复秘密序列化,#465 by @atheuz
- 支持 dataclasses 的自定义验证器,#454 by @primal100
- 修复
parse_obj以处理类字典对象,#472 by @samuelcolvin - 修复基于嵌套 dataclass 的模型中的 schema 生成,#474 by @NoAnyLove
- 修复
Path、FilePath和DirectoryPath对象的json序列化,#473 by @mikegoodspeed
v0.23 (2019-04-04)¶
- 改进贡献部分的文档,#441 by @pilosus
- 改进 README.rst 以包含有关包的基本信息,#446 by @pilosus
IntEnum支持,#444 by @potykion- 修复 PyObject 可调用值,#409 by @pilosus
- 修复更新后
black弃用警告,#451 by @pilosus - 修复
ForwardRef收集 bug,#450 by @tigerwings - 支持专门的
ClassVars,#455 by @tyrylu - 修复
ipaddress类型的 JSON 序列化,#333 by @pilosus - 添加
SecretStr和SecretBytes类型,#452 by @atheuz
v0.22 (2019-03-29)¶
- 从
ipaddressstdlib 添加IPv{4,6,Any}Network和IPv{4,6,Any}Interface类型,#333 by @pilosus - 添加
datetime类型的文档,#386 by @pilosus - 修复基于 dataclass 的模型中的 schema 生成,#408 by @pilosus
- 修复嵌套模型中的路径,#437 by @kataev
- 添加
Sequence支持,#304 by @pilosus
v0.21.0 (2019-03-15)¶
- 修复
NoneIsNotAllowedError消息中的拼写错误,#414 by @YaraslauZhylko - 添加
IPvAnyAddress、IPv4Address和IPv6Address类型,#333 by @pilosus
v0.20.1 (2019-02-26)¶
- 修复
parse_obj和类似方法的类型提示,#405 by @erosennin - 修复子模型验证,#403 by @samuelcolvin
- 更正
ValidationError.json的类型提示,#406 by @layday
v0.20.0 (2019-02-18)¶
- 修复 Python 3.8 的测试,#396 by @samuelcolvin
- 为交互式会话中的自动补全添加字段到
dir方法中,#398 by @dgasmith - 支持 dataclasses 的
ForwardRef(因此支持from __future__ import annotations),#397 by @samuelcolvin
v0.20.0a1 (2019-02-13)¶
- 重大变更 (可能):验证器更复杂的参数解析,现在允许
values、config和field的任何子集,例如(cls, value, field),但是可变关键字参数("**kwargs")必须命名为kwargs,#388 by @samuelcolvin - 重大变更:向
BaseModel.dict()添加skip_defaults参数,以允许跳过未显式设置的字段,Model.construct()的签名已更改,#389 by @dgasmith - 为 PEP-561 支持添加
py.typed标记文件,#391 by @je-l - 修复多重继承/混入的
extra行为,#394 by @YaraslauZhylko
v0.19.0 (2019-02-04)¶
- 支持
Callable类型提示,修复 #279 by @proofit404 - 修复带有
validator装饰器的字段的 schema,修复 #375 by @tiangolo - 将
multiple_of约束添加到ConstrainedDecimal、ConstrainedFloat、ConstrainedInt及其相关类型condecimal、confloat和conint#371,感谢 @StephenBrown2 - 弃用
ignore_extra和allow_extraConfig 字段,改用extra,#352 by @liiight - 为所有函数添加类型注解,使用 mypy 进行全面测试,#373 by @samuelcolvin
- 修复
validate_all或validate_always的“缺失”错误,#381 by @samuelcolvin - 将日期/日期时间解析的秒/毫秒分界点更改为
2e10,#385 by @samuelcolvin
v0.18.2 (2019-01-22)¶
- 修复
Optional字段的 schema 生成,修复 #361 by @samuelcolvin
v0.18.1 (2019-01-17)¶
- 添加
ConstrainedBytes和conbytes类型,#315 @Gr1N - 添加
MANIFEST.in以将许可证包含在包.tar.gz中,#358 by @samuelcolvin
v0.18.0 (2019-01-13)¶
- 重大变更:不要对字典的键调用验证器,#254 by @samuelcolvin
- 修复当默认值为
None或类型为可选时带有always=True的验证器,同时防止对子字段调用whole验证器,修复 #132 by @samuelcolvin - 改进设置优先级的文档并允许轻松更改,#343 by @samuelcolvin
- 修复
ignore_extra=False和allow_population_by_alias=True,修复 #257 by @samuelcolvin - 重大变更:将
BaseConfig属性min_anystr_length和max_anystr_length默认设置为None,修复 #349 在 #350 中 by @tiangolo - 添加对延迟注解的支持,#348 by @samuelcolvin
v0.17.0 (2018-12-27)¶
- 修复
timedelta作为数字的 schema,#325 by @tiangolo - 防止验证器在继承后重复调用,#327 by @samuelcolvin
- 防止 ipython 中重复的验证器检查,修复 #312 by @samuelcolvin
- 添加文档中的“使用 Pydantic”部分,#323 by @tiangolo & @samuelcolvin
- 修复注解为
: dict、: list、: tuple和: set的字段的 schema 生成,#330 & #335 by @nkonin - 为 schema 中作为字典键的受限字符串添加支持,#332 by @tiangolo
- 支持在 dataclasses 装饰器中传递 Config 类,#276 by @jarekkar (重大变更:这取代了
validate_assignment参数与config) - 支持嵌套 dataclasses,#334 by @samuelcolvin
- 当
PyObject出现ImportError时提供更好的错误信息,#309 by @samuelcolvin - 将
get_validators重命名为__get_validators__,使用旧名称时发出弃用警告,#338 by @samuelcolvin - 通过从字段中排除
ClassVar属性来支持它,#184 by @samuelcolvin
v0.16.1 (2018-12-10)¶
- 修复
create_model正确使用传递的__config__,#320 by @hugoduncan
v0.16.0 (2018-12-03)¶
- 重大变更:重构 schema 生成以与 JSON Schema 和 OpenAPI 规范兼容,#308 by @tiangolo
- 将
schema添加到schema模块中,以从基本模型生成顶级 schema,#308 by @tiangolo - 向
Schema类添加额外字段以声明对str和数值的验证,#311 by @tiangolo - 将字段上的
_schema重命名为schema,#318 by @samuelcolvin - 向
BaseSettingsConfig添加case_insensitive选项,#277 by @jasonkuhrt
v0.15.0 (2018-11-18)¶
- 将代码库移至使用 black,#287 by @samuelcolvin
- 修复设置中别名使用的问题,#286 by @jasonkuhrt 和 @samuelcolvin
- 修复
parse_date中的日期时间解析,#298 by @samuelcolvin - 允许 dataclass 继承,修复 #293 by @samuelcolvin
- 修复
PyObject = None,修复 #305 by @samuelcolvin - 允许
Pattern类型,修复 #303 by @samuelcolvin
v0.14.0 (2018-10-02)¶
- dataclasses 装饰器,#269 by @Gaunt 和 @samuelcolvin
v0.13.1 (2018-09-21)¶
- 修复 int_validator 不将
bool强制转换为int的问题 #264 by @nphyatt - 为
BaseModel.copy()添加深拷贝支持 #249, @gangefors
v0.13.0 (2018-08-25)¶
- 如果字段名遮蔽了现有的
BaseModel属性,则引发异常 #242 - 添加
UrlStr和urlstr类型 #236 - timedelta json 编码 ISO8601 和总秒数,自定义 json 编码器 #247, by @cfkanesan 和 @samuelcolvin
- 允许
timedelta对象作为timedelta类型的属性值(匹配datetime等行为) #247
v0.12.1 (2018-07-31)¶
- 修复使用
typing.Any定义的字段的 schema 生成 #237
v0.12.0 (2018-07-31)¶
v0.11.2 (2018-07-05)¶
v0.11.1 (2018-07-02)¶
- 支持 Python 3.7 #216,感谢 @layday
- 允许模型中的任意类型 #209,感谢 @oldPadavan
v0.11.0 (2018-06-28)¶
- 使
list、tuple和set类型更严格 #86 - 重大变更:移除 msgpack 解析 #201
- 添加
FilePath和DirectoryPath类型 #10 - 模型 schema 生成 #190
- 模型和 schema 的 JSON 序列化 #133
v0.10.0 (2018-06-11)¶
- 添加
Config.allow_population_by_alias#160,感谢 @bendemaree - 重大变更:新的错误格式 #179,感谢 @Gr1N
- 重大变更:移除
Config.min_number_size和Config.max_number_size#183,感谢 @Gr1N - 重大变更:纠正
conint等的lt和gt参数的行为 #188,对于旧行为,请使用le和ge#194,感谢 @jaheba - 添加错误上下文和通过
Config.error_msg_templates重新定义错误消息模板的能力 #183,感谢 @Gr1N - 修复验证器异常中的拼写错误 #150
- 将默认值复制到模型值,以便不同模型不共享对象 #154
v0.9.1 (2018-05-10)¶
- 允许配置类上的自定义
get_field_config#159 - 添加
UUID1、UUID3、UUID4和UUID5类型 #167,感谢 @Gr1N - 修改一些不一致的 docstrings 和注解 #173,感谢 @YannLuo
- 修复异类类型的类型注解 #171,感谢 @Gr1N
- 在异类类型中重用类型验证器 #171
- 每月定期更新依赖项 #168
- 添加
Decimal、ConstrainedDecimal和condecimal类型 #170,感谢 @Gr1N
v0.9.0 (2018-04-28)¶
- 调整 email-validator 导入错误消息 #145
- 修复
parse_date()和parse_datetime()在输入为 0 时的解析错误 #144,感谢 @YannLuo - 添加
Config.anystr_strip_whitespace和strip_whitespacekwarg 到constr,默认值为False#163,感谢 @Gr1N - 添加
ConstrainedFloat、confloat、PositiveFloat和NegativeFloat类型 #166,感谢 @Gr1N
v0.8.0 (2018-03-25)¶
- 修复
inherit_config的类型注解 #139 - 重大变更:在验证器中检查无效字段名 #140
- 验证父模型的属性 #141
- 重大变更:电子邮件验证现在使用 email-validator #142
v0.7.1 (2018-02-07)¶
- 修复
create_model修改基类的 bug
v0.7.0 (2018-02-06)¶
- 增加了与抽象基类 (ABCs) 的兼容性 #123
- 添加
create_model方法 #113 #125 - 重大变更:将模型上的
.config重命名为.__config__ - 重大变更:移除模型上已弃用的
.values(),改用.dict() - 移除
OrderedDict的使用并使用简单字典 #126 - 添加
Config.use_enum_values#127 - 添加形如
@validate('*')的通配符验证器 #128
v0.6.4 (2018-02-01)¶
- 允许 Python 日期和时间对象 #122
v0.6.3 (2017-11-26)¶
- 修复没有
README.rst时的直接安装问题
v0.6.2 (2017-11-13)¶
- 验证器使用无效时的错误
- 更安全地检查
Settings中的复杂模型
v0.6.1 (2017-11-08)¶
v0.6.0 (2017-11-07)¶
- 赋值验证 #94,感谢 petroswork!
- 复杂类型的环境变量中的 JSON,#96
- 为复杂验证添加
validator装饰器,#97 - 弃用
values(...)并替换为.dict(...),#99
v0.5.0 (2017-10-23)¶
v0.4.0 (2017-07-08)¶
- 在字符串验证错误中显示长度
- 修复继承期间配置中的别名 #55
- 简化错误显示
- 在
truncate中使用 Unicode 省略号 - 添加
parse_obj、parse_raw和parse_file辅助函数 #58 - 将仅注解字段移到字段列表的开头而不是末尾
v0.3.0 (2017-06-21)¶
- 通过
config.allow_mutation = False实现不可变模型,相关清理和性能改进 #44 - 不可变辅助方法
construct()和copy()#53 - 允许模型进行 pickle 序列化 #53
setattr被移除,因为__setattr__现在是智能的 #44raise_exception已移除,模型现在总是引发异常 #44- 实例方法验证器已移除
- 添加了 django-restful-framework 基准测试 #47
- 修复继承 bug #49
- 使字符串类型更严格,以便列表、字典等不会被强制转换为字符串。 #52
- 添加
StrictStr,只允许字符串作为输入 #52
v0.2.1 (2017-06-07)¶
- pypi 和 travis 搞砸了
v0.2的部署,这应该能修复它
v0.2.0 (2017-06-07)¶
- 重大变更:模型上的
values()现在是一个方法而不是属性,接受include和exclude参数 - 允许仅注解字段支持 mypy
- 为模型添加漂亮的
to_string(pretty=True)方法
v0.1.0 (2017-06-03)¶
- 添加文档
- 添加历史记录