更新日志
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_path
URL 选项,由 @Viicos 在 #12336 中完成 - 为 JSON Schema 生成添加
union_format
参数,由 @Viicos 在 #12147 中完成 - 为
create_model
添加__qualname__
参数,由 @Atry 在 #12001 中完成
修复¶
- 在管道 API 中不要尝试从 lambda 定义推断名称,由 @Viicos 在 #12289 中完成
- 在
TypeAdapter
中为函数使用正确的命名空间,由 @Viicos 在 #12324 中完成 - 在
TypeAdapter
中为上下文类型注解使用Any
,由 @inducer 在 #12279 中完成 - 在
pydantic.fields.__all__
中公开FieldInfo
,由 @Viicos 在 #12339 中完成 - 在
@validate_call
中遵守validation_alias
,由 @Viicos 在 #12340 中完成 - 在插件 API 中使用
Any
作为上下文注解,由 @Viicos 在 #12341 中完成 - 在可能的情况下,在警告中使用正确的
stacklevel
,由 @Viicos 在 #12342 中完成
新贡献者¶
- @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
属性的对象的ImportString
JSON 序列化,由 @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-before
schema,由 @Viicos 在 #11801 中完成 - 修复 stdlib 数据类检查问题,由 @Viicos 在 #11822 中完成
- 在应用类型变量映射后检查
FieldInfo
是否完成,由 @Viicos 在 #11855 中完成 - 在
model_rebuild()
中不删除模拟验证器/序列化器,由 @Viicos 在 #11890 中完成 - 在 schema 生成之前重建数据类字段,由 @Viicos 在 #11949 中完成
- 始终将原始字段赋值存储在
FieldInfo
上,由 @Viicos 在 #11946 中完成 - 不使用已弃用的方法作为默认字段值,由 @Viicos 在 #11914 中完成
- 允许可调用鉴别器应用于 PEP 695 类型别名,由 @Viicos 在 #11941 中完成
- 使用
SkipValidation
时抑制核心 schema 生成警告,由 @ygsh0816 在 #12002 中完成 - 当
validate_default
设置为True
时,不对无效的Field()
默认值发出类型检查错误,由 @Viicos 在 #11988 中完成 - 重构逻辑以支持数据类中的 Pydantic
Field()
函数,由 @Viicos 在 #12051 中完成
打包¶
- 更新项目元数据以使用 PEP 639,由 @Viicos 在 #11694 中完成
- 将
mkdocs-llmstxt
升级到 v0.2.0,由 @Viicos 在 #11725 中完成 - 将
pydantic-core
升级到 v2.35.1,由 @Viicos 在 #11963 中完成 - 将 dawidd6/action-download-artifact 从 10 升级到 11,由 @dependabot[bot] 在 #12033 中完成
- 将 astral-sh/setup-uv 从 5 升级到 6,由 @dependabot[bot] 在 #11826 中完成
- 将 mypy 更新到 1.17.0,由 @Viicos 在 #12076 中完成
新贡献者¶
- @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-before
schema,由 @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 中完成 - 复制
WithJsonSchema
schema 以避免共享变异数据,由 @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中完成 - 在参数化另一个模型时,不缓存参数化模型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10704 中完成
- 向
CoreMetadata
定义添加歧视联合相关元数据条目,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11216 中完成 - 整合
_Definitions
类中的 schema 定义逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11208 中完成 - 在 mypy 插件中支持使用
root
类型的值初始化根模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11212 中完成 - 修复数据类和
use_attribute_docstrings
的各种问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11246 中完成 - 仅在
decimal_places_validator
中需要时计算标准化小数位数,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11281 中完成 - 在 mypy 插件中添加对
validation_alias
的支持,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11295 中完成 - 修复 JSON Schema 引用收集与
"examples"
键的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11305 中完成 - 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11298 中完成
- 简化
GenerateJsonSchema.literal_schema()
实现,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11321 中完成 - 为
ClickHouseDsn
添加额外的允许方案,由 @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中完成 - 将 decimal 约束强制转换为
Decimal
实例,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11350 中完成 - 在处理函数 schema 时使用正确的 JSON Schema 模式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11367 中完成
- 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11356 中完成
- 对于任意字典 schema 始终包含
additionalProperties: True
,由 @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中完成 - 在序列化方法中公开
fallback
参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11398 中完成 - 修复路径序列化行为,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11416 中完成
- 在模型重建期间不重用验证器和序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11429 中完成
- 重建模型时收集模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11388 中完成
- 允许在冻结模型上更改缓存属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11432 中完成
- 修复
Sequence
类型的元组序列化,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11435 中完成 - 修复:在同时定义
__get_pydantic_core_schema__
的类上不检查__get_validators__
,由 @tlambert03 在 https://github.com/pydantic/pydantic/pull/11444 中完成 - 允许可调用实例用作序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11451 中完成
- 改进使用属性覆盖字段时抛出的错误,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11459 中完成
- 修复 JSON Schema 生成与包含 JSON 元数据的可引用核心 schema 的问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11475 中完成
- 支持对联合成员类型进行严格指定,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11481 中完成
- 当
validate_by_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 中完成 dataclass
InitVar
在序列化时应该不是必需的,由 @sydney-runkle 在 https://github.com/pydantic/pydantic-core/pull/1602 中完成
新贡献者¶
- @FyZzyss 在 https://github.com/pydantic/pydantic/pull/10789 中做出了首次贡献
- @tamird 在 https://github.com/pydantic/pydantic/pull/10948 中做出了首次贡献
- @felixxm 在 https://github.com/pydantic/pydantic/pull/11077 中做出了首次贡献
- @alexprabhat99 在 https://github.com/pydantic/pydantic/pull/11082 中做出了首次贡献
- @Kharianne 在 https://github.com/pydantic/pydantic/pull/11111 中做出了首次贡献
- @mdaffad 在 https://github.com/pydantic/pydantic/pull/11177 中做出了首次贡献
- @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中做出了首次贡献
- @thomasfrimannkoren 在 https://github.com/pydantic/pydantic/pull/11251 中做出了首次贡献
- @usernameMAI 在 https://github.com/pydantic/pydantic/pull/11275 中做出了首次贡献
- @ananiavito 在 https://github.com/pydantic/pydantic/pull/11302 中做出了首次贡献
- @pawamoy 在 https://github.com/pydantic/pydantic/pull/11311 中做出了首次贡献
- @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中做出了首次贡献
- @kauabh 在 https://github.com/pydantic/pydantic/pull/11369 中做出了首次贡献
- @jaceklaskowski 在 https://github.com/pydantic/pydantic/pull/11353 中做出了首次贡献
- @tmpbeing 在 https://github.com/pydantic/pydantic/pull/11375 中做出了首次贡献
- @petyosi 在 https://github.com/pydantic/pydantic/pull/11405 中做出了首次贡献
- @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中做出了首次贡献
- @mikeedjones 在 https://github.com/pydantic/pydantic/pull/11402 中做出了首次贡献
- @astei 在 https://github.com/pydantic/pydantic/pull/11436 中做出了首次贡献
- @dsayling 在 https://github.com/pydantic/pydantic/pull/11522 中做出了首次贡献
- @sobolevn 在 https://github.com/pydantic/pydantic-core/pull/1645 中做出了首次贡献
v2.11.0a2 (2025-02-10)¶
更新内容¶
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 中完成 - 将
deque
schema 生成移至GenerateSchema
类,以完成prepare_annotations_for_known_type
变通方法的移除,由 @sydney-runkle 在 #11239 中完成 - 将
Mapping
schema 生成移至GenerateSchema
,以完成prepare_annotations_for_known_type
变通方法的移除,由 @sydney-runkle 在 #11247 中完成 - 移除对 Python 3.8 的支持,由 @sydney-runkle 在 #11258 中完成
- 禁用
pydantic-core
核心 schema 验证,由 @sydney-runkle 在 #11271 中完成
性能¶
- 仅在 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 中完成 - 复制
WithJsonSchema
schema 以避免共享变异数据,由 @thejcannon 在 #11014 中完成 - 在参数化另一个模型时,不缓存参数化模型,由 @Viicos 在 #10704 中完成
- 重新启用 Beanie 第三方测试,由 @Viicos 在 #11214 中完成
- 向
CoreMetadata
定义添加歧视联合相关元数据条目,由 @Viicos 在 #11216 中完成 - 整合
_Definitions
类中的 schema 定义逻辑,由 @Viicos 在 #11208 中完成 - 在 mypy 插件中支持使用
root
类型的值初始化根模型字段,由 @Viicos 在 #11212 中完成 - 修复数据类和
use_attribute_docstrings
的各种问题,由 @Viicos 在 #11246 中完成 - 仅在
decimal_places_validator
中需要时计算标准化小数位数,由 @misrasaurabh1 在 #11281 中完成 - 修复验证错误文档中两个错位的句子,由 @ananiavito 在 #11302 中完成
- 修复文档中 mkdocstrings 清单示例,由 @pawamoy 在 #11311 中完成
- 在 mypy 插件中添加对
validation_alias
的支持,由 @Viicos 在 #11295 中完成 - 在 mypy 插件中不将模型序列化器函数转换为类方法,由 @Viicos 在 #11298 中完成
- 简化
GenerateJsonSchema.literal_schema()
实现,由 @misrasaurabh1 在 #11321 中完成 - 为
ClickHouseDsn
添加额外的允许方案,由 @Maze21127 在 #11319 中完成 - 将 decimal 约束强制转换为
Decimal
实例,由 @Viicos 在 #11350 中完成 - 修复年份为零时的
ValueError
,由 @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 中完成 - 将
date
schema 移至_generate_schema.py
,由 @sydney-runkle 在 #9976 中完成 - 将
decimal.Decimal
验证移至_generate_schema.py
,由 @sydney-runkle 在 #9977 中完成 - 简化
_std_types_schema.py
中的 IP 地址 schema,由 @sydney-runkle 在 #9959 中完成 - 修复一些潜在泛型
GenerateSchema.match_type
选项的类型注解,由 @sydney-runkle 在 #9961 中完成 - 向“has conflict”警告添加类名,由 @msabramo 在 #9964 中完成
- 修复
dataclass
忽略 Annotated 中传递的default_factory
的问题,由 @kc0506 在 #9971 中完成 - 修复
Sequence
忽略discriminator
的问题,由 @kc0506 在 #9980 中完成 - 修复
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 生成期间处理带有
serialization
schema 的nullable
schema,由 @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 中完成 - 更新到
ruff
v0.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 中完成 - 采用
jiter
v0.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 生成器处理
Literal
null
类型,作者:@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-core
2.16.3,作者:@sydney-runkle,提交于 #8879
修复¶
- 'YYYY-MM-DD' 日期字符串强制转换为 datetime 不应推断时区,作者:@sydney-runkle,提交于 pydantic/pydantic-core#1193
v2.6.1 (2024-02-05)¶
更新内容¶
打包¶
- 升级到
pydantic-core
2.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_field
JSON 序列化器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-DD
datetime 解析,作者:@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_field
json 序列化的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 - 修复
JsonValue
bool
序列化问题,作者:@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-ref
bug,作者:@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_default
kwarg,作者:@lmmx,提交于 #7229 - ✅ 在
pydantic-core
中为TzInfo
实现tzinfo.fromutc
方法,作者:@lig,提交于 #7019 - 支持
__get_validators__
,作者:@hramezani,提交于 #7197
v2.2.1 (2023-08-18)¶
- 使 root model extra 的
xfail
ing 测试停止xfail
ing,作者:@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
- 修复
transform
docstring 中的列表 markdown,作者 @StefanBRas,在 #6649 - 简化 slots_dataclass 构造以安抚 mypy,作者 @davidhewitt,在 #6639
- 更新 TypedDict 模式生成 docstring,作者 @adriangb,在 #6651
- 检测并对打印输出进行 lint 错误检查,作者 @dmontagu,在 #6655
- 为 pydantic-core PR 766 添加 xfailing 测试,作者 @dmontagu,在 #6641
- 忽略来自 dataclasses 元数据中无法识别的字段,作者 @dmontagu,在 #6634
- 使不存在的类 getattr 成为 mypy 错误,作者 @dmontagu,在 #6658
- 将 pydantic-core 更新到 2.3.0,作者 @hramezani,在 #6648
- 使用 typing_extensions 中的 OrderedDict,作者 @dmontagu,在 #6664
- 修复 JSON 模式额外可调用项的类型提示,作者 @dmontagu,在 #6659
v2.0.2 (2023-07-05)¶
- 修复循环序列化/反序列化
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_config
extra='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 (直接提交) - 修复
mypy
v1 插件以适应 mypy 1.11 版本,作者 @flaeppe,在 https://github.com/pydantic/pydantic/pull/10139 - 修复当鉴别器具有别名且
.schema(by_alias=False)
时使用的鉴别器键,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/10146
v1.10.17 (2024-06-20)¶
- 为 1.10.x 宣传 Python 3.12!第二部分,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9644
v1
命名空间中的镜像模块,以修复 python>3.11 中的类型和对象解析,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9660- setup: 移除 python_requires 的上限,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9685
v1.10.16 (2024-06-11)¶
- 在 FutureRef._evaluate 中将 recursive_guard 指定为 kwarg,作者 @vfazio,在 https://github.com/pydantic/pydantic/pull/9612
- 修复 mypy v1 插件以适应即将发布的 mypy 版本,作者 @cdce8p,在 https://github.com/pydantic/pydantic/pull/9586
- 直接从 v1 命名空间导入模块/对象,作者 @exs-dwoodward,在 https://github.com/pydantic/pydantic/pull/9162
v1.10.15 (2024-04-03)¶
- 向 Pydantic v1 添加 pydantic.v1 命名空间,作者 @exs-dmiketa,在 https://github.com/pydantic/pydantic/pull/9042
- 放宽 V1 的 typing-extensions 版本,作者 @SonOfLilit,在 https://github.com/pydantic/pydantic/pull/8819
- mypy 的补丁修复,作者 @sydney-runkle,在 https://github.com/pydantic/pydantic/pull/8765
v1.10.14 (2024-01-19)¶
- 更新 install.md,作者 @dmontagu,在 #7690
- 修复 ci 以仅在发布时部署文档,作者 @sydney-runkle,在 #7740
- V1 的 Ubuntu 修复,作者 @sydney-runkle,在 #8540 和 #8587
- 修复 dataclasses 复制时 cached_property 处理问题,作者 @rdbisme,在 #8407
v1.10.13 (2023-09-27)¶
- 修复:向
pydantic.validate_email
添加最大长度检查,#7673,作者 @hramezani - 文档:修复安装 v1 的 pip 命令,#6930,作者 @chbndrhnns
v1.10.12 (2023-07-24)¶
- 修复了
deque
验证时maxlen
属性被丢弃的问题。仅当 deque 项已类型化时发生。更改了_validate_sequence_like
函数,#6581,作者 @maciekglowka
v1.10.11 (2023-07-04)¶
- 在 tools.py 中通过相对路径而不是绝对路径导入 create_model - 以便在复制到 V2 分支时不会导入 V2 代码,#6361,作者 @SharathHuddar
v1.10.10 (2023-06-30)¶
- 添加 Pydantic
Json
字段支持到设置管理,#6250,作者 @hramezani - 修复不可哈希值的字面量验证器错误,#6188,作者 @markus1978
- 修复泛型接收前向引用时的错误,#6130,作者 @mark-todd
- 更新 CI 中内部测试的 FastAPI 安装方法,#6117,作者 @Kludex
v1.10.9 (2023-06-07)¶
- 修复 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__
等,并使得与未验证版本的比较成为可能。它还修复了字段中使用frozen
dataclass 和嵌套 dataclass 中使用default_factory
的问题。已添加对Config.extra
的支持。最后,现在可以直接通过dict
进行配置自定义,#2557,作者 @PrettyWood
重大变更compiled
布尔值(pydantic 是否使用 cython 编译)已从main.py
移动到version.py
- 现在
Config.extra
受支持,dataclass
默认忽略额外参数(如BaseModel
)
- 修复
BaseModel
中 PrivateAttrs 的 PEP487__set_name__
协议,#4407,作者 @tlambert03 - 允许通过
Config
中的parse_env_var
对环境变量进行自定义解析,#4406,作者 @acmiyaguchi - 将
master
重命名为main
,#4405,作者 @hramezani - 修复
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_expr
mypy 选项下使用,#4356,作者 @DetachHead - 将仓库移动到
pydantic/pydantic
,#4348,作者 @yezz123 - 修复当具有
Extra.forbid
的 dataclass 被多次验证时“不允许额外字段”的错误,#4343,作者 @detachhead - 向文档添加 Python 3.9 和 3.10 示例,#4339,作者 @Bobronium
- 判别联合模型现在在生成 OpenAPI 模式定义时使用
oneOf
而不是anyOf
,#4335,作者 @MaxwellPayne - 允许类型检查器推断
Json
类型的内部类型。Json[list[str]]
现在将被推断为list[str]
,应使用Json[Any]
而不是纯Json
。运行时行为未改变,#4332,作者 @Bobronium - 通过使用
alias is not None
检查而不是bool(alias)
允许空字符串别名,#4253,作者 @sergeytsaplin - 更新
Field.outer_type_
中的ForwardRef
,#4249,作者 @JacobHayes __dataclass_transform__
的使用已替换为typing_extensions.dataclass_transform
,这是根据 PEP 681 将 pydantic 模型标记为 dataclass 的首选方式,#4241,作者 @multimeric- 验证嵌套
NamedTuple
字段时使用父模型的Config
,#4219,作者 @synek - 更新
BaseModel.construct
以处理别名字段,#4192,作者 @kylebamos - 捕获
smart_deepcopy
中某些引发的错误,如果发生则回退到deepcopy
,#4184,作者 @coneybeare - 添加
Config.anystr_upper
和to_upper
kwarg 到 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_lower
kwarg 到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_items
Field()
参数,#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_dumps
Config
属性允许自定义 JSON 解码和编码,#714 by @samuelcolvin - 使所有带注解的字段按照声明的顺序出现,#715 by @dmontagu
- 使用 pytest 测试
mypy
集成,#735 by @dmontagu - 为
ErrorWrapper
添加__repr__
方法,#738 by @samuelcolvin - 添加了对 dataclasses 中
FrozenSet
成员的支持,并在尝试使用 Pydantic 不支持的typing
模块中的类型时提供了更好的错误提示,#745 by @djpetti - 添加 Pycharm 插件文档,#750 by @koxudaxi
- 修复文档中损坏的示例,#753 by @dmontagu
- 将与类型相关的对象移至
pydantic.typing
,#761 by @samuelcolvin 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)¶
- 从
ipaddress
stdlib 添加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_extra
Config 字段,改用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 - 向
BaseSettings
Config
添加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_whitespace
kwarg 到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)¶
- 添加文档
- 添加历史记录