更新日志
v2.11.1 (2025-03-28)¶
变更内容¶
修复¶
v2.11.0 (2025-03-27)¶
变更内容¶
Pydantic v2.11 是一个主要关注 Pydantic 模型(以及通常的核心模式生成)构建时性能的版本。有关更多详细信息,请参阅博客文章。
打包¶
新特性¶
- 为 URL 类型添加
encoded_string()
方法,由 @YassinNouh21 在 #11580 中完成 - 为
@validate_call
装饰器添加对defer_build
的支持,由 @Viicos 在 #11584 中完成 - 允许
@with_config
装饰器与关键字参数一起使用,由 @Viicos 在 #11608 中完成 - 简化 JSON 模式生成中默认值包含的自定义,由 @Viicos 在 #11634 中完成
- 添加
generate_arguments_schema()
函数,由 @Viicos 在 #11572 中完成
修复¶
- 允许将泛型类型字典用于解包的可变关键字参数,由 @Viicos 在 #11571 中完成
- 修复计算涉及缓存属性和自引用模型的模型字符串表示时的运行时错误,由 @Viicos 在 #11579 中完成
- 在使用管道 API 中的省略号时保留其他步骤,由 @Viicos 在 #11626 中完成
- 修复延迟鉴别器应用逻辑,由 @Viicos 在 #11591 中完成
新贡献者¶
v2.11.0b2 (2025-03-17)¶
变更内容¶
打包¶
新特性¶
修复¶
新贡献者¶
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 中完成 - 重大变更: 将路径类型的核心模式生成逻辑移动到
GenerateSchema
类内部,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10846 中完成 - 移除 Python 3.8 支持,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11258 中完成
- 优化对
get_type_ref
的调用,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10863 中完成 - 禁用
pydantic-core
核心模式验证,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11271 中完成
性能¶
- 仅在模式构建期间需要时才评估
FieldInfo
注解,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10769 中完成 - 通过缓存 setter 函数来提高 Pydantic 模型的
__setattr__
性能,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/10868 中完成 - 提高注解应用性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11186 中完成
- 提高
_typing_extra
模块的性能,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11255 中完成 - 重构和优化模式清理逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11244 中完成
- 在创建
CoreConfig
实例时创建一个字典,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11384 中完成 - 升级
pydantic-core
,从而使用SchemaValidator
和SchemaSerializer
缓存,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11402 中完成 - 为参数化泛型 Pydantic 模型重用缓存的核心模式,由 @MarkusSintonen 在 https://github.com/pydantic/pydantic/pull/11434 中完成
修复¶
- 改进
TypeAdapter
实例 repr,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10872 中完成 - 在实例化参数化
TypeAdapter
时使用正确的帧,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10893 中完成 - 在 mypy 插件中将带有默认值的 final 字段推断为类变量,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11121 中完成
- 如果使用 PEP 695 类型别名,则递归解包
Literal
值,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11114 中完成 - 覆盖
ModelMetaclass
上的__subclasscheck__
以避免内存泄漏和性能问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11116 中完成 - 移除未使用的
_extract_get_pydantic_json_schema()
参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11155 中完成 - 改进鉴别联合类型错误消息,以针对无效的联合变体,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11161 中完成
- 如果使用
Annotated
形式,则解包 PEP 695 类型别名,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11109 中完成 - 在
deprecated_instance_property
警告中添加缺失的 stacklevel,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11200 中完成 - 复制
WithJsonSchema
模式以避免共享突变数据,由 @thejcannon 在 https://github.com/pydantic/pydantic/pull/11014 中完成 - 当正在参数化另一个模型时,不要缓存参数化模型,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/10704 中完成
- 将鉴别联合类型相关元数据条目添加到
CoreMetadata
定义中,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11216 中完成 - 在
_Definitions
类中整合模式定义逻辑,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11208 中完成 - 支持在 mypy 插件中使用
root
类型的值初始化根模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11212 中完成 - 修复数据类和
use_attribute_docstrings
的各种问题,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11246 中完成 - 仅在
decimal_places_validator
中必要时才计算规范化的小数位数,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11281 中完成 - 在 mypy 插件中添加对
validation_alias
的支持,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11295 中完成 - 修复带有
"examples"
键的 JSON 模式引用收集,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11305 中完成 - 不要在 mypy 插件中将模型序列化器函数转换为类方法,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11298 中完成
- 简化
GenerateJsonSchema.literal_schema()
实现,由 @misrasaurabh1 在 https://github.com/pydantic/pydantic/pull/11321 中完成 - 为
ClickHouseDsn
添加额外的允许方案,由 @Maze21127 在 https://github.com/pydantic/pydantic/pull/11319 中完成 - 强制将十进制约束转换为
Decimal
实例,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11350 中完成 - 在处理函数模式时使用正确的 JSON 模式模式,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11367 中完成
- 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11356 中完成
- 始终为任意字典模式包含
additionalProperties: True
,由 @austinyu 在 https://github.com/pydantic/pydantic/pull/11392 中完成 - 在序列化方法中公开
fallback
参数,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11398 中完成 - 修复路径序列化行为,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11416 中完成
- 在模型重建期间不要重用验证器和序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11429 中完成
- 在重建模型时收集模型字段,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11388 中完成
- 允许在冻结模型上更改缓存的属性,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11432 中完成
- 修复
Sequence
类型的元组序列化,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11435 中完成 - 修复:不要在也定义了
__get_pydantic_core_schema__
的类上检查__get_validators__
,由 @tlambert03 在 https://github.com/pydantic/pydantic/pull/11444 中完成 - 允许将可调用实例用作序列化器,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11451 中完成
- 改进在用属性覆盖字段时抛出的错误,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11459 中完成
- 修复带有持有 JSON 元数据的可引用核心模式的 JSON 模式生成,由 @Viicos 在 https://github.com/pydantic/pydantic/pull/11475 中完成
- 支持联合成员类型上的严格规范,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/11481 中完成
- 当
validate_by_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 模型(以及通常的核心模式生成)构建时性能的版本。这是另一个早期 alpha 版本,旨在收集早期用户对核心模式构建问题的反馈。
打包¶
- 将
ruff
从 0.9.2 升级到 0.9.5,由 @Viicos 在 #11407 中完成 - 将
pydantic-core
升级到 v2.29.0,由 @mikeedjones 在 #11402 中完成 - 使用带有符号和 pgo 的本地构建 rust,由 @davidhewitt 在 #11403 中完成
性能¶
- 在创建
CoreConfig
实例时创建一个字典,由 @sydney-runkle 在 #11384 中完成
修复¶
- 在处理函数模式时使用正确的 JSON 模式模式,由 @Viicos 在 #11367 中完成
- 修复带有
examples
键的 JSON 模式引用逻辑,由 @Viicos 在 #11366 中完成 - 改进在类型评估期间遇到递归错误时的异常消息,由 @Viicos 在 #11356 中完成
- 始终为任意字典模式包含
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 模型(以及通常的核心模式生成)构建时性能的版本。这是一个早期的 alpha 版本,旨在收集早期用户对核心模式构建问题的反馈。
打包¶
- 将 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
deps 更新,由 @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 中完成 - 将路径类型的核心模式生成逻辑移动到
GenerateSchema
类内部,由 @sydney-runkle 在 #10846 中完成 - 将
deque
模式生成移动到GenerateSchema
类,由 @sydney-runkle 在 #11239 中完成 - 将
Mapping
模式生成移动到GenerateSchema
,以完成移除prepare_annotations_for_known_type
变通方法,由 @sydney-runkle 在 #11247 中完成 - 移除 Python 3.8 支持,由 @sydney-runkle 在 #11258 中完成
- 禁用
pydantic-core
核心模式验证,由 @sydney-runkle 在 #11271 中完成
性能¶
- 仅在模式构建期间需要时才评估
FieldInfo
注解,由 @Viicos 在 #10769 中完成 - 优化对
get_type_ref
的调用,由 @Viicos 在 #10863 中完成 - 通过缓存 setter 函数来提高 Pydantic 模型的
__setattr__
性能,由 @MarkusSintonen 在 #10868 中完成 - 提高注解应用性能,由 @Viicos 在 #11186 中完成
- 提高
_typing_extra
模块的性能,由 @Viicos 在 #11255 中完成 - 重构和优化模式清理逻辑,由 @Viicos 和 @MarkusSintonen 在 #11244 中完成
修复¶
- 由 @tkasuz 在 #10763 中为
_internal/_validators.py
添加验证测试 - 由 @sydney-runkle 在 #10872 中改进
TypeAdapter
实例 repr - 由 @sydney-runkle 在 #10942 中撤销 “ci: use locally built pydantic-core with debug symbols”
- 由 @tamird 在 #10948 中重新启用所有 FastAPI 测试
- 由 @felixxm 在 #11077 中修复 HISTORY.md 中的错别字。
- 由 @Viicos 在 #11121 中在 mypy 插件中将具有默认值的 final 字段推断为类变量
- 由 @Viicos 在 #11114 中在使用 PEP 695 类型别名时递归地解包
Literal
值 - 由 @Viicos 在 #11116 中覆盖
ModelMetaclass
上的__subclasscheck__
以避免内存泄漏和性能问题 - 由 @Viicos 在 #11155 中移除未使用的
_extract_get_pydantic_json_schema()
参数 - 由 @sydney-runkle 在 #11044 中将 FastAPI 和 SQLModel 添加到第三方测试
- 由 @Viicos 在 #11162 中修复第三方测试的条件表达式语法
- 由 @Viicos 在 #11164 中将 FastAPI 测试移动到第三方工作流程
- 由 @Viicos 在 #11161 中改进无效联合变体的可辨别联合错误消息
- 由 @Viicos 在 #11109 中在使用
Annotated
形式时解包 PEP 695 类型别名 - 由 @sydney-runkle 在 #11182 中在第三方故障的问题创建中包含
openapi-python-client
检查,并使用main
分支 - 由 @Viicos 在 #11193 中添加 pandera 第三方测试
- 由 @sydney-runkle 在 #11197 中添加 ODMantic 第三方测试
- 由 @Viicos 在 #11200 中在
deprecated_instance_property
警告中添加缺失的 stacklevel - 由 @thejcannon 在 #11014 中复制
WithJsonSchema
模式以避免共享突变数据 - 由 @Viicos 在 #10704 中在参数化另一个模型时,不缓存参数化模型
- 由 @Viicos 在 #11214 中重新启用 Beanie 第三方测试
- 由 @Viicos 在 #11216 中将可辨别联合相关元数据条目添加到
CoreMetadata
定义中 - 由 @Viicos 在 #11208 中整合
_Definitions
类中的模式定义逻辑 - 由 @Viicos 在 #11212 中在 mypy 插件中支持使用
root
类型的根模型字段值进行初始化 - 由 @Viicos 在 #11246 中修复 dataclasses 和
use_attribute_docstrings
的各种问题 - 由 @misrasaurabh1 在 #11281 中仅在必要时在
decimal_places_validator
中计算归一化的小数位数 - 由 @ananiavito 在 #11302 中修复验证错误文档中两个位置不当的句子
- 由 @pawamoy 在 #11311 中修复文档中的 mkdocstrings 清单示例
- 由 @Viicos 在 #11295 中在 mypy 插件中添加对
validation_alias
的支持 - 由 @Viicos 在 #11298 中在 mypy 插件中不将模型序列化器函数转换为类方法
- 由 @misrasaurabh1 在 #11321 中简化
GenerateJsonSchema.literal_schema()
实现 - 由 @Maze21127 在 #11319 中为
ClickHouseDsn
添加额外的允许方案 - 由 @Viicos 在 #11350 中将十进制约束强制转换为
Decimal
实例 - 由 @davidhewitt 在 pydantic-core#1583 中修复零年的
ValueError
新贡献者¶
- @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)¶
更新内容¶
修复¶
- 由 @Viicos 在 #11325 中修复带有
'examples'
键的 JSON Schema 引用集合 - 由 @sydney-runkle 在 #11331 中修复 url python 序列化
v2.10.5 (2025-01-08)¶
更新内容¶
修复¶
- 由 @Viicos 在 #11184 中移除 Pydantic 模型的自定义 MRO 实现
- 由 @sydney-runkle 在 #11233 中修复联合类型的 URL 序列化
v2.10.4 (2024-12-18)¶
更新内容¶
打包¶
- 由 @davidhewitt 在 #11138 中将
pydantic-core
升级到 v2.27.2
修复¶
- 由 @alexprabhat99 在 #11082 中修复
AnyUrl
对象的比较 - 由 @Viicos 在 #11093 中正确获取函数的 PEP 695 类型参数,不从签名中获取注解
- 由 @Viicos 在 #11085 中在函数模式中包含 JSON Schema 输入核心模式
- 由 @Kharianne 在 #11111 中为
_BaseUrl
添加len
以避免 TypeError - 由 @Viicos 在 #11143 中确保从已查看的引用中删除类型引用
新贡献者¶
- @FyZzyss 在 #10789 中做出了首次贡献
- @tamird 在 #10948 中做出了首次贡献
- @felixxm 在 #11077 中做出了首次贡献
- @alexprabhat99 在 #11082 中做出了首次贡献
- @Kharianne 在 #11111 中做出了首次贡献
v2.10.3 (2024-12-03)¶
更新内容¶
修复¶
- 由 @Viicos 在 #10984 中在 Pydantic dataclasses 上设置
defer_build
时设置字段 - 由 @Viicos 在 #10989 中不解析
dict
核心模式键的 JSON Schema 引用 - 由 @Viicos 在 #11008 中在使用
PlainSerializer
和WrapSerializer
函数时使用函数的全局变量来评估返回类型 - 由 @sydney-runkle 在 #11027 中修复 url 主机必需强制执行以与 v2.9 行为兼容
- 为
FieldInfo
添加default_factory_takes_validated_data
属性,由 @Viicos 在 #11034 中完成 - 由 @sydney-runkle 在 #11035 中修复
serialization
模式下的 url json schema
v2.10.2 (2024-11-25)¶
更新内容¶
修复¶
- 由 @Viicos 在 #10769 中仅在模式构建期间需要时才评估 FieldInfo 注解
- 由 @Viicos 在 #10962 中不评估私有字段的注解
- 由 @sydney-runkle 在 #10947 中支持将
Secret
类型和Url
类型序列化为 any - 由 @Viicos 在 #10972 中修复
Field.default
的类型提示以兼容 Python 3.8 和 3.9 - 由 @sydney-runkle 在 #10975 中为 URL 类型添加哈希支持
- 由 @Viicos 在 #10979 中从类型检查器中隐藏
BaseModel.__replace__
定义
v2.10.1 (2024-11-21)¶
更新内容¶
打包¶
- 由 @sydney-runkle 在 #10938 中将
pydantic-core
版本升级到v2.27.1
修复¶
- 由 @Viicos 在 #10893 中在使用参数化
TypeAdapter
时使用正确的帧 - 由 @sydney-runkle 在 #10909 中放宽
default_factory
工具中对已验证数据的检查 - 由 @sydney-runkle 在 #10911 中修复
model_fields
和model_computed_fields
的类型检查问题 - 由 @sydney-runkle 在 #10928 中在为 stdlib
dataclass
生成模式期间使用父配置 - 由 @Viicos 在 #10929 中在使用序列化器和
computed_field
时使用函数的globals
来评估返回类型 - 由 @sydney-runkle 在 #10922 中修复 URL 约束应用
- 由 @sydney-runkle 在 #10934 中修复具有不同验证方法的 URL 相等性
- 由 @sydney-runkle 在 #10936 中修复指定为
''
时的 JSON schema 标题 - 由 @sydney-runkle 在 pydantic-core#1549 中修复
complex
推断的python
模式序列化
新贡献者¶
v2.10.0 (2024-11-20)¶
v2.10.0 中发布的代码实际上与 v2.10.0b2 的代码相同。
请参阅 v2.10 发布博客文章 以了解亮点!
更新内容¶
打包¶
- 由 @sydney-runkle 在 #10825 中将
pydantic-core
升级到v2.27.0
- 由 @frfahim 在 #10727 中用 uv 替换 pdm
新功能¶
- 由 @sydney-runkle 在 #10318 中支持
fractions.Fraction
- 由 @sydney-runkle 在 #10324 中为 json 验证支持
Hashable
- 由 @theunkn0wn1 在 #10378 中为
linux
系统添加SocketPath
类型 - 由 @sydney-runkle 在 #10417 中允许 JSON schema
examples
中的任意 refs - 由 @Viicos 在 #10313 中为 Pydantic dataclasses 支持
defer_build
- 由 @sydney-runkle 在 #10431 中为嵌套 v1 模型添加 v1 / v2 不兼容警告
- 由 @Viicos 在 #10416 中添加对解包的
TypedDict
的支持,以使用@validate_call
类型提示可变关键字参数 - 由 @sydney-runkle 在 #10522 中在
protected_namespaces
中支持编译模式 - 由 @FlorianSW 在 #10478 中为 JSON schema 添加
propertyNames
支持 - 由 @sydney-runkle 在 #10596 中为 Python 3.13+ 支持添加
__replace__
协议 - 由 @sydney-runkle 在 #10595 中公开用于 JSON schema 生成的公共
sort
方法 - 由 @kc0506 在 #10627 中添加
@validate_call
可调用参数的运行时验证 - 由 @samuelcolvin 在 #10748 中添加
experimental_allow_partial
支持 - 由 @Viicos 在 #10678 中支持将已验证数据作为参数的默认工厂
- 由 @Youssefares 在 pydantic/pydantic-core#1413 中允许子类化
ValidationError
和PydanticCustomError
- 由 @sydney-runkle 在 #10825 中为
experimental_allow_partial
添加trailing-strings
支持 - 由 @sydney-runkle 在 #10537 中为
TypeAdapter
添加rebuild()
方法并简化defer_build
模式 - 由 @sydney-runkle 在 #10872 中改进
TypeAdapter
实例 repr
变更¶
- 由 @sydney-runkle 在 #10303 中在接口更稳定之前,不允许自定义
SchemaGenerator
- 由 @sydney-runkle 在 #10329 中在
TypeAdapters
上干净地defer_build
,移除实验性标志 - 由 @kc0506 在 #10100 中修复泛型子类的
mro
- 由 @sydney-runkle 在 #10404 中去除 JSON Schema 标题生成中的空格
- 由 @sydney-runkle 在 #10486 中为
Base64Bytes
类型使用b64decode
和b64encode
- 由 @sydney-runkle 在 #10441 中放宽受保护的命名空间配置默认值
- 由 @sydney-runkle 在 #10666 中如果实例的 origin 是 OG 类的子类,则重新验证参数化泛型
- 由 @sydney-runkle 在 #10406 中如果配置在
@dataclass
装饰器上和__pydantic_config__
属性中指定,则发出警告 - 由 @Viicos 在 #10661 中建议不要将
Ellipsis
(...) 与Field
一起使用 - 由 @sydney-runkle 在 #10662 中迁移到子类化而不是注解方法来处理 pydantic url 类型
- 由 @Viicos 在 #10692 中更改
Literal
和Enums
的 JSON schema 生成 - 由 @Viicos 在 #10338 中在替换类型变量时简化涉及
Any
或Never
的联合 - 由 @bschoenmaeckers 在 pydantic/pydantic-core#1448 中解码
base64
字节时不需要填充 - 由 @changhc 在 pydantic/speedate#77 中支持追溯到公元前 1 年的日期
性能¶
- 由 @Viicos 在 #10286 中模式清理:在模式遍历期间跳过不必要的复制
- 由 @Viicos 在 #10530 中重构用于注解评估的命名空间逻辑
- 由 @AlekseyLobanov 在 #10601 中改进边缘情况下的电子邮件正则表达式
- 由 @sydney-runkle 在 #10675 中
CoreMetadata
重构,重点在于文档、模式构建时间性能和降低复杂性
修复¶
- 由 @nix010 在 #10390 中移除带有
field_serializer
的computed_field
上的保护性检查 - 由 @sydney-runkle 在 #10321 中修复
v2.9.0
中的Predicate
问题 - 由 @sydney-runkle 在 #10327 中修复
annotated-types
绑定 - 由 @jakob-keller 在 #10331 中将
tzdata
安装要求更改为可选的timezone
依赖项 - 由 @Viicos 在 #10337 中构建
namedtuple
核心模式时使用正确的类型命名空间 - 由 @Viicos 在 #10347 中修复命名空间检查期间字符串化注解的评估
- 由 @Viicos 在 #10339 中修复
IncEx
类型别名定义 - 由 @Viicos 在 #10358 中尝试评估私有属性的注解时不要报错
- 由 @kc0506 在 #10369 中修复嵌套类型语句
- 由 @Viicos 在 #10372 中改进
ModelMetaclass.mro
的类型提示 - 由 @Viicos 在 #10391 中修复已弃用的
computed_field
的类访问 - 由 @MovisLi 在 #10374 中确保
inspect.iscoroutinefunction
在使用@validate_call
装饰的协程上工作 - 由 @kc0506 在 #10380 中修复在类上使用带有 PEP 695 的
validate_call
时的NameError
- 由 @sydney-runkle 在 #10408 中修复
ZoneInfo
与各种无效类型的问题 - 由 @cdwilson 在 #10412 中修复带有注解的空
model_config
上的PydanticUserError
- 由 @Viicos 在 #10414 中修复
_IncEx
类型别名中的方差问题,仅允许True
- 由 @Viicos 在 #10427 中修复使用
PlainValidator
时的序列化模式生成 - 由 @Viicos 在 #10444 中修复序列化模式持有引用时的模式生成错误
- 由 @Viicos 在 #10439 中为
json_schema_input_type
生成模式时,如果可能则内联引用 - 由 @Viicos 在 #10480 中修复
Representation
中的递归参数 - 由 @kschwab 在 #10479 中修复内置函数类型的表示
- 由 @sydney-runkle 在 #10506 中为十进制约束(
max_digits
和decimal_places
)添加 python 验证器 - 由 @Viicos 在 #10518 中在模式生成期间仅从当前类中获取
__pydantic_core_schema__
- 由 @sydney-runkle 在 #10520 中修复
BaseModel
的弃用警告的stacklevel
- 由 @Viicos 在 #10526 中修复
BaseModel.__init__
中的警告stacklevel
- 由 @sydney-runkle 在 #10440 中改进鉴别器应用程序中不可评估的 refs 的错误处理
- 由 @Viicos 在 #10562 中更改
ConfigWrapper.core_config
的签名以直接获取标题 - 由 @Viicos 在 #10576 中对于没有配置的 dataclasses,不要使用堆栈中的先前配置
- 由 @sydney-runkle 在 #10594 中修复
mode='python'
的 IP 类型序列化 - 由 @sydney-runkle 在 #10584 中支持
Base64Etc
类型的约束应用 - 由 @kc0506 在 #10610 中修复
validate_call
忽略Annotated
中的Field
- 由 @kc0506 在 #10609 中当
Self
无效时引发错误 - 由 @sydney-runkle 在 #10523 中使用
core_schema.InvalidSchema
而不是元数据注入 + 检查 - 由 @kc0506 在 #10643 中调整类型别名逻辑
- 由 @kc0506 在 #10621 中支持将
type
与typing.Self
和类型别名一起使用 - 由 @Viicos 在 #10651 中为
Field
和PrivateAttr
函数使用重载 - 由 @Viicos 在 #10669 中清理
mypy
插件实现 - 由 @Daraan 在 #10713 中正确检查
TypeAliasType
的typing_extensions
变体 - 由 @Viicos 在 #10751 中允许
BaseModel.model_copy()
中的任何映射 - 由 @sydney-runkle 在 #10766 中确保 urls 的
isinstance
行为 - 由 @Viicos 在 #10774 中确保可以在 Pydantic 模型上设置
cached_property
- 由 @sydney-runkle 在 pydantic/pydantic-core#1459 中修复字面量中原始类型的相等性检查
- 由 @Viicos 在 pydantic/pydantic-core#1488 中正确强制执行 URL 的
host_required
- 由 @andrey-berenda 在 pydantic/pydantic-core#1515 中修复启用
coerce_numbers_to_str
且字符串具有无效 Unicode 字符时的问题 - 由 @changhc 在 pydantic/pydantic-core#1524 中修复
Enum
中序列化complex
值的问题 - 由 @Viicos 在 #10725 中重构
_typing_extra
模块 - 由 @sydney-runkle 在 #10798 中支持 urls 的直观相等性
- 由 @samuelcolvin 在 #10802 中将
bytearray
添加到TypeAdapter.validate_json
签名中 - 由 @Viicos 在 #10816 中确保在使用方法描述符作为
Field
的默认值时执行类访问 - 由 @sydney-runkle 在 #10807 中修复
validate_call
的循环导入 - 由 @Viicos 在 #10809 中修复使用引用其他类型别名的类型别名时的错误
- 由 @Viicos 在 #10813 中使
IncEx
类型别名与 mypy 兼容 - 由 @Viicos 在 #10818 中使
__signature__
成为延迟属性,不深度复制默认值 - 由 @sydney-runkle 在 #10832 中也为 dataclasses 使
__signature__
成为延迟属性 - 由 @sydney-runkle 在 #10856 中从
AnyUrl
子类化所有单主机 url 类,以保留 v2.9 的行为
新贡献者¶
- @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 中尝试评估私有属性的注解时不要报错
- 由 @sydney-runkle 在 #10400 中添加关于设计合理的
Callable
鉴别器的说明 - 由 @Viicos 在 #10427 中修复使用
PlainValidator
时的序列化模式生成 - 由 @sydney-runkle 在 pydantic/pydantic-core#1449 中修复
Union
序列化警告 - 由 @Viicos 在 #10414 中修复
_IncEx
类型别名中的方差问题,仅允许True
- 由 @sydney-runkle 在 #10408 中修复
ZoneInfo
与各种无效类型的验证问题
v2.9.1 (2024-09-09)¶
更新内容¶
修复¶
- 由 @sydney-runkle 在 #10321 中修复 v2.9.0 中的 Predicate 问题
- 由 @sydney-runkle 在 #10327 中修复绑定到
>=0.6.0
的annotated-types
- 由 @jakob-keller 在 #10331 中将
tzdata
安装要求更改为可选的timezone
依赖项 - 由 @Viicos 在 #10339 中修复
IncEx
类型别名定义 - 由 @Viicos 在 #10337 中构建 namedtuple 核心模式时使用正确的类型命名空间
- 由 @Viicos 在 #10347 中修复命名空间检查期间字符串化注解的评估
- 由 @sydney-runkle 在 pydantic/pydantic-core#1442 中修复带有别名生成器的标记联合序列化
v2.9.0 (2024-09-05)¶
v2.9.0 中发布的代码实际上与 v2.9.0b2 的代码相同。
更新内容¶
打包¶
- 由 @sydney-runkle 在 #9801 中将
ruff
升级到v0.5.0
,并将pyright
升级到v1.1.369
- 由 @sydney-runkle 在 #9832 中将
pydantic-extra-types
升级到v2.9.0
- 由 @Viicos 在 #10138 中支持与
pdm v2.18.1
的兼容性 - 由 @sydney-runkle 在 #10214 中将
v1
版本存根升级到v1.10.18
- 由 @sydney-runkle 在 #10311 中将
pydantic-core
升级到v2.23.2
新功能¶
- 添加对
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 中贡献 - 弃用将 dict 传递给
Examples
类,由 @Viicos 在 #10181 中贡献 - 从内部元数据构造中移除
initial_metadata
,由 @sydney-runkle 在 #10194 中贡献 - 使用
re.Pattern.search
而不是re.Pattern.match
,以与rust
行为保持一致,由 @tinez 在 pydantic/pydantic-core#1368 中贡献 - 在
pydantic-core
序列化警告中显示错误类型数据的value,由 @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 中贡献
- 从 types 命名空间中移除默认模块全局变量,由 @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
插件:处理每个字段的 frozen 字段,由 @dmontagu 在 #9935 中贡献- 修复
invalid-annotated-type
错误代码中的错别字,由 @sydney-runkle 在 #9948 中贡献 - 简化
uuid
、url
和ip
类型的 schema 生成,由 @sydney-runkle 在 #9975 中贡献 - 将
date
schemas 移动到_generate_schema.py
,由 @sydney-runkle 在 #9976 中贡献 - 将
decimal.Decimal
验证移动到_generate_schema.py
,由 @sydney-runkle 在 #9977 中贡献 - 简化
_std_types_schema.py
中的 IP 地址 schema,由 @sydney-runkle 在 #9959 中贡献 - 修复一些潜在的泛型
GenerateSchema.match_type
选项的类型注解,由 @sydney-runkle 在 #9961 中贡献 - 向“has conflict”警告添加类名,由 @msabramo 在 #9964 中贡献
- 修复
dataclass
忽略在 Annotated 中传递的default_factory
的问题,由 @kc0506 在 #9971 中贡献 - 修复
Sequence
忽略discriminator
的问题,由 @kc0506 在 #9980 中贡献 - 修复
IPvAnyAddress
和IPvAnyInterface
的类型,由 @haoyun 在 #9990 中贡献 - 修复
mypy
插件中 v1 模型上关于from_orm
检查需要 from_attributes=True 配置的误报,由 @radekwlsk 在 #9938 中贡献 - 在
mypy
插件中将strict=True
应用于__init__
,由 @kc0506 在 #9998 中贡献 - 重构
deque
注解的应用,由 @sydney-runkle 在 #10018 中贡献 - 当无法评估前向引用时,引发更好的用户错误,由 @Viicos 在 #10030 中贡献
- 修复在特定情况下
__pydantic_extra__
注解的评估,由 @Viicos 在 #10070 中贡献 - 修复
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 中贡献 - 当使用带有设置为
'json-unless-none'
的when_used
的 plain serializers 且默认值为None
时,不计算 JSON Schema default,由 @Viicos 在 #10121 中贡献 - 修复
ImportString
特殊情况,由 @sydney-runkle 在 #10137 中贡献 - 将默认全局变量列入黑名单,以支持带有
__
前缀注解的异类用户代码,由 @sydney-runkle 在 #10136 中贡献 - 在 JSON Schema 生成期间,处理具有可用
serialization
schema 的nullable
schemas,由 @Viicos 在 #10132 中贡献 - 重组
BaseModel
注解,由 @kc0506 在 #10110 中贡献 - 修复当序列化 schema 涉及特定场景时的核心 schema 简化,由 @Viicos 在 #10155 中贡献
- 添加对在使用带有
Annotated
的PrivateAttr
时使用字符串化注解的支持,由 @Viicos 在 #10157 中贡献 - 修复 literal 和 enum schemas 的 JSON Schema
number
类型,由 @Viicos 在 #10172 中贡献 - 修复在序列化模式下为具有 plain validators 的字段生成 JSON Schema 的问题,由 @Viicos 在 #10167 中贡献
- 修复在某些场景中为函数生成无效 JSON Schemas 的问题,由 @Viicos 在 #10188 中贡献
- 确保生成的 JSON Schemas 在测试中有效,由 @Viicos 在 #10182 中贡献
- 修复带有自定义序列化器的 key error,由 @sydney-runkle 在 #10200 中贡献
- 为 NatsDsn 中的允许方案添加 'wss',由 @swelborn 在 #10224 中贡献
- 修复
Mapping
和MutableMapping
注解以使用 mapping schema 而不是 dict schema,由 @sydney-runkle 在 #10020 中贡献 - 修复约束日期的 JSON Schema 生成,由 @Viicos 在 #10185 中贡献
- 修复使用 enums 时的 discriminated union bug regression,由 @kfreezen 在 pydantic/pydantic-core#1286 中贡献
- 修复使用
*
时带有 computed field 的field_serializer
,由 @nix010 在 pydantic/pydantic-core#1349 中贡献 - 在推理之前尝试
Union
序列化器中的每个选项,由 @sydney-runkle 在 pydantic/pydantic-core#1398 中贡献 - 修复
strict
模式下的float
序列化行为,由 @sydney-runkle 在 pydantic/pydantic-core#1400 中贡献 - 将
exactness
引入 Decimal 验证逻辑,以改进 union 验证行为,由 @sydney-runkle 在 pydantic/pydantic-core#1405 中贡献 - 修复新的警告断言以使用
pytest.warns()
,由 @mgorny 在 #10241 中贡献 - 修复在
ModelMetaclass
中清理命名空间时发生的崩溃,由 @Viicos 在 #10242 中贡献 - 修复模型重建的父命名空间问题,由 @sydney-runkle 在 #10257 中贡献
- 移除命名空间的 defaults 过滤器,由 @sydney-runkle 在 #10261 中贡献
- 在
__init__
中验证模型后使用 identity 而不是 equality,由 @Viicos 在 #10264 中贡献 - 支持
int
子类的BigInt
序列化,由 @kxx317 在 pydantic/pydantic-core#1417 中贡献 - 支持没有
info
的 wrap validators 的签名,由 @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)¶
变更内容¶
打包¶
- 由 @sydney-runkle 在 #9801 中将
ruff
升级到v0.5.0
,并将pyright
升级到v1.1.369
- 将
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
,并为 pipeline API 添加类型检查测试,由 @adriangb 在 #9674 中贡献 - 将
pydantic.v1
stub 更新到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 中贡献 - 实验性功能:添加 pipeline 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 中序列化一些可序列化的 defaults,由 @sydney-runkle 在 #9624 中贡献
- 放宽
create_model
中__validators__
值的类型规范,由 @sydney-runkle 在 #9697 中贡献 - 重大变更: 改进
smart
union 匹配逻辑,由 @sydney-runkle 在 pydantic/pydantic-core#1322 中贡献。 您可以在 此处 阅读更多关于我们的smart
union 匹配逻辑的信息。 在某些情况下,如果需要旧的行为,您可以切换到left-to-right
模式并更改Union
成员的顺序。
性能¶
内部改进¶
- ⚡️ 在
pydantic/v1/error_wrappers.py
中,_display_error_loc()
速度提升 25%,由 @misrasaurabh1 在 #9653 中贡献 - ⚡️ 在
pydantic/json_schema.py
中,_get_all_json_refs()
速度提升 34%,由 @misrasaurabh1 在 #9650 中贡献 - ⚡️ 在
pydantic/dataclasses.py
中,is_pydantic_dataclass()
速度提升 41%,由 @misrasaurabh1 在 #9652 中贡献 - ⚡️ 在
pydantic/alias_generators.py
中,to_snake()
速度提升 27%,由 @misrasaurabh1 在 #9747 中贡献 - ⚡️ 在
pydantic/_internal/_decorators.py
中,unwrap_wrapped_function()
速度提升 93%,由 @misrasaurabh1 在 #9727 中贡献
修复¶
- 将
__spec__.parent
替换为__package__
,由 @hramezani 在 #9331 中贡献 - 修复了
Sequence
类型的输出模型 JSON Schema,由 @anesmemisevic 在 #9303 中贡献 - 修复
_frame_depth
的类型,由 @Viicos 在 #9353 中贡献 - 使
ImportString
json schema 兼容,由 @amitschang 在 #9344 中贡献 - 在类型检查器中隐藏
__init__
签名中的私有属性 (PrivateAttr
),由 @idan22moral 在 #9293 中贡献 - 使
TypeVar
defaults 的检测对于 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
字段的错误,由 @dmontagu 在 #9606 中贡献 - 修复了多个注解/约束应用逻辑,由 @sydney-runkle 在 #9623 中贡献
- 在验证和 json schema 中遵循
regex
flags,由 @sydney-runkle 在 #9591 中贡献 - 修复了
IpvAnyAddress
上的类型提示,由 @sydney-runkle 在 #9640 中贡献 - 允许在
__pydantic_extra__
上使用字段说明符,由 @dmontagu 在 #9659 中贡献 - 使用规范化大小写进行文件路径比较,由 @sydney-runkle 在 #9737 中贡献
- 修改约束应用逻辑以允许
Optional[Decimal]
上的字段约束,由 @lazyhope 在 #9754 中贡献 validate_call
类型参数修复,由 @sydney-runkle 在 #9760 中贡献- 检查 pytest.warns() 返回的所有警告,由 @s-t-e-v-e-n-k 在 #9702 中贡献
- 在 regex 模式中重用
re.Pattern
对象以允许 regex flags,由 @sydney-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
Bump 到v1.10.16
,由 @sydney-runkle 在 #9639 中完成
修复¶
v2.7.3 (2024-06-03)¶
更新内容¶
打包¶
- 将
pydantic-core
Bump 到v2.18.4
,由 @sydney-runkle 在 #9550 中完成
修复¶
- 修复 python 中 u 样式 unicode 字符串的问题,由 @samuelcolvin 在 pydantic/jiter#110 中完成
v2.7.2 (2024-05-28)¶
更新内容¶
打包¶
- 将
pydantic-core
Bump 到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
Bump 到v2.18.2
,由 @sydney-runkle 在 #9307 中完成
新功能¶
- 支持 Ftp 和 Websocket 连接字符串,由 @CherrySuryp 在 #9205 中完成
更改¶
- 当存在
…
时,使用字段描述作为 RootModel schema 描述,由 @LouisGobert 在 #9214 中完成
修复¶
- 修复
validation_alias
与model_construct
对AliasChoices
和AliasPath
的行为,由 @sydney-runkle 在 #9223 中完成 - 还原
typing.Literal
并在 TYPE_CHECKING 块外导入,由 @frost-nzcr4 在 #9232 中完成 - 修复
Secret
序列化 schema,适用于 unions,由 @sydney-runkle 在 #9240 中完成 - 修复
strict
应用于带有use_enum_values
的function-after
的问题,由 @sydney-runkle 在 #9279 中完成 - 解决在定义
model_post_init
的类上使用model_construct
失败并出现AttributeError
的情况,由 @babygrimes 在 #9168 中完成 - 修复带有 config 类型的
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
Bump 到v2.18.1
,由 @sydney-runkle 在 #9211 中完成 - 采用
jiter
v0.2.0
,由 @samuelcolvin 在 pydantic/pydantic-core#1250 中完成
新功能¶
- 从
FieldInfo.description
中提取属性文档字符串,由 @Viicos 在 #6563 中完成 - 添加
with_config
装饰器以符合 typing 规范,由 @Viicos 在 #8611 中完成 - 允许可选分隔符分隔
ByteSize.human_readable
结果的值和单位,由 @jks15satoshi 在 #8706 中完成 - 添加通用
Secret
基类型,由 @conradogarciaberrotaran 在 #8519 中完成 - 在文档中利用
Sphinx
清单进行交叉引用,由 @Viicos 在 #8682 中完成 - 添加环境变量以禁用插件,由 @geospackle 在 #8767 中完成
- 添加对
deprecated
字段的支持,由 @Viicos 在 #8237 中完成 - 允许
field_serializer('*')
,由 @ornariece 在 #9001 中完成 - 处理
model_config
定义为模型属性的情况,由 @alexeyt101 在 #9004 中完成 - 更新
create_model()
以支持typing.Annotated
作为输入,由 @wannieman98 在 #8947 中完成 - 添加
ClickhouseDsn
支持,由 @solidguy7 在 #9062 中完成 - 添加对
re.Pattern[str]
到pattern
字段的支持,由 @jag-k 在 #9053 中完成 - 支持
serialize_as_any
运行时设置,由 @sydney-runkle 在 #8830 中完成 - 添加对
typing.Self
的支持,由 @Youssefares 在 #9023 中完成 - 能够将
context
传递给序列化,由 @ornariece 在 #8965 中完成 - 在文档中添加带有 flarelytics 集成的反馈 widget,由 @sydney-runkle 在 #9129 中完成
- 支持在 Python 中解析部分 JSON 字符串,由 @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 中完成 - 将
enum
和type
添加到单项字面量的 JSON schema 中,由 @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 中完成 - 改进嵌套 dataclasses 的 schema 生成,由 @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
导致的错误,由 @dmontagu 在 #8666 中完成 - 修复
ByteSize
错误type
更改问题,由 @sydney-runkle 在 #8681 中完成 - 修复 dataclasses 中的继承注解问题,由 @sydney-runkle 在 #8679 中完成
- 修复核心 schema 生成中针对间接定义引用的回归问题,由 @dmontagu 在 #8702 中完成
- 修复带有 plain validator 的不受支持的类型错误,由 @sydney-runkle 在 #8710 中完成
- 还原 2.6 版本中的问题修复,修复 schema 构建错误,由 @sydney-runkle 在 #8718 中完成
- 修复
__pydantic_config__
对 TypeDict 被忽略的问题,由 @13sin 在 #8734 中完成 - 修复由于
pytest.warns()
开始在pytest.raises()
内部工作而导致的pytest v8.0.0
测试失败问题,由 @mgorny 在 #8678 中完成 - 为
mypy
插件使用来自 1.x 的is_valid_field
,由 @DanielNoord 在 #8738 中完成 - 更好地支持
mypy
严格相等标志,由 @dmontagu 在 #8799 中完成 - 带有 Annotated 类型的 model_json_schema 导出缺少 'required' 参数,由 @LouisGobert 在 #8793 中完成
- 修复
FieldInfo.__repr_args__
中的默认包含问题,由 @sydney-runkle 在 #8801 中完成 - 修复子类模块命名空间中不存在的 dataclass 基类中 forward refs 的解析问题,由 @matsjoyce-refeyn 在 #8751 中完成
- 修复
BaseModel
类型注解,使其可被typing.get_type_hints
解析,由 @devmonkey22 在 #7680 中完成 - 修复:允许带有
AliasGenerator
的空字符串别名,由 @sydney-runkle 在 #8810 中完成 - 修复测试以及
date
->datetime
时区假设修复,由 @sydney-runkle 在 #8823 中完成 - 修复使用
ast.Str
的弃用警告,由 @Viicos 在 #8837 中完成 - 添加缺少的
deprecated
装饰器,由 @Viicos 在 #8877 中完成 - 修复如果名称包含电子邮件地址,则
NameEmail
的序列化问题,由 @NeevCohen 在 #8860 中完成 - 在 schema 生成的错误消息中添加有关类的信息,由 @Czaki 在 #8917 中完成
- 使
TypeAdapter
的 typing 与特殊形式兼容,由 @adriangb 在 #8923 中完成 - 修复 config 行为被烘焙到
enum
的 ref schema 中的问题,由 @dmontagu 在 #8920 中完成 - 关于错误
model_json_schema
用法的更有帮助的错误提示,由 @sydney-runkle 在 #8928 中完成 - 修复嵌套的区分联合 schema 生成问题,第 2 部分,由 @sydney-runkle 在 #8932 中完成
- 修复带有区分器的嵌套 dataclasses / TypedDicts 的 schema 构建问题,由 @sydney-runkle 在 #8950 中完成
- 删除带有区分联合的 definitions schema 生成的不必要逻辑,由 @sydney-runkle 在 #8951 中完成
- 修复
mypy
插件中 optionals 的处理问题,由 @dmontagu 在 #9008 中完成 - 修复
PlainSerializer
与 std 类型构造函数的使用问题,由 @sydney-runkle 在 #9031 中完成 - 删除插件中不必要的 config 警告,由 @dmontagu 在 #9039 中完成
- 修复默认值序列化问题,由 @NeevCohen 在 #9066 中完成
- 修复
Model.__getattr__()
中的额外字段检查问题,由 @NeevCohen 在 #9082 中完成 - 修复从父类继承的
ClassVar
forward ref 问题,由 @alexmojaki 在 #9097 中完成 - 修复带有 strict
True
的 sequence like 验证器问题,由 @andresliszt 在 #8977 中完成 - 改进字段名称遮蔽父模型中字段时的警告消息,由 @chan-vince 在 #9105 中完成
- 如果子类中未重新定义遮蔽字段,则不发出警告,由 @chan-vince 在 #9111 中完成
- 修复带有未替换类型变量的区分联合错误,由 @sydney-runkle 在 #9124 中完成
- 支持将
deque
传递给Sequence[blah blah blah]
时进行序列化,由 @sydney-runkle 在 #9128 中完成 - 在
model_post_init
中从超类型初始化私有属性,由 @Viicos 在 #9134 中完成 - 修复带有
validation_alias
的model_construct
问题,由 @ornariece 在 #9144 中完成 - 确保 json-schema 生成器处理
Literal
null
类型,由 @bruno-f-cruz 在 #9135 中完成 - 在 v2.7.0 中修复:修复 allow extra generic 问题,由 @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 中完成 - 修复嵌套的区分联合 schema 生成问题,第 2 部分,由 @sydney-runkle 在 #8932 中完成
- 修复由 API 延迟导致的 no_strict_optional=True 错误,由 @dmontagu 在 #8826 中完成
v2.6.3 (2024-02-27)¶
更新内容¶
打包¶
- 更新文档中的
pydantic-settings
版本,由 @hramezani 在 #8906 中完成
修复¶
- 修复区分联合 schema 生成错误,由 @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
导致的错误,由 @dmontagu 在 #8666 中完成 - 修复
ByteSize
错误type
更改问题,由 @sydney-runkle 在 #8681 中完成 - 修复 dataclasses 中继承
Field
注解的问题,由 @sydney-runkle 在 #8679 中完成 - 修复核心 schema 生成中针对间接定义引用的回归问题,由 @dmontagu 在 #8702 中完成
- 修复带有
PlainValidator
的不受支持的类型错误,由 @sydney-runkle 在 #8710 中完成 - 还原 2.6 版本中的问题修复,修复 schema 构建错误,由 @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 People Page 添加到文档中,由 @sydney-runkle 在 #8345 中完成
- 支持
yyyy-MM-DD
datetime 解析,由 @sydney-runkle 在 #8404 中完成 - 向
ByteSize
类添加了位转换 #8415,由 @luca-matei 在 #8507 中完成 - 启用使用
ByteSize
类型创建 json schema,由 @geospackle 在 #8537 中完成 - 添加
eval_type_backport
以处理旧版本 Python 中的 union 运算符和内置泛型下标,由 @alexmojaki 在 #8209 中完成 - 添加对
dataclass
字段init
的支持,由 @dmontagu 在 #8552 中完成 - 为
ValidationError
实现 pickling,由 @davidhewitt 在 pydantic/pydantic-core#1119 中完成 - 添加统一的元组验证器,可以通过 PEP-646 处理“可变”元组,由 @dmontagu 在 pydantic/pydantic-core#865 中完成
变更¶
- 通过 @hramezani 在 #7188 中移除 Python3.7 支持
- 通过 @davidhewitt 在 pydantic/pydantic-core#1129 中移除 Python 3.7,以及 PyPy 3.7 和 3.8
- 在
BaseModel
构造函数中使用仅位置参数self
,因此任何字段名称都不会与之冲突,由 @ariebovenberg 在 #8072 中完成 - 使
@validate_call
返回一个函数而不是自定义描述符 - 修复了与继承的绑定问题,并向验证错误添加了self/cls
参数,由 @alexmojaki 在 #8268 中完成 - 从 JSON 模式描述中排除
BaseModel
文档字符串,由 @sydney-runkle 在 #8352 中完成 - 为
model_computed_fields
引入classproperty
装饰器,由 @Jocelyn-Gas 在 #8437 中完成 - 如果字段名称与类型冲突,则显式引发错误,由 @Viicos 在 #8243 中完成
- 为简单类型的联合使用更严格的序列化器,由 @alexdrydew pydantic/pydantic-core#1132 完成
性能¶
- 添加 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 中完成
- 用更高效的
Peek
替换Peak
,由 @davidhewitt 在 pydantic/jiter#48 中完成
修复¶
- 移动已弃用的
BaseConfig
中的getattr
警告,由 @tlambert03 在 #7183 中完成 - 仅哈希
model_fields
,而不是整个__dict__
,由 @alexmojaki 在 #7786 中完成 - 修复在
mypy
插件中冻结类型时错误处理联合的问题,由 @dmontagu 在 #7411 中完成 - 修复未类型化的
ClassVar
上的mypy
错误,由 @vincent-hachin-wmx 在 #8138 中完成 - 在
BaseModel.__eq__
中仅比较 pydantic 字段,而不是整个__dict__
,由 @QuentinSoubeyranAqemia 在 #7825 中完成 - 更新
model_validate
方法中的strict
文档字符串,由 @LukeTonin 在 #8223 中完成 - 修复
computed_field
的重载位置,由 @Viicos 在 #8227 中完成 - 修复在多个属性中使用的自定义类型类型转换,由 @ianhfc 在 #8066 中完成
- 修复不允许将
validate_call
装饰器动态分配给类方法的问题,由 @jusexton 在 #8249 中完成 - 修复
unittest.mock
弃用警告问题,由 @ibleedicare 在 #8262 中完成 - 为
JsonValue
包含子类化原始值的情况添加了测试,由 @jusexton 在 #8286 中完成 - 修复验证器 (classmethod) 之前的
mypy
错误,由 @sydney-runkle 在 #8285 中完成 - 修复
to_snake
转换,由 @jevins09 在 #8316 中完成 - 修复
ModelMetaclass.__prepare__
的类型注解,由 @slanzmich 在 #8305 中完成 - 当带注解的类型已具有配置时,禁止在初始化
TypeAdapter
时指定config
,由 @sydney-runkle 在 #8365 中完成 - 修复由递归类型别名参数化的泛型的 JSON 模式中的命名问题,由 @dmontagu 在 #8389 中完成
- 修复 pydantic people 脚本中的类型注解,由 @shenxiangzhuang 在 #8402 中完成
- 在
dataclass
签名中添加对字段alias
的支持,由 @NeevCohen 在 #8387 中完成 - 修复前向引用中带有
Field(...)
的模式生成错误,由 @dmontagu 在 #8494 中完成 - 修复通过
model_construct
调用__dict__
中的键的顺序,由 @sydney-runkle 在 #8500 中完成 - 修复当 globals 不包含
__name__
时模块path_type
的创建,由 @hramezani 在 #8470 中完成 - 修复带有
from __future__ import annotations
的 dataclass 的命名空间问题,由 @sydney-runkle 在 #8513 中完成 - 修复:使函数验证器类型为仅位置参数,由 @pmmmwh 在 #8479 中完成
- 修复
@deprecated
的用法,由 @Viicos 在 #8294 中完成 - 在
model_construct
调用中添加更多对私有属性的支持,由 @sydney-runkle 在 #8525 中完成 - 为类型命名空间使用堆栈,由 @dmontagu 在 #8378 中完成
- 修复具有引用的类型的
TypeAliasType
的模式构建错误,由 @dmontagu 在 #8526 中完成 - 在 dataclass 中支持
pydantic.Field(repr=False)
,由 @tigeryy2 在 #8511 中完成 - 覆盖
RootModel
的dataclass_transform
行为,由 @Viicos 在 #8163 中完成 - 重构签名生成以简化,由 @sydney-runkle 在 #8572 中完成
- 修复 PlainValidator 注解的顺序错误,由 @Anvil 在 #8567 中完成
- 修复
computed_field
的 json 序列化的exclude_none
,由 @sydney-runkle 在 pydantic/pydantic-core#1098 中完成 - 支持 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 中完成
修复¶
- 修复当用作
dict
键时,从 JSON 键验证Literal
的问题,由 @sydney-runkle 在 pydantic/pydantic-core#1075 中完成 - 修复关于
Union
成员的custom_init
的错误,由 @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 中完成
- 修复创建具有 @validate_call 包装的字段注解的模型时,
ValidateCallWrapper
错误,由 @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 中完成 CallableDiscriminator
重命名为Discriminator
,由 @dmontagu 在 #8047 中完成- 使联合案例标签影响联合错误消息,由 @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 模式,由 @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 中完成
- 修复带有默认值的模式排序错误,由 @sydney-runkle 在 #7817 中完成
- 为未以其他方式指定的别名使用生成的别名,由 @alexmojaki 在 #7802 中完成
- 支持为
UUID
类型指定strict
,由 @sydney-runkle 在 #7865 中完成 - JSON 模式:修复额外的参数处理,由 @me-and 在 #7810 中完成
- 修复:支持带有继承的 dataclass 的
pydantic.Field(kw_only=True)
,由 @PrettyWood 在 #7827 中完成 - 支持在具有
__slots__
的类的方法中使用validate_call
装饰器,由 @sydney-runkle 在 #7883 中完成 - 修复带有
dataclasses.field
默认值的 pydantic dataclass 问题,由 @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 中完成 - 为继承的 dataclass 的签名添加了修复,由 @howsunjow 在 #7925 中完成
- 使 JSON 模式中的模型名称生成更加健壮,由 @joakimnordling 在 #7881 中完成
- 修复验证错误消息中的复数形式(在测试中),由 @Iipin 在 #7972 中完成
PrivateAttr
从Annotated
默认位置传递,由 @tabassco 在 #8004 中完成- 显示 SecretBytes 时,不要解码字节(可能不是 UTF8),由 @alexmojaki 在 #8012 中完成
- 使用
classmethod
而不是classmethod[Any, Any, Any]
,由 @Mr-Pepe 在 #7979 中完成 - 更清晰的无效插件错误,由 @samuelcolvin 在 #8023 中完成
- 更正 pydantic dataclass 导入,由 @samuelcolvin 在 #8027 中完成
- 修复模型引用重新定义的类型别名的错误行为,由 @dmontagu 在 #8050 中完成
- 修复带有
validate_default
的Optional
字段仅执行一个字段验证的问题,由 @sydney-runkle 在 pydantic/pydantic-core#1002 中完成 - 修复带有
Dict
键的definition-ref
错误,由 @sydney-runkle 在 pydantic/pydantic-core#1014 中完成 - 修复允许使用
coerce_numbers_to_str=True
验证bool
类型的问题,由 @sydney-runkle 在 pydantic/pydantic-core#1017 中完成 - 在 float 和 decimal 约束中不接受
NaN
,由 @davidhewitt 在 pydantic/pydantic-core#1037 中完成 - 为未从 str/int 继承的枚举值添加
lax_str
和lax_int
支持,由 @michaelhly 在 pydantic/pydantic-core#1015 中完成 - 在
List
类型的Union
中支持列表中的子类,由 @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 float 序列化,由 @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 模式错误,由 @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 中完成 - 移除 schema 构建缓存,由 @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 中完成 - 默认情况下,使具有默认值的字段在序列化 schema 中不是必需的,由 @dmontagu 在 #7275 中完成
- 将
Extra
标记为已弃用,由 @disrupted 在 #7299 中完成 - 使
EncodedStr
成为数据类,由 @Kludex 在 #7396 中完成 - 将
annotated_handlers
移动为公开,由 @samuelcolvin 在 #7569 中完成
性能¶
- 简化
CoreSchema
的扁平化和内联,由 @adriangb 在 #7523 中完成 - 移除
CoreSchema
遍历中未使用的副本,由 @adriangb 在 #7528 中完成 - 为从 CoreSchema 收集定义和无效 schema 添加缓存,由 @adriangb 在 #7527 中完成
- 急切地解析可辨别联合类型,并缓存我们无法处理的情况,由 @adriangb 在 #7529 中完成
- 在
CoreSchema
构建热路径中,用更详细的版本替换dict.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
应用于引用的 schema,由 @adriangb 在 #7381 中完成 - 强制执行具有双前导下划线的私有属性的行为,由 @lig 在 #7265 中完成
- 标准化
__get_pydantic_core_schema__
签名,由 @hramezani 在 #7415 中完成 - 修复泛型数据类字段突变错误(当使用
TypeAdapter
时),由 @sydney-runkle 在 #7435 中完成 - 修复
wrap
模式下model_validator
的TypeError
,由 @pmmmwh 在 #7496 中完成 - 改进枚举错误消息,由 @hramezani 在 #7506 中完成
- 使
repr
适用于在处理ValidationError
时初始化失败的实例,由 @dmontagu 在 #7439 中完成 - 修复了通过限制空格的正则表达式拒绝服务问题,由 @prodigysml 在 #7360 中完成
- 修复处理具有
UUID.version=None
的UUID
值,由 @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)¶
- 使根模型额外停止
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 schema defrefs 发生冲突,由 @dmontagu 在 #6566 中完成
- 为
Path
字段的无效输入提供更清晰的错误,由 @samuelcolvin 在 #6903 中完成 支持坐标类型,由 @yezz123 在 #6906 中完成
- 修复 py 3.10.0 的
ForwardRef
包装器 (shim until bpo-45166),由 @randomir 在 #6919 中完成 - 修复与 RootModel 复制相关的错误行为,由 @dmontagu 在 #6918 中完成
- 修复由 ParamSpec 引起的递归错误问题,由 @dmontagu 在 #6923 中完成
- 向迁移指南添加关于 Constrained 类的章节,由 @Kludex 在 #6924 中完成
- 为徽章链接使用
main
分支,由 @Viicos 在 #6925 中完成 - 为 v1/v2 Annotated 差异添加测试,由 @carlbordum 在 #6926 中完成
- 使 v1 mypy 插件同时适用于 v1 和 v2,由 @dmontagu 在 #6921 中完成
- 修复泛型模型无法使用 BaseModel 参数化的问题,由 @dmontagu 在 #6933 中完成
- 移除带有别名的可辨别联合类型的 xfail,由 @dmontagu 在 #6938 中完成
- 向 computed_field 添加 field_serializer,由 @andresliszt 在 #6965 中完成
- 将 union_schema 与 Type[Union[...]] 一起使用,由 @JeanArhancet 在 #6952 中完成
- 修复继承的 typeddict 属性/配置,由 @adriangb 在 #6981 中完成
- 修复在验证器之前调用两次的数据类注解,由 @davidhewitt 在 #6998 中完成
- 更新 test-fastapi 取消选择的测试,由 @hramezani 在 #7014 中完成
- 修复验证器文档格式,由 @hramezani 在 #7015 中完成
- 修复 model_json_schema 的文档字符串中的拼写错误,由 @AdamVinch-Federated 在 #7032 中完成
- 使用 pyright 移除未使用的 "type ignores",由 @samuelcolvin 在 #7026 中完成
- 添加代表 FastAPI 启动时间的基准测试,由 @adriangb 在 #7030 中完成
- 修复 Enum 子类的 json_encoders,由 @adriangb 在 #7029 中完成
- 更新关于 base64 编码的
ser_json_bytes
的文档字符串,由 @Viicos 在 #7052 中完成 - 允许
@validate_call
在异步方法上工作,由 @adriangb 在 #7046 中完成 - 修复:
Settings
和SettingsConfigDict
的 mypy 错误,由 @JeanArhancet 在 #7002 中完成 - 修复一些拼写错误 (重复的单词和 it's/its),由 @eumiro 在 #7063 中完成
- 修复文档字符串中的拼写错误,由 @harunyasar 在 #7062 中完成
- 文档: 修复 pydantic-settings 包推荐中损坏的 URL,由 @swetjen 在 #6995 中完成
- 处理应用于不接受约束的 schema 的约束,由 @adriangb 在 #6951 中完成
- 用 math.isclose 替换 almost_equal_floats,由 @eumiro 在 #7082 中完成
- 将 pydantic-core 升级至 2.5.0,由 @davidhewitt 在 #7077 中完成
- 添加
short_version
并在链接中使用它,由 @hramezani 在 #7115 中完成 - 📝 向
RootModel
添加使用链接,由 @Kludex 在 #7113 中完成 - 还原 "修复 mongosrv DSN 的默认端口 (#6827)",由 @Kludex 在 #7116 中完成
- 在用法文档和迁移指南中阐明 validate_default 和 _Unset 的处理,由 @benbenbang 在 #6950 中完成
- 调整
Field.exclude
的文档,由 @Viicos 在 #7086 中完成 - 不要要求
validate_assignment
使用Field.frozen
,由 @Viicos 在 #7103 中完成 - 调整
_core_utils
,由 @samuelcolvin 在 #7040 中完成 - 使 DefaultDict 与 set 一起工作,由 @hramezani 在 #7126 中完成
- 不要总是要求 typing.Generic 作为部分参数化模型的基础,由 @dmontagu 在 #7119 中完成
- 修复 JSON schema 错误地使用父类核心 schema 的问题,由 @dmontagu 在 #7020 中完成
- 修复与 TypedDict 和 alias_generator 相关的 xfailed 测试,由 @dmontagu 在 #6940 中完成
- 改进 NameEmail 的错误消息,由 @dmontagu 在 #6939 中完成
- 修复泛型计算字段,由 @dmontagu 在 #6988 中完成
- 在验证期间反映 namedtuple 默认值,由 @dmontagu 在 #7144 中完成
- 更新依赖项,修复 pydantic-core 用法,修复 CI 问题,由 @dmontagu 在 #7150 中完成
- 添加 mypy 1.5.0,由 @hramezani 在 #7118 中完成
- 处理非 json 原生枚举值,由 @adriangb 在 #7056 中完成
- 在 Json 类型文档中记录
round_trip
,由 @jc-louis 在 #7137 中完成 - 放宽签名检查以更好地支持内置函数和 C 扩展函数作为验证器,由 @adriangb 在 #7101 中完成
- 添加 union_mode='left_to_right',由 @davidhewitt 在 #7151 中完成
- 包含继承排序的错误消息提示,由 @yvalencia91 在 #7124 中完成
- 修复一个文档链接并解决其他两个文档的一些警告,由 @dmontagu 在 #7153 中完成
- 在警告中包含 Field 额外键名,由 @hramezani 在 #7136 中完成
v2.1.1 (2023-07-25)¶
v2.1.0 (2023-07-25)¶
- 添加
StringConstraints
以用作 Annotated 元数据,由 @adriangb 在 #6605 中完成 - 尝试修复间歇性失败的 CI,由 @adriangb 在 #6683 中完成
- 移除可选与默认的冗余示例,由 @ehiggs-deliverect 在 #6676 中完成
- 文档更新,由 @samuelcolvin 在 #6692 中完成
- 移除验证器文档中的始终验证部分,由 @adriangb 在 #6679 中完成
- 修复 json schema 生成中的递归错误,由 @adriangb 在 #6720 中完成
- 修复 secretstr 的不正确的子类检查,由 @AlexVndnblcke 在 #6730 中完成
- 将 pdm / pdm lockfile 更新至 2.8.0,由 @davidhewitt 在 #6714 中完成
- 在更多 CI 作业中取消固定 pdm,由 @davidhewitt 在 #6755 中完成
- 改进文档中辅助包的源位置,由 @davidhewitt 在 #6749 中完成
- 假设内置函数不接受 info 参数,由 @adriangb 在 #6754 中完成
- 修复调用
help(BaseModelSubclass)
引发错误的问题,由 @hramezani 在 #6758 中完成 - 修复 mypy 插件处理
@model_validator(mode="after")
,由 @ljodal 在 #6753 中完成 - 将 pydantic-core 更新至 2.3.1,由 @davidhewitt 在 #6756 中完成
- 用于设置的 Mypy 插件,由 @hramezani 在 #6760 中完成
- 对 JSON schema 使用
contentSchema
关键字,由 @dmontagu 在 #6715 中完成 - 快速路径检查有限小数,由 @davidhewitt 在 #6769 中完成
- 文档更新,由 @samuelcolvin 在 #6771 中完成
- 改进 json schema 文档,由 @hramezani 在 #6772 中完成
- 更新验证器文档,由 @adriangb 在 #6695 中完成
- 修复 wrap 验证器的类型提示,由 @dmontagu 在 #6788 中完成
- 🐛 修复 Literal 和其他类型联合的验证警告,由 @lig 在 #6628 中完成
- 更新 V2 中泛型支持的文档,由 @tpdorsey 在 #6685 中完成
- 将 pydantic-core 构建信息添加到
version_info()
,由 @samuelcolvin 在 #6785 中完成 - 修复使用带有默认值的槽的 pydantic 数据类,由 @dmontagu 在 #6796 中完成
- 修复冻结模型的哈希函数继承,由 @dmontagu 在 #6789 中完成
- ✨ 添加
SkipJsonSchema
注解,由 @Kludex 在 #6653 中完成 - 如果 Field 使用了无效的字段名称,则报错,由 @dmontagu 在 #6797 中完成
- 将
GenericModel
添加到MOVED_IN_V2
,由 @adriangb 在 #6776 中完成 - 从
docs/usage/types/custom.md
中移除未使用的代码,由 @hramezani 在 #6803 中完成 - 修复
float
->Decimal
强制转换精度损失,由 @adriangb 在 #6810 中完成 - 从 north star 基准测试中移除电子邮件验证,由 @davidhewitt 在 #6816 中完成
- 修复 mypy 的链接,由 @progsmile 在 #6824 中完成
- 改进初始化钩子示例,由 @hramezani 在 #6822 中完成
- 修复 mongosrv DSN 的默认端口,由 @dmontagu 在 #6827 中完成
- 改进 API 文档,特别是用法文档和 API 文档之间更多的链接,由 @samuelcolvin 在 #6780 中完成
- 将 pydantic-core 更新至 2.4.0,由 @davidhewitt 在 #6831 中完成
- 修复
annotated_types.MaxLen
验证器对自定义序列类型,由 @ImogenBits 在 #6809 中完成 - 更新 V1,由 @hramezani 在 #6833 中完成
- 使其可以工作的可调用 JSON schema 额外信息,由 @dmontagu 在 #6798 中完成
- 修复
InstanceOf
的序列化问题,由 @dmontagu 在 #6829 中完成 - 添加回对
json_encoders
的支持,由 @adriangb 在 #6811 中完成 - 在构建 schema 时更新字段注解,由 @dmontagu 在 #6838 中完成
- 使用
WeakValueDictionary
修复泛型内存泄漏,由 @dmontagu 在 #6681 中完成 - 添加
config.defer_build
以可选地使模型构建延迟,由 @samuelcolvin 在 #6823 中完成 - 将
UUID
序列化委托给 pydantic-core,由 @davidhewitt 在 #6850 中完成 - 更新
json_encoders
文档,由 @adriangb 在 #6848 中完成 - 修复
staticmethod
/classmethod
顺序与 validate_call 的错误消息,由 @dmontagu 在 #6686 中完成 - 改进
Config
的文档,由 @samuelcolvin 在 #6847 中完成 - 更新序列化文档以提及
Field.exclude
优先于调用时include/exclude
,由 @hramezani 在 #6851 中完成 - 通过使
GenerateSchema
公开来允许自定义核心 schema 生成,由 @adriangb 在 #6737 中完成
v2.0.3 (2023-07-05)¶
- 在迁移文档中提及 PyObject (v1) 移动到 ImportString (v2),由 @slafs 在 #6456 中完成
- 修复 release-tweet CI,由 @Kludex 在 #6461 中完成
- 修改关于必需/可选/可空字段的部分,由 @ybressler 在 #6468 中完成
- 如果类型提示实际上不是类型,则发出警告,由 @adriangb 在 #6479 中完成
- 用 GetPydanticSchema 替换 TransformSchema,由 @dmontagu 在 #6484 中完成
- 修复各种注解类型的不可哈希性,以用于缓存泛型容器,由 @dmontagu 在 #6480 中完成
- PYD-164: 重做自定义类型文档,由 @adriangb 在 #6490 中完成
- 修复 ci,由 @adriangb 在 #6507 中完成
- 修复泛型中的前向引用,由 @adriangb 在 #6511 中完成
- 修复 core_schema.ChainSchema 的序列化 JSON schema 的生成,由 @dmontagu 在 #6515 中完成
- 记录 Pydantic V2 中
Field.alias
行为的更改,由 @hramezani 在 #6508 中完成 - 尝试计算具有未定义字段的模型的 json schema 时,提供更好的错误消息,由 @dmontagu 在 #6519 中完成
- 记录
alias_priority
,由 @tpdorsey 在 #6520 中完成 - 为类型文档添加重定向,由 @tpdorsey 在 #6513 中完成
- 允许在不发布的情况下更新文档,由 @samuelcolvin 在 #6551 中完成
- 确保文档测试始终在正确的文件夹中运行,由 @dmontagu 在 #6487 中完成
- 推迟序列化器函数的返回类型提示的评估,由 @dmontagu 在 #6516 中完成
- 禁用 Ruff 的 E501 并仅依赖 Black,由 @adriangb 在 #6552 中完成
- 更新 V2 的 JSON Schema 文档,由 @tpdorsey 在 #6492 中完成
- 添加循环引用处理的文档,由 @dmontagu 在 #6493 中完成
- 移除对变更文件的需求,由 @samuelcolvin 在 #6556 中完成
- 添加 "north star" 基准测试,由 @davidhewitt 在 #6547 中完成
- 更新 Dataclasses 文档,由 @tpdorsey 在 #6470 中完成
- ♻️ 在 v1 重定向上使用不同的错误消息,由 @Kludex 在 #6595 中完成
- ⬆ 将
pydantic-core
升级至 v2.2.0,由 @lig 在 #6589 中完成 - 修复 IPvAny 的序列化问题,由 @dmontagu 在 #6572 中完成
- 改进 CI,通过使用 PDM 而不是 pip 安装 typing-extensions,由 @adriangb 在 #6602 中完成
- 添加
enum
错误类型文档,由 @lig 在 #6603 中完成 - 🐛 修复 unicode 字符串的
max_length
问题,由 @lig 在 #6559 中完成 - 添加通过
pydantic.v1
访问功能的文档,由 @tpdorsey 在 #6604 中完成 - 在迭代模型时包含 extra 字段,由 @adriangb 在 #6562 中完成
- 修复 model_validator 的类型标注,由 @adriangb 在 #6514 中完成
- 改进 Decimal 验证器,由 @adriangb 在 #6327 中完成
- 修复使用固定的 pytest-examples 的各种文档字符串,由 @dmontagu 在 #6607 中完成
- 处理可区分联合中的函数验证器,由 @dmontagu 在 #6570 中完成
- 审查 json_schema.md,由 @tpdorsey 在 #6608 中完成
- 使 validate_call 在 basemodel 方法上工作,由 @dmontagu 在 #6569 中完成
- 为大整数 json serde 添加测试,由 @davidhewitt 在 #6614 中完成
- 修复 pydantic dataclass 与 dataclasses.field default_factory 相关的问题,由 @hramezani 在 #6616 中完成
- 修复 TypeAdapter 的 mypy 类型推断,由 @zakstucke 在 #6617 中完成
- 使其可以使用 None 作为泛型参数,由 @dmontagu 在 #6609 中完成
- 使其可以使用
$ref
作为别名,由 @dmontagu 在 #6568 中完成 - 在迁移指南中添加关于
AnyUrl
等更改的注释,由 @davidhewitt 在 #6618 中完成 - 🐛 支持在
RootModel
上使用Field
定义json_schema_extra
,由 @lig 在 #6622 中完成 - 更新 pre-commit 以防止意外提交到 main 分支,由 @dmontagu 在 #6636 中完成
- 修复 MacOS/windows 上 python 3.7 的 PDM CI,由 @dmontagu 在 #6627 中完成
- 为 pydantic dataclasses 生成更准确的签名,由 @dmontagu 在 #6633 中完成
- Pydantic V2 的 Url 类型更新,由 @tpdorsey 在 #6638 中完成
- 修复
transform
文档字符串中的列表 markdown 格式,由 @StefanBRas 在 #6649 中完成 - 简化 slots_dataclass 的构造以安抚 mypy,由 @davidhewitt 在 #6639 中完成
- 更新 TypedDict schema 生成文档字符串,由 @adriangb 在 #6651 中完成
- 检测并使用 lint 错误标记打印语句,由 @dmontagu 在 #6655 中完成
- 为 pydantic-core PR 766 添加 xfailing 测试,由 @dmontagu 在 #6641 中完成
- 忽略来自 dataclasses metadata 的无法识别的字段,由 @dmontagu 在 #6634 中完成
- 使不存在的类 getattr 成为 mypy 错误,由 @dmontagu 在 #6658 中完成
- 将 pydantic-core 更新到 2.3.0 版本,由 @hramezani 在 #6648 中完成
- 使用 typing_extensions 中的 OrderedDict,由 @dmontagu 在 #6664 中完成
- 修复 JSON schema extra callable 的类型提示,由 @dmontagu 在 #6659 中完成
v2.0.2 (2023-07-05)¶
- 修复了
RootModel
的往返 pickle/unpickle 会更改__dict__
值的错误,#6457,由 @dmontagu 完成 - 允许单项可区分联合,#6405,由 @dmontagu 完成
- 修复枚举的联合解析问题,#6440,由 @dmontagu 完成
- 文档:修复
constr
文档,将旧的regex
重命名为新的pattern
,#6452,由 @miili 完成 - 更改
GenerateJsonSchema.generate_definitions
签名,#6436,由 @dmontagu 完成
查看完整变更日志 此处
v2.0.1 (2023-07-04)¶
Pydantic V2 的第一个补丁版本
- 通过
setattr
添加的额外字段 (即m.some_extra_field = 'extra_value'
) 如果model_config
extra='allowed'
,则会添加到.model_extra
中。修复了 #6333, #6365,由 @aaraney 完成 - 自动解包自定义类型的 JSON schema '$ref',#6343,由 @adriangb 完成
- 修复子模型中标记联合的多次处理问题,#6340,由 @suharnikov 完成
查看完整变更日志 此处
v2.0 (2023-06-30)¶
Pydantic V2 发布啦!
有关更多详细信息,请参阅 这篇文章。
v2.0b3 (2023-06-16)¶
Pydantic V2 的第三个 beta 预发布版本
查看完整变更日志 此处
v2.0b2 (2023-06-03)¶
向 TypeAdapter.validate_python
和 BaseModel.model_validate
添加 from_attributes
运行时标志。
查看完整变更日志 此处
v2.0b1 (2023-06-01)¶
Pydantic V2 的第一个 beta 预发布版本
查看完整变更日志 此处
v2.0a4 (2023-05-05)¶
Pydantic V2 的第四个预发布版本
查看完整变更日志 此处
v2.0a3 (2023-04-20)¶
Pydantic V2 的第三个预发布版本
查看完整变更日志 此处
v2.0a2 (2023-04-12)¶
Pydantic V2 的第二个预发布版本
查看完整变更日志 此处
v2.0a1 (2023-04-03)¶
Pydantic V2 的第一个预发布版本!
有关更多详细信息,请参阅 这篇文章。
v1.10.19 (2024-11-06)¶
- 当 v2 模型嵌套在 v1 模型中时添加警告,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/10432 中完成
- 修复 V1
isinstance
检查中的弃用警告,由 @alicederyn 在 https://github.com/pydantic/pydantic/pull/10645 中完成
v1.10.18 (2024-08-22)¶
- V1 中的 Eval type 修复,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/9751 中完成
- 在
utils.py
的__all__
中添加to_lower_camel
,由 @sydney-runkle (直接提交) - 修复 mypy 1.11 版本的
mypy
v1 插件,由 @flaeppe 在 https://github.com/pydantic/pydantic/pull/10139 中完成 - 修复当 discriminator 具有别名且
.schema(by_alias=False)
时使用的 discriminator 键,由 @exs-dwoodward 在 https://github.com/pydantic/pydantic/pull/10146 中完成
v1.10.17 (2024-06-20)¶
- 为 1.10.x 版本宣传 Python 3.12!第二部分,由 @vfazio 在 https://github.com/pydantic/pydantic/pull/9644 中完成
- 在
v1
命名空间中镜像模块,以修复 python>3.11 中的类型标注和对象解析问题,由 @exs-dwoodward 在 https://github.com/pydantic/pydantic/pull/9660 中完成 - setup: 从 python_requires 中移除上限,由 @vfazio 在 https://github.com/pydantic/pydantic/pull/9685 中完成
v1.10.16 (2024-06-11)¶
- 在 FutureRef._evaluate 中将 recursive_guard 指定为 kwarg,由 @vfazio 在 https://github.com/pydantic/pydantic/pull/9612 中完成
- 修复即将发布的 mypy 版本的 mypy v1 插件,由 @ cdce8p 在 https://github.com/pydantic/pydantic/pull/9586 中完成
- 直接从 v1 命名空间导入模块/对象,由 @exs-dwoodward 在 https://github.com/pydantic/pydantic/pull/9162 中完成
v1.10.15 (2024-04-03)¶
- 向 Pydantic v1 添加 pydantic.v1 命名空间,由 @exs-dmiketa 在 https://github.com/pydantic/pydantic/pull/9042 中完成
- 为 V1 放宽 typing-extensions 的版本限制,由 @SonOfLilit 在 https://github.com/pydantic/pydantic/pull/8819 中完成
- mypy 的补丁修复,由 @sydney-runkle 在 https://github.com/pydantic/pydantic/pull/8765 中完成
v1.10.14 (2024-01-19)¶
- 更新 install.md,由 @dmontagu 在 #7690 中完成
- 修复 ci 以仅在发布时部署文档,由 @sydney-runkle 在 #7740 中完成
- V1 的 Ubuntu 修复,由 @sydney-runkle 在 #8540 和 #8587 中完成
- 修复复制时 dataclasses 中 cached_property 的处理,由 @rdbisme 在 #8407 中完成
v1.10.13 (2023-09-27)¶
- 修复: 向
pydantic.validate_email
添加最大长度检查,#7673,由 @hramezani 完成 - 文档: 修复安装 v1 的 pip 命令,#6930,由 @chbndrhnns 完成
v1.10.12 (2023-07-24)¶
- 修复了在
deque
验证时maxlen
属性被删除的问题。仅当 deque 项已被类型化时才会发生。更改了_validate_sequence_like
函数,#6581,由 @maciekglowka 完成
v1.10.11 (2023-07-04)¶
- 通过相对路径而不是绝对路径在 tools.py 中导入 create_model - 以便在复制到 V2 分支时不会导入 V2 代码,#6361,由 @SharathHuddar 完成
v1.10.10 (2023-06-30)¶
- 向设置管理添加 Pydantic
Json
字段支持,#6250,由 @hramezani 完成 - 修复了不可哈希值的字面量验证器错误,#6188,由 @markus1978 完成
- 修复了泛型接收 forward refs 的错误,#6130,由 @mark-todd 完成
- 更新 CI 中内部测试的 FastAPI 安装方法,#6117,由 @Kludex 完成
v1.10.9 (2023-06-07)¶
- 修复 Decimal 验证中尾随零未被忽略的问题,#5968,由 @hramezani 完成
- 修复 v1.4.0 的 mypy 插件,#5928,由 @cdce8p 完成
- 添加 future 和 past date hypothesis 策略,#5850,由 @bschoenmaeckers 完成
- 不鼓励将 Cython 3 与 Pydantic 1.x 一起使用,#5845,由 @lig 完成
v1.10.8 (2023-05-23)¶
- 修复了
Literal
与typing-extension==4.6.0
一起使用时的错误,#5826,由 @hramezani 完成 - 这解决了 (已关闭) 问题 #3849,其中当数据包含非别名字段名称时,使用可区分联合的别名字段无法验证,#5736,由 @benwah 完成
- 将 email-validator 依赖项更新到 >=2.0.0post2,#5627,由 @adriangb 完成
- 为 python/typeshed#9771 中的更改更新
AnyClassMethod
,#5505,由 @ITProKyle 完成
v1.10.7 (2023-03-22)¶
- 修复了使用
ConstrainedStr
和regex
作为 dict 键从模型创建 schema 的问题,#5223,由 @matejetz 完成 - 解决了由 explicit_package_bases=True 引起的 mypy 插件中的错误,#5191,由 @dmontagu 完成
- 为没有默认参数的 Field 在 mypy 插件中添加隐式默认值,#5190,由 @dmontagu 完成
- 修复了在可区分联合中用作字面量的 Enum 值生成的 schema,#5188,由 @javibookline 完成
- 修复了当用户在自己的类中定义
from_orm
时,由 pydantic mypy 插件引起的 mypy 失败,#5187,由 @dmontagu 完成 - 修复了
InitVar
与 pydantic dataclasses、mypy 版本1.1.1
和自定义 mypy 插件的用法,#5162,由 @cdce8p 完成
v1.10.6 (2023-03-08)¶
- 实现逻辑以支持通过使用 defaults 识别非标准 callable 并解包
functools.partial
和functools.partialmethod
来创建验证器,在检查签名时,#5126,由 @JensHeinrich 完成 - 修复了 v1.1.1 的 mypy 插件,并修复了 pydantic dataclasses 的
dataclass_transform
装饰器,#5111,由 @cdce8p 完成 - 当 discriminator 值不可哈希时,引发
ValidationError
而不是ConfigError
,#4773,由 @kurtmckee 完成
v1.10.5 (2023-02-15)¶
- 修复了使用复杂模型集的
GenericModel
的参数化基类处理中断的问题,#5052,由 @MarkusSintonen 完成 - 如果插件配置更改,则使 mypy 缓存失效,#5007,由 @cdce8p 完成
- 修复了深度复制 pydantic 包装的 dataclass 类型时出现的
RecursionError
,#4949,由 @mbillingr 完成 - 修复了
X | Y
union 语法破坏GenericModel
的问题,#4146,由 @thenx 完成 - 切换 coverage badge 以显示此分支/版本的 coverage,#5060,由 @samuelcolvin 完成
v1.10.4 (2022-12-30)¶
- 将依赖项更改为
typing-extensions>=4.2.0
,#4885,由 @samuelcolvin 完成
v1.10.3 (2022-12-29)¶
注意:v1.10.3 由于 #4885 已从 PyPI "撤回",该问题已在 v1.10.4 中修复
- 修复了自定义 root 模型的解析,#4883,由 @gou177 完成
- 修复: 对冻结或空 dataclasses 使用 dataclass 代理,#4878,由 @PrettyWood 完成
- 修复了模型实例是默认值之一的模型的
schema
和schema_json
,#4781,由 @Bobronium 完成 - 在文档索引页上添加 Jina AI 作为赞助商,#4767,由 @samuelcolvin 完成
- 修复: 支持在
DataclassProxy
上赋值,#4695,由 @PrettyWood 完成 - 添加
postgresql+psycopg
作为PostgreDsn
的允许 scheme,使其可用于 SQLAlchemy 2,#4689,由 @morian 完成 - 允许 dict schemas 同时具有
patternProperties
和additionalProperties
,#4641,由 @jparise 完成 - 修复了为带有
unique_items
的可选列表传递 None 时出现的错误,#4568,由 @mfulgo 完成 - 修复了带有
Callable
参数的GenericModel
引发TypeError
的问题,#4551,由 @mfulgo 完成 - 修复了带有
StrictStr
类型标注的字段 regex,#4538,由 @sisp 完成 - 将
dataclass_transform
关键字参数名称从field_descriptors
更正为field_specifiers
,#4500,由 @samuelcolvin 完成 - 修复: 避免在继承 dataclasses 时多次调用
__post_init__
,#4487,由 @PrettyWood 完成 - 减小二进制 wheels 的大小,#2276,由 @samuelcolvin 完成
v1.10.2 (2022-09-05)¶
- 还原更改: 还原 URL 部分的百分比编码,该编码最初在 #4224 中添加,#4470,由 @samuelcolvin 完成
- 防止长字符串/字节 (长度 >
4_300
) 作为 int 字段的输入,请参阅 python/cpython#95778 和 CVE-2020-10735, #1477,由 @samuelcolvin 完成 - 修复: dataclass 包装器并非总是被调用,#4477,由 @PrettyWood 完成
- 在 Python 3.11 上解析
mypy
配置时使用tomllib
,#4476,由 @hauntsaninja 完成 GenericModel
缓存的基本修复,以检测Union
模型中参数的顺序,#4474,由 @sveinugu 完成- 修复了当使用裸类型 (如
list
和dict
) 作为default_factory
时 mypy 插件的问题,#4457,由 @samuelcolvin 完成
v1.10.1 (2022-08-31)¶
v1.10.0 (2022-08-30)¶
- 重构整个 pydantic
dataclass
装饰器,使其真正像其标准库等效项一样工作。因此,它保留了__eq__
、__hash__
等,并使与其非验证版本的比较成为可能。它还修复了字段中frozen
dataclasses 的用法和嵌套 dataclasses 中default_factory
的用法。已添加对Config.extra
的支持。最后,现在可以直接通过dict
自定义配置,#2557,由 @PrettyWood 完成
重大更改 compiled
布尔值 (pydantic 是否使用 cython 编译) 已从main.py
移动到version.py
- 现在
Config.extra
受到支持,dataclass
默认情况下忽略额外的参数 (如BaseModel
) - 修复了
BaseModel
中 PrivateAttrs 的 PEP487__set_name__
协议,#4407,由 @tlambert03 完成 - 允许通过
Config
中的parse_env_var
自定义解析环境变量,#4406,由 @acmiyaguchi 完成 - 将
master
重命名为main
,#4405,由 @hramezani 完成 - 修复了当
Field
中存在max_length
时StrictStr
不引发ValidationError
的问题,#4388,由 @hramezani 完成 - 使
SecretStr
和SecretBytes
可哈希,#4387,由 @chbndrhnns 完成 - 修复了当
Field
中存在max_length
时StrictBytes
不引发ValidationError
的问题,#4380,由 @JeanArhancet 完成 - 添加对裸
type
的支持,#4375,由 @hramezani 完成 - 支持 Python 3.11,包括 PyPI 中 3.11 的二进制文件,#4374,由 @samuelcolvin 完成
- 添加对
re.Pattern
的支持,#4366,由 @hramezani 完成 - 修复了当未定义
__post_init__
时,__post_init_post_parse__
被错误地传递关键字参数的问题,#4361,由 @hramezani 完成 - 修复了从
pydantic.typing
而不是typing
隐式导入ForwardRef
和Callable
,并公开了MappingIntStrAny
,#4358,由 @aminalaee 完成 - 从
dataclass
装饰器中删除Any
类型,以便可以将其与disallow_any_expr
mypy 选项一起使用,#4356,由 @DetachHead 完成 - 将 repo 移动到
pydantic/pydantic
,#4348,由 @yezz123 完成 - 修复了多次验证带有
Extra.forbid
的 dataclass 时出现的 “不允许额外字段” 错误,#4343,由 @detachhead 完成 - 向文档添加 Python 3.9 和 3.10 示例,#4339,由 @Bobronium 完成
- 当生成 OpenAPI schema 定义时,可区分联合模型现在使用
oneOf
而不是anyOf
,#4335,由 @MaxwellPayne 完成 - 允许类型检查器推断
Json
类型的内部类型。Json[list[str]]
现在将被推断为list[str]
,Json[Any]
应该代替普通的Json
使用。运行时行为没有改变,#4332,由 @Bobronium 完成 - 通过使用
alias is not None
检查而不是bool(alias)
来允许空字符串别名,#4253,由 @sergeytsaplin 完成 - 更新
Field.outer_type_
中的ForwardRef
,#4249,由 @JacobHayes 完成 __dataclass_transform__
的使用已被typing_extensions.dataclass_transform
替换,这是根据 PEP 681 将 pydantic 模型标记为 dataclass 的首选方法,#4241,由 @multimeric 完成- 验证嵌套
NamedTuple
字段时使用父模型的Config
,#4219,由 @synek 完成 - 更新
BaseModel.construct
以使用别名字段,#4192,由 @kylebamos 完成 - 捕获
smart_deepcopy
中某些引发的错误,并在发生错误时恢复为deepcopy
,#4184,由 @coneybeare 完成 - 向 constr 和 conbytes 添加
Config.anystr_upper
和to_upper
kwarg,#4165,由 @satheler 完成 - 修复了当
set
和frozenset
包含默认值时的 JSON schema,#4155,由 @aminalaee 完成 - 教导 mypy 插件
@validator
装饰的方法是 classmethod,#4102,由 @DMRobertson 完成 - 改进 mypy 插件检测必需字段的能力,#4086,由 @richardxia 完成
- 支持 schema 中类型为
Type[]
的字段,#4051,由 @aminalaee 完成 - 当
const=True
时,在 JSON Schema 中添加default
值,#4031,由 @aminalaee 完成 - 向签名生成逻辑添加保留字检查,#4011,由 @strue36 完成
- 修复了复杂嵌套字段的 Json 策略失败问题,#4005,由 @sergiosim 完成
- 添加 JSON 兼容的 float 约束
allow_inf_nan
,#3994,由 @tiangolo 完成 - 当
env_prefix
与env_nested_delimiter
具有共同字符时,移除未定义的行为,#3975,由 @arsenron 完成 - 支持带有
create_model
的泛型模型,#3945,由 @hot123s 完成 - 允许子模型覆盖额外的字段信息,#3934,由 @PrettyWood 完成
- 记录和测试
BaseModel
上的结构模式匹配 (PEP 636),#3920,由 @irgolic 完成 - 修复了 python timedelta 对象反序列化为负时间 delta 的 ISO 8601 格式错误的问题。减号被序列化在错误的位置 (“P-1DT23H59M59.888735S” 而不是正确的 “-P1DT23H59M59.888735S”),#3899,由 @07pepa 完成
- 修复了当传递模型实例时,带有别名的可区分联合字段的验证问题,#3846,由 @chornsby 完成
- 添加 CockroachDsn 类型以验证 CockroachDB 连接字符串。该类型支持以下 scheme:
cockroachdb
,cockroachdb+psycopg2
和cockroachdb+asyncpg
,#3839,由 @blubber 完成 - 修复 MyPy 插件以不覆盖模型中预先存在的
__init__
方法,#3824,由 @patrick91 完成 - 修复 mypy 版本检查,#3783,由 @KotlinIsland 完成
- 支持覆盖
BaseModel
实例的 dunder 属性,#3777,由 @PrettyWood 完成 - 添加了
ConstrainedDate
和condate
,#3740,由 @hottwaj 完成 - 支持 dataclasses 中的
kw_only
,#3670,由 @detachhead 完成 - 为
Color
类添加比较方法,#3646,由 @aminalaee 完成 - 放弃对 python3.6 的支持,相关清理,#3605,由 @samuelcolvin 完成
- 为 “非 Pascal Case” 驼峰式命名创建了新函数
to_lower_camel()
,#3463,由 @schlerp 完成 - 在 Mypy 插件中为
default
和default_factory
参数添加检查,#3430,由 @klaa97 完成 - 修复了
BaseModel
的inspect.signature
的 mangling 问题,#3413,由 @fix-inspect-signature 完成 - 添加了
SecretField
抽象类,以便当前和未来的所有 secret 字段 (如SecretStr
和SecretBytes
) 都将从中派生,#3409,由 @expobrain 完成 - 支持
PostgresDsn
中的多主机验证,#3337,由 @rglsk 完成 - 修复了非常小的数值 timedelta 值的解析问题,#3315,由 @samuelcolvin 完成
- 更新
SecretsSettingsSource
以遵循config.case_sensitive
,#3273,由 @JeanArhancet 完成 - 添加 MongoDB 网络数据源名称 (DSN) schema,#3229,由 @snosratiershad 完成
- 添加对多个 dotenv 文件的支持,#3222,由 @rekyungmin 完成
- 当为单个验证器错误地设置了多个字段时,引发显式的
ConfigError
,#3215,由 @SunsetOrange 完成 - 允许
TypedDicts
required 的Annotated
内部的Field
上使用省略号,#3133,由 @ezegomez 完成 - 捕获
int_validator
中的溢出错误,#3112,由 @ojii 完成 - 向
Representation
类添加__rich_repr__
方法,该方法启用使用 Rich 进行美观打印,#3099,由 @willmcgugan 完成 - 在
AnyUrl
和后代类型中添加百分比编码,#3061,由 @FaresAhmedb 完成 validate_arguments
装饰器现在支持alias
,#3019,由 @MAD-py 完成- 避免在
AnyUrl
和 IP 地址字段中使用__dict__
和__weakref__
属性,#2890,由 @nuno-andre 完成 - 添加在字段类型注解中使用
Final
的能力,#2766,作者:@uriyyo - 更新
typing_extensions>=4.1.0
的要求,以保证dataclass_transform
可用,#4424,作者:@commonism - 将 Explosion 和 AWS 添加到主要赞助商,#4413,作者:@samuelcolvin
- 更新
copy_on_model_validation
的文档以反映最近的更改,#4369,作者:@samuelcolvin - 如果
__slots__
传递给create_model
,则运行时警告,然后__slots__
将被忽略,#4432,作者:@samuelcolvin - 向
BaseSettings.Config
添加类型提示以避免 mypy 错误,并更正文档中 mypy 版本兼容性声明,#4450,作者:@samuelcolvin
v1.10.0b1 (2022-08-24)¶
预发布版本,详情请参阅 GitHub 发布页面。
v1.10.0a2 (2022-08-24)¶
预发布版本,详情请参阅 GitHub 发布页面。
v1.10.0a1 (2022-08-22)¶
预发布版本,详情请参阅 GitHub 发布页面。
v1.9.2 (2022-08-11)¶
恢复破坏性更改:v1.9.1 引入了一个破坏性更改,其中模型字段默认进行深拷贝,此版本恢复了默认行为以匹配 v1.9.0 及更早版本,同时允许通过 copy_on_model_validation = 'deep'
实现深拷贝行为。有关更多信息,请参阅 #4092。
- 允许模型字段的浅拷贝,
Config.copy_on_model_validation
现在是一个字符串,必须是'none'
、'deep'
或'shallow'
,分别对应于不拷贝、深拷贝和浅拷贝;默认为'shallow'
,#4093,作者:@timkpaine
v1.9.1 (2022-05-19)¶
感谢 pydantic 的赞助商:@tiangolo, @stellargraph, @JonasKs, @grillazz, @Mazyod, @kevinalh, @chdsbd, @povilasb, @povilasb, @jina-ai, @mainframeindustries, @robusta-dev, @SendCloud, @rszamszur, @jodal, @hardbyte, @corleyma, @daddycocoaman, @Rehket, @jokull, @reillysiemens, @westonsteimel, @primer-io, @koxudaxi, @browniebroke, @stradivari96, @adriangb, @kamalgill, @jqueguiner, @dev-zero, @datarootsio, @RedCarpetUp 对他们的慷慨支持表示感谢。
- 限制
generics._generic_types_cache
和generics._assigned_parameters
的大小,以避免内存使用量无限增加,#4083,作者:@samuelcolvin - 添加 Jupyverse 和 FPS 作为使用 pydantic 的 Jupyter 项目,#4082,作者:@davidbrochart
- 加速当类型不是模型时 pydantic 模型上的
__isinstancecheck__
,也可能避免内存“泄漏”,#4081,作者:@samuelcolvin - 修复
FieldInfo
的就地修改,该修改导致 PEP 593 类型别名出现问题,#4067,作者:@adriangb - 当使用
pydantic.dataclasses.dataclass
时,添加通过__dataclass_transform__
在 VS Code 中自动完成的支持,#4006,作者:@giuliano-oliveira - 从代码库和文档中删除基准测试,#3973,作者:@samuelcolvin
- CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 的文档,#3972,作者:@samuelcolvin
- 修复嵌套 Python dataclass 模式回归,#3819,作者:@himbeles
- 更新关于 Settings 源的延迟评估的文档,#3806,作者:@garyd203
- 防止 bytes 的子类被转换为 bytes,#3706,作者:@samuelcolvin
- 修复使用 PEP585 和 PEP604 类型提示时出现的“error checking inheritance of”错误,#3681,作者:@aleksul
- 允许模型中自引用的
ClassVar
,#3679,作者:@samuelcolvin - 破坏性更改,请参阅 #4106:修复自引用 dataclass 的问题,#3675,作者:@uriyyo
- 在渲染的 URL 中包含非标准端口号,#3652,作者:@dolfinus
Config.copy_on_model_validation
执行深拷贝而不是浅拷贝,#3641,作者:@PrettyWood- 修复:阐明可辨别联合类型不支持单例,#3636,作者:@tommilligan
- 为
setup.py
添加read_text(encoding='utf-8')
,#3625,作者:@hswong3i - 修复列表中可辨别联合类型的 JSON Schema 生成,#3608,作者:@samuelcolvin
v1.9.0 (2021-12-31)¶
感谢 pydantic 的赞助商:@sthagen, @timdrijvers, @toinbis, @koxudaxi, @ginomempin, @primer-io, @and-semakin, @westonsteimel, @reillysiemens, @es3n1n, @jokull, @JonasKs, @Rehket, @corleyma, @daddycocoaman, @hardbyte, @datarootsio, @jodal, @aminalaee, @rafsaf, @jqueguiner, @chdsbd, @kevinalh, @Mazyod, @grillazz, @JonasKs, @simw, @leynier, @xfenix 对他们的慷慨支持表示感谢。
亮点¶
- 添加 Python 3.10 支持,#2885,作者:@PrettyWood
- 可辨别联合类型,#619,作者:@PrettyWood
Config.smart_union
以获得更好的联合逻辑,#2092,作者:@PrettyWood- 适用于 Macos M1 CPU 的二进制文件,#3498,作者:@samuelcolvin
- 复杂类型可以通过嵌套环境变量设置,例如
foo___bar
,#3159,作者:@Air-Mark - 为 pydantic 文档添加暗黑模式,#2913,作者:@gbdlin
- 添加通过
__dataclass_transform__
在 VS Code 中自动完成的支持,#2721,作者:@tiangolo - 添加 “exclude” 作为字段参数,以便可以使用模型配置进行配置,#660,作者:@daviskirk
v1.9.0 (2021-12-31) 更改¶
- 将
update_forward_refs
应用于Config.json_encodes
,防止通过字符串定义的类型中出现名称冲突,#3583,作者:@samuelcolvin - 扩展 pydantic 的 mypy 插件以支持 mypy 版本
0.910
、0.920
、0.921
和0.930
,#3573 & #3594,作者:@PrettyWood, @christianbundy, @samuelcolvin
v1.9.0a2 (2021-12-24) 更改¶
- 支持带有可辨别联合类型的泛型模型,#3551,作者:@PrettyWood
- 默认情况下保持
json()
的旧行为,#3542,作者:@PrettyWood - 从
BaseModel
中删除仅用于类型的__root__
属性,#3540,作者:@layday - 构建 Python 3.10 wheels,#3539,作者:@mbachry
- 修复模型
__repr__
中extra
字段的显示,#3234,作者:@cocolman - 通过
Config.copy_on_model_validation
复制的模型始终具有所有字段,#3201,作者:@PrettyWood - 来自嵌套字典的嵌套 ORM,#3182,作者:@PrettyWood
- 修复指向可辨别联合类型部分的链接,作者:@PrettyWood
v1.9.0a1 (2021-12-18) 更改¶
- 在
Field()
中添加对Decimal
特定验证配置的支持,此外还使用condecimal()
,以允许编辑器和工具的更好支持,#3507,作者:@tiangolo - 向 PyPI 添加适用于带有 M1 CPU 的 MacOS 的
arm64
二进制文件,#3498,作者:@samuelcolvin - 修复当使用包含
Any
或object
的Union
类型时,None
被视为无效的问题,#3444,作者:@tharradine - 生成字段模式时,如果存在,则将可选的
field
参数(类型为pydantic.fields.ModelField
)传递给__modify_schema__()
,#3434,作者:@jasujm - 修复 pydantic 无法解析
typing.ClassVar
字符串类型注解的问题,#3401,作者:@uriyyo - 提及 Python >= 3.9.2 作为
typing_extensions.TypedDict
的替代方案,#3374,作者:@BvB93 - 在自定义错误示例中更改了验证器方法名称,以更准确地描述验证器正在执行的操作;从
name_must_contain_space
更改为value_must_equal_bar
,#3327,作者:@michaelrios28 - 添加
AmqpDsn
类,#3254,作者:@kludex - 始终在生成的 JSON 模式中使用
Enum
值作为默认值,#3190,作者:@joaommartins - 添加对 Mypy 0.920 的支持,#3175,作者:@christianbundy
validate_arguments
现在支持extra
自定义(以前总是Extra.forbid
),#3161,作者:@PrettyWood- 复杂类型可以通过嵌套环境变量设置,#3159,作者:@Air-Mark
- 修复 mypy 插件以基于
pydantic.utils.is_valid_field
收集字段,以便它忽略未类型化的私有变量,#3146,作者:@hi-ogawa - 修复
validate_arguments
与Config.validate_all
的问题,#3135,作者:@PrettyWood - 避免在使用 dict 子类作为字段类型时进行 dict 强制转换,#3122,作者:@PrettyWood
- 添加对
object
类型的支持,#3062,作者:@PrettyWood - 更新 pydantic dataclasses 以在父类上保留
_special
属性,#3043,作者:@zulrang - 为错误对象添加
TypedDict
类,#3038,作者:@matthewhughes934 - 修复对使用注解的子类作为默认值的支持,#3018,作者:@JacobHayes
- 使
create_model_from_typeddict
符合 mypy 标准,#3008,作者:@PrettyWood - 在使用
PrivateAttr
时使多重继承工作,#2989,作者:@hmvp - 如果环境变量具有带有复杂子字段的
Union
类型,则将其解析为 JSON,#2936,作者:@cbartz - 防止
StrictStr
允许Enum
值,其中枚举继承自str
,#2929,作者:@samuelcolvin - 使
SecretsSettingsSource
在从密钥文件获取值时,就像从环境变量获取值时一样,解析分配给复杂类型字段的值,#2917,作者:@davidmreed - 为 pydantic 文档添加暗黑模式,#2913,作者:@gbdlin
- 使
pydantic-mypy
插件与pyproject.toml
配置兼容,与mypy
更改保持一致。有关更多信息,请参阅 文档,#2908,作者:@jrwalk - 添加 Python 3.10 支持,#2885,作者:@PrettyWood
- 正确解析带有
Json[T]
的泛型模型,#2860,作者:@geekingfrog - 更新 contrib 文档,关于用于构建文档的 Python 版本,#2856,作者:@paxcodes
- 阐明关于 pydantic 对自定义验证和严格类型检查的支持的文档,尽管 pydantic 主要是一个解析库,#2855,作者:@paxcodes
- 修复
Deque
字段的模式生成,#2810,作者:@sergejkozin - 修复混合约束和
Literal
时的边缘情况,#2794,作者:@PrettyWood - 修复当
NamedTuple
和TypedDict
直接用作 Pydantic 模型中字段类型时,延迟注解解析的问题,#2760,作者:@jameysharp - 修复当
mypy
插件在BaseSettings
派生类的construct
方法调用时失败的错误,#2753,作者:@uriyyo - 为
pydantic.create_model
函数添加函数重载,#2748,作者:@uriyyo - 修复 mypy 插件自身字段声明的问题,#2743,作者:@uriyyo
- 行尾的冒号 “The fields which were supplied when user was initialised:” 表明其后的代码是相关的。将其更改为句点,#2733,作者:@krisaoe
- 将变量
schema
重命名为schema_
以避免遮蔽全局变量名,#2724,作者:@shahriyarr - 添加通过
__dataclass_transform__
在 VS Code 中自动完成的支持,#2721,作者:@tiangolo - 在
BaseConfig
中添加缺少的类型注解并处理max_length = 0
,#2719,作者:@PrettyWood - 更改
orm_mode
检查以允许使用 dicts 进行递归 ORM 模式解析,#2718,作者:@nuno-andre - 将 Michael Kennedy 和 Samuel Colvin 讨论 Pydantic 的 Talk Python To Me 播客的第 313 集添加到文档中,#2712,作者:@RatulMaharaj
- 修复当字段类型为
NamedTuple
且具有默认值时,JSON 模式生成的问题,#2707,作者:@PrettyWood Enum
字段现在正确支持模式生成中的额外 kwargs,#2697,作者:@sammchardy- 破坏性更改,请参阅 #3780:使引用 pydantic 模型的序列化成为可能,#2650,作者:@PrettyWood
- 向
ConstrainedList
添加uniqueItems
选项,#2618,作者:@nuno-andre - 尝试在模型创建时自动评估 forward refs,#2588,作者:@uriyyo
- 切换文档预览和覆盖率显示以使用 smokeshow,#2580,作者:@samuelcolvin
- 向 pydantic 模块添加
__version__
属性,#2572,作者:@paxcodes - 为
PostgresDsn
添加postgresql+asyncpg
、postgresql+pg8000
、postgresql+psycopg2
、postgresql+psycopg2cffi
、postgresql+py-postgresql
和postgresql+pygresql
方案,#2567,作者:@postgres-asyncpg - 启用 Hypothesis 插件以在指定
decimal_places
参数时生成约束十进制数,#2524,作者:@cwe5590 - 允许在 Python 3.9 中使用
collections.abc.Callable
作为类型,#2519,作者:@daviskirk - 文档更新,关于在使用 pip install 时如何自定义编译 pydantic,
setup.py
中的小更改允许在编译时使用自定义 CFLAGS,#2517,作者:@peterroelants - 删除
default_factory
的副作用,即使设置了Config.validate_all
,也只运行一次,#2515,作者:@PrettyWood - 为
AnyUrl
主机添加 ip 正则表达式的先行断言。这允许 DNS 标签看起来像 IP 的 URL 进行验证,因为它们是完全有效的主机名,#2512,作者:@sbv-csis - 在为固定长度元组生成的 JSON 模式中设置
minItems
和maxItems
,#2497,作者:@PrettyWood - 向
conbytes
添加strict
参数,#2489,作者:@koxudaxi - 在泛型模型中支持用户定义的泛型字段类型,#2465,作者:@daviskirk
- 在文档中添加一个关于子类化
GetterDict
的示例和一个简短的解释,#2463,作者:@nuno-andre - 添加
KafkaDsn
类型,HttpUrl
现在 http 的默认端口为 80,https 的默认端口为 443,#2447,作者:@MihanixA - 添加
PastDate
和FutureDate
类型,#2425,作者:@Kludex - 支持为带有子类型的
Generic
字段生成模式,#2375,作者:@maximberg - 修复(encoder):将
NameEmail
序列化为 str,#2341,作者:@alecgerona - 添加
Config.smart_union
以尽可能防止Union
中的强制转换,有关更多信息,请参阅 文档,#2092,作者:@PrettyWood - 添加使用
typing.Counter
作为模型字段类型的能力,#2060,作者:@uriyyo - 在构造新的参数化类时,将参数化子类添加到
__bases__
,以便A <: B => A[int] <: B[int]
,#2007,作者:@diabolo-dan - 创建
FileUrl
类型,该类型允许符合 RFC 8089 的 URL。添加host_required
参数,默认值为True
(AnyUrl
和子类),在RedisDsn
、FileUrl
中为False
,#1983,作者:@vgerak - 添加
confrozenset()
,类似于conset()
和conlist()
,#1897,作者:@PrettyWood - 如果覆盖了父类
root_validator
,则停止调用,#1895,作者:@PrettyWood - 向
Field
添加repr
(默认为True
)参数,以将其从BaseModel
的默认表示中隐藏,#1831,作者:@fnep - 接受空的查询/片段 URL 部分,#1807,作者:@xavier
v1.8.2 (2021-05-11)¶
警告
v1.8.2 中修复了一个安全漏洞,级别为“中等”。请尽快升级。请参阅安全公告 CVE-2021-29510
- 安全修复: 修复
date
和datetime
解析,以便传递'infinity'
或float('inf')
(或它们的负值)不会导致无限循环,请参阅安全公告 CVE-2021-29510 - 通过生成有效名称来修复使用 Enum 的模式生成,#2575,作者:@PrettyWood
- 修复使用枚举成员的
Literal
进行 JSON 模式生成的问题,#2536,作者:@PrettyWood - 修复在类创建期间作为关键字参数传递的配置声明中的错误,#2532,作者:@uriyyo
- 允许在类 kwargs 中传递
json_encoders
,#2521,作者:@layday - 支持具有自定义
__eq__
的任意类型,#2483,作者:@PrettyWood - 在 Python 3.9 中支持
validate_arguments
和泛型模型中的Annotated
,#2483,作者:@PrettyWood
v1.8.1 (2021-03-03)¶
v1.8
中回归和新功能的错误修复
- 允许
Config.field
的元素更新Field
的元素,#2461,作者:@samuelcolvin - 修复带有
BaseModel
字段和自定义根类型的验证,#2449,作者:@PrettyWood - 向
fastapi
公开Pattern
编码器,#2444,作者:@PrettyWood - 启用 Hypothesis 插件以在指定
multiple_of
参数时生成约束浮点数,#2442,作者:@tobi-lipede-oodle - 避免在使用某些类型(如
Enum
或Literal
)与泛型模型时出现RecursionError
,#2436,作者:@PrettyWood - 不要覆盖模型子类中声明的
__hash__
,#2422,作者:@PrettyWood - 修复关于
Path
和UUID
相关自定义类型的mypy
报错,#2418,作者:@PrettyWood - 正确支持复合类型的可变长度元组,#2416,作者:@PrettyWood
v1.8 (2021-02-26)¶
感谢 pydantic 的赞助商:@jorgecarleitao, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @koxudaxi, @timdrijvers, @mkeen, @meadsteve, @ginomempin, @primer-io, @and-semakin, @tomthorogood, @AjitZK, @westonsteimel, @Mazyod, @christippett, @CarlosDomingues, @Kludex, @r-m-n 对他们的慷慨支持表示感谢。
亮点¶
- 用于测试的Hypothesis 插件,#2097,作者:@Zac-HD
- 对
NamedTuple
和TypedDict
的支持,#2216,作者:@PrettyWood - 支持模型字段上的
Annotated
提示,#2147,作者:@JacobHayes Config
上的frozen
参数,允许模型被哈希,#1880,作者:@rhuille
更改¶
- 破坏性更改,从 v1 中删除旧的弃用别名,#2415,作者:@samuelcolvin
- 删除文档中关于迁移到 v1 的注释
- 删除已被
Field
替换的Schema
- 删除已被
Config.case_sensitive
(默认为False
)替换的Config.case_insensitive
- 删除已被
Config.allow_population_by_field_name
替换的Config.allow_population_by_alias
- 删除已被
model.__fields__
替换的model.fields
- 删除已被
str(model)
替换的model.to_string()
- 删除已被
model.__dict__
替换的model.__values__
- 破坏性更改: 始终仅使用
each_item
验证第一级子项。实际上,在某些复合类型中,验证的项是最后一级子项,#1933,作者:@PrettyWood - 更新文档扩展以修复本地语法高亮,#2400,作者:@daviskirk
- 修复:允许
utils.lenient_issubclass
处理 Python >= 3.9 中的typing.GenericAlias
对象,如list[str]
,#2399,作者:@daviskirk - 通过允许使用 pydantic
Field
或dataclasses.field
的'metadata'
kwarg 来改进 pydanticdataclass
的字段声明,#2384,作者:@PrettyWood - 使
typing-extensions
成为必需的依赖项,#2368,作者:@samuelcolvin - 使
resolve_annotations
更加宽松,允许缺少模块,#2363,作者:@samuelcolvin - 允许通过类 kwargs 配置模型,#2356,作者:@Bobronium
- 防止
Mapping
子类始终被强制转换为dict
,#2325,作者:@ofek - 修复:允许类型为
Optional[conset / conlist]
的None
,#2320,作者:@PrettyWood - 支持空元组类型,#2318,作者:@PrettyWood
- 修复:
python_requires
元数据要求 >=3.6.1,#2306,作者:@hukkinj1 - 正确编码带有或不带小数位的
Decimal
,#2293,作者:@hultner - 修复:更新
BaseModel.copy(update=…)
中的__fields_set__
,#2290,作者:@PrettyWood - 修复:保持
BaseModel.construct()
中字段的顺序,#2281,作者:@PrettyWood - 支持为 Generic 字段生成模式,#2262,作者:@maximberg
- 修复
validate_decorator
,以便当关键字与*args
或**kwargs
名称相同时,**kwargs
不会排除值,#2251,由 @cybojenix 贡献 - 在
validate_arguments
中,防止使用关键字参数覆盖位置参数,与原生函数的行为一致,#2249,由 @cybojenix 贡献 - 为
con*
类型函数添加文档,#2242,由 @tayoogunbiyi 贡献 - 在使用带有嵌套模型的
parse_obj()
时,支持自定义根类型(即__root__
),#2238,由 @PrettyWood 贡献 - 在
from_orm()
中支持自定义根类型(即__root__
),#2237,由 @PrettyWood 贡献 - 确保在创建模型时,保持 cythonized 函数不变,基于 #1944,由 @kollmats 贡献,#2228,由 @samuelcolvin 贡献
- 解决转换为 pydantic 类的 stdlib dataclass 的 forward refs,#2220,由 @PrettyWood 贡献
- 添加对
NamedTuple
和TypedDict
类型的支持。现在当在BaseModel
或 pydanticdataclass
中使用这两种类型时,它们会被处理和验证。同时添加了两个实用工具create_model_from_namedtuple
和create_model_from_typeddict
,#2216,由 @PrettyWood 贡献 - 当类型为
Union[Type[...], ...]
时,不要忽略 annotated 字段,#2213,由 @PrettyWood 贡献 - 当
root_validator
没有返回dict
(例如None
)时,引发用户友好的TypeError
,#2209,由 @masalim2 贡献 - 为
strict_url
字段类型上的allowed_schemes
参数添加FrozenSet[str]
类型注解,#2198,由 @Midnighter 贡献 - 为
Field
添加allow_mutation
约束,#2195,由 @sblack-usu 贡献 - 允许将带有
default_factory
的Field
用作使用validate_arguments
装饰的函数的参数,#2176,由 @thomascobb 贡献 - 允许不存在的 secrets 目录,仅发出警告,#2175,由 @davidolrik 贡献
- 修复 URL 正则表达式以解析不带查询字符串的片段,#2168,由 @andrewmwhite 贡献
- 修复:确保始终返回
Literal
字段类型中的一个值,#2166,由 @PrettyWood 贡献 - 支持模型字段上的
typing.Annotated
提示。现在可以在类型提示中使用Annotated[..., Field(...)
设置Field
;所有其他注解都会被忽略,但仍然可以通过get_type_hints(..., include_extras=True)
可见,#2147,由 @JacobHayes 贡献 - 添加了
StrictBytes
类型,以及ConstrainedBytes
的strict=False
选项,#2136,由 @rlizzo 贡献 - 为
constr
和conbytes
添加了Config.anystr_lower
和to_lower
kwarg,#2134,由 @tayoogunbiyi 贡献 - 支持纯
typing.Tuple
类型,#2132,由 @PrettyWood 贡献 - 为使用
validate_arguments
装饰的函数添加一个绑定方法validate
,用于验证参数而无需实际调用该函数,#2127,由 @PrettyWood 贡献 - 添加自定义设置源的功能(添加/禁用/更改优先级顺序),#2107,由 @kozlek 贡献
- 修复关于大多数自定义 pydantic 类型的 mypy 投诉,#2098,由 @PrettyWood 贡献
- 为 Pydantic 的自定义类型添加 Hypothesis 插件,以便更轻松地进行 基于属性的测试 - 使用详情请点击此处,#2097,由 @Zac-HD 贡献
- 为
None
、NoneType
或Literal[None]
添加验证器,#2095,由 @PrettyWood 贡献 - 正确处理带有默认值的
Callable
类型的字段,#2094,由 @PrettyWood 贡献 - 更新
create_model
返回类型注解,以返回继承自__base__
参数的类型,#2071,由 @uriyyo 贡献 - 添加合并的
json_encoders
继承,#2064,由 @art049 贡献 - 允许在子模型中覆盖
ClassVar
,而无需重新注解它们,#2061,由 @layday 贡献 - 为
Pattern
类型添加默认编码器,#2045,由 @PrettyWood 贡献 - 添加
NonNegativeInt
、NonPositiveInt
、NonNegativeFloat
、NonPositiveFloat
,#1975,由 @mdavis-xyz 贡献 - 在颜色的字符串格式中使用 % 表示百分比,#1960,由 @EdwardBetts 贡献
- 修复了当从在不同类中声明的具有相同名称的多个
BaseModel
构建 schema 时导致KeyError
引发的问题,#1912,由 @JSextonn 贡献 - 为
RedisDsn
添加rediss
(Redis over SSL) 协议。允许不带user
部分的 URL(例如,rediss://:pass@localhost
),#1911,由 @TrDex 贡献 - 为
Config
添加一个新的frozen
布尔参数(默认值:False
)。设置frozen=True
会执行allow_mutation=False
所做的一切,并且还会为模型生成__hash__()
方法。如果所有属性都是可哈希的,这将使模型的实例可能可哈希,#1880,由 @rhuille 贡献 - 修复了具有相同名称的多个 Enum 的 schema 生成问题,#1857,由 @PrettyWood 贡献
- 在
PaymentCardNumber
类型中添加了对 13/19 位 VISA 信用卡的支持,#1416,由 @AlexanderSov 贡献 - 修复:防止在使用递归
GenericModel
时出现RecursionError
,#1370,由 @xppt 贡献 - 在 JSON schema 中对
typing.Literal
使用enum
,#1350,由 @PrettyWood 贡献 - 修复:一些递归模型不需要
update_forward_refs
,并且默默地行为不正确,#1201,由 @PrettyWood 贡献 - 修复了类型变量嵌套在另一个类型
a: List[T]
中的字段的泛型模型被认为是具体模型的问题。这允许这些模型按预期被子类化和组合,#947,由 @daviskirk 贡献 - 添加
Config.copy_on_model_validation
标志。当设置为False
时,pydantic 将在验证时保持用作字段的模型不变,而不是重建(复制)它们,#265,由 @PrettyWood 贡献
v1.7.4 (2021-05-11)¶
- 安全修复: 修复
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,由 @PrettyWood 贡献
- 修复:支持带有泛型模型的
underscore_attrs_are_private
,#2138,由 @PrettyWood 贡献 - 修复:当
validate_assignment
开启时,在root_validator
中更新所有修改的字段值,#2116,由 @PrettyWood 贡献 - 允许 pickle 从内置
dataclasses.dataclass
动态创建的pydantic.dataclasses.dataclass
,#2111,由 @aimestereo 贡献 - 修复了 Enum 字段不会将关键字参数传播到 schema 的回归问题,#2109,由 @bm424 贡献
- 当设置
Config.underscore_attrs_are_private
时,忽略__doc__
作为私有属性,#2090,由 @PrettyWood 贡献
v1.7.2 (2020-11-01)¶
- 修复了慢速
GenericModel
具体模型创建,允许在模块中重用GenericModel
具体名称,#2078,由 @Bobronium 贡献 - 当设置
validate_assignment
时,保持字段的顺序,#2073,由 @PrettyWood 贡献 - 当转换为 pydantic
dataclass
时,转发 stdlibdataclass
的所有参数,#2065,由 @PrettyWood 贡献
v1.7.1 (2020-10-28)¶
感谢 pydantic 的赞助商:@timdrijvers、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@jorgecarleitao、@koxudaxi、@primer-api、@mkeen 的慷慨支持。
- 修复了将配置作为参数传递时
validate_arguments
的注解问题,#2055,由 @layday 贡献 - 修复了使用
PrivateAttr
时的 mypy 赋值错误,#2048,由 @aphedges 贡献 - 修复了
underscore_attrs_are_private
在覆盖__init__
时导致TypeError
的问题,#2047,由 @samuelcolvin 贡献 - 修复了 v1.7 中引入的回归,该回归涉及当
validate_assignment=True
时字段验证器中的异常处理,#2044,由 @johnsabath 贡献 - 修复:pydantic
dataclass
可以继承自 stdlibdataclass
,并且支持Config.arbitrary_types_allowed
,#2042,由 @PrettyWood 贡献
v1.7 (2020-10-26)¶
感谢 pydantic 的赞助商:@timdrijvers、@BCarley、@chdsbd、@tiangolo、@matin、@linusg、@kevinalh、@jorgecarleitao、@koxudaxi、@primer-api 的慷慨支持。
亮点¶
- Python 3.9 支持,感谢 @PrettyWood
- 私有模型属性,感谢 @Bobronium
BaseSettings
中的“secrets files”支持,感谢 @mdgilene- 将 stdlib dataclass 转换为 pydantic dataclass 并在模型中使用 stdlib dataclass,感谢 @PrettyWood
变更¶
- 重大变更: 移除
__field_defaults__
,添加default_factory
支持和BaseModel.construct
。在__fields__
属性中使用字段上的.get_default()
方法代替,#1732,由 @PrettyWood 贡献 - 重新安排 CI 以将 linting 作为单独的作业运行,为不同的任务拆分安装配方,#2020,由 @samuelcolvin 贡献
- 允许泛型模型的子类使超类的某些或所有类型参数具体化,同时也在子类中定义新的类型参数,#2005,由 @choogeboom 贡献
- 当模型配置中的
validate_assignment = True
时,在BaseModel.__setattr__
中使用正确的values
参数类型调用验证器,#1999,由 @me-ransh 贡献 - 强制
fields.Undefined
成为单例对象,修复继承的泛型模型 schema,#1981,由 @daviskirk 贡献 - 在源发行版中包含测试,#1976,由 @sbraz 贡献
- 添加将
min_length/max_length
约束与 secret 类型一起使用的能力,#1974,由 @uriyyo 贡献 - 当
validate_assignment
开启时,也检查root_validators
,#1971,由 @PrettyWood 贡献 - 修复了当存在自定义验证器时,const 验证器不运行的问题,#1957,由 @hmvp 贡献
- 向字段类型添加
deque
,#1935,由 @wozniakty 贡献 - 添加对 Python 3.9 的基本支持,#1832,由 @PrettyWood 贡献
- 修复了 exporting_models.md#modelcopy 的锚点中的拼写错误和不正确的描述,#1821,由 @KimMachineGun 贡献
- 为
BaseSettings
添加了读取“secret files”的功能,#1820,由 @mdgilene 贡献 - 添加
parse_raw_as
实用函数,#1812,由 @PrettyWood 贡献 - 支持
dotenv
文件的 home directory 相对路径(例如~/.env
),#1803,由 @PrettyWood 贡献 - 澄清了
parse_file
的文档,以表明参数应该是文件路径,而不是类文件对象,#1794,由 @mdavis-xyz 贡献 - 修复了当
BaseModel
中嵌套的类命名为Model
时,mypy 插件的误报,#1770,由 @selimb 贡献 - 在 schema 生成中添加对 Pattern 类型的基本支持,#1767,由 @PrettyWood 贡献
- 支持 enums 的 schema 中的自定义标题、描述和默认值,#1748,由 @PrettyWood 贡献
- 当
use_enum_values
为 True 时,正确表示Literal
Enums,#1747,由 @noelevans 贡献 - 允许将时区信息添加到要格式化为 time 对象的字符串中。允许的格式是
Z
(表示 UTC)或绝对正或负时移的偏移量。或者可以省略时区数据,#1744,由 @noelevans 贡献 - 为
ForwardRef
添加带有 Python 3.6 签名的 stub__init__
,#1738,由 @sirtelemak 贡献 - 修复了嵌套模型中 forward refs 和可选字段的行为,#1736,由 @PrettyWood 贡献
- 将
Enum
和IntEnum
添加为字段的有效类型,#1735,由 @PrettyWood 贡献 - 将
create_model
的__module__
参数的默认值从None
更改为'pydantic.main'
。设置创建的具体模型对其模块的引用,以允许 pickling(不适用于在函数中创建的模型),#1686,由 @Bobronium 贡献 - 添加私有属性支持,#1679,由 @Bobronium 贡献
- 为
@validate_arguments
添加config
,#1663,由 @samuelcolvin 贡献 - 允许后代 Settings 模型覆盖父 Settings 模型中定义的字段的环境变量名称,在其
Config
中使用env
。以前仅适用env_prefix
配置选项,#1561,由 @ojomio 贡献 - 在创建 schema
$ref
时支持ref_template
,#1479,由 @kilo59 贡献 - 为
PyObject
添加__call__
stub,以便 mypy 知道它是可调用的,#1352,由 @brianmaissy 贡献 pydantic.dataclasses.dataclass
装饰器现在支持内置的dataclasses.dataclass
。因此,可以轻松转换现有的dataclass
以添加 Pydantic 验证。此外,还支持嵌套的 dataclass,#744,由 @PrettyWood 贡献
v1.6.2 (2021-05-11)¶
- 安全修复: 修复
date
和datetime
解析,以便传递'infinity'
或float('inf')
(或它们的负值)不会导致无限循环。请参阅安全公告 CVE-2021-29510
v1.6.1 (2020-07-15)¶
- 修复了带有
default_factory
的嵌套模型的验证和解析,#1710,由 @PrettyWood 贡献
v1.6 (2020-07-11)¶
感谢 pydantic 的赞助商:@matin、@tiangolo、@chdsbd、@jorgecarleitao 和 1 位匿名赞助商的慷慨支持。
- 修改
conlist
和conset
的验证器,使其不具有always=True
,#1682,由 @samuelcolvin 贡献 - 为
AnyUrl
添加端口检查(不能超过 65536),端口为 16 位无符号位:0 <= port <= 2**16-1
,来源:rfc793 header format,#1654,由 @flapili 贡献 - 记录默认
regex
锚定语义,#1648,由 @yurikhan 贡献 - 在 class_validators.py 中使用
chain.from_iterable
。这是一种更快、更符合习惯用法的方式来使用itertools.chain
。它们不是计算可迭代对象中的所有项目并将它们存储在内存中,而是逐个计算,并且永远不会存储为巨大的列表。这可以节省运行时和内存空间,#1642,由 @cool-RR 贡献 - 添加
conset()
,类似于conlist()
,#1623,由 @patrickkwang 贡献 - 使 Pydantic 错误可 (un)pickle,#1616,由 @PrettyWood 贡献
- 允许
dotenv
文件的自定义编码,#1615,由 @PrettyWood 贡献 - 确保始终定义
SchemaExtraCallable
以在 BaseConfig 上获取类型提示,#1614,由 @PrettyWood 贡献 - 更新 datetime 解析器以支持负时间戳,#1600,由 @mlbiche 贡献
- 更新 mypy,移除
AnyType
别名以代替Type[Any]
,#1598,由 @samuelcolvin 贡献 - 调整 root 验证器的处理方式,以便从所有失败的 root 验证器聚合错误,而不是仅报告第一个失败的 root 验证器,#1586,由 @beezee 贡献
- 使 Enums 上的
__modify_schema__
应用于 enum schema,而不是使用 enum 的字段,#1581,由 @therefromhere 贡献 - 修复了在序列字段的高级 include/exclude 中与索引键结合使用时
__all__
键的行为,#1579,由 @xspirus 贡献 - 当引用父类中定义的
List
字段且each_item=True
时,子类验证器不运行。在文档中添加了一个示例来说明这一点,#1566,由 @samueldeklund 贡献 - 更改
schema.field_class_to_schema
以支持 schema 中的frozenset
,#1557,由 @wangpeibao 贡献 - 仅为字段 schema 调用
__modify_schema__
,#1552,由 @PrettyWood 贡献 - 在
fields.py
中移动field.validate_always
的赋值,以便验证器的always
参数在继承时起作用,#1545,由 @dcHHH 贡献 - 添加了通过 16 字节字符串(例如
b'\x12\x34\x56\x78' * 4
)实例化 UUID 的支持。这样做是为了支持 sqlalchemy 中的BINARY(16)
列,#1541,由 @shawnwall 贡献 - 添加了一个测试断言,即
default_factory
可以返回单例,#1523,由 @therefromhere 贡献 - 添加
NameEmail.__eq__
,以便将重复的NameEmail
实例评估为相等,#1514,由 @stephen-bunn 贡献 - 在 pydantic 文档站点中添加 datamodel-code-generator 链接,#1500,由 @koxudaxi 贡献
- 在文档中添加了“Pydantic 讨论”部分,并链接到 Alexander Hultnér 的“Pydantic 简介”视频,#1499,由 @hultner 贡献
- 通过尽可能只调用一次
default_factory
并且不在 schema 中设置默认值来避免default_factory
的一些副作用,#1491,由 @PrettyWood 贡献 - 添加了关于将 dataclass 转储为 JSON 的文档,#1487,由 @mikegrima 贡献
- 使
BaseModel.__signature__
仅为类级别,因此从模型实例获取__signature__
将引发AttributeError
,#1466,由 @Bobronium 贡献 - 在 secret 类型的 schema 中包含
'format': 'password'
,#1424,由 @atheuz 贡献 - 修改
ConstrainedFloat
上的 schema 约束,以便如果exclusiveMinimum
和 minimum 等于-math.inf
,则它们不包含在 schema 中;如果exclusiveMaximum
和maximum
等于math.inf
,则它们不包含在 schema 中,#1417,由 @vdwees 贡献 - 在
.dict()
(以及扩展到.json()
)中 squash 内部__root__
dicts,#1414,由 @patrickkwang 贡献 - 将
const
验证器移动到 post-validators,以便它验证解析后的值,#1410,由 @selimb 贡献 - 修复模型验证以处理嵌套的 literals,例如
Literal['foo', Literal['bar']]
,#1364,由 @DBCerigo 贡献 - 从
RedisDsn
中移除额外的user_required = True
,用户和密码都不是必需的,#1275,由 @samuelcolvin 贡献 - 从具有
Union
和自定义Field
的字段的 schema 中移除额外的allOf
,#1209,由 @mostaphaRoudsari 贡献 - 更新 OpenAPI schema 生成以输出所有 enums 作为单独的模型。模型现在使用
$ref
属性指向 enum 定义,而不是在模型 schema 中内联 enum 值,#1173,由 @calvinwyoung 贡献
v1.5.1 (2020-04-23)¶
extra: allow
的签名生成永远不会使用字段名称,#1418,由 @prettywood 贡献- 避免改变
Field
默认值,#1412,由 @prettywood 贡献
v1.5 (2020-04-18)¶
- 使
.dict()
、._iter()
、... 的 includes/excludes 参数不可变,#1404,由 @AlexECX 贡献 - 始终在
model._iter()
中对 includes/excludes 使用字段的真实名称,无论是否by_alias
,#1397,由 @AlexECX 贡献 - 更新 constr 正则表达式示例以包含起始行和结束行,#1396,由 @lmcnearney 贡献
- 确认浅层
model.copy()
确实对属性进行浅层复制,#1383,由 @samuelcolvin 贡献 - 将
main.create_model()
的model_name
参数重命名为__model_name
,以允许使用model_name
作为字段名称,#1367,由 @kittipatv 贡献 - 在 mypy 插件中,将引发异常替换为非 Var 属性的静默传递,#1345,由 @b0g3r 贡献
- 移除 Python 3.8 的
typing_extensions
依赖项,#1342,由 @prettywood 贡献 - 使
SecretStr
和SecretBytes
初始化具有幂等性,#1330,由 @atheuz 贡献 - 记录使用 json 方法使 secret 类型可转储,#1328,由 @atheuz 贡献
- 将所有测试和构建迁移到 github actions,添加 windows 和 macos 二进制文件,感谢 @StephenBrown2 的大力帮助,#1326,由 @samuelcolvin 贡献
- 修复
PaymentCardNumber
中的卡号长度检查,PaymentCardBrand
现在继承自str
,#1317,由 @samuelcolvin 贡献 - 使
BaseModel
继承自Representation
,以使 mypy 在覆盖__str__
时感到满意,#1310,由 @FuegoFro 贡献 - 允许将
None
作为输入传递给所有可选列表字段,#1307,由 @prettywood 贡献 - 在
default_factory
示例中添加datetime
字段,#1301,由 @StephenBrown2 贡献 - 允许使用超类编码器对已知类型的子类进行编码,#1291,由 @StephenBrown2 贡献
- 从子模型/dicts 的列表/元组的所有元素中排除导出的字段(使用
'__all__'
),#1286,由 @masalim2 贡献 - 添加 pydantic.color.Color 对象作为 Color 字段的可用输入,#1258,由 @leosussan 贡献
- 在示例中,将可空字段类型设置为
Optional
,以便这些是有效的 mypy 注解,#1248,由 @kokes 贡献 - 使
pattern_validator()
接受预编译的Pattern
对象。修复str_validator()
返回类型为str
,#1237,由 @adamgreg 贡献 - 记录如何管理 Generics 和继承,#1229,由 @esadruhn 贡献
- BaseModel 的
update_forward_refs()
方法现在复制类模块的__dict__
,而不是修改它,#1228,由 @paul-ilyin 贡献 - 支持带有
@validate_arguments
的实例方法和类方法,#1222,由 @samuelcolvin 贡献 - 为
Field
添加default_factory
参数,以通过传递零参数可调用对象来创建动态默认值,#1210,由 @prettywood 贡献 - 添加对
List
、Optional
等NewType
的支持,#1207,由 @Kazy 贡献 - 修复
root_validator
的 mypy 签名,#1192,由 @samuelcolvin 贡献 - 修复了嵌套的“自定义根类型”模型的解析,#1190,由 @Shados 贡献
- 添加
validate_arguments
函数装饰器,该装饰器检查函数的参数是否与类型注解匹配,#1179,由 @samuelcolvin 贡献 - 为模型添加
__signature__
,#1034,由 @Bobronium 贡献 - 重构
._iter()
方法,为dict(model)
提升 10 倍速度,#1017,由 @Bobronium 贡献
v1.4 (2020-01-24)¶
- 重大变更: 别名优先级逻辑已更改,因此字段上的别名始终优先于
alias_generator
的别名,以避免错误/意外行为,详情请参阅 此处,#1178,由 @samuelcolvin 贡献 - 添加对 TLD 中的 unicode 和 punycode 的支持,#1182,由 @jamescurtin 贡献
- 修复赋值期间验证器中的
cls
参数,#1172,由 @samuelcolvin 贡献 - 完成
PaymentCardNumber
的 Luhn 算法,#1166,由 @cuencandres 贡献 - 添加对实现
__get_validators__
的 generics 的支持,就像自定义数据类型一样,#1159,由 @tiangolo 贡献 - 为
Iterable
添加对无限生成器的支持,#1152,由 @tiangolo 贡献 - 修复
url_regex
以接受在第一个字符后带有+
、-
和.
的 schemas,#1142,由 @samuelcolvin 贡献 - 将
version_info()
移动到version.py
,建议在 issues 中使用它,#1138,由 @samuelcolvin 贡献 - 通过延迟一些模块加载和正则表达式编译,将 pydantic 导入时间缩短约 50%,#1127,由 @samuelcolvin 贡献
- 修复
EmailStr
和NameEmail
以接受 cython 中自身的实例,#1126,由 @koxudaxi 贡献 - 将模型类传递给
Config.schema_extra
可调用对象,#1125,由 @therefromhere 贡献 - 修复 URL 中用户名和密码的正则表达式,#1115,由 @samuelcolvin 贡献
- 添加对嵌套泛型模型的支持,#1104,由 @dmontagu 贡献
- 添加
__all__
到__init__.py
以防止 mypy 出现 “隐式重新导出” 错误,#1072,由 @samuelcolvin 完成 - 为
BaseSettings
添加使用 “dotenv” 文件的支持,#1011,由 @acnebs 完成
v1.3 (2019-12-21)¶
- 更改
schema
和schema_model
以使用 dataclasses 的__pydantic_model__
功能来处理 dataclasses,#792,由 @aviramha 完成 - 添加了
root_validator
的选项,如果值验证失败,可以使用关键字skip_on_failure=True
跳过,#1049,由 @aviramha 完成 - 允许
Config.schema_extra
为可调用对象,以便可以对生成的 schema 进行后处理,#1054,由 @selimb 完成 - 将 mypy 更新到 0.750 版本,#1057,由 @dmontagu 完成
- 欺骗 Cython 允许 str 子类化,#1061,由 @skewty 完成
- 防止将类型属性添加到 schema,除非属性
__schema_attributes__
为True
,#1064,由 @samuelcolvin 完成 - 更改
BaseModel.parse_file
以使用Config.json_loads
,#1067,由 @kierandarcy 完成 - 修复可选的
Json
字段,#1073,由 @volker48 完成 - 将使用 cython 编译时的默认线程数更改为一个,允许通过
CYTHON_NTHREADS
环境变量覆盖,#1074,由 @samuelcolvin 完成 - 在 Pydantic 的 CI 测试期间运行 FastAPI 测试,#1075,由 @tiangolo 完成
- 我的 mypy 严格性约束,以及相关的类型注解调整,#1077,由 @samuelcolvin 完成
- 为 SecretStr 和 SecretBytes 添加
__eq__
以允许 “值相等”,#1079,由 @sbv-trueenergy 完成 - 修复嵌套 None 情况下的 schema 生成,#1088,由 @lutostag 完成
- 一致地检查类似序列的对象,#1090,由 @samuelcolvin 完成
- 修复与
env_prefix
一起使用时BaseSettings
上的Config
继承,#1091,由 @samuelcolvin 完成 - 修复当
__modify_schema__
与field_class_to_schema*
冲突时的问题,#1102,由 @samuelcolvin 完成 - 文档:修复填充
BaseSettings
子类属性时,对大小写敏感的环境变量名称的解释,#1105,由 @tribals 完成 - 在文档中重命名 django-rest-framework 基准测试,#1119,由 @frankie567 完成
v1.2 (2019-11-28)¶
- 可能破坏性更改: 添加对必需的
Optional
的支持,使用name: Optional[AnyType] = Field(...)
,并重构ModelField
创建以保留required
参数值,#1031,由 @tiangolo 完成;详情请参阅 此处 - 为
cattrs
添加基准测试,#513,由 @sebastianmika 完成 - 为
dict()
及其友元添加exclude_none
选项,#587,由 @niknetniko 完成 - 为
valideer
添加基准测试,#670,由 @gsakkis 完成 - 添加
parse_obj_as
和parse_file_as
函数,用于将数据临时解析为任意 pydantic 兼容类型,#934,由 @dmontagu 完成 - 为验证器添加
allow_reuse
参数,从而允许验证器重用,#940,由 @dmontagu 完成 - 为自定义根模型添加对映射类型的支持,#958,由 @dmontagu 完成
- Mypy 插件对 dataclasses 的支持,#966,由 @koxudaxi 完成
- 为 dataclasses 添加默认工厂支持,#968,由 @ahirner 完成
- 添加
ByteSize
类型,用于将字节字符串 (1GB
) 转换为纯字节,#977,由 @dgasmith 完成 - 修复关于
@root_validator(pre=True)
的 mypy 报错,#984,由 @samuelcolvin 完成 - 为 Python 3.8 向 pypi 添加 manylinux 二进制文件,同时支持 manylinux2010,#994,由 @samuelcolvin 完成
- 为 ByteSize 添加转换为另一个单位的功能,#995,由 @dgasmith 完成
- 修复模型的
__str__
和__repr__
继承,#1022,由 @samuelcolvin 完成 - 向文档添加 testimonials 部分,#1025,由 @sullivancolin 完成
- 为 Python 3.8 添加对
typing.Literal
的支持,#1026,由 @dmontagu 完成
v1.1.1 (2019-11-20)¶
- 修复子模型上使用复杂字段可能导致字段配置不正确的 bug,#1015,由 @samuelcolvin 完成
v1.1 (2019-11-07)¶
- 为类型检查
BaseModel.__init__
等添加 mypy 插件,#722,由 @dmontagu 完成 - 更改
GenericModel.__class_getitem__
的返回类型类型提示,以防止 PyCharm 警告,#936,由 @dmontagu 完成 - 修复
Any
的用法以允许None
,同时支持TypeVar
,从而允许使用未参数化的集合类型,例如Dict
和List
,#962,由 @samuelcolvin 完成 - 在子字段上设置
FieldInfo
以修复复杂嵌套类型的 schema 生成,#965,由 @samuelcolvin 完成
v1.0 (2019-10-23)¶
- 破坏性更改: 弃用
Model.fields
属性,请改用Model.__fields__
,#883,由 @samuelcolvin 完成 - 破坏性更改: 更改别名的优先级,使子模型别名覆盖父模型别名,包括使用
alias_generator
,#904,由 @samuelcolvin 完成 - 破坏性更改: 将
skip_defaults
重命名为exclude_unset
,并添加排除实际默认值的能力,#915,由 @dmontagu 完成 - 向
pydantic.main.ModelMetaclass.__new__
添加**kwargs
,以便__init_subclass__
可以在扩展的BaseModel
类上接受自定义参数,#867,由 @retnikt 完成 - 修复具有默认值的类型的字段,#880,由 @koxudaxi 完成
- 当设置模型使用
alias
而不是env
时,使用FutureWarning
而不是DeprecationWarning
,#881,由 @samuelcolvin 完成 - 修复
BaseSettings
继承和alias
被设置为None
的问题,#882,由 @samuelcolvin 完成 - 修改
__repr__
和__str__
方法,使其在所有公共类中保持一致,添加__pretty__
以支持 python-devtools,#884,由 @samuelcolvin 完成 - 弃用关于
BaseSettings
配置的case_insensitive
警告,#885,由 @samuelcolvin 完成 - 对于
BaseSettings
,递归合并环境变量和代码内值,只要它们合并在一起时创建一个有效的对象,以允许拆分 init 参数,#888,由 @idmitrievsky 完成 - 更改 secret 类型示例,#890,由 @ashears 完成
- 更改
Model.construct()
的签名以使其更用户友好,文档化construct()
的用法,#898,由 @samuelcolvin 完成 - 为
construct()
方法添加示例,#907,由 @ashears 完成 - 改进在复杂类型上使用
Field
约束,如果约束不可强制执行,则引发错误,同时支持带有省略号的元组Tuple[X, ...]
、Sequence
和FrozenSet
在 schema 中,#909,由 @samuelcolvin 完成 - 更新文档以说明 bool 缺少有效值的情况,#911,由 @trim21 完成
- 更好的
str
/repr
逻辑用于ModelField
,#912,由 @samuelcolvin 完成 - 修复
ConstrainedList
,更新 schema 生成以反映min_items
和max_items
Field()
参数,#917,由 @samuelcolvin 完成 - 允许在
dict()
的include
和exclude
参数中使用抽象集合(例如 dict 键),#921,由 @samuelcolvin 完成 - 通过使用
pydantic_encoder
修复ValidationError.json()
上的 JSON 序列化错误,#922,由 @samuelcolvin 完成 - 阐明
remove_untouched
的用法,改进没有验证器的类型的错误消息,#926,由 @retnikt 完成
v1.0b2 (2019-10-07)¶
- 将
StrictBool
类型检查标记为bool
,以允许使用默认值而不会出现 mypy 错误,#690,由 @dmontagu 完成 - 将文档构建从 sphinx 转移到 mkdocs,重写了大部分文档,#856,由 @samuelcolvin 完成
- 为
GenericModel
子类添加自定义命名方案的支持,#859,由 @dmontagu 完成 - 为测试覆盖率将
if TYPE_CHECKING:
添加到排除行中,#874,由 @dmontagu 完成 - 将
allow_population_by_alias
重命名为allow_population_by_field_name
,删除关于它的不必要的警告,#875,由 @samuelcolvin 完成
v1.0b1 (2019-10-01)¶
- 破坏性更改: 将
Schema
重命名为Field
,使其成为一个函数以安抚 mypy,#577,由 @samuelcolvin 完成 - 破坏性更改: 修改
bool
的解析行为,#617,由 @dmontagu 完成 - 破坏性更改: 不再识别
get_validators
,请使用__get_validators__
。不再识别Config.ignore_extra
和Config.allow_extra
,请使用Config.extra
,#720,由 @samuelcolvin 完成 - 破坏性更改: 修改
BaseSettings
的默认配置设置;case_insensitive
重命名为case_sensitive
,默认值更改为case_sensitive = False
,env_prefix
默认值更改为''
- 例如,无前缀,#721,由 @dmontagu 完成 - 破坏性更改: 实现
root_validator
并将根错误从__obj__
重命名为__root__
,#729,由 @samuelcolvin 完成 - 破坏性更改: 更改
dict(model)
的行为,使子模型不再转换为字典,#733,由 @samuelcolvin 完成 - 破坏性更改: 为
post_init_post_parse
添加了initvars
支持,#748,由 @Raphael-C-Almeida 完成 - 破坏性更改: 使
BaseModel.json()
仅为具有自定义根的模型序列化__root__
键,#752,由 @dmontagu 完成 - 破坏性更改: 完全重写
URL
解析逻辑,#755,由 @samuelcolvin 完成 - 破坏性更改: 当子类中未提供时,保留超类注解以进行字段确定,#757,由 @dmontagu 完成
- 破坏性更改:
BaseSettings
现在使用特殊的env
设置来定义要读取的环境变量,而不是别名,#847,由 @samuelcolvin 完成 - 为验证器内部的
assert
语句添加支持,#653,由 @abdusco 完成 - 更新文档以指定使用
pydantic.dataclasses.dataclass
和子类化pydantic.BaseModel
,#710,由 @maddosaurus 完成 - 允许通过
json_loads
和json_dumps
Config
属性进行自定义 JSON 解码和编码,#714,由 @samuelcolvin 完成 - 使所有注解字段都按照声明的顺序出现,#715,由 @dmontagu 完成
- 使用 pytest 测试
mypy
集成,#735,由 @dmontagu 完成 - 为
ErrorWrapper
添加__repr__
方法,#738,由 @samuelcolvin 完成 - 为 dataclasses 中的
FrozenSet
成员添加了支持,并在尝试使用typing
模块中 Pydantic 不支持的类型时,提供了更好的错误信息,#745,由 @djpetti 完成 - 为 Pycharm 插件添加文档,#750,由 @koxudaxi 完成
- 修复文档中损坏的示例,#753,由 @dmontagu 完成
- 将 typing 相关对象移动到
pydantic.typing
中,#761,由 @samuelcolvin 完成 - 对
ErrorWrapper
、ValidationError
和 datetime 解析进行小的性能改进,#763,由 @samuelcolvin 完成 - 改进
datetime
/date
/time
/timedelta
类型:更具描述性的错误,将错误更改为value_error
而不是type_error
,支持 bytes,#766,由 @samuelcolvin 完成 - 修复具有多个允许值的
Literal
类型的错误消息,#770,由 @dmontagu 完成 - 通过将下划线转换为空格,改进 JSON schema 中自动生成的
title
字段,#772,由 @skewty 完成 - 支持 dataclasses 的
mypy --no-implicit-reexport
,同时在 pydantic 本身中遵守--no-implicit-reexport
,#783,由 @samuelcolvin 完成 - 添加
PaymentCardNumber
类型,#790,由 @matin 完成 - 修复列表的 const 验证,#794,由 @hmvp 完成
- 对于禁止额外字段的模型,在 schema 中将
additionalProperties
设置为 false,#796,由 @Code0x58 完成 EmailStr
验证方法现在根据 RFC 5321 返回本地部分,区分大小写,#798,由 @henriklindgren 完成- 为
ConstrainedFloat
、ConstrainedInt
和ConstrainedStr
添加了验证严格性的能力,并添加了StrictFloat
和StrictInt
类,#799,由 @DerRidda 完成 - 改进
None
和Optional
的处理,在验证器上用each_item
(含义相反,默认为False
)替换whole
,#803,由 @samuelcolvin 完成 - 为
Type[T]
类型提示添加支持,#807,由 @timonbimon 完成 - 通过删除
change_exceptions
提高性能,更改 pydantic 错误的构造方式,#819,由 @samuelcolvin 完成 - 修复在解析期间
BaseModel
类型模型字段导致ValidationError
时出现的错误消息,#820,由 @dmontagu 完成 - 允许
Config
上使用getter_dict
,修改GetterDict
使其更像Mapping
对象,从而更易于使用,#821,由 @samuelcolvin 完成 - 仅在基本
GenericModel
类上检查TypeVar
参数,#842,由 @zpencerq 完成 - 重命名
Model._schema_cache
->Model.__schema_cache__
,Model._json_encoder
->Model.__json_encoder__
,Model._custom_root_type
->Model.__custom_root_type__
,#851,由 @samuelcolvin 完成
v0.32.2 (2019-08-17)¶
(文档在此处可用 here)
- 修复
__post_init__
与 dataclass 继承的用法,修复 #739,由 @samuelcolvin 完成 - 修复 GenericModels 类上必需字段的验证,#742,由 @amitbl 完成
- 修复在
GenericModel
字段上定义自定义Schema
,#754,由 @amitbl 完成
v0.32.1 (2019-08-08)¶
- 当
validate_assignment
开启时,不验证额外的字段,#724,由 @YaraslauZhylko 完成
v0.32 (2019-08-06)¶
- 向
ValidationError
错误消息添加模型名称,#676,由 @dmontagu 完成 - 破坏性更改:删除
BaseModel
上的__getattr__
并将__values__
重命名为__dict__
,弃用对__values__
属性的使用,属性访问速度提高了多达 14 倍,#712,由 @Bobronium 完成 - 在 Python 3.6 中支持
ForwardRef
(不带自引用注解),#706,由 @koxudaxi 完成 - 在
Config
子类中实现schema_extra
,#663,由 @tiangolo 完成
v0.31.1 (2019-07-31)¶
v0.31 (2019-07-24)¶
- 更好地支持浮点
multiple_of
值,#652,由 @justindujardin 完成 - 修复
NewType
和Literal
的 schema 生成,#649,由 @dmontagu 完成 - 修复
alias_generator
和字段配置冲突,#645,由 @gmetzker 完成,以及 #658,由 @Bobronium 完成 - 更详细的
EnumError
消息,#673,由 @dmontagu 完成 - 为
dict
、json
和copy
添加高级排除支持,#648,由 @Bobronium 完成 - 修复具有具体参数化字段的模型的
GenericModel
中的 bug,#672,由 @dmontagu 完成 - 为
Literal
类型添加文档,#651,由 @dmontagu 完成 - 为自定义描述符支持添加
Config.keep_untouched
,#679,由 @Bobronium 完成 - 在内部使用
inspect.cleandoc
获取模型描述,#657,由 @tiangolo 完成 - 将
Color
添加到 schema 生成中,由 @euri10 完成 - 为 Literal 类型添加文档,#651,由 @dmontagu 完成
v0.30.1 (2019-07-15)¶
v0.30 (2019-07-07)¶
- 在代码中强制使用单引号,#612,由 @samuelcolvin 完成
- 修复 dataclass 继承和
__post_init__
导致的无限递归,#606,由 @Hanaasagi 完成 - 修复
GenericModel
的默认值,#610,由 @dmontagu 完成 - 阐明自引用模型需要 Python 3.7+,#616,由 @vlcinsky 完成
- 修复类型的截断,#611,由 @dmontagu 完成
- 添加
alias_generator
支持,#622,由 @Bobronium 完成 - 修复未参数化泛型类型 schema 生成,#625,由 @dmontagu 完成
- 修复对同一模型的多个/循环引用的 schema 生成,#621,由 @tiangolo 和 @wongpat 完成
- 支持自定义根类型,#628,由 @koxudaxi 完成
- 在
parse_obj
中支持self
作为字段名称,#632,由 @samuelcolvin 完成
v0.29 (2019-06-19)¶
- 支持 dataclasses.InitVar,#592,由 @pfrederiks 完成
- 更新了文档,以阐明在属性的注解下定义多种类型时
Union
的用法,并展示类型顺序如何影响提供的值的编组,#594,由 @somada141 完成 - 添加
conlist
类型,#583,由 @hmvp 完成 - 添加对泛型的支持,#595,由 @dmontagu 完成
v0.28 (2019-06-06)¶
- 修复在使用 Python 3.7 中具有循环引用的模型时,对 JSON Schema 生成的支持,#572,由 @tiangolo 完成
- 在 dataclasses 上支持
__post_init_post_parse__
,#567,由 @sevaho 完成 - 允许将 dataclasses 转储为 JSON,#575,由 @samuelcolvin 和 @DanielOberg 完成
- ORM 模式,#562,由 @samuelcolvin 完成
- 修复 ipython 上的
pydantic.compiled
,#573,由 @dmontagu 和 @samuelcolvin 完成 - 添加
StrictBool
类型,#579,由 @cazgp 完成
v0.27 (2019-05-30)¶
- 破坏性更改
_pydantic_post_init
在验证之前执行 dataclass 的原始__post_init__
,#560,由 @HeavenVolkoff 完成 - 修复对没有指定参数的泛型类型的处理,#550,由 @dmontagu 完成
- 破坏性更改(可能):这是第一个用 cython 编译的版本,请参阅文档,如果遇到问题,请提交 issue
v0.27.0a1 (2019-05-26)¶
- 修复
list
、tuple
和set
的 JSON Schema,#540,由 @tiangolo 完成 - 用 cython 编译,
manylinux
二进制文件,以及其他一些性能改进,#548,由 @samuelcolvin 完成
v0.26 (2019-05-22)¶
- 修复
IPvAnyAddress
、IPvAnyInterface
、IPvAnyNetwork
的 schema 生成 #498,由 @pilosus 完成 - 修复可变长度元组支持,#495,由 @pilosus 完成
- 修复
create_model
的返回类型提示,#526,由 @dmontagu 完成 - 破坏性更改: 修复
.dict(skip_keys=True)
跳过通过别名设置的值(这涉及到更改validate_model()
以始终返回Tuple[Dict[str, Any], Set[str], Optional[ValidationError]]
),#517,由 @sommd 完成 - 修复
IPv4Address
、IPv6Address
、IPv4Interface
、IPv6Interface
、IPv4Network
、IPv6Network
的 schema 生成 #532,由 @euri10 完成 - 添加
Color
类型,#504,由 @pilosus 和 @samuelcolvin 完成
v0.25 (2019-05-05)¶
- 改进关于自引用模型和注解的文档,#487,由 @theenglishway 完成
- 修复
.dict()
处理额外键的问题,#490,由 @JaewonKim 完成 - 在
Schema
中支持const
关键字,#434,由 @Sean1708 完成
v0.24 (2019-04-23)¶
- 修复
ForwardRef
在子类型(如Union
)中的处理,#464,由 @tiangolo 完成 - 修复 secret 序列化,#465,由 @atheuz 完成
- 为 dataclasses 支持自定义验证器,#454,由 @primal100 完成
- 修复
parse_obj
以处理类似 dict 的对象,#472,由 @samuelcolvin 完成 - 修复嵌套的基于 dataclass 的模型中的 schema 生成,#474,由 @NoAnyLove 完成
- 修复
Path
、FilePath
和DirectoryPath
对象的json
,#473,由 @mikegoodspeed 完成
v0.23 (2019-04-04)¶
- 改进贡献部分的文档,#441,由 @pilosus 完成
- 改进 README.rst 以包含关于包的基本信息,#446,由 @pilosus 完成
IntEnum
支持,#444,由 @potykion 完成- 修复 PyObject 可调用值,#409,由 @pilosus 完成
- 修复更新后
black
弃用警告,#451,由 @pilosus 完成 - 修复
ForwardRef
集合 bug,#450,由 @tigerwings 完成 - 支持专门的
ClassVars
,#455,由 @tyrylu 完成 - 修复
ipaddress
类型的 JSON 序列化,#333,由 @pilosus 完成 - 添加
SecretStr
和SecretBytes
类型,#452,由 @atheuz 完成
v0.22 (2019-03-29)¶
- 从
ipaddress
stdlib 添加IPv{4,6,Any}Network
和IPv{4,6,Any}Interface
类型,#333,由 @pilosus 完成 - 为
datetime
类型添加文档,#386,由 @pilosus 完成 - 修复基于 dataclass 的模型中的 schema 生成,#408,由 @pilosus 完成
- 修复嵌套模型中的路径,#437,由 @kataev 完成
- 添加
Sequence
支持,#304,由 @pilosus 完成
v0.21.0 (2019-03-15)¶
- 修复
NoneIsNotAllowedError
消息中的错别字,#414,由 @YaraslauZhylko 完成 - 添加
IPvAnyAddress
、IPv4Address
和IPv6Address
类型,#333,由 @pilosus 完成
v0.20.1 (2019-02-26)¶
- 修复
parse_obj
和类似方法的类型提示,#405,由 @erosennin 完成 - 修复子模型验证,#403,由 @samuelcolvin 完成
- 更正
ValidationError.json
的类型提示,#406,由 @layday 完成
v0.20.0 (2019-02-18)¶
- 修复 Python 3.8 的测试,#396,由 @samuelcolvin 完成
- 为交互式会话中的自动完成功能向
dir
方法添加字段,#398,由 @dgasmith 完成 - 使用 dataclasses 支持
ForwardRef
(以及from __future__ import annotations
),#397,由 @samuelcolvin 完成
v0.20.0a1 (2019-02-13)¶
- breaking change (maybe): 针对验证器的更复杂的参数解析,现在允许使用
values
、config
和field
的任何子集,例如(cls, value, field)
,但是可变关键字参数("**kwargs
")必须命名为kwargs
,#388 by @samuelcolvin - breaking change: 向
BaseModel.dict()
添加skip_defaults
参数以允许跳过未显式设置的字段,Model.construct()
的签名已更改,#389 by @dgasmith - 添加用于 PEP-561 支持的
py.typed
标记文件,#391 by @je-l - 修复多重继承/混入的
extra
行为,#394 by @YaraslauZhylko
v0.19.0 (2019-02-04)¶
- 支持
Callable
类型提示,修复 #279 by @proofit404 - 修复使用
validator
装饰器的字段的 schema,修复 #375 by @tiangolo - 向
ConstrainedDecimal
、ConstrainedFloat
、ConstrainedInt
及其相关类型condecimal
、confloat
和conint
添加multiple_of
约束 #371,感谢 @StephenBrown2 - 弃用
ignore_extra
和allow_extra
Config 字段,转而使用extra
,#352 by @liiight - 向所有函数添加类型注解,使用 mypy 进行完整测试,#373 by @samuelcolvin
- 修复
validate_all
或validate_always
导致的“missing”错误,#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)¶
- breaking change: 不再对字典的键调用验证器,#254 by @samuelcolvin
- 修复当 default 为
None
或类型为 optional 时,always=True
的验证器,同时阻止为子字段调用whole
验证器,修复 #132 by @samuelcolvin - 改进设置优先级的文档,并允许轻松更改优先级,#343 by @samuelcolvin
- 修复
ignore_extra=False
和allow_population_by_alias=True
,修复 #257 by @samuelcolvin - breaking change: 默认将
BaseConfig
属性min_anystr_length
和max_anystr_length
设置为None
,修复 #349 in #350 by @tiangolo - 添加对延后注释的支持,#348 by @samuelcolvin
v0.17.0 (2018-12-27)¶
- 修复
timedelta
作为数字的 schema,#325 by @tiangolo - 防止在继承后重复调用验证器,#327 by @samuelcolvin
- 防止在 ipython 中重复验证器检查,修复 #312 by @samuelcolvin
- 向文档添加“使用 Pydantic”部分,#323 by @tiangolo & #326 by @samuelcolvin
- 修复注解为
: dict
、: list
、: tuple
和: set
的字段的 schema 生成,#330 & #335 by @nkonin - 添加对 schema 中作为 dict 键的受约束字符串的支持,#332 by @tiangolo
- 支持在 dataclasses 装饰器中传递 Config 类,#276 by @jarekkar (breaking change: 这取代了带有
config
的validate_assignment
参数) - 支持嵌套 dataclasses,#334 by @samuelcolvin
- 改进在
PyObject
中获取ImportError
时的错误信息,#309 by @samuelcolvin - 将
get_validators
重命名为__get_validators__
,弃用旧名称的警告,#338 by @samuelcolvin - 通过从字段中排除此类属性来支持
ClassVar
,#184 by @samuelcolvin
v0.16.1 (2018-12-10)¶
- 修复
create_model
以正确使用传递的__config__
,#320 by @hugoduncan
v0.16.0 (2018-12-03)¶
- breaking change: 重构 schema 生成以兼容 JSON Schema 和 OpenAPI 规范,#308 by @tiangolo
- 向
schema
模块添加schema
以从基本模型生成顶层 schema,#308 by @tiangolo - 向
Schema
类添加其他字段以声明str
和数值的验证,#311 by @tiangolo - 将字段上的
_schema
重命名为schema
,#318 by @samuelcolvin - 向
BaseSettings
Config
添加case_insensitive
选项,#277 by @jasonkuhrt
v0.15.0 (2018-11-18)¶
- 移动代码库以使用 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 and @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)¶
- 在
.dict()
和.json()
模型方法中添加by_alias
参数 #205 - 添加 Json 类型支持 #214
- 支持 tuples #227
- 对 schema 的重大改进和更改 #213
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 - breaking change: 移除 msgpack 解析 #201
- 添加
FilePath
和DirectoryPath
类型 #10 - 模型 schema 生成 #190
- 模型的 JSON 序列化和 schema #133
v0.10.0 (2018-06-11)¶
- 添加
Config.allow_population_by_alias
#160,感谢 @bendemaree - breaking change: 新的错误格式 #179,感谢 @Gr1N
- breaking change: 移除
Config.min_number_size
和Config.max_number_size
#183,感谢 @Gr1N - breaking change:
conint
等的lt
和gt
参数的正确行为 #188,对于旧的行为,请使用le
和ge
#194,感谢 @jaheba - 添加错误上下文和使用
Config.error_msg_templates
重新定义错误消息模板的能力 #183,感谢 @Gr1N - 修复验证器异常中的错别字 #150
- 将 defaults 复制到模型值,以便不同的模型不共享对象 #154
v0.9.1 (2018-05-10)¶
- 允许在 config 类上自定义
get_field_config
#159 - 添加
UUID1
、UUID3
、UUID4
和UUID5
类型 #167,感谢 @Gr1N - 修改一些不一致的文档字符串和注解 #173,感谢 @YannLuo
- 修复 exotic 类型的类型注解 #171,感谢 @Gr1N
- 在 exotic 类型中重用类型验证器 #171
- 计划每月更新 requirements #168
- 添加
Decimal
、ConstrainedDecimal
和condecimal
类型 #170,感谢 @Gr1N
v0.9.0 (2018-04-28)¶
- 调整 email-validator 导入错误消息 #145
- 修复当输入为 0 时
parse_date()
和parse_datetime()
的解析错误 #144,感谢 @YannLuo - 向
constr
添加Config.anystr_strip_whitespace
和strip_whitespace
kwarg,默认值为False
#163,感谢 @Gr1N - 添加
ConstrainedFloat
、confloat
、PositiveFloat
和NegativeFloat
类型 #166,感谢 @Gr1N
v0.8.0 (2018-03-25)¶
- 修复
inherit_config
的类型注解 #139 - breaking change: 检查验证器中的无效字段名称 #140
- 验证父模型的属性 #141
- breaking change: email 验证现在使用 email-validator #142
v0.7.1 (2018-02-07)¶
- 修复
create_model
修改基类的问题
v0.7.0 (2018-02-06)¶
- 添加了与抽象基类 (ABC) 的兼容性 #123
- 添加
create_model
方法 #113 #125 - breaking change: 将模型上的
.config
重命名为.__config__
- breaking change: 移除模型上已弃用的
.values()
,请改用.dict()
- 移除
OrderedDict
的使用并使用 simple dict #126 - 添加
Config.use_enum_values
#127 - 添加
@validate('*')
形式的通配符验证器 #128
v0.6.4 (2018-02-01)¶
- 允许 Python date 和 times 对象 #122
v0.6.3 (2017-11-26)¶
- 修复未安装
README.rst
时的直接安装问题
v0.6.2 (2017-11-13)¶
- 无效验证器使用的错误
Settings
中更安全的复杂模型检查
v0.6.1 (2017-11-08)¶
v0.6.0 (2017-11-07)¶
- 赋值验证 #94,感谢 petroswork!
- 复杂类型的环境变量中的 JSON,#96
- 为复杂验证添加
validator
装饰器,#97 - 弃用
values(...)
并替换为.dict(...)
,#99
v0.5.0 (2017-10-23)¶
- 添加
UUID
验证 #89 - 如果
index
和track
为 null,则从错误对象 (json) 中移除它们 #90 - 改进当提供 list 而不是 dict 时的错误文本 #90
- 向文档添加 benchmarks 表格 #91
v0.4.0 (2017-07-08)¶
- 在字符串验证错误中显示长度
- 修复继承期间 config 中的别名 #55
- 简化错误显示
- 在
truncate
中使用 unicode 省略号 - 添加
parse_obj
、parse_raw
和parse_file
辅助函数 #58 - 切换仅注解字段,使其在字段列表中位于最前面而不是最后面
v0.3.0 (2017-06-21)¶
- 通过
config.allow_mutation = False
实现 immutable 模型,相关的清理和性能改进 #44 - immutable 辅助方法
construct()
和copy()
#53 - 允许模型的 pickling #53
setattr
已移除,因为__setattr__
现在是智能的 #44raise_exception
已移除,Models 现在始终引发异常 #44- 实例方法验证器已移除
- 添加了 django-restful-framework benchmarks #47
- 修复继承 bug #49
- 使 str 类型更严格,以便 list、dict 等不会被强制转换为字符串。#52
- 添加仅始终将字符串作为输入的
StrictStr
#52
v0.2.1 (2017-06-07)¶
- pypi 和 travis 一起搞砸了
v0.2
的部署,这应该修复它
v0.2.0 (2017-06-07)¶
- breaking change: 模型上的
values()
现在是一个方法而不是属性,接受include
和exclude
参数 - 允许仅注解字段支持 mypy
- 为模型添加漂亮的
to_string(pretty=True)
方法
v0.1.0 (2017-06-03)¶
- 添加文档
- 添加历史记录