परिवर्तनों की सूची
v2.8.2 (2024-07-03)¶
有什么变化¶
Fixes¶
-
由 @dmontagu 在 #9838 中修复由可插拔模式验证器导致的断言问题
v2.8.1 (2024-07-03)¶
发生了什么变化¶
Packaging¶
-
由@sydney-runkle 在 #9801 中将
ruff
提升至v0.5.0
,将pyright
提升至v1.1.369
-
由@sydney-runkle 在 #9832 中将
pydantic-core
提升至v2.20.1
,pydantic-extra-types
提升至v2.9.0
Fixes¶
-
通过@sydney-runkle 在 #9812 中修复
to_snake
从 v2.7 到 v2.8 的重大更改 -
由 @sydney-runkle 在 #9818 中修复列表约束 JSON 模式应用程序
-
支持时间超过 23 由 @nix010 在 pydantic/speedate#64
-
由 @davidhewitt 在 pydantic/speedate#65 中修复了毫秒小数以错误的比例处理的问题
-
由 @sydney-runkle 在 pydantic/speedate#71 中正确处理负分数时长
v2.8.0 (2024-07-01)¶
在 v2.8.0 中发布的代码在功能上与 v2.8.0b1 的相同。
有什么变化¶
Packaging¶
-
通过@sydney-runkle 在 #9673 中的新发布自动更新引文版本
-
将版权转让给
v1.1.367
,并由 @adriangb 在 #9674 中为管道 API 添加类型检查测试 -
由@sydney-runkle 在 #9707 中将
pydantic.v1
存根更新为v1.10.17
-
由@sydney-runkle 在 #9741 中进行的通用软件包更新以准备
v2.8.0b1
-
由@sydney-runkle 在 #9745 中将
pydantic-core
提升至v2.20.0
-
在 #9743 中由 @sydney-runkle 为 Python 3.13 添加支持
-
由@sydney-runkle 在 #9761 中将用于
pdm.lock
的pdm
版本更新至 v2.16.1 -
由 @Viicos 在 #9585 中更新至
ruff
v0.4.8
新功能¶
-
实验性:由 @MarkusSintonen 在 #8939 中为
TypeAdapter
提供defer_build
支持 -
由 @NeevCohen 在 #9298 中在 JSON 模式中实现
deprecated
字段 -
实验性:由 @adriangb 在 #9459 中添加管道 API
-
在 #9183 中由 @NeevCohen 添加对编程式标题生成的支持
-
由 @uriyyo 在 #9708 中实现
fail_fast
功能 -
在 pydantic/pydantic-core#1307 中,由 @josh-newman 添加
ser_json_inf_nan='strings'
模式以生成有效的 JSON
Changes¶
-
当 @nix010 在 #9170 中在被忽略的
Annotated
字段中设置“别名”时添加警告 -
通过@sydney-runkle 在 #9624 中支持 JSON 模式中某些可序列化默认值的序列化
-
由@sydney-runkle 在 #9697 中放宽
create_model
中__validators__
值的类型规范 -
重大变更:由@sydney-runkle 在 pydantic/pydantic-core#1322 中改进
smart
联合匹配逻辑 您可以在此处阅读更多关于我们的smart
联合匹配逻辑的信息。在某些情况下,如果需要旧的行为,您可以切换到left-to-right
模式并更改您的Union
成员的顺序。
Performance¶
内部改进¶
-
⚡️ 在
pydantic/v1/error_wrappers.py
中由 @misrasaurabh1 将_display_error_loc()
的速度提高 25% 于 #9653 -
⚡️ 在
pydantic/json_schema.py
中由 @misrasaurabh1 将_get_all_json_refs()
的速度提高 34%,在 #9650 中 -
⚡️ 在
pydantic/dataclasses.py
中由 @misrasaurabh1 将is_pydantic_dataclass()
的速度提高 41% 于 #9652 -
⚡️ 在
pydantic/alias_generators.py
中由 @misrasaurabh1 将to_snake()
的速度提高 27% 于 #9747 -
⚡️ 在
pydantic/_internal/_decorators.py
中由 @misrasaurabh1 将unwrap_wrapped_function()
的速度提高 93% 于 #9727
Fixes¶
-
在 #9331 中,由 @hramezani 将
__spec__.parent
替换为__package__
-
由 @anesmemisevic 在 #9303 中修复
Sequence
类型的输出模型 JSON 模式 -
在 #9353 中由 @Viicos 修复
_frame_depth
的输入类型 -
通过 @amitschang 在 #9344 中使
ImportString
JSON 模式兼容 -
在类型检查器中,通过 @idan22moral 在 #9293 中隐藏来自
__init__
签名的私有属性(PrivateAttr
) -
通过 #9426 中的 @AlexWaygood 使对
TypeVar
默认值的检测对于 CPythonPEP-696
实现具有鲁棒性 -
通过 @Viicos 在 #9450 中修复了内置类型的
PlainSerializer
的使用 -
由 @ChrisPappalardo 在 #9468 中添加了更强大的自定义验证示例
-
在 #9476 中,由 @vbmendes 修复了
StringConstraint(strict=False)
的被忽略的strict
规范 -
重大变更:由 @Viicos 在 #9479 中使用 PEP 570 语法
-
在可能的情况下使用
Self
,由 @Viicos 在 #9479 中提出 -
请勿更改 @Viicos 在 #9480 中的
mypy
插件中的RootModel.model_construct
签名 -
@OhioDschungel6 在 #9508 中修复了
validation_context
的类型提示 -
支持由 @alexcouper 在 #9495 中向 TypeAdapter 的
dump_json
/dump_python
传递上下文 -
@bjmc 在 #9484 中为
Field()
构造函数更新类型签名 -
通过@sydney-runkle 在 #9561 中改进内置别名生成器
-
在 #9570 中由 @Viicos 修复
TypeAdapter
的输入类型 -
由 @anhpham1509 在 #9584 中为 BaseModel 的
__setstate__
中的私有字段添加回退默认值 -
支持
PEP 746
由 @adriangb 在 #9587 中 -
允许验证器和序列化器函数具有默认值,由 @Viicos 在 #9478 中提出
-
由 @dmontagu 在 #9606 中修复了 mypy 插件处理协变
TypeVar
字段的错误 -
由 @sydney-runkle 在 #9623 中修复多个注释/约束应用逻辑
-
在验证和 JSON 模式中尊重
regex
标志,由 @sydney-runkle 在 #9591 中完成 -
@sydney-runkle 在 #9640 中修复
IpvAnyAddress
的类型提示 -
允许在
__pydantic_extra__
上使用字段说明符,由 @dmontagu 在 #9659 中提出 -
在 #9737 中,由 @sydney-runkle 对文件路径比较使用标准化大小写
-
修改约束应用逻辑,以允许在
Optional[Decimal]
上的字段约束,由 @lazyhope 在 #9754 中进行 validate_call
type params fix by @sydney-runkle in #9760-
检查由 @s-t-e-v-e-n-k 在 #9702 中通过 pytest.warns() 返回的所有警告
-
在正则表达式模式中重用
re.Pattern
对象以允许正则表达式标志,由 @sydney-runkle 在 pydantic/pydantic-core#1318 中提出
New Contributors¶
-
@idan22moral 在 #9294 中做出了他们的首次贡献
-
@anesmemisevic 在 #9303 中做出了他们的首次贡献
-
@max-muoto 在 #9338 中做出了他们的首次贡献
-
@amitschang 在 #9344 中做出了他们的首次贡献
-
@paulmartin91 在 #9410 中做出了他们的首次贡献
-
@OhioDschungel6 在 #9405 中做出了他们的首次贡献
-
@AlexWaygood 在 #9426 中做出了他们的首次贡献
-
@kinuax 在 #9433 中做出了他们的首次贡献
-
@antoni-jamiolkowski 在 #9431 中做出了他们的首次贡献
-
@candleindark 在 #9448 中做出了他们的首次贡献
-
@nix010 在 #9170 中做出了他们的首次贡献
-
@tomy0000000 在 #9457 中做出了他们的首次贡献
-
@vbmendes 在 #9470 中做出了他们的首次贡献
-
@micheleAlberto 在 #9471 中做出了他们的首次贡献
-
@ChrisPappalardo 在 #9468 中做出了他们的首次贡献
-
@blueTurtz 在 #9475 中做出了他们的首次贡献
-
@WinterBlue16 在 #9477 中做出了他们的首次贡献
-
@bittner 在 #9500 中做出了他们的首次贡献
-
@alexcouper 在 #9495 中做出了他们的首次贡献
-
@bjmc 在 #9484 中做出了他们的首次贡献
-
@pjvv 在 #9529 中做出了他们的首次贡献
-
@nedbat 在 #9530 中做出了他们的首次贡献
-
@gunnellEvan 在 #9469 中做出了他们的首次贡献
-
@jaymbans 在 #9531 中做出了他们的首次贡献
-
@MarcBresson 在 #9534 中做出了他们的首次贡献
-
@anhpham1509 在 #9584 中做出了他们的首次贡献
-
@K-dash 在 #9595 中做出了他们的首次贡献
-
@s-t-e-v-e-n-k 在 #9527 中做出了他们的首次贡献
-
@airwoodix 在 #9506 中做出了他们的首次贡献
-
@misrasaurabh1 在 #9653 中做出了他们的首次贡献
-
@AlessandroMiola 在 #9740 中做出了他们的首次贡献
-
@mylapallilavanyaa 在 #9746 中做出了他们的首次贡献
-
@lazyhope 在 #9754 中做出了他们的首次贡献
-
@YassinNouh21 在 #9759 中做出了他们的首次贡献
v2.8.0b1 (2024-06-27)¶
预发布,详情见 GitHub 发布。
v2.7.4 (2024-06-12)¶
有什么变化¶
Packaging¶
-
将
pydantic.v1
提升至v1.10.16
参考,由 @sydney-runkle 在 #9639 中提出
Fixes¶
-
在 #9612 中,由 @vfazio 指定
recursive_guard
作为FutureRef._evaluate
中的关键字参数
v2.7.3 (2024-06-03)¶
有什么变化¶
Packaging¶
-
由@sydney-runkle 在 #9550 中将
pydantic-core
提升至v2.18.4
Fixes¶
-
在 Python 中修复 u 样式的 Unicode 字符串 @samuelcolvin 于 pydantic/jiter#110
v2.7.2 (2024-05-28)¶
有什么变化¶
Packaging¶
-
由@sydney-runkle 在 #9515 中将
pydantic-core
提升至v2.18.3
Fixes¶
-
在 #9331 中,由 @hramezani 将
__spec__.parent
替换为__package__
-
通过 @RajatRajdeep 在 pydantic/pydantic-core#1291 中修复以一元负号开头的
int
的验证 -
由 @sydney-runkle 在 pydantic/pydantic-core#1273 中修复
str
枚举子类验证 -
在 pydantic/pydantic-core#1297 中,由 @samuelcolvin 支持
BigInt
s 在Literal
s 和Enum
s 中 -
修复:uuid - 允许
str
子类作为输入,由 @davidhewitt 在 pydantic/pydantic-core#1296 中提出
v2.7.1 (2024-04-23)¶
有什么变化¶
Packaging¶
-
由@sydney-runkle 在 #9307 中将
pydantic-core
提升至v2.18.2
新功能¶
-
Ftp 和 Websocket 连接字符串由 @CherrySuryp 在 #9205 中支持
Changes¶
-
当存在
…
时,使用字段描述作为 RootModel 架构描述,由 @LouisGobert 在 #9214 中提出
Fixes¶
-
由@sydney-runkle 在 #9223 中针对
AliasChoices
和AliasPath
修复validation_alias
与model_construct
的行为 -
在 #9232 中,由 @frost-nzcr4 还原
typing.Literal
并将其导入 TYPE_CHECKING 块之外 -
修复
Secret
序列化模式,适用于 @sydney-runkle 在 #9240 中的联合 -
由@sydney-runkle 在 #9279 中使用
use_enum_values
将strict
应用程序修复为function-after
-
在 #9168 中,由 @babygrimes 解决了在定义
model_post_init
的类上model_construct
因AttributeError
而失败的情况 -
通过 @NeevCohen 在 #9287 中使用配置类型修复
model_json_schema
-
在 pydantic/pydantic-core#1269 中,由 @samuelcolvin 支持将多个零作为
int
-
通过 @cknv 在 pydantic/pydantic-core#1272 中修复带有前导一元加号的
int
的验证 -
在 pydantic/pydantic-core#1276 中,由 @davidhewitt 修复
extra != 'ignore'
和from_attributes=True
之间的交互 -
在 pydantic/pydantic-core#1274 中,由@sydney-runkle 将来自
Enum
的missing
函数的错误处理为ValidationError
-
通过 @davidhewitt 在 pydantic/pydantic-core#1271 中对
Iterable
验证修复内存泄漏
New Contributors¶
-
@zzstoatzz 在 #9219 中做出了他们的首次贡献
-
@frost-nzcr4 在 #9232 中做出了他们的首次贡献
-
@CherrySuryp 在 #9205 中做出了他们的首次贡献
-
@vagenas 在 #9268 中做出了他们的首次贡献
-
@ollz272 在 #9262 中做出了他们的首次贡献
-
@babygrimes 在 #9168 中做出了他们的首次贡献
-
@swelborn 在 #9296 中做出了他们的首次贡献
-
@kf-novi 在 #9236 中做出了他们的首次贡献
-
@lgeiger 在 #9288 中做出了他们的首次贡献
v2.7.0 (2024-04-11)¶
在 v2.7.0 中发布的代码实际上与 v2.7.0b1 的代码相同。
有什么变化¶
Packaging¶
-
由 @Viicos 在 #8899 中重新组织
pyproject.toml
部分 -
由@sydney-runkle 在 #9211 中将
pydantic-core
提升至v2.18.1
- Adopt
jiter
v0.2.0
by @samuelcolvin in pydantic/pydantic-core#1250
新功能¶
-
从
FieldInfo.description
中提取由 @Viicos 在 #6563 中的属性文档字符串 -
通过 @Viicos 在 #8611 中添加一个
with_config
装饰器以符合类型规范 -
允许一个可选的分隔符,将
ByteSize.human_readable
的结果的数值和单位通过 @jks15satoshi 在 #8706 中分开 -
由 @conradogarciaberrotaran 在 #8519 中添加通用的
Secret
基本类型 -
利用
Sphinx
库存,在文档中进行交叉引用,由 @Viicos 在 #8682 中提出 -
由 @geospackle 在 #8767 中添加环境变量以禁用插件
-
由 @Viicos 在 #8237 中添加对
deprecated
字段的支持 -
允许
field_serializer('*')
由 @ornariece 在 #9001 中 -
处理 @alexeyt101 在 #9004 中将
model_config
定义为模型属性的情况 -
更新
create_model()
以支持typing.Annotated
作为输入,由 @wannieman98 在 #8947 中提出 -
通过 @solidguy7 在 #9062 中添加
ClickhouseDsn
支持 -
在 #9053 中,由 @jag-k 为
re.Pattern[str]
到pattern
字段添加支持 -
@sydney-runkle 在 #8830 中对
serialize_as_any
运行时设置的支持 -
由 @Youssefares 在 #9023 中添加对
typing.Self
的支持 -
通过 @ornariece 在 #8965 中将
context
传递给序列化的能力 -
在 #9129 中,由 @sydney-runkle 将带有 flarelytics 集成的反馈小部件添加到文档中
-
在 Python 中对部分 JSON 字符串解析的支持,由 @samuelcolvin 在 pydantic/jiter#66 中提供
在 v2.7.0 中完成,而不是 v2.7.0b1 :
-
通过 @NeevCohen 在 #9137 中为字段级数字到字符串强制转换选项添加支持
-
为序列化实用程序更新
warnings
参数,以允许 @Lance-Drane 在 #9166 中发出警告
Changes¶
-
由@sydney-runkle 在 #8807 中针对
model_construct
行为与extra
更正文档和逻辑 -
由@sydney-runkle 在 #8857 中改进针对不恰当的
RootModel
子类的错误消息 -
重大变更:在 #8940 中由 @Viicos 使用
PEP570
语法 -
通过 @dmontagu 在 #8944 中为单项文本向 JSON 模式添加
enum
和type
-
在 #9125 中,由 @sydney-runkle 弃用
update_json_schema
内部函数 -
将持续时间序列化为小时、分钟、秒,而不是仅以秒为单位,由 @kakilangit 在 pydantic/speedate#50 中完成
-
在通过 @hungtsetse 在 pydantic/pydantic-core#1203 中将 str 解析为 int 和 float 之前进行修剪
Performance¶
-
enum
由 @samuelcolvin 在 #9045 中进行的验证器改进 -
由 @samuelcolvin 在 #9064 中将
enum
验证和序列化移至 Rust -
由 @sydney-runkle 在 #9114 中改进嵌套数据类的模式生成
-
在 JSON 中通过 @samuelcolvin 在 pydantic/jiter#72 中创建 ASCII Python 字符串的快速路径
-
在
aarch64
上的 SIMD 整数和字符串 JSON 解析(注意:x86 上的 SIMD 将在未来版本中实现),由 @samuelcolvin 在 pydantic/jiter#65 中提出 -
支持来自
jiter
的 JSONCow<str>
,由 @davidhewitt 在 pydantic/pydantic-core#1231 中提出 -
重大性能改进:由 @davidhewitt 在 pydantic/pydantic-core#1248 中更新至 PyO3 0.21 最终版
-
通过 @samuelcolvin 在 pydantic/pydantic-core#1240 中缓存 Python 字符串
Fixes¶
-
由@sydney-runkle 在 #8614 中修复某些
Sequence
的严格解析 -
在 #8642 中,由 @anci3ntr0ck 对
__qualname__
的存在添加检查 -
处理
__pydantic_extra__
注释是字符串还是由 @alexmojaki 在 #8659 中继承 -
由 @Holi0317 在 #8650 中修复
NameEmail
的 json 验证 -
在 #8651 中,由 @bluenote10 修复
BaseModel
中属性访问的类型安全性 -
由 @dmontagu 在 #8666 中修复
mypy
插件和no_strict_optional = True
的错误 -
修复
ByteSize
错误type
由 @sydney-runkle 在 #8681 中更改 -
通过@sydney-runkle 在 #8679 中修复数据类中的继承注释
-
由 @dmontagu 在 #8702 中修复间接定义引用的核心模式生成中的回归问题
-
通过@sydney-runkle 在 #8710 中使用普通验证器修复不支持的类型错误
-
回滚 2.6 版本中有问题的修复,由 @sydney-runkle 在 #8718 中修复模式构建错误
-
在 #8734 中,由 @13sin 修复了 TypeDict 中被忽略的
__pydantic_config__
-
通过 #8678 中 @mgorny 的操作,修复由于
pytest.warns()
在pytest.raises()
内部开始工作而导致的带有pytest v8.0.0
的测试失败 -
使用 1.x 中的
is_valid_field
用于mypy
插件,由 @DanielNoord 在 #8738 中提出 -
更好地支持
mypy
严格相等标志,由 @dmontagu 在 #8799 中实现 -
带有注释类型的 model_json_schema 导出缺少“required”参数,由 @LouisGobert 在 #8793 中提出
-
由@sydney-runkle 在 #8801 中修复
FieldInfo.__repr_args__
中的默认包含项 -
通过 @matsjoyce-refeyn 在 #8751 中修复不在子类模块命名空间中的数据类基类中的前向引用的分辨率
-
由 @devmonkey22 在 #7680 中修复
BaseModel
类型注释,使其可由typing.get_type_hints
解析 -
修复:通过@sydney-runkle 在 #8810 中允许带有
AliasGenerator
的空字符串别名 -
修复测试以及
date
->datetime
时区假设的修复,由 @sydney-runkle 在 #8823 中完成 -
在 #8837 中,由 @Viicos 解决了使用
ast.Str
时的弃用警告 -
由 @Viicos 在 #8877 中添加缺失的
deprecated
修饰符 -
在 #8860 中,如果名称包含电子邮件地址,由 @NeevCohen 修复
NameEmail
的序列化 -
在 #8917 中,由 @Czaki 在模式生成的错误消息中添加有关类的信息
-
通过 @adriangb 在 #8923 中使
TypeAdapter
的输入与特殊形式兼容 -
修复由 @dmontagu 在 #8920 中针对
enum
的引用模式中配置行为被固化的问题 -
更多关于@sydney-runkle 在 #8928 中错误使用
model_json_schema
的有用错误信息 -
由 @sydney-runkle 在 #8932 中修复嵌套的可区分联合模式生成,第 2 部分
-
通过@sydney-runkle 在 #8950 中修复具有判别式的嵌套数据类/类型化字典的模式构建
-
由 @sydney-runkle 在 #8951 中为具有可区分联合的定义模式生成删除不必要的逻辑
-
在 #9008 中,由 @dmontagu 修复
mypy
插件中可选内容的处理 -
通过@sydney-runkle 在 #9031 中修复带有标准类型构造函数的
PlainSerializer
用法 -
在 #9039 中,由 @dmontagu 为插件中的配置移除不必要的警告
-
通过 @NeevCohen 在 #9066 中修复默认值序列化
-
在
Model.__getattr__()
中由 @NeevCohen 在 #9082 修复额外字段检查 -
通过 @alexmojaki 在 #9097 中修复从父类继承的
ClassVar
前向引用 -
像验证器一样通过 @andresliszt 在 #8977 中以严格的
True
修复序列 -
通过 @chan-vince 在 #9105 中改进当字段名称遮蔽父模型中的字段时的警告消息
-
如果在子类中未由 @chan-vince 在 #9111 中重新定义被遮蔽的字段,则不发出警告
-
由 @sydney-runkle 在 #9124 中修复未替换类型变量的判别联合错误
-
支持在由 @sydney-runkle 在 #9128 中传递给
Sequence[blah blah blah]
时对deque
进行序列化 -
在
model_post_init
中从父类型初始化私有属性,由 @Viicos 在 #9134 中完成 -
由 @ornariece 在 #9144 中用
validation_alias
修复model_construct
-
确保由 @bruno-f-cruz 在 #9135 中实现的 json-schema 生成器能够处理
Literal
null
类型 -
在 v2.7.0 中修复:由 @dmontagu 在 #9193 中修复允许额外通用项
New Contributors¶
-
@hungtsetse 在 #8546 中做出了他们的首次贡献
-
@StrawHatDrag0n 在 #8583 中做出了他们的首次贡献
-
@anci3ntr0ck 在 #8642 中做出了他们的首次贡献
-
@Holi0317 在 #8650 中做出了他们的首次贡献
-
@bluenote10 在 #8651 中做出了他们的首次贡献
-
@ADSteele916 在 #8703 中做出了他们的首次贡献
-
@musicinmybrain 在 #8731 中做出了他们的首次贡献
-
@jks15satoshi 在 #8706 中做出了他们的首次贡献
-
@13sin 在 #8734 中做出了他们的首次贡献
-
@DanielNoord 在 #8738 中做出了他们的首次贡献
-
@conradogarciaberrotaran 在 #8519 中做出了他们的首次贡献
-
@chris-griffin 在 #8775 中做出了他们的首次贡献
-
@LouisGobert 在 #8793 中做出了他们的首次贡献
-
@matsjoyce-refeyn 在 #8751 中做出了他们的首次贡献
-
@devmonkey22 在 #7680 中做出了他们的首次贡献
-
@adamency 在 #8847 中做出了他们的首次贡献
-
@MamfTheKramf 在 #8851 中做出了他们的首次贡献
-
@ornariece 在 #9001 中做出了他们的首次贡献
-
@alexeyt101 在 #9004 中做出了他们的首次贡献
-
@wannieman98 在 #8947 中做出了他们的首次贡献
-
@solidguy7 在 #9062 中做出了他们的首次贡献
-
@kloczek 在 #9047 中做出了他们的首次贡献
-
@jag-k 在 #9053 中做出了他们的首次贡献
-
@priya-gitTest 在 #9088 中做出了他们的首次贡献
-
@Youssefares 在 #9023 中做出了他们的首次贡献
-
@chan-vince 在 #9105 中做出了他们的首次贡献
-
@bruno-f-cruz 在 #9135 中做出了他们的首次贡献
-
@Lance-Drane 在 #9166 中做出了他们的首次贡献
v2.7.0b1 (2024-04-03)¶
预发布,详情见 GitHub 发布。
v2.6.4 (2024-03-12)¶
有什么变化¶
Fixes¶
-
在 #8806 中,由 @sydney-runkle 修复了使用
AliasGenerator
与computed_field
装饰器的问题 -
由 @sydney-runkle 在 #8932 中修复嵌套的可区分联合模式生成,第 2 部分
-
修复由 @dmontagu 在 #8826 中因 API 延迟导致的 no_strict_optional=True 的错误
v2.6.3 (2024-02-27)¶
有什么变化¶
Packaging¶
-
在文档中更新
pydantic-settings
版本,由 @hramezani 在 #8906 中完成
Fixes¶
-
通过@sydney-runkle 在 #8904 中修复了判别联合模式生成错误
v2.6.2 (2024-02-23)¶
有什么变化¶
Packaging¶
-
通过@sydney-runkle 在 #8879 中升级到
pydantic-core
2.16.3
Fixes¶
-
“YYYY-MM-DD”日期字符串强制转换为 datetime 时不应由 @sydney-runkle 在 pydantic/pydantic-core#1193 中推断时区
v2.6.1 (2024-02-05)¶
有什么变化¶
Packaging¶
-
通过@sydney-runkle 在 #8717 中将版本升级到
pydantic-core
2.16.2
Fixes¶
-
由 @dmontagu 在 #8666 中修复
mypy
插件和no_strict_optional = True
的错误 -
修复
ByteSize
错误type
由 @sydney-runkle 在 #8681 中更改 -
由@sydney-runkle 在 #8679 中修复数据类中继承的
Field
注释 -
由 @dmontagu 在 #8702 中修复了间接定义引用的核心模式生成中的回归问题
-
通过@sydney-runkle 在 #8710 中修复了
PlainValidator
不支持的类型错误 -
回滚 2.6 版本中有问题的修复,由 @sydney-runkle 在 #8718 中修复模式构建错误
-
在 pydantic/pydantic-core#1174 中,由 @davidhewitt 修复
Union
中大小错误的元组的警告 - Fix
computed_field
JSON serializerexclude_none
behavior by @sydney-runkle in pydantic/pydantic-core#1187
v2.6.0 (2024-01-23)¶
在 v2.6.0 中发布的代码实际上与 v2.6.0b1 的代码相同。
有什么变化¶
Packaging¶
-
检查
email-validator
版本 >= 2.0 (由 @commonism 在 #6033 中) -
在 #8341 中,由 @Elkiwa 将
ruff
的目标版本升级到 Python 3.8 -
由 @yezz123 在 #8478 中更新至
pydantic-extra-types==2.4.1
-
由 @Viicos 在 #8453 中更新至
pyright==1.1.345
-
将 pydantic-core 从 2.14.6 更新到 2.16.1,这些更新带来的重大变化如下所述,完整的更新日志在此
新功能¶
-
由 @ekeew 在 #6874 中添加
NatsDsn
-
由 @davidhewitt 在 #8159 中添加
ConfigDict.ser_json_inf_nan
-
由 @adriangb 在 #8222 中添加
types.OnErrorOmit
-
支持
AliasGenerator
在 #8282 中的 @sydney-runkle 使用 -
在 #8345 中,由 @sydney-runkle 将 Pydantic 人员页面添加到文档
-
支持
yyyy-MM-DD
日期时间解析,由 @sydney-runkle 在 #8404 中完成 -
在 #8507 中,由 @luca-matei 向
ByteSize
类 #8415 添加了位转换 -
通过 @geospackle 在 #8537 中使用类型
ByteSize
启用 JSON 模式创建 -
在 #8209 中,由 @alexmojaki 添加
eval_type_backport
以处理较旧 Python 中的联合运算符和内置泛型下标 -
在 #8552 中由 @dmontagu 为
dataclass
字段init
添加支持 -
在 pydantic/pydantic-core#1119 中,由 @davidhewitt 为
ValidationError
实现腌制 -
通过 @dmontagu 在 pydantic/pydantic-core#865 中添加能够通过 PEP-646 处理“可变参数”元组的统一元组验证器
Changes¶
-
在 #7188 中,由 @hramezani 放弃对 Python3.7 的支持
-
在 pydantic/pydantic-core#1129 中,由 @davidhewitt 放弃 Python 3.7 以及 PyPy 3.7 和 3.8
-
在
BaseModel
构造函数中使用仅位置的self
,因此任何字段名都不会与之冲突,由 @ariebovenberg 在 #8072 中提出 -
让
@validate_call
返回一个函数而不是自定义描述符 - 修复了与继承相关的绑定问题,并由 @alexmojaki 在 #8268 中为验证错误添加了self/cls
参数 -
在 #8352 中,由 @sydney-runkle 从 JSON 模式描述中排除
BaseModel
文档字符串 -
由 @Jocelyn-Gas 在 #8437 中为
model_computed_fields
引入classproperty
装饰器 -
如果字段名称与类型冲突,由 @Viicos 在 #8243 中明确引发错误
-
通过 @alexdrydew 在 pydantic/pydantic-core#1132 中为简单类型的联合使用更严格的序列化器
Performance¶
-
由 @lambertsbennett 在 #8054 中添加 Codspeed 分析 Actions 工作流
-
通过 @samuelcolvin 在 pydantic/pydantic-core#1155 中改进
int
提取 -
通过 @samuelcolvin 在 pydantic/pydantic-core#1156 中改进递归保护的性能
-
dataclass
由 @samuelcolvin 在 pydantic/pydantic-core#1162 中实现的序列化加速 -
在
LazyIndexMaps
中查找小型 JSON 对象时避免HashMap
创建,由 @samuelcolvin 在 pydantic/jiter#55 中提出 -
使用 hashbrown 加速 Python 字符串缓存,由 @davidhewitt 在 pydantic/jiter#51 中提出
-
在 pydantic/jiter#48 中,由 @davidhewitt 将
Peak
替换为更高效的Peek
Fixes¶
-
在 #7183 中,由 @tlambert03 将
getattr
警告移至已弃用的BaseConfig
-
仅哈希
model_fields
,而非整个__dict__
,由 @alexmojaki 在 #7786 中提出 -
在
mypy
插件中由 @dmontagu 在 #7411 中修复冻结类型时对联合的错误处理 -
在 #8138 中由 @vincent-hachin-wmx 修复未类型化的
ClassVar
上的mypy
错误 -
在 #7825 中,@QuentinSoubeyranAqemia 仅在
BaseModel.__eq__
中比较 pydantic 字段,而不是整个__dict__
-
在
model_validate
方法中更新strict
文档字符串。由 @LukeTonin 在 #8223 中完成 -
由 @Viicos 在 #8227 中修复
computed_field
的过载位置 -
在 #8066 中,由 @ianhfc 修复了多个属性中使用的自定义类型类型转换
-
修复由 @jusexton 在 #8249 中提出的不允许将
validate_call
装饰器动态分配给类方法的问题 -
通过 @ibleedicare 在 #8262 中修复
unittest.mock
弃用警告的问题 -
由 @jusexton 在 #8286 中为
JsonValue
包含子类化基本值的情况添加了测试 -
在验证器(类方法)之前修复
mypy
错误(由 @sydney-runkle 在 #8285 中) -
由 @jevins09 在 #8316 中修复
to_snake
转换 -
在 #8305 中由 @slanzmich 修复
ModelMetaclass.__prepare__
的类型注释 -
在初始化
TypeAdapter
时,如果带注释的类型已经有配置,则不允许config
规范,由 @sydney-runkle 在 #8365 中提出 -
通过 @dmontagu 在 #8389 中修复了由递归类型别名参数化的泛型的 JSON 模式的命名问题
-
在 #8402 中,由 @shenxiangzhuang 修复 pydantic people 脚本中的类型注释
-
在 #8387 中,由 @NeevCohen 为
dataclass
签名中的字段alias
添加支持 -
由 @dmontagu 在 #8494 中修复带有
Field(...)
的前向引用中的模式生成错误 -
在 #8500 中,由 @sydney-runkle 通过
model_construct
调用修复__dict__
中键的顺序 -
当全局变量不包含
__name__
时修复path_type
模块的创建,由 @hramezani 在 #8470 中完成 -
由 @sydney-runkle 在 #8513 中修复了带有
from __future__ import annotations
的数据类的命名空间问题 -
修复:由 @pmmmwh 在 #8479 中将函数验证器类型设为仅位置参数
-
由 @Viicos 在 #8294 中修复
@deprecated
的使用 -
在 #8525 中,由 @sydney-runkle 为
model_construct
调用添加对私有属性的更多支持 -
在 #8378 中,由 @dmontagu 为 types 命名空间使用一个栈
-
通过 @dmontagu 在 #8526 中修复带有
TypeAliasType
的引用类型的模式构建错误 -
在 #8511 中,由 @tigeryy2 支持数据类中的
pydantic.Field(repr=False)
-
在 #8163 中,由 @Viicos 为
RootModel
覆盖dataclass_transform
的行为 -
由 @sydney-runkle 在 #8572 中为简化而重构签名生成
-
通过 @Anvil 在 #8567 中修复 PlainValidator 注解的排序错误
-
在 pydantic/pydantic-core#1098 中,由 @sydney-runkle 修复
exclude_none
对于computed_field
的 JSON 序列化问题 -
@sydney-runkle 在 pydantic/pydantic-core#1124 中支持用于日期时间的 yyyy-MM-DD 字符串
-
由 @StrawHatDrag0n 在 #8583 中调整生成模式中定义的顺序
New Contributors¶
pydantic
¶
-
@ekeew 在 #6874 中做出了他们的首次贡献
-
@lambertsbennett 在 #8054 中做出了他们的首次贡献
-
@vincent-hachin-wmx 在 #8138 中做出了他们的首次贡献
-
@QuentinSoubeyran Aqemia 在 #7825 中做出了他们的首次贡献
-
@ariebovenberg 在 #8072 中做出了他们的首次贡献
-
@LukeTonin 在 #8223 中做出了他们的首次贡献
-
@denisart 在 #8231 中做出了他们的首次贡献
-
@ianhfc 在 #8066 中做出了他们的首次贡献
-
@eonu 在 #8255 中做出了他们的首次贡献
-
@amandahla 在 #8263 中做出了他们的首次贡献
-
@ibleedicare 在 #8262 中做出了他们的首次贡献
-
@jevins09 在 #8316 中做出了他们的首次贡献
-
@cuu508 在 #8322 中做出了他们的首次贡献
-
@slanzmich 在 #8305 中做出了他们的首次贡献
-
@jensenbox 在 #8331 中做出了他们的首次贡献
-
@szepeviktor 在 #8356 中做出了他们的首次贡献
-
@Elkiwa 在 #8341 中做出了他们的首次贡献
-
@parhamfh 在 #8395 中做出了他们的首次贡献
-
@shenxiangzhuang 在 #8402 中做出了他们的首次贡献
-
@NeevCohen 在 #8387 中做出了他们的首次贡献
-
@zby 在 #8497 中做出了他们的首次贡献
-
@patelnets 在 #8491 中做出了他们的首次贡献
-
@edwardwli 在 #8503 中做出了他们的首次贡献
-
@luca-matei 在 #8507 中做出了他们的首次贡献
-
@Jocelyn-Gas 在 #8437 中做出了他们的首次贡献
-
@bL34cHig0 在 #8501 中做出了他们的首次贡献
-
@tigeryy2 在 #8511 中做出了他们的首次贡献
-
@geospackle 在 #8537 中做出了他们的首次贡献
-
@Anvil 在 #8567 中做出了他们的首次贡献
-
@hungtsetse 在 #8546 中做出了他们的首次贡献
-
@StrawHatDrag0n 在 #8583 中做出了他们的首次贡献
pydantic-core
¶
-
@mariuswinger 在 pydantic/pydantic-core#1087 中做出了他们的首次贡献
-
@adamchainz 在 pydantic/pydantic-core#1090 中做出了他们的首次贡献
-
@akx 在 pydantic/pydantic-core#1123 中做出了他们的首次贡献
v2.6.0b1 (2024-01-19)¶
预发布,详情见 GitHub 发布。
v2.5.3 (2023-12-22)¶
有什么变化¶
Packaging¶
- uprev
pydantic-core
to 2.14.6
Fixes¶
-
通过 @davidhewitt 在 pydantic/pydantic-core#1125 中修复具有递归定义导致引用循环的内存泄漏
v2.5.2 (2023-11-22)¶
有什么变化¶
Packaging¶
- uprev
pydantic-core
to 2.14.5
新功能¶
-
由 @davidhewitt 在 #8159 中添加
ConfigDict.ser_json_inf_nan
Fixes¶
-
在 pydantic/pydantic-core#1075 中,由@sydney-runkle 修复了将 JSON 键中的
Literal
用作dict
键时的验证问题 -
由 @sydney-runkle 在 pydantic/pydantic-core#1076 中修复
custom_init
上Union
成员的错误 -
由@sydney-runkle 在 #8190 中修复
JsonValue
bool
序列化 -
在 pydantic/pydantic-core#1089 中,由 @sydney-runkle 修复了带有
Literal
的不可哈希输入在Union
中的处理问题
v2.5.1 (2023-11-15)¶
有什么变化¶
Packaging¶
-
在 #8120 中,由 @samuelcolvin 将 pydantic-core 升级到 2.14.3
Fixes¶
-
通过 @dmontagu 在 #8097 中修复包描述限制
-
在创建具有由@sydney-runkle 在 #8110 中添加的@validate_call 包装字段注释的模型时修复
ValidateCallWrapper
错误
v2.5.0 (2023-11-13)¶
在 v2.5.0 中发布的代码在功能上与 v2.5.0b1 的相同。
有什么变化¶
Packaging¶
-
将 pydantic-core 从 2.10.1 更新到 2.14.1,这些更新带来的重大变化如下所述,完整的更改日志在此处
-
由 @Viicos 在 #8075 中更新至
pyright==1.1.335
新功能¶
-
允许插件通过 @adriangb 在 #7806 中捕获非
ValidationError
错误 -
在 #7863 中,由 @chris-spann 支持
create_model()
中的__doc__
参数 -
暴露
regex_engine
标志 - 意味着您可以在 @utkini 在 #7768 中的约束中使用 Rust 或 Python 正则表达式库 -
在 #7889 中,由 @alexmojaki 从
ComputedFieldInfo
中的类型注解生成的返回类型进行保存 -
在 #7930 中采用 @Luca-Blight 的
ruff
格式化程序 -
由 @zakstucke 在 #7626 中向配置添加了
validation_error_cause
-
在插件中通过 @hramezani 在 #7861 中使要验证的项目路径可用
-
由 @dmontagu 在 #7983 中添加
CallableDiscriminator
和Tag
-
CallableDiscriminator
被 @dmontagu 在 #8047 中重命名为Discriminator
-
-
让联合案例标签通过 @dmontagu 在 #8001 中影响联合错误消息
-
由 @alexmojaki 在 #8013 中将
examples
和json_schema_extra
添加到@computed_field
-
由 @dmontagu 在 #7998 中添加
JsonValue
类型 -
允许
str
作为参数传递给Discriminator
,由 @dmontagu 在 #8047 中提出 -
在 pydantic/pydantic-core#1006 中,由 @edoakes 添加
SchemaSerializer.__reduce__
方法以实现 pickle 序列化
Changes¶
-
重大变更:用新的智能联合实现替换
ultra_strict
,验证联合的方式已发生重大变化,以提高性能和正确性,我们努力将行为发生变化的情况数量降至绝对最低,详情见 PR - 由 @davidhewitt 在 pydantic/pydantic-core#867 中提出 -
在 #7683 中,当
extra='allow'
时,由 @sydney-runkle 添加对实例方法重新分配的支持 -
支持由 @sydney-runkle 在 #7927 中为无案例的
Enum
类型生成 JSON 模式 -
如果一个类在
BaseModel
之前从Generic
继承,则由 @alexmojaki 在 #7891 中发出警告
Performance¶
-
新的自定义 JSON 解析器,
jiter
由 @samuelcolvin 在 pydantic/pydantic-core#974 中提出 -
由 @samuelcolvin 在 pydantic/pydantic-core#1063 中为 MacOS M1 构建的 PGO
-
对所有包导入使用
__getattr__
,由 @samuelcolvin 在 #7947 中改进导入时间
Fixes¶
-
由@sydney-runkle 在 #7677 中修复
mypy
与RootModel
子类的问题 -
当 @dmontagu 在 #7698 中评估前向引用时,正确重建
FieldInfo
-
修复了从 JSON 加载
SecretStr
的失败(v2.4 中的回归),由 @sydney-runkle 在 #7729 中完成 -
在 #7736 中,由 @sydney-runkle 修复
defer_build
与TypeAdapter
的行为 -
通过 @dmontagu 在 #7742 中提高与旧版
mypy
版本的兼容性 -
修复:当默认值未由@pmmmwh 在 #7719 中设置时,更新
TypeVar
处理 -
在 #7761 中,由 @sydney-runkle 支持对
Enum
类型字段的strict
规范 -
用
weakref.ref
进行包装而不是通过子类化来修复cloudpickle
序列化,由 @edoakes 在 #7780 中完成 -
在子类中保留
model_post_init
内设置的私有属性值,由 @alexmojaki 在 #7775 中提出 -
由 @alexmojaki 在 #7803 中为不可调用的
json_schema_extra
添加更具体的类型 -
当由 @alexmojaki 在 #7800 中删除冻结(模型)字段时引发错误
-
通过@sydney-runkle 在 #7817 中修复具有默认值的模式排序错误
-
对于 @alexmojaki 在 #7802 中未另行指定的别名,使用生成的别名
-
支持
strict
规范用于UUID
类型,由 @sydney-runkle 在 #7865 中 -
JSON 模式:由 @me-and 在 #7810 中修复额外参数处理
-
修复:由 @PrettyWood 在 #7827 中支持具有继承数据类的
pydantic.Field(kw_only=True)
-
支持由 @sydney-runkle 在 #7883 中为带有
__slots__
的类中的方法添加validate_call
装饰器 -
通过 @hramezani 在 #7898 中修复带有
dataclasses.field
默认值的 pydantic 数据类问题 -
由 @sydney-runkle 在 #7899 中修复具有联合类型边界的泛型的模式生成
-
由 @sydney-runkle 在 #7904 中为
importlib_metadata
在 Python 3.7 上修复版本 -
支持 PydanticRecursiveRef 中的
|
运算符(并集),由 @alexmojaki 在 #7892 中提出 -
在 Python 3.12 中由 @dmontagu 在 #7929 中修复
display_as_type
为TypeAliasType
-
由@sydney-runkle 在 #7932 中为
TypedDict
添加对NotRequired
泛型的支持 -
让通用的
TypeAliasType
规范通过 @alexdrydew 在 #7893 中生成不同的模式定义 -
由 @howsunjow 在 #7925 中为继承的数据类的签名添加了修复
-
通过 @joakimnordling 在 #7881 中使 JSON 模式中的模型名称生成更健壮
-
通过 @Iipin 在 #7972 中修复验证错误消息(在测试中)的复数形式
-
PrivateAttr
由 @tabassco 从Annotated
默认位置传递到 #8004 -
在 #8012 中由 @alexmojaki 显示 SecretBytes 时,不要对字节(可能不是 UTF8)进行解码
-
在 #7979 中,由 @Mr-Pepe 使用
classmethod
代替classmethod[Any, Any, Any]
-
@samuelcolvin 在 #8023 中关于无效插件的更清晰错误
-
由 @samuelcolvin 在 #8027 中修正 pydantic 数据类的导入
-
由 @dmontagu 在 #8050 中修复引用重新定义的类型别名的模型的不当行为
-
在 pydantic/pydantic-core#1002 中,由 @sydney-runkle 仅对
Optional
字段进行一次字段验证来修复该字段 -
在 pydantic/pydantic-core#1014 中,由 @sydney-runkle 修复带有
Dict
键的definition-ref
错误 -
修复由@sydney-runkle 在 pydantic/pydantic-core#1017 中允许使用
coerce_numbers_to_str=True
验证bool
类型的错误 -
在 pydantic/pydantic-core#1037 中,@davidhewitt 提出不要在浮点数和小数约束中接受
NaN
-
在 pydantic/pydantic-core#1015 中,由 @michaelhly 为不从 str/int 继承的枚举值添加
lax_str
和lax_int
支持 -
在 pydantic/pydantic-core#1039 中,由 @sydney-runkle 支持
Union
的List
类型列表中的子类 -
如果规范化或非规范化输入有效,则允许针对
max_digits
和decimals
的验证通过,由 @sydney-runkle 在 pydantic/pydantic-core#1049 中提出 -
修复:@Iipin 在 pydantic/pydantic-core#1050 中对
ValidationError
消息的正确复数形式处理 -
禁止 @davidhewitt 在 pydantic/speedate#52 和 pydantic/pydantic-core#1060 中输入的字符串
'-'
为datetime
-
修复:由 @davidhewitt 在 pydantic/pydantic-core#1062 中解决的 NaN 和 Inf 浮点数序列化问题
-
通过 @davidhewitt 在 pydantic/pydantic-core#1068 中恢复许多与 manylinux 兼容的 PGO 构建
New Contributors¶
pydantic
¶
-
@schneebuzz 在 #7699 中做出了他们的首次贡献
-
@edoakes 在 #7780 中做出了他们的首次贡献
-
@alexmojaki 在 #7775 中做出了他们的首次贡献
-
@NickG123 在 #7751 中做出了他们的首次贡献
-
@gowthamgts 在 #7830 中做出了他们的首次贡献
-
@jamesbraza 在 #7848 中做出了他们的首次贡献
-
@laundmo 在 #7850 中做出了他们的首次贡献
-
@rahmatnazali 在 #7870 中做出了他们的首次贡献
-
@waterfountain1996 在 #7878 中做出了他们的首次贡献
-
@chris-spann 在 #7863 中做出了他们的首次贡献
-
@me-and 在 #7810 中做出了他们的首次贡献
-
@utkini 在 #7768 中做出了他们的首次贡献
-
@bn-l 在 #7744 中做出了他们的首次贡献
-
@alexdrydew 在 #7893 中做出了他们的首次贡献
-
@Luca-Blight 在 #7930 中做出了他们的首次贡献
-
@howsunjow 在 #7925 中做出了他们的首次贡献
-
@joakimnordling 在 #7881 中做出了他们的首次贡献
-
@icfly2 在 #7976 中做出了他们的首次贡献
-
@Yummy-Yums 在 #8003 中做出了他们的首次贡献
-
@Iipin 在 #7972 中做出了他们的首次贡献
-
@tabassco 在 #8004 中做出了他们的首次贡献
-
@Mr-Pepe 在 #7979 中做出了他们的首次贡献
-
@0x00cl 在 #8010 中做出了他们的首次贡献
-
@barraponto 在 #8032 中做出了他们的首次贡献
pydantic-core
¶
-
@sisp 在 pydantic/pydantic-core#995 中做出了他们的首次贡献
-
@michaelhly 在 pydantic/pydantic-core#1015 中做出了他们的首次贡献
v2.5.0b1 (2023-11-09)¶
预发布,详情见 GitHub 发布。
v2.4.2 (2023-09-27)¶
有什么变化¶
Fixes¶
-
@dmontagu 在 #7647 中修复了判别联合序列的 JSON 模式的错误
-
在 #7646 中由 @adriangb 修复有区别的联合中的模式引用
-
由 @adriangb 在 #7653 中修复递归模型的 JSON 模式生成
-
由 @adriangb 在 #7654 中为通用模型修复
models_json_schema
-
通过 @adriangb 在 #7658 中修复通用模型签名的失败测试
New Contributors¶
-
@austinorr 在 #7657 中做出了他们的首次贡献
-
@peterHoburg 在 #7670 中做出了他们的首次贡献
v2.4.1 (2023-09-26)¶
有什么变化¶
Packaging¶
-
在 #7633 中,由 @davidhewitt 将 pydantic-core 更新至 2.10.1
Fixes¶
-
在 #7606 中,由 @adriangb 将未替换的类型变量序列化为
Any
-
通过 @adriangb 在 #7624 中删除模式构建缓存
-
修复了一个由 @dmontagu 在 #7625 中提出的 JSON 模式额外内容未进行 JSON 编码的问题
v2.4.0 (2023-09-22)¶
有什么变化¶
Packaging¶
-
通过 @samuelcolvin 在 #7542 中将 pydantic-core 更新至 2.10.0
新功能¶
-
由 @dmontagu 在 #7286 中添加
Base64Url
类型 -
由 @lig 在 #7508 中实现从
number
到str
的可选强制转换 -
如果有数据和字段名称,允许在所有验证器中访问
field_name
和data
,由 @samuelcolvin 在 #7542 中提出 -
由 @hramezani 在 #7552 中添加
BaseModel.model_validate_strings
和TypeAdapter.validate_strings
-
在 #6820 中,由 @lig、@samuelcolvin 和 @Kludex 添加 Pydantic
plugins
实验性实现
Changes¶
-
不要在子类中用私有属性覆盖
model_post_init
,由 @Viicos 在 #7302 中提出 -
在 #7275 中,@dmontagu 使具有默认值的字段在序列化模式中默认不被要求
-
马克
Extra
被 @disrupted 在 #7299 中标记为已弃用 -
通过 @Kludex 在 #7396 中将
EncodedStr
设为数据类 -
由 @samuelcolvin 在 #7569 中将
annotated_handlers
设为公开
Performance¶
-
由 @adriangb 在 #7523 中简化
CoreSchema
的展平和内联 -
在 #7528 中删除 @adriangb 走过时未使用的副本
CoreSchema
-
在 #7527 中,由 @adriangb 为从 CoreSchema 收集定义和无效模式添加缓存
-
急切地解决有区别的联合类型,并缓存我们无法处理的情况,由 @adriangb 在 #7529 中完成
-
在 #7536 中,由 @adriangb 构建热路径时,将
dict.get
和dict.setdefault
替换为更详细的版本CoreSchema
-
缓存无效
CoreSchema
由 @adriangb 在 #7535 中发现 -
通过 @adriangb 在 #7565 中允许禁用
CoreSchema
验证以加快启动时间
Fixes¶
-
通过 @dmontagu 在 #7272 中修复来自父类的
TypedDict
的配置检测 -
通过 @dmontagu 在 #7274 中修复具有异常 MRO 的冻结模型的哈希函数生成
-
在 #7281 中,由 @hramezani 使
strict
配置在路径字段中可覆盖 -
在
GenerateJsonSchema
中默认使用ser_json_<timedelta|bytes>
,由 @Kludex 在 #7269 中 -
在 #7319 中,由 @andree0 添加了一项检查,以验证别名是否为 Python 的标识符
-
当计算字段在 #7346 中覆盖由 @sydney-runkle 定义的字段时引发错误
-
通过 @adriangb 在 #7381 中修复对引用模式应用
SkipValidation
-
在 #7265 中,由 @lig 强制执行具有双前导下划线的私有属性的行为
-
在 #7415 中由 @hramezani 标准化
__get_pydantic_core_schema__
签名 -
修复通用数据类字段变异错误(当使用
TypeAdapter
时),由 @sydney-runkle 在 #7435 中完成 -
在
wrap
模式下由 @pmmmwh 在 #7496 中修复TypeError
上的model_validator
-
通过 @hramezani 在 #7506 中改进枚举错误消息
-
在 #7439 中,当 @dmontagu 处理
ValidationError
时,使repr
对初始化失败的实例起作用 -
通过 @prodigysml 在 #7360 中限制空格修复了正则表达式拒绝服务问题
-
修复 @lig 在 #7566 中对具有
UUID.version=None
的UUID
值的处理 -
修复
__iter__
返回私有cached_property
信息,由 @sydney-runkle 在 #7570 中完成 -
由 @samuelcolvin 在 #7594 中对版本信息消息的改进
New Contributors¶
-
@15498 号在 #7238 中做出了他们的首次贡献
-
@GabrielCappelli 在 #7213 中做出了他们的首次贡献
-
@tobni 在 #7184 中做出了他们的首次贡献
-
@redruin1 在 #7282 中做出了他们的首次贡献
-
@FacerAin 在 #7288 中做出了他们的首次贡献
-
@acdha 在 #7297 中做出了他们的首次贡献
-
@andree0 在 #7319 中做出了他们的首次贡献
-
@gordonhart 在 #7375 中做出了他们的首次贡献
-
@pmmmwh 在 #7496 中做出了他们的首次贡献
-
@disrupted 在 #7299 中做出了他们的首次贡献
-
@prodigysml 在 #7360 中做出了他们的首次贡献
v2.3.0 (2023-08-23)¶
-
🔥 由 @lig 在 #7168 中从存储库中删除孤立的更改文件
-
在文档中添加复制按钮,由 @Kludex 在 #7190 中完成
-
由 @Kludex 在 #7189 中修复关于 JSON 类型的文档
-
在 CI 中由 @hramezani 在 #7191 将 mypy 1.5.0 更新到 1.5.1
-
由 @samuelcolvin 在 #7200 中修复下载链接徽章
-
由 @samuelcolvin 在 #7212 中将 2.2.1 添加到更改日志
-
通过 @dmontagu 在 #7154 中使 ModelWrapValidator 协议通用化
-
由 @samuelcolvin 在 #7214 中更正
Field(..., exclude: bool)
文档 -
在 #7193 中,通过 @adriangb 将阴影属性设为警告而不是错误
-
由 @Kludex 在 #7192 中编写的文档
Base64Str
和Base64Bytes
-
首先由 @samuelcolvin 在 #7024 中修复
config.defer_build
的序列化案例 -
在 #7210 中由 @samuelcolvin 清理 JSON 模式中的模型文档字符串
-
修复 #7228(拼写错误):将
validators.md
中的文档更正为validate_default
参数,由 @lmmx 在 #7229 中完成 -
✅ 由 @lig 在 #7019 中为
TzInfo
在pydantic-core
实现tzinfo.fromutc
方法 -
由 @hramezani 在 #7197 中对
__get_validators__
的支持
v2.2.1 (2023-08-18)¶
-
针对根模型进行
xfail
测试额外停止xfail
,由 @dmontagu 在 #6937 中完成 -
通过 @mciucu 在 #7160 中对相同对象的第二次访问停止来优化递归检测
- fix link in docs by @tlambert03 in #7166
-
在 pydantic/pydantic-core#900 中,由 @adriangb 将 MiMalloc 替换为默认分配器
-
在 #7176 中,由 @adriangb 将 pydantic-core 升级到 2.6.1 并准备 2.2.1 版本的发布
v2.2.0 (2023-08-17)¶
-
在文档网站上,由 @nomadmtb 在 #6869 中将“pipx install”安装命令拆分为两个命令
-
在 #6852 中由 @hramezani 弃用
Field.include
-
通过 @hramezani 在 #6880 中修复默认工厂错误消息中的拼写错误
-
简化打字处理。在 GenerateSchema 中由 @dmontagu 注释于 #6887
-
在 CI 中重新启用 FastAPI 测试,由 @dmontagu 在 #6883 中完成
-
通过 @dmontagu 在 #6566 中使与 json 模式 defrefs 的冲突更难发生
-
@samuelcolvin 在 #6903 中针对
Path
字段的无效输入的清理错误 -
:备忘录: 由 @yezz123 在 #6906 中支持坐标类型
-
修复针对 Python 3.10.0 的
ForwardRef
包装器(在 bpo-45166 之前的垫片),由 @randomir 在 #6919 中完成 -
修复由 @dmontagu 在 #6918 中与 RootModel 复制相关的不当行为
-
修复由 @dmontagu 在 #6923 中提出的由 ParamSpec 导致的递归错误问题
-
由 @Kludex 在 #6924 中向《迁移指南》添加有关受约束类的部分
-
在 #6925 中,由 @Viicos 使用
main
分支处理徽章链接 -
为 @carlbordum 在 #6926 中提出的 v1/v2 注释差异添加测试
-
通过 @dmontagu 在 #6921 中使 v1 mypy 插件同时适用于 v1 和 v2
-
修复了通用模型无法通过 @dmontagu 在 #6933 中使用 BaseModel 进行参数化的问题
-
在 #6938 中,由 @dmontagu 移除带有别名的可区分联合的 xfail
-
通过 @andresliszt 在 #6965 中向计算字段添加 field_serializer
-
使用由 @JeanArhancet 在 #6952 中提出的带有 Type[Union[...]] 的 union_schema
-
通过 @adriangb 在 #6981 中修复继承的 TypedDict 属性/配置
-
在 #6998 中,由 @davidhewitt 修复了在验证器调用两次之前标注的数据类
-
由 @hramezani 在 #7014 中取消选择的更新测试 - fastapi 测试
-
在 #7015 中由 @hramezani 修复验证器文档格式
-
在 #7032 中,由 @AdamVinch-Federated 修复 model_json_schema 的文档字符串中的错别字
-
通过 @samuelcolvin 在 #7026 中使用 pyright 移除未使用的“类型忽略”
-
在 #7030 中由 @adriangb 添加代表 FastAPI 启动时间的基准
-
在 #7029 中由 @adriangb 修复了 Enum 子类的 json_encoders
-
由 @Viicos 在 #7052 中更新关于 base64 编码的
ser_json_bytes
的文档字符串 -
允许
@validate_call
通过 @adriangb 在 #7046 中处理异步方法 -
修复:由 @JeanArhancet 在 #7002 中处理的与
Settings
和SettingsConfigDict
相关的 mypy 错误 -
由 @eumiro 在 #7063 中修复了一些拼写错误(重复的单词以及 it's/its)
-
通过 @harunyasar 在 #7062 中修复文档字符串中的错别字
-
文档:修复由 @swetjen 在 #6995 中提出的 pydantic-settings 包推荐中的损坏 URL
-
在 #6951 中,由 @adriangb 处理应用于不接受它的模式的约束
-
在 #7082 中,由 @eumiro 将 almost_equal_floats 替换为 math.isclose
-
由 @davidhewitt 在 #7077 中将 pydantic-core 升级到 2.5.0
-
添加
short_version
并由 @hramezani 在 #7115 中用于链接 -
📝 由 @Kludex 在 #7113 中向
RootModel
添加使用链接 -
在 #7116 中,由 @Kludex 回滚“修复 mongosrv DSN 的默认端口 (#6827)”
-
在使用文档和迁移指南中阐明 validate_default 和 _Unset 的处理方式,由 @benbenbang 在 #6950 中完成
-
在 #7086 中由 @Viicos 调整
Field.exclude
的文档 -
在 #7103 中,@Viicos 表示不需要
validate_assignment
使用Field.frozen
-
@samuelcolvin 在 #7040 中对
_core_utils
的调整 -
通过 @hramezani 在 #7126 中使 DefaultDict 与集合一起工作
-
不要总是要求输入。在 #7119 中,@dmontagu 将泛型作为部分参数化模型的基础
-
在 #7020 中,由 @dmontagu 修复了 JSON 模式错误使用父类核心模式的问题
-
由 @dmontagu 在 #6940 中修复与 TypedDict 和 alias_generator 相关的失败测试
-
由 @dmontagu 在 #6939 中改进 NameEmail 的错误消息
-
由 @dmontagu 在 #6988 中修复通用计算字段
-
在 #7144 中,由 @dmontagu 在验证期间反映 namedtuple 的默认值
-
更新依赖项,修复 pydantic-core 的使用,由 @dmontagu 在 #7150 中修复 CI 问题
-
在 #7118 中由 @hramezani 添加 mypy 1.5.0
-
在 #7056 中由 @adriangb 处理非 JSON 原生枚举值
-
文档
round_trip
在 Json 类型文档中,由 @jc-louis 在 #7137 中提供 -
放松签名检查,以更好地支持内置函数和 C 扩展函数作为验证器,由 @adriangb 在 #7101 中提出
-
由 @davidhewitt 在 #7151 中添加 union_mode='left_to_right'
-
包括由 @yvalencia91 在 #7124 中针对继承排序的错误消息提示
-
在 #7153 中,@dmontagu 修复了一个文档链接,并解决了另外两个的一些警告
-
在 #7136 中,由 @hramezani 将字段额外键名称包含在警告中
v2.1.1 (2023-07-25)¶
-
在不必要时跳过 FieldInfo 合并,由 @dmontagu 在 #6862 中完成
v2.1.0 (2023-07-25)¶
-
添加
StringConstraints
以供 @adriangb 在 #6605 中用作带注释的元数据 -
尝试由 @adriangb 在 #6683 中修复间歇性失败的 CI
-
删除可选与默认的冗余示例。由 @ehiggs-deliverect 在 #6676 中
-
文档由 @samuelcolvin 在 #6692 中更新
-
在 #6679 中,由 @adriangb 移除验证器文档中的“始终验证”部分
-
通过 @adriangb 在 #6720 中修复了 JSON 模式生成中的递归错误
-
由 @AlexVndnblcke 在 #6730 中修复 secretstr 的子类错误检查
-
由 @davidhewitt 在 #6714 中将 pdm / pdm 锁定文件更新至 2.8.0
-
在更多 CI 工作中取消固定 PDM,由 @davidhewitt 在 #6755 中操作
-
在文档中为辅助包改进源位置,由 @davidhewitt 在 #6749 中完成
-
假设内置函数不接受 @adriangb 在 #6754 中的 info 参数
-
修复了由 @hramezani 在 #6758 中提出的调用
help(BaseModelSubclass)
会引发错误的漏洞 -
在 #6753 中由 @ljodal 修复 mypy 插件对
@model_validator(mode="after")
的处理 -
由 @davidhewitt 在 #6756 中将 pydantic-core 更新至 2.3.1
-
由 @hramezani 在 #6760 中为设置提供的 Mypy 插件
-
使用
contentSchema
关键字用于 JSON 模式,由 @dmontagu 在 #6715 中提出 -
由 @davidhewitt 在 #6769 中进行的有限小数的快速路径检查
-
文档由 @samuelcolvin 在 #6771 中更新
-
通过 @hramezani 在 #6772 中改进 json 模式文档
-
由 @adriangb 在 #6695 中更新验证器文档
-
通过 @dmontagu 在 #6788 中修复包装验证器的类型提示
-
🐛 由 @lig 在 #6628 中修复了 Literal 与其他类型联合的验证警告
-
在 #6685 中,由 @tpdorsey 为 V2 中的泛型支持更新文档
-
在 #6785 中,由 @samuelcolvin 将 pydantic-core 构建信息添加到
version_info()
-
在 #6796 中,由 @dmontagu 修复使用具有默认值的插槽的 pydantic 数据类
-
由 @dmontagu 在 #6789 中修复冻结模型的哈希函数继承问题
-
✨ 由 @Kludex 在 #6653 中添加
SkipJsonSchema
注释 -
如果在 #6797 中使用了无效的字段名称与 Field 一起使用,则会出错,由 @dmontagu 提出
-
由 @adriangb 在 #6776 中将
GenericModel
添加到MOVED_IN_V2
-
在 #6803 中,由 @hramezani 从
docs/usage/types/custom.md
中删除未使用的代码 -
通过 @adriangb 在 #6810 中修复
float
->Decimal
强制转换精度损失 -
在 #6816 中,由 @davidhewitt 从北极星基准中移除电子邮件验证
-
通过 @progsmile 在 #6824 中修复与 mypy 的链接
-
通过 @hramezani 在 #6822 中改进初始化钩子示例
-
由 @dmontagu 在 #6827 中修复 mongosrv DSN 的默认端口
-
改进 API 文档,特别是由 @samuelcolvin 在 #6780 中增加使用和 API 文档之间的更多链接
-
由 @davidhewitt 在 #6831 中将 pydantic-core 更新至 2.4.0
-
通过 @ImogenBits 在 #6809 中修复针对自定义序列类型的
annotated_types.MaxLen
验证器 -
由 @hramezani 在 #6833 中更新 V1
-
使可调用的 JSON 模式额外工作由 @dmontagu 在 #6798 中完成
-
由 @dmontagu 在 #6829 中修复
InstanceOf
的序列化问题 -
在 #6811 中由 @adriangb 重新添加对
json_encoders
的支持 -
在 #6838 中由 @dmontagu 构建模式时更新字段注释
-
使用
WeakValueDictionary
由 @dmontagu 在 #6681 中修复通用内存泄漏 -
通过 @samuelcolvin 在 #6823 中添加
config.defer_build
以可选地使模型构建变得懒惰 -
委托
UUID
序列化给 pydantic-core 由 @davidhewitt 在 #6850 中 -
由 @adriangb 在 #6848 中更新
json_encoders
文档 -
通过 @dmontagu 在 #6686 中使用 validate_call 修复
staticmethod
/classmethod
订单的错误消息 -
由 @samuelcolvin 在 #6847 中改进
Config
的文档 -
更新序列化文档,提及
Field.exclude
在调用时优先于include/exclude
,由 @hramezani 在 #6851 中完成 -
允许通过在 #6737 中由 @adriangb 公开
GenerateSchema
来自定义核心模式生成
v2.0.3 (2023-07-05)¶
-
在迁移文档中提及由 @slafs 在 #6456 中从 PyObject(v1)迁移到 ImportString(v2)
-
通过 @Kludex 在 #6461 中修复发布推文的持续集成
-
修改关于必填/可选/可为空字段的部分。由 @ybressler 在 #6468 中完成
-
如果类型提示实际上不是一种类型,则发出警告,由 @adriangb 在 #6479 中提出
-
在 #6484 中,由 @dmontagu 将 TransformSchema 替换为 GetPydanticSchema
-
修复各种注释类型的不可哈希性,以便 @dmontagu 在 #6480 中用于缓存通用容器
-
PYD-164:由 @adriangb 在 #6490 中重新编写自定义类型文档
-
由 @adriangb 在 #6507 中修复持续集成
-
通过 @adriangb 在 #6511 中修复泛型中的前向引用
-
通过 @dmontagu 在 #6515 中修复 core_schema.ChainSchema 的序列化 JSON 模式生成
-
由 @hramezani 在 #6508 中记录 Pydantic V2 中
Field.alias
行为的变化 -
在 #6519 中,由 @dmontagu 给出更好的错误消息,尝试计算具有未定义字段的模型的 JSON 模式
-
文档
alias_priority
由 @tpdorsey 在 #6520 中 -
由 @tpdorsey 在 #6513 中为类型文档添加重定向
-
允许由 @samuelcolvin 在 #6551 中无需发布即可更新文档
-
通过 @dmontagu 在 #6487 中确保文档测试始终在正确的文件夹中运行
-
在 #6516 中,由 @dmontagu 推迟对序列化函数的返回类型提示的评估
-
在 #6552 中,从 Ruff 中禁用 E501,并仅依赖 @adriangb 的 Black
-
由 @tpdorsey 在 #6492 中更新 V2 的 JSON 模式文档
-
添加由 @dmontagu 在 #6493 中处理循环引用的文档
-
通过 @samuelcolvin 在 #6556 中消除更改文件的需求
-
在 #6547 中由 @davidhewitt 添加“北极星”基准
-
由 @tpdorsey 在 #6470 中更新数据类文档
-
♻️ 在 v1 重定向中使用不同的错误消息,由 @Kludex 在 #6595 中提出
-
⬆ 由 @lig 在 #6589 中将
pydantic-core
升级到 v2.2.0 -
由 @dmontagu 在 #6572 中修复 IPvAny 的序列化
-
通过 @adriangb 在 #6602 中使用 PDM 而非 pip 安装 typing-extensions 来改进持续集成
-
由 @lig 在 #6603 中添加
enum
错误类型文档 -
🐛 由 @lig 在 #6559 中修复了针对 Unicode 字符串的
max_length
问题 -
由 @tpdorsey 在 #6604 中添加通过
pydantic.v1
访问功能的文档 -
在由 @adriangb 在 #6562 中对模型进行迭代时包含额外内容
-
通过 @adriangb 在 #6514 中修复 model_validator 的类型问题
-
由 @adriangb 在 #6327 中对十进制验证器进行润色
-
通过 @dmontagu 在 #6607 中使用固定的 pytest 示例修复各种文档字符串
-
在 #6570 中由 @dmontagu 处理判别联合中的函数验证器
-
审查由 @tpdorsey 在 #6608 中的 json_schema.md
-
通过 @dmontagu 在 #6569 中使 validate_call 对 basemodel 方法起作用
-
由 @davidhewitt 在 #6614 中为大整数 JSON 序列化/反序列化添加测试
-
通过 @hramezani 在 #6616 中修复了带有
dataclasses.field default_factory
的pydantic
数据类问题 -
由 @zakstucke 在 #6617 中修复了 TypeAdapter 的 mypy 类型推断
-
通过 @dmontagu 在 #6609 中使将 None 用作泛型参数可行
-
通过 @dmontagu 在 #6568 中使
$ref
用作别名生效 -
在迁移指南中添加关于
AnyUrl
等更改的注释,由 @davidhewitt 在 #6618 中完成 -
🐛 支持由 @lig 在 #6622 中使用
Field
在RootModel
上定义json_schema_extra
-
由 @dmontagu 在 #6636 中更新 pre-commit 以防止意外提交到主分支
-
由 @dmontagu 在 #6627 中修复 MacOS/Windows 上 Python 3.7 的 PDM CI
-
通过 @dmontagu 在 #6633 中为 pydantic 数据类生成更准确的签名
-
由 @tpdorsey 在 #6638 中对 Pydantic V2 的 Url 类型进行的更新
-
在 #6649 中,由 @StefanBRas 修复
transform
文档字符串中的 Markdown 列表 -
通过 @davidhewitt 在 #6639 中简化 slots_dataclass 构造以安抚 mypy
-
由 @adriangb 在 #6651 中更新 TypedDict 模式生成文档字符串
-
检测并排查 @dmontagu 在 #6655 中的打印错误
-
为 @dmontagu 在 #6641 中关于 pydantic-core PR 766 添加失败测试
-
在 #6634 中,由 @dmontagu 忽略数据类元数据中无法识别的字段
-
通过 @dmontagu 在 #6658 中使不存在的类 getattr 成为 mypy 错误
-
由 @hramezani 在 #6648 中将 pydantic-core 更新至 2.3.0
-
使用 @dmontagu 在 #6664 中来自 typing_extensions 的 OrderedDict
-
修复由 @dmontagu 在 #6659 中针对 JSON 模式额外可调用的类型提示
v2.0.2 (2023-07-05)¶
-
修复了往返腌制/解腌制
RootModel
会更改__dict__
的值的错误,#6457 由 @dmontagu 提出 -
允许单项可区分联合,#6405 由 @dmontagu 提出
-
修复枚举的联合解析问题,#6440 由 @dmontagu 提出
-
文档:修复了
constr
文档,将旧的regex
重命名为新的pattern
,#6452 由 @miili 完成 -
更改
GenerateJsonSchema.generate_definitions
签名,#6436 由 @dmontagu
在此查看完整的更改日志
v2.0.1 (2023-07-04)¶
Pydantic V2 的首次补丁发布
-
通过
setattr
添加的额外字段(例如m.some_extra_field = 'extra_value'
)如果model_config
extra='allowed'
,则会添加到.model_extra
。由 @aaraney 修复 #6333、#6365 -
自动为自定义类型解包 JSON 模式 '$ref',#6343 由 @adriangb
-
修复子模型中带标签的联合的多重处理,#6340 由 @suharnikov
在此查看完整的更改日志
v2.0 (2023-06-30)¶
Pydantic V2 is here!
查看此帖以获取更多详情。
v2.0b3 (2023-06-16)¶
Pydantic V2 的第三个测试版预发布
在此查看完整的更改日志
v2.0b2 (2023-06-03)¶
将 from_attributes
运行时标志添加到 TypeAdapter.validate_python
和 BaseModel.model_validate
。
在此查看完整的更改日志
v2.0b1 (2023-06-01)¶
Pydantic V2 的首次测试版预发布
在此查看完整的更改日志
v2.0a4 (2023-05-05)¶
Pydantic V2 的第四次预发布版
在此查看完整的更改日志
v2.0a3 (2023-04-20)¶
Pydantic V2 的第三个预发布版本
在此查看完整的更改日志
v2.0a2 (2023-04-12)¶
Pydantic V2 的第二个预发布版本
在此查看完整的更改日志
v2.0a1 (2023-04-03)¶
Pydantic V2 的首次预发布!
查看此帖以获取更多详情。
v1.10.17 (2024-06-20)¶
-
在 https://github.com/pydantic/pydantic/pull/9644 中,由 @vfazio 为 1.10.x 宣传 Python 3.12!第二部分
-
在
v1
命名空间中的镜像模块,由 @exs-dwoodward 在 https://github.com/pydantic/pydantic/pull/9660 中修复了 python>3.11 中的类型和对象解析问题 - setup: remove upper bound from python_requires by @vfazio in https://github.com/pydantic/pydantic/pull/9685
v1.10.16 (2024-06-11)¶
- Specify recursive_guard as kwarg in FutureRef._evaluate by @vfazio in https://github.com/pydantic/pydantic/pull/9612
- Fix mypy v1 plugin for upcoming mypy release by @ cdce8p in https://github.com/pydantic/pydantic/pull/9586
-
通过 @exs-dwoodward 从 v1 命名空间直接导入模块/对象,位于 https://github.com/pydantic/pydantic/pull/9162
v1.10.15 (2024-04-03)¶
- Add pydantic.v1 namespace to Pydantic v1 by @exs-dmiketa in https://github.com/pydantic/pydantic/pull/9042
-
由 @SonOfLilit 在 https://github.com/pydantic/pydantic/pull/8819 中为 V1 提供的 typing-extensions 的宽松版本
- patch fix for mypy by @sydney-runkle in https://github.com/pydantic/pydantic/pull/8765
v1.10.14 (2024-01-19)¶
-
由 @dmontagu 在 #7690 中更新 install.md
-
在 #7740 中,由 @sydney-runkle 修复 ci 以仅在发布时部署文档
-
由 @sydney-runkle 在 #8540 和 #8587 中针对 V1 的 Ubuntu 修复
-
修复由 @rdbisme 在 #8407 中复制数据类时的 cached_property 处理
v1.10.13 (2023-09-27)¶
-
修复:对
pydantic.validate_email
、#7673 添加最大长度检查,由 @hramezani 完成 -
文档:修复用于安装 v1 的 pip 命令,#6930 由 @chbndrhnns
v1.10.12 (2023-07-24)¶
-
修复了在
deque
验证时maxlen
属性被丢弃的问题。仅当双端队列项已被键入时才会发生。更改了_validate_sequence_like
函数,#6581 由 @maciekglowka 完成
v1.10.11 (2023-07-04)¶
-
通过相对路径而不是绝对路径在 tools.py 中导入 create_model - 以便在复制到 V2 分支时不会导入 V2 代码,#6361 由 @SharathHuddar
v1.10.10 (2023-06-30)¶
-
在设置管理中添加 Pydantic
Json
字段支持,#6250 由 @hramezani 完成 -
修复了不可哈希值的字面量验证器错误,#6188 由 @markus1978 提交
-
修复了泛型接收前向引用的错误,#6130 由 @mark-todd 提交
-
在 CI 中为内部测试更新 FastAPI 的安装方法,#6117 由 @Kludex
v1.10.9 (2023-06-07)¶
-
修复十进制验证中未忽略的尾随零,#5968 由 @hramezani
- Fix mypy plugin for v1.4.0, #5928 by @cdce8p
-
添加未来和过去日期假设策略,#5850 由 @bschoenmaeckers
-
不建议在 Pydantic 1.x 中使用 Cython 3,#5845 由 @lig 提出
v1.10.8 (2023-05-23)¶
-
修复
Literal
与typing-extension==4.6.0
一起使用时的一个错误,#5826,由 @hramezani 提出 -
这解决了(已关闭的)问题 #3849,即在数据包含未别名的字段名称时,使用可区分联合的别名字段无法验证,#5736 由 @benwah 提出
-
将 email-validator 依赖项更新到 >=2.0.0post2,#5627 由 @adriangb 完成
-
针对 python/typeshed#9771、#5505 中的更改更新
AnyClassMethod
,由 @ITProKyle 完成
v1.10.7 (2023-03-22)¶
-
修复使用
ConstrainedStr
从模型创建模式,将regex
作为字典键,#5223 由 @matejetz -
解决由 explicit_package_bases=True 导致的 mypy 插件中的错误,#5191 由 @dmontagu 提出
-
在 mypy 插件中为没有默认参数的 Field 添加隐式默认值,#5190 由 @dmontagu
-
修复在判别联合中用作字面值的枚举值生成的模式,#5188 由 @javibookline
-
修复当用户在其自身的类中定义
from_orm
时由 pydantic mypy 插件导致的 mypy 错误,#5187 由 @dmontagu 提出 -
修复与 pydantic 数据类、mypy 版本
1.1.1
和自定义 mypy 插件一起使用的InitVar
,#5162 由 @cdce8p 提出
v1.10.6 (2023-03-08)¶
-
实现逻辑以支持通过使用默认值从非标准可调用对象创建验证器,并在检查签名时解包
functools.partial
和functools.partialmethod
,#5126 由 @JensHeinrich -
修复 v1.1.1 的 mypy 插件,并修复 pydantic 数据类的
dataclass_transform
装饰器,#5111 由 @cdce8p 完成 -
当判别器值不可哈希时,引发
ValidationError
,而不是ConfigError
,#4773 由 @kurtmckee
v1.10.5 (2023-02-15)¶
-
修复带有
GenericModel
的参数化基础处理错误,适用于复杂模型集,#5052 由 @MarkusSintonen 提出 -
如果插件配置发生更改,则使 mypy 缓存无效,#5007 由 @cdce8p
-
修复在深度复制由 pydantic 包装的数据类类型时的
RecursionError
问题,#4949 由 @mbillingr 提出 -
修复
X | Y
联合语法错误GenericModel
,#4146 由 @thenx -
将覆盖范围徽章切换为显示此分支/版本的覆盖范围,#5060 由 @samuelcolvin
v1.10.4 (2022-12-30)¶
-
将依赖项更改为
typing-extensions>=4.2.0
,#4885 ,由 @samuelcolvin 操作
v1.10.3 (2022-12-29)¶
注意:由于 #4885 问题,v1.10.3 已从 PyPI 撤回,该问题在 v1.10.4 中已修复。
-
修复自定义根模型的解析,#4883 由 @gou177
-
修复:对冻结或空的数据类使用数据类代理,#4878 由 @PrettyWood
-
在模型实例为默认值之一的模型上修复
schema
和schema_json
,#4781 由 @Bobronium 提出 -
在文档索引页面的赞助商中添加 Jina AI,#4767 ,由 @samuelcolvin
-
修复:支持在
DataclassProxy
、#4695 上的赋值,#4695 由 @PrettyWood 完成 -
将
postgresql+psycopg
添加为PostgreDsn
的允许方案,以便其可与 SQLAlchemy 2 一起使用,#4689 由 @morian 提出 -
允许字典模式同时具有
patternProperties
和additionalProperties
,#4641 由 @jparise 提出 -
修复了由 @mfulgo 提出的在可选列表中传递 None 时的错误
unique_items
, #4568 -
使用
Callable
参数修复GenericModel
时引发了TypeError
,#4551 由 @mfulgo 提出 -
使用
StrictStr
类型注释修复字段正则表达式,#4538 由 @sisp 完成 -
将
dataclass_transform
关键字参数名称从field_descriptors
更正为field_specifiers
,#4500 由 @samuelcolvin 完成 -
修复:在数据类被继承时避免多次调用
__post_init__
,#4487 由 @PrettyWood -
减小二进制轮的大小,#2276 由 @samuelcolvin
v1.10.2 (2022-09-05)¶
-
还原更改:还原 URL 部分的百分比编码,该编码最初由 @samuelcolvin 在 #4224、#4470 中添加
-
防止长(长度 >
4_300
)字符串/字节作为 int 字段的输入,参见 python/cpython#95778 和 CVE-2020-10735,#1477 由 @samuelcolvin -
修复:数据类包装器并非总是被调用,#4477 由 @PrettyWood 提交
-
在解析
mypy
配置时在 Python 3.11 上使用tomllib
,#4476 由 @hauntsaninja -
对
GenericModel
缓存的基本修复,以检测Union
模型中参数的顺序,#4474 由 @sveinugu 完成 -
修复在使用诸如
list
和dict
作为default_factory
这样的裸类型时的 mypy 插件,#4457 由 @samuelcolvin
v1.10.1 (2022-08-31)¶
-
向
pydancic.color.Color
类添加__hash__
方法,#4454 由 @czaki 完成
v1.10.0 (2022-08-30)¶
-
重构整个 pydantic
dataclass
装饰器,使其真正表现得像标准库中的等效装饰器。因此,它保留了__eq__
、__hash__
、... ,并使得与未验证版本的比较成为可能。它还修复了在字段中使用frozen
数据类以及在嵌套数据类中使用default_factory
的问题。添加了对Config.extra
的支持。最后,现在可以直接通过dict
进行配置自定义,#2557 由 @PrettyWood 完成重大变更: *
compiled
布尔值(pydantic 是否使用 Cython 编译)已从main.py
移至version.py
*
既然支持Config.extra
,dataclass
默认会忽略额外的参数(如BaseModel
) *
修复__set_name__
中的 PEP487 协议,用于BaseModel
中的 PrivateAttrs,#4407,由 @tlambert03 完成 *
允许通过parse_env_var
在Config
中对环境变量进行自定义解析,#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
隐式导入ForwardRef
和Callable
而不是typing
的问题,并且公开MappingIntStrAny
,#4358 由 @aminalaee *
从dataclass
装饰器中删除Any
类型,以便它可以与disallow_any_expr
mypy 选项一起使用,#4356 由 @DetachHead 提出 *
已将存储库移至pydantic/pydantic
,#4348 ,由 @yezz123 操作 *
修复当带有Extra.forbid
的数据类多次验证时出现的“不允许的额外字段”错误,#4343 由 @detachhead 提出 *
将 Python 3.9 和 3.10 的示例添加到文档中,#4339 由 @Bobronium *
在生成 OpenAPI 模式定义时,歧视联合模型现在使用oneOf
而不是anyOf
,#4335 由 @MaxwellPayne 提出 *
允许类型检查器推断Json
类型的内部类型。Json[list[str]]
现在将被推断为list[str]
,应使用Json[Any]
而不是普通的Json
。运行时行为未更改,#4332 由 @Bobronium *
通过使用alias is not None
检查而不是bool(alias)
来允许空字符串别名,#4253 由 @sergeytsaplin 提出 *
在Field.outer_type_
中更新ForwardRef
,#4249 由 @JacobHayes 完成 *
__dataclass_transform__
的使用已被typing_extensions.dataclass_transform
取代,这是在 PEP 681 下将 pydantic 模型标记为数据类的首选方式,#4241 由 @multimeric 提出 *
在验证嵌套的NamedTuple
字段时使用父模型的Config
,#4219 由 @synek *
将BaseModel.construct
更新为可与别名字段配合使用,#4192 由 @kylebamos 提出 *
在smart_deepcopy
中捕获某些引发的错误,如果是这样,则恢复到deepcopy
,#4184 由 @coneybeare *
将Config.anystr_upper
和to_upper
kwarg 添加到 constr 和 conbytes 中,#4165 由 @satheler 提出 *
修复当set
和frozenset
包含默认值时的 JSON 模式,#4155 由 @aminalaee 提出 *
告诉 mypy 插件,由@validator
修饰的方法是类方法,#4102 由 @DMRobertson 提供 *
提高 mypy 插件检测必填字段的能力,#4086 由 @richardxia *
在模式中支持类型为Type[]
的字段,#4051 由 @aminalaee 提供 *
在const=True
时在 JSON 模式中添加default
值,#4031 由 @aminalaee 完成 *
在签名生成逻辑中添加保留字检查,#4011 由 @strue36 *
修复复杂嵌套字段的 Json 策略失败问题,#4005 由 @sergiosim 提出 *
添加与 JSON 兼容的浮点数约束allow_inf_nan
,#3994 由 @tiangolo *
当env_prefix
与env_nested_delimiter
有共同字符时,消除未定义行为,#3975 由 @arsenron 提出 *
支持带有create_model
、#3945 的泛型模型,由 @hot123s 提供 *
允许子模型覆盖额外字段信息,#3934 由 @PrettyWood *
记录并测试BaseModel
、#3920 上的结构模式匹配(PEP 636),由 @irgolic 完成 *
修复 Python 时间间隔对象到 ISO 8601 的不正确反序列化,对于负时间间隔。减号在不正确的位置进行了序列化("P-1DT23H59M59.888735S" 而不是正确的 "-P1DT23H59M59.888735S"),#3899 由 @07pepa *
修复在传递模型实例时带有别名的可区分联合字段的验证,#3846 由 @chornsby *
添加一个 CockroachDsn 类型以验证 CockroachDB 连接字符串。该类型支持以下方案:cockroachdb
、cockroachdb+psycopg2
和cockroachdb+asyncpg
,#3839 由 @blubber *
修复 MyPy 插件,使其不会覆盖模型中预先存在的__init__
方法,#3824 由 @patrick91 提出 *
修复 mypy 版本检查,#3783 由 @KotlinIsland *
支持覆盖BaseModel
实例的双下划线属性,#3777 由 @PrettyWood *
添加了ConstrainedDate
和condate
,#3740 由 @hottwaj 完成 *
支持数据类中的kw_only
,#3670 由 @detachhead 提出 *
为Color
类添加比较方法,#3646 由 @aminalaee 完成 *
放弃对 python3.6 的支持,相关清理,#3605 由 @samuelcolvin *
为“非帕斯卡大小写”驼峰式创建了新函数to_lower_camel()
,#3463 由 @schlerp 完成 *
在 Mypy 插件中对default
和default_factory
参数添加检查,#3430 由 @klaa97 完成 *
修复inspect.signature
对于BaseModel
、#3413 的损坏,由 @fix-inspect-signature 完成 *
添加SecretField
抽象类,以便当前和未来所有像SecretStr
和SecretBytes
这样的秘密字段都从其派生,#3409 由 @expobrain *
在PostgresDsn
、#3337 中支持多主机验证,由 @rglsk *
修复非常小的数值 timedelta 值的解析,#3315 由 @samuelcolvin *
将SecretsSettingsSource
更新为尊重config.case_sensitive
,#3273 由 @JeanArhancet *
添加 MongoDB 网络数据源名称(DSN)架构,#3229 由 @snosratiershad *
添加对多个.env 文件的支持,#3222 由 @rekyungmin 提出 *
当单个验证器的多个字段设置不正确时,明确抛出ConfigError
,#3215 由 @SunsetOrange 提出 *
允许在Annotated
内的Field
上使用省略号,对于TypedDicts
是必需的,#3133 由 @ezegomez *
在int_validator
、#3112 中捕获溢出错误,由 @ojii 完成 *
向Representation
类添加一个__rich_repr__
方法,该方法通过 Rich 实现漂亮的打印,#3099 由 @willmcgugan 完成 *
在AnyUrl
和派生类型中添加百分号编码,#3061 由 @FaresAhmedb *
validate_arguments
装饰器现在支持alias
,#3019 由 @MAD-py *
避免在AnyUrl
和 IP 地址字段中使用__dict__
和__weakref__
属性,#2890 由 @nuno-andre *
在字段类型注释中添加使用Final
的能力,#2766 由 @uriyyo *
将要求更新为typing_extensions>=4.1.0
以确保dataclass_transform
可用,#4424 由 @commonism 提出 *
将 Explosion 和 AWS 添加为主赞助商,#4413 由 @samuelcolvin *
更新copy_on_model_validation
的文档以反映最近的更改,#4369 由 @samuelcolvin 完成 *
运行时警告:如果将__slots__
传递给create_model
,则__slots__
将被忽略,#4432 由 @samuelcolvin *
向BaseSettings.Config
添加类型提示以避免 mypy 错误,同时在文档中更正 mypy 版本兼容性通知,#4450 由 @samuelcolvin
v1.10.0b1 (2022-08-24)¶
预发布,详情见 GitHub 发布。
v1.10.0a2 (2022-08-24)¶
预发布,详情见 GitHub 发布。
v1.10.0a1 (2022-08-22)¶
预发布,详情见 GitHub 发布。
v1.9.2 (2022-08-11)¶
还原重大更改:v1.9.1 引入了一个重大更改,默认情况下对模型字段进行深度复制,此版本还原了默认行为以匹配 v1.9.0 及之前的版本,同时还通过 copy_on_model_validation = 'deep'
允许深度复制行为。有关更多信息,请参阅 #4092 。
-
允许对模型字段进行浅拷贝,
Config.copy_on_model_validation
现在是一个字符串,必须是'none'
、'deep'
或'shallow'
,分别对应不拷贝、深度拷贝和浅拷贝;默认'shallow'
,#4093 由 @timkpaine 提供
v1.9.1 (2022-05-19)¶
Thank you to pydantic's sponsors: @tiangolo, @stellargraph, @JonasKs, @grillazz, @Mazyod, @kevinalh, @chdsbd, @povilasb, @povilasb, @jina-ai, @mainframeindustries, @robusta-dev, @SendCloud, @rszamszur, @jodal, @hardbyte, @corleyma, @daddycocoaman, @Rehket, @jokull, @reillysiemens, @westonsteimel, @primer-io, @koxudaxi, @browniebroke, @stradivari96, @adriangb, @kamalgill, @jqueguiner, @dev-zero, @datarootsio, @RedCarpetUp for their kind support.
-
限制
generics._generic_types_cache
和generics._assigned_parameters
的大小,以避免内存使用量无限制增加,#4083 由 @samuelcolvin -
将 Jupyverse 和 FPS 作为使用 pydantic 的 Jupyter 项目添加,#4082 由 @davidbrochart
-
在类型不是模型时加快 pydantic 模型的
__isinstancecheck__
速度,还可能避免内存“泄漏”,#4081 由 @samuelcolvin 提出 -
修复对
FieldInfo
的原地修改,该修改导致了与 PEP 593 类型别名相关的问题,#4067 由 @adriangb 提出 -
通过 @giuliano-oliveira 在使用
pydantic.dataclasses.dataclass
、#4006 时,在 VS Code 中通过__dataclass_transform__
添加自动完成支持 -
从代码库和文档中删除基准测试,#3973 由 @samuelcolvin
-
在 CI 中使用 pyright 进行类型检查,改进 vscode/pylance/pyright 上的文档,#3972 由 @samuelcolvin
-
修复嵌套的 Python 数据类模式回归,#3819 由 @himbeles
-
更新有关 Settings 中源的惰性求值的文档,#3806 由 @garyd203
-
防止字节的子类被转换为字节,#3706 由 @samuelcolvin
-
修复了在使用 PEP585 和 PEP604 类型提示时“错误检查继承”的问题,#3681 由 @aleksul 提出
-
允许在模型中进行自引用
ClassVar
s ,#3679 由 @samuelcolvin -
重大更改,见 #4106:修复与自引用数据类相关的问题,#3675 由 @uriyyo 提出
-
在呈现的 URL 中包含非标准端口号,#3652 由 @dolfinus
-
Config.copy_on_model_validation
进行的是深拷贝而非浅拷贝,#3641 由 @PrettyWood 发布 -
修复:明确判别联合不支持单例,#3636 由 @tommilligan
-
为
setup.py
添加read_text(encoding='utf-8')
,#3625 由 @hswong3i -
修复列表中可区分联合的 JSON 模式生成,#3608 由 @samuelcolvin
v1.9.0 (2021-12-31)¶
Thank you to pydantic's sponsors: @sthagen, @timdrijvers, @toinbis, @koxudaxi, @ginomempin, @primer-io, @and-semakin, @westonsteimel, @reillysiemens, @es3n1n, @jokull, @JonasKs, @Rehket, @corleyma, @daddycocoaman, @hardbyte, @datarootsio, @jodal, @aminalaee, @rafsaf, @jqueguiner, @chdsbd, @kevinalh, @Mazyod, @grillazz, @JonasKs, @simw, @leynier, @xfenix for their kind support.
Highlights¶
-
添加 Python 3.10 支持,#2885 由 @PrettyWood
-
被歧视的工会,#619 作者:@PrettyWood
-
Config.smart_union
为了更好的联合逻辑,#2092 由 @PrettyWood -
适用于 Macos M1 CPU 的二进制文件,#3498 由 @samuelcolvin 提供
-
复杂类型可以通过嵌套的环境变量进行设置,例如
foo___bar
、#3159 ,由 @Air-Mark 提供 -
为 pydantic 文档添加暗黑模式,#2913 由 @gbdlin 提出
-
通过
__dataclass_transform__
、#2721 为 VS Code 添加自动完成支持,由 @tiangolo 完成 -
将“exclude”添加为字段参数,以便可以使用模型配置进行配置,#660 由 @daviskirk
v1.9.0 (2021-12-31) Changes¶
-
将
update_forward_refs
应用于Config.json_encodes
以防止通过字符串定义的类型中的名称冲突,#3583 由 @samuelcolvin 提出 -
扩展 pydantic 的 mypy 插件以支持 mypy 版本
0.910
、0.920
、0.921
和0.930
,#3573 和 #3594 ,由 @PrettyWood、@christianbundy、@samuelcolvin 完成
v1.9.0a2 (2021-12-24) Changes¶
-
支持具有可区分联合的泛型模型,#3551 由 @PrettyWood
-
默认情况下保留
json()
的旧行为,#3542 由 @PrettyWood 提供 -
从
BaseModel
、#3540 中移除了仅输入的__root__
属性,由 @layday 操作 -
构建 Python 3.10 轮子,#3539 由 @mbachry
-
修复具有模型
__repr__
、#3234 的extra
字段的显示,由 @cocolman 完成 -
通过
Config.copy_on_model_validation
复制的模型始终具有所有字段,#3201 由 @PrettyWood 提供 -
来自嵌套字典的嵌套 ORM,#3182 由 @PrettyWood
-
通过 @PrettyWood 修复指向可区分联合部分的链接
v1.9.0a1 (2021-12-18) Changes¶
-
在
Field()
中添加对Decimal
特定验证配置的支持,除了使用condecimal()
之外,以便编辑器和工具能够提供更好的支持,#3507 由 @tiangolo 提出 -
将适用于配备 M1 CPU 的 MacOS 的
arm64
二进制文件添加到 PyPI,#3498 由 @samuelcolvin -
修复在使用包含
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 负责 -
在将字典子类用作字段类型时避免字典强制转换,#3122 由 @PrettyWood
-
添加对
object
类型的支持,#3062 由 @PrettyWood -
将 pydantic 数据类更新为保留父类上的
_special
属性,#3043 由 @zulrang 完成 -
为错误对象添加一个
TypedDict
类,#3038 由 @matthewhughes934 -
修复将注释的子类用作默认值的支持,#3018 由 @JacobHayes 提出
-
使
create_model_from_typeddict
符合 mypy 规范,#3008 由 @PrettyWood 完成 -
在使用
PrivateAttr
、#2989 时实现多重继承,由 @hmvp 完成 -
将环境变量解析为 JSON,如果它们具有带有复杂子字段的
Union
类型,#2936 由 @cbartz -
防止
StrictStr
允许Enum
值,其中枚举从str
继承,#2929 由 @samuelcolvin -
使
SecretsSettingsSource
在从机密文件中获取时解析分配给复杂类型字段的值,就像从环境变量中获取时一样,#2917 由 @davidmreed -
为 pydantic 文档添加暗黑模式,#2913 由 @gbdlin 提出
-
使
pydantic-mypy
插件与pyproject.toml
配置兼容,与mypy
更改保持一致。有关更多信息,请参阅文档,#2908 由 @jrwalk -
添加 Python 3.10 支持,#2885 由 @PrettyWood
-
正确解析带有
Json[T]
、#2860 的通用模型,由 @geekingfrog -
更新关于用于构建文档的 Python 版本的贡献文档,#2856 由 @paxcodes
-
阐明关于 pydantic 对自定义验证和严格类型检查的支持的文档,尽管 pydantic 主要是一个解析库,#2855 由 @paxcodes
-
修复
Deque
字段的模式生成,#2810 由 @sergejkozin 提出 -
修复在混合约束和
Literal
时的一个边缘情况,#2794 由 @PrettyWood 提出 -
修复当
NamedTuple
和TypedDict
直接用作 Pydantic 模型中的字段类型时推迟的注释解析,#2760 由 @jameysharp 提出 -
修复当
mypy
插件在construct
方法调用中针对BaseSettings
派生类失败时的错误,#2753 由 @uriyyo -
为
pydantic.create_model
函数添加函数重载,#2748 由 @uriyyo -
修复与 self 字段声明相关的 mypy 插件问题,#2743 由 @uriyyo 提出
-
行“用户初始化时提供的字段:”末尾的冒号表明其后的代码与之相关。将其更改为句号,#2733 由 @krisaoe
-
将变量
schema
重命名为schema_
,以避免全局变量名称的遮蔽,#2724 ,由 @shahriyarr -
通过
__dataclass_transform__
、#2721 为 VS Code 添加自动完成支持,由 @tiangolo 完成 -
在
BaseConfig
中添加缺失的类型注释并处理max_length = 0
,#2719 由 @PrettyWood 负责 -
将
orm_mode
检查更改为允许使用字典进行递归 ORM 模式解析,#2718 由 @nuno-andre 提出 -
将《Talk Python To Me》播客的第 313 集,其中迈克尔·肯尼迪(Michael Kennedy)和塞缪尔·科尔文(Samuel Colvin)讨论了 Pydantic,添加到文档中,#2712 由 @RatulMaharaj
-
修复当字段类型为
NamedTuple
且具有默认值时的 JSON 模式生成,#2707 由 @PrettyWood -
Enum
字段现在在模式生成中正确支持额外的 kwargs,#2697 由 @sammchardy 提交 -
重大更改,见 #3780:使引用的 pydantic 模型的序列化成为可能,#2650 由 @PrettyWood 提出
-
将
uniqueItems
选项添加到ConstrainedList
,#2618 由 @nuno-andre -
尝试在模型创建时自动评估前向引用,#2588 由 @uriyyo
-
将文档预览和覆盖范围显示切换为使用 smokeshow,#2580 ,作者 @samuelcolvin
-
向 pydantic 模块添加
__version__
属性,#2572 由 @paxcodes 提出 -
为
PostgresDsn
、#2567 添加postgresql+asyncpg
、postgresql+pg8000
、postgresql+psycopg2
、postgresql+psycopg2cffi
、postgresql+py-postgresql
和postgresql+pygresql
方案,由 @postgres-asyncpg 完成 -
当指定
decimal_places
参数时,启用 Hypothesis 插件生成受约束的十进制数,#2524 由 @cwe5590 -
允许
collections.abc.Callable
在 Python 3.9 中用作类型,#2519 由 @daviskirk 提出 -
文档更新:关于使用
pip install
时如何自定义编译pydantic
的方法,在setup.py
中的小改动以在编译时允许自定义
CFLAGS
,#2517 由@peterroelants
提出 -
消除
default_factory
的副作用,即使设置了Config.validate_all
,也仅运行一次,#2515 由 @PrettyWood -
为
AnyUrl
主机的 IP 正则表达式添加前视。这允许具有类似 IP 的 DNS 标签的 URL 进行验证,因为它们是完全有效的主机名,#2512 由 @sbv-csis 提出 -
在生成的 JSON 模式中为定长元组设置
minItems
和maxItems
,#2497 由 @PrettyWood -
将
strict
参数添加到conbytes
,#2489 由 @koxudaxi -
在通用模型中支持用户定义的通用字段类型,#2465 由 @daviskirk
-
在文档中添加
GetterDict
子类化的示例和简短说明,#2463 由 @nuno-andre 提出 -
添加
KafkaDsn
类型,HttpUrl
现在对于 http 默认端口为 80 ,对于 https 默认端口为 443 ,#2447 由 @MihanixA -
添加
PastDate
和FutureDate
类型,#2425 由 @Kludex -
支持为具有子类型的
Generic
字段生成模式,#2375 由 @maximberg 提出 -
修复(编码器):将
NameEmail
序列化为字符串,#2341 由 @alecgerona 完成 -
如有可能,在
Union
中添加Config.smart_union
以防止强制操作,更多信息请参阅文档,#2092 由 @PrettyWood -
添加将
typing.Counter
用作模型字段类型的能力,#2060 由 @uriyyo -
在构建新的参数化类时向
__bases__
添加参数化子类,以便A <: B => A[int] <: B[int]
,#2007 由 @diabolo-dan -
创建允许符合 RFC 8089 的 URL 的
FileUrl
类型。添加host_required
参数,默认情况下为True
(AnyUrl
及其子类),False
在RedisDsn
、FileUrl
中,#1983 由 @vgerak -
添加
confrozenset()
,类似于conset()
和conlist()
,#1897 由 @PrettyWood -
如果被重写,则停止调用父类
root_validator
,#1895 由 @PrettyWood 提出 -
将
repr
(默认为True
)参数添加到Field
,以使其在BaseModel
的默认表示中隐藏,#1831 由 @fnep -
接受空的查询/片段 URL 部分,#1807 由 @xavier
v1.8.2 (2021-05-11)¶
警告
一个安全漏洞,级别“中等”在 v1.8.2 中已修复。请尽快升级。请查看安全公告 CVE-2021-29510
-
安全修复:修复
date
和datetime
解析,以便传递'infinity'
或float('inf')
(或它们的负值)不会导致无限循环,详见安全公告 CVE-2021-29510 -
通过生成有效名称来修复带有枚举的模式生成,#2575 由 @PrettyWood
-
修复带有枚举成员的
Literal
的 JSON 模式生成,#2536 由 @PrettyWood -
修复在创建类期间作为关键字参数传递的配置声明中的错误,#2532 由 @uriyyo
-
允许在类 kwargs 中传递
json_encoders
,#2521 由 @layday -
支持具有自定义
__eq__
、#2483 的任意类型,由 @PrettyWood 提供 -
支持在
validate_arguments
中的Annotated
以及使用 Python 3.9 的通用模型中,#2483 由 @PrettyWood
v1.8.1 (2021-03-03)¶
针对 v1.8
中的回归错误和新功能的错误修复
-
允许
Config.field
的元素更新Field
的元素,#2461 由 @samuelcolvin -
使用
BaseModel
字段和自定义根类型修复验证,#2449 由 @PrettyWood 完成 -
将
Pattern
编码器暴露给fastapi
,#2444 由 @PrettyWood -
当指定
multiple_of
参数时,启用 Hypothesis 插件生成受约束的浮点数,#2442 由 @tobi-lipede-oodle -
在使用某些类型(如
Enum
或Literal
)与通用模型时避免RecursionError
,#2436 由 @PrettyWood -
不要在模型的子类中覆盖已声明的
__hash__
,#2422 由 @PrettyWood -
修复与
Path
和UUID
相关的自定义类型的mypy
投诉,#2418 由 @PrettyWood 提出 -
支持复合类型的适当可变长度元组,#2416 由 @PrettyWood
v1.8 (2021-02-26)¶
Thank you to pydantic's sponsors: @jorgecarleitao, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @koxudaxi, @timdrijvers, @mkeen, @meadsteve, @ginomempin, @primer-io, @and-semakin, @tomthorogood, @AjitZK, @westonsteimel, @Mazyod, @christippett, @CarlosDomingues, @Kludex, @r-m-n for their kind support.
Highlights¶
-
用于测试的假设插件,#2097 由 @Zac-HD
-
支持
NamedTuple
和TypedDict
,#2216 由 @PrettyWood 提供 -
支持模型字段上的
Annotated
提示,#2147 由 @JacobHayes 提出 -
frozen
参数在Config
上以允许模型被哈希,#1880 由 @rhuille
Changes¶
-
重大变更,从 v1 中删除旧的弃用别名,#2415 由 @samuelcolvin 提出
-
删除文档中关于迁移到 v1 的注释
-
移除
Schema
,其已被Field
取代 -
移除
Config.case_insensitive
,其已被Config.case_sensitive
取代(默认False
) -
移除被
Config.allow_population_by_field_name
替代的Config.allow_population_by_alias
-
删除被
model.__fields__
替换的model.fields
-
删除被
str(model)
替换的model.to_string()
-
移除被
model.__dict__
替代的model.__values__
-
-
重大变更:始终仅验证带有
each_item
的第一个子级别项。在某些复合类型中确实存在一些边缘情况,其中验证的项是最后一个子级别项,#1933 由 @PrettyWood 提出 -
更新文档扩展以修复本地语法突出显示,#2400 由 @daviskirk
-
修复:允许
utils.lenient_issubclass
在 Python >= 3.9 中处理像list[str]
这样的typing.GenericAlias
对象,#2399 由 @daviskirk 完成 -
通过允许使用 pydantic
Field
或'metadata'
的 kwarg ofdataclasses.field
改进 pydanticdataclass
的字段声明,#2384 由 @PrettyWood 提出 -
将
typing-extensions
作为必需的依赖项,#2368 由 @samuelcolvin 提出 -
使
resolve_annotations
更宽松,允许缺少模块,#2363 由 @samuelcolvin -
允许通过类关键字参数配置模型,#2356 由 @Bobronium
-
防止
Mapping
子类总是被强制转换为dict
,#2325 由 @ofek -
修复:允许
None
用于类型Optional[conset / conlist]
,#2320 由 @PrettyWood -
支持空元组类型,#2318 由 @PrettyWood 提出
-
修复:
python_requires
元数据要求 >=3.6.1,#2306 由 @hukkinj1 完成 -
正确编码
Decimal
,无论有无小数位,#2293 由 @hultner -
修复:在
BaseModel.copy(update=…)
中更新__fields_set__
,#2290 由 @PrettyWood 完成 -
修复:通过 @PrettyWood 保持带有
BaseModel.construct()
、#2281 的字段的顺序 -
支持为通用字段生成模式,#2262 由 @maximberg
-
修复
validate_decorator
,以使**kwargs
在关键字与*args
或**kwargs
名称相同时不排除值,#2251 由 @cybojenix 提出 -
按照原生函数的行为,在
validate_arguments
中防止使用关键字参数覆盖位置参数,#2249 由 @cybojenix 提出 -
为
con*
类型的函数添加文档,#2242 由 @tayoogunbiyi 完成 -
在使用带有嵌套模型的
parse_obj()
时支持自定义根类型(又名__root__
),#2238 由 @PrettyWood 提出 -
支持自定义根类型(又名
__root__
)与from_orm()
,#2237 由 @PrettyWood -
在创建模型时,确保基于 @kollmats 的 #1944 和 @samuelcolvin 的 #2228,Cython 化的函数保持不变
-
解决转换为 Pydantic 的标准库数据类的前向引用,#2220 由 @PrettyWood 提出
-
添加对
NamedTuple
和TypedDict
类型的支持。在BaseModel
或 pydanticdataclass
内部使用时,现在会处理和验证这两种类型。还添加了两个实用工具create_model_from_namedtuple
和create_model_from_typeddict
,#2216 由 @PrettyWood 完成 -
当类型为
Union[Type[...], ...]
、#2213 时,不要忽略带注释的字段,由 @PrettyWood -
当
root_validator
未返回dict
(例如None
)时,引发用户友好型的TypeError
,#2209 由 @masalim2 -
在
strict_url
字段类型的allowed_schemes
参数上添加一个FrozenSet[str]
类型的注释,#2198 由 @Midnighter -
向
Field
添加allow_mutation
约束,#2195 由 @sblack-usu -
允许带有
default_factory
的Field
用作带有validate_arguments
修饰的函数的参数,#2176 由 @thomascobb -
仅发出警告以允许不存在的机密目录,#2175 由 @davidolrik
-
修复 URL 正则表达式以解析不带查询字符串的片段,#2168 由 @andrewmwhite
-
修复:确保始终返回
Literal
字段类型中的一个值,#2166 由 @PrettyWood -
支持模型字段上的
typing.Annotated
提示。现在可以在类型提示中使用Annotated[..., Field(...)
设置Field
;所有其他注释将被忽略,但仍可通过get_type_hints(..., include_extras=True)
、#2147 由 @JacobHayes 查看 -
在
ConstrainedBytes
中添加了StrictBytes
类型以及strict=False
选项,#2136 由 @rlizzo 完成 -
向
constr
和conbytes
添加了Config.anystr_lower
和to_lower
关键字参数,#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
s 而无需重新注释它们,#2061 由 @layday -
为
Pattern
类型添加默认编码器,#2045 由 @PrettyWood 完成 - Add
NonNegativeInt
,NonPositiveInt
,NonNegativeFloat
,NonPositiveFloat
, #1975 by @mdavis-xyz -
在颜色的字符串格式中使用 % 表示百分比,#1960 由 @EdwardBetts
-
修复了在从多个具有在不同类中声明的相同名称的
BaseModel
构建模式时导致KeyError
被引发的问题,#1912 由 @JSextonn -
将
rediss
(通过 SSL 的 Redis)协议添加到RedisDsn
允许没有user
部分的 URL(例如,rediss://:pass@localhost
),#1911 由 @TrDex -
向
Config
添加一个新的frozen
布尔型参数(默认值:False
)。设置frozen=True
会执行allow_mutation=False
所做的一切,并且还会为模型生成一个__hash__()
方法。如果所有属性都是可哈希的,这会使模型的实例有可能是可哈希的,#1880 由 @rhuille -
修复具有相同名称的多个枚举的模式生成,#1857 由 @PrettyWood
-
在
PaymentCardNumber
类型中为 13/19 位 VISA 信用卡添加了支持,#1416 由 @AlexanderSov 完成 -
修复:在使用递归
GenericModel
时防止RecursionError
,#1370 由 @xppt -
在 JSON 模式中,将
enum
用于typing.Literal
,#1350 由 @PrettyWood 提出 -
修复:某些递归模型不需要
update_forward_refs
并且默默地表现不正确,#1201 由 @PrettyWood -
修复了在具有字段的泛型模型中,类型变量嵌套在另一种类型
a: List[T]
中的错误。这使得这些模型能够按预期进行子类化和组合,#947 由@daviskirk 提出 -
添加
Config.copy_on_model_validation
标志。当设置为False
时,pydantic 在验证时将保留用作字段的模型不变,而不是对其进行重建(复制),#265 由 @PrettyWood 提出
v1.7.4 (2021-05-11)¶
-
安全修复:修复
date
和datetime
的解析,以使传递'infinity'
或float('inf')
(或它们的负值)不会导致无限循环,请参阅安全公告 CVE-2021-29510
v1.7.3 (2020-11-30)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen, @meadsteve for their kind support.
-
修复:为必填(可选)字段设置正确的默认值,#2142 由 @PrettyWood
-
修复:支持带有通用模型的
underscore_attrs_are_private
,#2138 由 @PrettyWood 提出 -
修复:当
validate_assignment
开启时,在root_validator
中更新所有修改的字段值,#2116 由 @PrettyWood -
允许对从内置的
dataclasses.dataclass
动态创建的pydantic.dataclasses.dataclass
进行腌制,#2111 由 @aimestereo -
修复了一个回归问题,其中枚举字段不会将关键字参数传播到模式,#2109 由 @bm424 提出
-
当
Config.underscore_attrs_are_private
被设置时,将__doc__
视为私有属性而忽略,#2090 由 @PrettyWood
v1.7.2 (2020-11-01)¶
-
修复缓慢的
GenericModel
混凝土模型创建,允许在模块中重复使用GenericModel
混凝土名称,#2078 由 @Bobronium -
当
validate_assignment
被设置时保持字段的顺序,#2073 由 @PrettyWood -
在转换为 pydantic
dataclass
时转发 stdlibdataclass
的所有参数,#2065 由 @PrettyWood
v1.7.1 (2020-10-28)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen for their kind support.
-
修复将配置作为参数传递时
validate_arguments
的注释,#2055 由 @layday -
修复使用
PrivateAttr
、#2048 时的 mypy 赋值错误,由 @aphedges 提出 -
修复在覆盖
__init__
时导致TypeError
的underscore_attrs_are_private
问题,#2047 由 @samuelcolvin 提出 -
修复了 v1.7 中引入的回归问题,该问题涉及当
validate_assignment=True
、#2044 时字段验证器中的异常处理,由 @johnsabath 提出 -
修复:pydantic
dataclass
可以继承自 stdlibdataclass
且Config.arbitrary_types_allowed
受支持,#2042 由 @PrettyWood
v1.7 (2020-10-26)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api for their kind support.
Highlights¶
-
Python 3.9 支持,感谢 @PrettyWood
-
私有模型属性,感谢 @Bobronium
-
“机密文件”在
BaseSettings
中的支持,感谢 @mdgilene -
将标准库数据类转换为 Pydantic 数据类,并在模型中使用标准库数据类,感谢 @PrettyWood
Changes¶
-
重大变更:移除
__field_defaults__
,添加default_factory
支持并带有BaseModel.construct
。在__fields__
属性中的字段上使用.get_default()
方法替代,#1732 由 @PrettyWood -
重新安排 CI 以将代码检查作为单独的作业运行,为不同任务拆分安装配方,#2020 由 @samuelcolvin
-
允许泛型模型的子类将超类的某些或所有类型参数具体化,同时在子类中定义新的类型参数,#2005 由 @choogeboom
-
在
BaseModel.__setattr__
中使用正确的values
参数类型调用验证器,当模型配置中的validate_assignment = True
时,#1999 由 @me-ransh -
强制
fields.Undefined
为单例对象,修复继承的通用模型模式,#1981 由 @daviskirk -
在源代码分发中包含测试,#1976 由 @sbraz
-
添加使用带有秘密类型的
min_length/max_length
约束的能力,#1974 由 @uriyyo -
还要在
validate_assignment
开启时检查root_validators
,#1971 由 @PrettyWood 提供 -
修复当存在自定义验证器时常量验证器不运行的问题,#1957 由 @hmvp 提出
-
将
deque
添加到字段类型中,#1935 由 @wozniakty -
为 Python 3.9 添加基本支持,#1832 由 @PrettyWood
-
修复 exporting_models.md#modelcopy 锚点中的错别字和不正确的描述,#1821 由 @KimMachineGun 提出
-
为
BaseSettings
添加了读取“机密文件”的能力,#1820 由 @mdgilene -
添加
parse_raw_as
实用功能,#1812 由 @PrettyWood -
支持
dotenv
文件的主目录相对路径(例如~/.env
),#1803 由 @PrettyWood 提出 -
澄清
parse_file
的文档,表明该参数应该是文件路径而不是类文件对象,#1794 由 @mdavis-xyz 提出 -
修复当一个类嵌套在
BaseModel
中且名为Model
时 mypy 插件的误报,#1770 由 @selimb 提出 -
在模式生成中添加 Pattern 类型的基本支持,#1767 由 @PrettyWood
-
支持枚举模式中的自定义标题、描述和默认值,#1748 由 @PrettyWood 提出
-
当
use_enum_values
为 True 时正确表示Literal
枚举,#1747 由 @noelevans -
允许将时区信息添加到要格式化为时间对象的字符串中。允许的格式为
Z
表示 UTC 或偏移量表示绝对的正或负时间偏移。或者可以省略时区数据,#1744 由 @noelevans -
为
ForwardRef
添加带有 Python 3.6 签名的存根__init__
,#1738 由 @sirtelemak 完成 -
修复嵌套模型中前向引用和可选字段的行为,#1736 由 @PrettyWood
-
将
Enum
和IntEnum
作为字段的有效类型添加,#1735 由 @PrettyWood 提出 -
将
create_model
的__module__
参数的默认值从None
更改为'pydantic.main'
。将创建的具体模型的引用设置为其模块以允许序列化(不适用于在函数中创建的模型),#1686 由 @Bobronium -
添加私有属性支持,#1679 由 @Bobronium 提出
-
将
config
添加到@validate_arguments
,#1663 由 @samuelcolvin -
允许子代设置模型覆盖父代设置模型中定义的字段的环境变量名称,这些字段的
Config
中带有env
。此前,仅适用env_prefix
配置选项,#1561 由@ojomio -
在创建模式
$ref
时支持ref_template
,#1479 由 @kilo59 提供 -
向
PyObject
添加一个__call__
存根,以便 mypy 知道它是可调用的,#1352 由 @brianmaissy -
pydantic.dataclasses.dataclass
装饰器现在支持内置的dataclasses.dataclass
。因此,可以轻松地将现有的dataclass
转换以添加 Pydantic 验证。此外,还支持嵌套的数据类,#744 由 @PrettyWood
v1.6.2 (2021-05-11)¶
-
安全修复:修复
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 报头格式,@flapili 的 #1654 -
文档默认
regex
锚定语义,#1648 由 @yurikhan -
在 class_validators.py 中使用
chain.from_iterable
。这是使用itertools.chain
的一种更快速、更地道的方式。它不是计算可迭代对象中的所有项并将它们存储在内存中,而是逐个计算,并且从不存储为一个巨大的列表。这可以节省运行时间和内存空间,#1642 由 @cool-RR -
添加
conset()
,类似于conlist()
,#1623 由 @patrickkwang -
使 Pydantic 错误(可)序列化,#1616 由 @PrettyWood 提出
-
允许对
dotenv
文件进行自定义编码,#1615 由 @PrettyWood 提出 -
确保
SchemaExtraCallable
始终被定义以在 BaseConfig 上获得类型提示,#1614 由 @PrettyWood -
更新日期时间解析器以支持负时间戳,#1600 由 @mlbiche
-
更新 mypy,移除
AnyType
对Type[Any]
的别名,#1598 由 @samuelcolvin 提出 -
调整根验证器的处理方式,以便从所有失败的根验证器中汇总错误,而不是仅报告第一个失败的根验证器,#1586 由 @beezee
-
使
__modify_schema__
在枚举上应用于枚举模式而不是使用枚举的字段,#1581 由 @therefromhere -
修复在高级包含/排除中与索引键结合使用
__all__
键时的行为,这些字段是序列,#1579 由 @xspirus -
子类验证器在引用父类中定义的
List
字段时不会运行,当each_item=True
。在文档中添加了一个示例来说明这一点,#1566 由 @samueldeklund -
在模式中将
schema.field_class_to_schema
更改为支持frozenset
,#1557 由 @wangpeibao 完成 -
仅针对字段模式调用
__modify_schema__
,#1552 由 @PrettyWood 发起 -
将
fields.py
中的field.validate_always
的赋值进行移动,以使验证器的always
参数在继承方面起作用,#1545 由 @dcHHH 提出 -
添加了通过 16 字节字符串(例如
b'\x12\x34\x56\x78' * 4
)进行 UUID 实例化的支持。这样做是为了支持 sqlalchemy 中的BINARY(16)
列,#1541 由 @shawnwall 完成 -
添加一个测试断言,即
default_factory
可以返回一个单例,#1523 由 @therefromhere -
添加
NameEmail.__eq__
,以便将重复的NameEmail
实例评估为相等,#1514 由 @stephen-bunn -
在 pydantic 文档站点中添加 datamodel-code-generator 链接,#1500 由 @koxudaxi
-
在文档中添加了“关于 Pydantic 的讨论”部分,并附上了 Alexander Hultnér 的“Pydantic 介绍”视频的链接,#1499 由 @hultner 提交
-
如果可能,仅调用
default_factory
一次,并在模式中不设置默认值,以避免default_factory
的某些副作用,#1491 由 @PrettyWood 提出 -
添加了有关将数据类转储为 JSON 的文档,#1487 由 @mikegrima 完成
-
将
BaseModel.__signature__
设为仅类可用,因此从模型实例获取__signature__
将会引发AttributeError
,#1466 由 @Bobronium -
在秘密类型的模式中包含
'format': 'password'
,#1424 由 @atheuz 提出 -
修改
ConstrainedFloat
上的模式约束,以便如果exclusiveMinimum
和最小值等于-math.inf
,则它们不包含在模式中,如果maximum
等于math.inf
,则exclusiveMaximum
和maximum
不包含在模式中,#1417 由 @vdwees 提出 -
在
.dict()
中压缩内部__root__
字典(并且,推而广之,在.json()
中),#1414 由 @patrickkwang -
将
const
验证器移至后置验证器,以便对解析后的值进行验证,#1410 由 @selimb 提出 -
修复模型验证以处理嵌套的字面值,例如
Literal['foo', Literal['bar']]
、#1364 ,由 @DBCerigo 完成 -
从
RedisDsn
中删除user_required = True
,不需要用户和密码,#1275 由 @samuelcolvin -
从具有
Union
和自定义Field
的字段的模式中删除多余的allOf
,#1209 由 @mostaphaRoudsari -
将 OpenAPI 模式生成的更新输出所有枚举作为单独的模型。现在,模型不再在模型模式中内联枚举值,而是使用
$ref
属性指向枚举定义,#1173 由 @calvinwyoung 提出
v1.5.1 (2020-04-23)¶
-
使用
extra: allow
生成签名从不使用字段名称,#1418 由 @prettywood -
避免修改
Field
的默认值,#1412 由 @prettywood
v1.5 (2020-04-18)¶
-
为
.dict()
、._iter()
、... 、不可变的、#1404 制定包含/排除参数,由 @AlexECX 完成 -
在
model._iter()
中的包含/排除操作始终使用字段的真实名称,无论by_alias
如何,#1397 由 @AlexECX 提出 -
将构造正则表达式示例更新为包含起始行和结束行,#1396 由 @lmcnearney
-
确认 shallow
model.copy()
确实对属性进行浅拷贝,#1383 由 @samuelcolvin 提出 -
将
main.create_model()
的model_name
参数重命名为__model_name
,以便将model_name
用作字段名称,#1367 由 @kittipatv 提出 -
在 mypy 插件中,将非 Var 属性的异常抛出替换为静默传递,#1345 由 @b0g3r 提出
-
移除 Python 3.8 对
typing_extensions
的依赖,#1342 由 @prettywood 提出 -
使
SecretStr
和SecretBytes
初始化具有幂等性,#1330 由 @atheuz -
使用 JSON 方法使文档制作秘密类型可转储,#1328 由 @atheuz
-
将所有测试和构建移至 GitHub Actions,添加 Windows 和 macOS 二进制文件,感谢 @StephenBrown2 的诸多帮助,#1326 由 @samuelcolvin 提交
-
在
PaymentCardNumber
、PaymentCardBrand
中修复卡号长度检查,现在PaymentCardBrand
从str
继承,#1317 由 @samuelcolvin 完成 -
让
BaseModel
从Representation
继承,以便在覆盖__str__
时让 mypy 满意,#1310 由 @FuegoFro -
允许
None
作为所有可选列表字段的输入,#1307 由 @prettywood -
将
datetime
字段添加到default_factory
示例中,#1301 由 @StephenBrown2 完成 -
允许已知类型的子类使用超类编码器进行编码,#1291 由 @StephenBrown2
-
通过 @masalim2 从具有
'__all__'
、#1286 的子模型/字典列表/元组的所有元素中排除导出字段 -
将 pydantic.color.Color 对象作为 Color 字段的可用输入,#1258 由 @leosussan
-
在示例中,将可为空的字段类型写为
Optional
,以便这些是有效的 mypy 注释,#1248 由 @kokes -
使
pattern_validator()
接受预编译的Pattern
对象。将str_validator()
的返回类型修正为str
,#1237 由 @adamgreg -
记录如何管理泛型和继承,#1229 由 @esadruhn
-
update_forward_refs()
BaseModel 方法现在复制类模块的__dict__
而不是对其进行修改,#1228 由 @paul-ilyin -
支持使用
@validate_arguments
、#1222 的实例方法和类方法,由 @samuelcolvin 提供 -
将
default_factory
参数添加到Field
中,通过传递一个零参数的可调用对象来创建动态默认值,#1210 由 @prettywood 提供 -
添加对
NewType
的List
、Optional
等的支持,#1207 由 @Kazy 完成 -
为
root_validator
修复 mypy 签名,#1192 由 @samuelcolvin 提出 -
修复了嵌套“自定义根类型”模型的解析,#1190 由 @Shados 完成
-
添加
validate_arguments
函数装饰器,用于检查函数的参数是否与类型注解匹配,#1179 由 @samuelcolvin -
将
__signature__
添加到模型中,#1034 由 @Bobronium 提供 -
重构
._iter()
方法,dict(model)
的速度提升 10 倍,#1017 由 @Bobronium 完成
v1.4 (2020-01-24)¶
-
重大更改:别名优先级逻辑已更改,因此字段上的别名始终优先于从
alias_generator
开始的别名,以避免出现错误/意外行为,详情请见此处,#1178 由 @samuelcolvin 提出 -
在顶级域名(TLD)中添加对 Unicode 和 Punycode 的支持,#1182 由 @jamescurtin 提出
-
在赋值期间修复验证器中的
cls
参数,#1172 由 @samuelcolvin -
为
PaymentCardNumber
、#1166 完成 Luhn 算法,由 @cuencandres 完成 -
添加对实现
__get_validators__
(如自定义数据类型)的泛型的支持,#1159 由 @tiangolo 提出 -
为无限生成器添加支持,使用
Iterable
,#1152 ,由 @tiangolo 完成 -
修复
url_regex
以接受在第一个字符之后带有+
、-
和.
的模式,#1142 由 @samuelcolvin -
将
version_info()
移至version.py
,建议在问题中使用,#1138 由 @samuelcolvin -
通过推迟一些模块加载和正则表达式编译,将 pydantic 的导入时间提高约 50%,#1127 由 @samuelcolvin
-
修复
EmailStr
和NameEmail
以在 Cython 中接受它们自身的实例,#1126 由 @koxudaxi 提出 -
将模型类传递给
Config.schema_extra
可调用对象,#1125 由 @therefromhere -
修复 URL 中用户名和密码的正则表达式,#1115 由 @samuelcolvin
-
添加对嵌套泛型模型的支持,#1104 由 @dmontagu
-
将
__all__
添加到__init__.py
以防止来自 mypy 的“隐式重新导出”错误,#1072 由 @samuelcolvin -
为
BaseSettings
、#1011 添加对使用“dotenv”文件的支持,由 @acnebs 完成
v1.3 (2019-12-21)¶
-
将
schema
和schema_model
更改为通过使用其__pydantic_model__
功能来处理数据类,#792 由 @aviramha -
添加了一个选项,如果使用关键字
skip_on_failure=True
进行值验证失败,则跳过root_validator
,#1049 由 @aviramha 完成 -
允许
Config.schema_extra
可调用,以便对生成的模式进行后处理,#1054 由 @selimb 提出 -
将 mypy 更新至 0.750 版本,#1057 由 @dmontagu 完成
-
诱使 Cython 允许 str 子类化,#1061 由 @skewty
-
除非属性
__schema_attributes__
为True
,否则防止将类型属性添加到模式中,#1064 由 @samuelcolvin -
将
BaseModel.parse_file
更改为使用Config.json_loads
,#1067 由 @kierandarcy -
针对可选的
Json
字段的修复,#1073 由 @volker48 完成 -
将使用 Cython 编译时的默认线程数更改为 1,允许通过
CYTHON_NTHREADS
环境变量进行覆盖,#1074 由 @samuelcolvin 提出 -
在 Pydantic 的 CI 测试期间运行 FastAPI 测试,#1075 由 @tiangolo
-
我的 mypy 严格性约束,以及对类型注释的相关调整,#1077 由 @samuelcolvin
-
将
__eq__
添加到 SecretStr 和 SecretBytes 以允许“值相等”,#1079 由 @sbv-trueenergy -
修复嵌套 None 情况的模式生成,#1088 由 @lutostag
-
对类似序列对象的一致性检查,#1090 由 @samuelcolvin
-
修复在与
env_prefix
一起使用时BaseSettings
上的Config
继承问题,#1091 由 @samuelcolvin 提出 -
针对
__modify_schema__
与field_class_to_schema*
冲突时的修复,#1102 由 @samuelcolvin 完成 -
文档:修复在填充
BaseSettings
子类属性时对区分大小写的环境变量名称的解释,#1105 由 @tribals 完成 -
在文档中将 django-rest-framework 基准重命名,#1119 由 @frankie567
v1.2 (2019-11-28)¶
-
可能的重大更改:添加对所需
Optional
与name: Optional[AnyType] = Field(...)
的支持,并重构ModelField
创建以保留required
参数值,#1031 由 @tiangolo 提出;详情见此处 -
为
cattrs
、#513 添加基准测试,由 @sebastianmika 完成 -
将
exclude_none
选项添加到dict()
及其好友,#587 由 @niknetniko -
为
valideer
、#670 添加基准测试,由 @gsakkis 完成 -
为将数据临时解析为任意与 pydantic 兼容的类型添加
parse_obj_as
和parse_file_as
函数,#934 由 @dmontagu 提出 -
向验证器添加
allow_reuse
参数,从而允许验证器重用,#940 由 @dmontagu 提出 -
为自定义根模型添加映射类型的支持,#958 由 @dmontagu
-
Mypy 插件对数据类的支持,#966 由 @koxudaxi
-
添加对数据类默认工厂的支持,#968 由 @ahirner 提出
-
添加一个
ByteSize
类型用于将字节字符串(1GB
)转换为普通字节,#977 由 @dgasmith -
修复 @samuelcolvin 提出的关于
@root_validator(pre=True)
、#984 的 mypy 投诉 -
将 Python 3.8 的 manylinux 二进制文件添加到 PyPI,同时支持 manylinux2010,#994 由 @samuelcolvin
-
将字节大小转换为另一个单位,#995 由 @dgasmith 完成
-
修复模型的
__str__
和__repr__
继承,#1022 由 @samuelcolvin 完成 -
在文档中添加推荐部分,#1025 由 @sullivancolin 提出
-
为 Python 3.8 添加对
typing.Literal
的支持,#1026 由 @dmontagu 完成
v1.1.1 (2019-11-20)¶
-
修复子模型中使用复杂字段可能导致字段配置不正确的错误,#1015 由 @samuelcolvin 提出
v1.1 (2019-11-07)¶
-
添加一个用于类型检查的 mypy 插件
BaseModel.__init__
及更多,#722 由 @dmontagu -
更改
GenericModel.__class_getitem__
的返回类型类型提示以防止 PyCharm 警告,#936 由 @dmontagu 提出 -
修复
Any
的使用以允许None
,还支持TypeVar
,从而允许使用未参数化的集合类型,例如Dict
和List
,#962 由 @samuelcolvin -
在子字段上设置
FieldInfo
以修复复杂嵌套类型的模式生成,#965 由 @samuelcolvin 提出
v1.0 (2019-10-23)¶
-
重大变更:弃用
Model.fields
属性,改用Model.__fields__
,#883 由 @samuelcolvin 提出 -
重大变更:更改别名的优先级,使子模型别名覆盖父别名,包括使用
alias_generator
、#904 (由 @samuelcolvin 提出) -
重大更改:将
skip_defaults
重命名为exclude_unset
,并添加排除实际默认值的能力,#915 由 @dmontagu -
将
**kwargs
添加到pydantic.main.ModelMetaclass.__new__
,以便__init_subclass__
能够在扩展的BaseModel
类上采用自定义参数,#867 由 @retnikt -
修复具有默认值的类型的字段,#880 由 @koxudaxi
-
当用于设置模型的是
alias
而非env
时,使用FutureWarning
而非DeprecationWarning
,#881 由 @samuelcolvin -
修复与
BaseSettings
继承和alias
被设置为None
相关的问题,#882 由 @samuelcolvin 提出 -
修改
__repr__
和__str__
方法,使其在所有公共类中保持一致,添加__pretty__
以支持 python-devtools,#884 由 @samuelcolvin 提出 -
case_insensitive
在BaseSettings
配置上的弃用警告,#885 由 @samuelcolvin 发出 -
对于
BaseSettings
递归地合并环境变量和代码内的值,只要它们合并在一起时能创建一个有效的对象,以允许拆分初始化参数,#888 由 @idmitrievsky -
更改秘密类型示例,#890 由 @ashears
-
将
Model.construct()
的签名更改得更用户友好,记录construct()
的用法,#898 由 @samuelcolvin -
为
construct()
方法添加示例,#907 由 @ashears -
改进对复杂类型的
Field
约束的使用,如果约束不可执行则引发错误,还支持模式中带有省略号Tuple[X, ...]
、Sequence
和FrozenSet
的元组,#909 由 @samuelcolvin -
为布尔值缺失有效值更新文档,#911 由 @trim21
-
针对
ModelField
、#912 的更好的str
/repr
逻辑,由 @samuelcolvin 提出 -
修复
ConstrainedList
,更新模式生成以反映min_items
和max_items
Field()
参数,#917 由 @samuelcolvin -
允许在
dict()
的include
和exclude
参数中设置抽象集合(例如字典键),#921 由 @samuelcolvin -
通过使用
pydantic_encoder
修复ValidationError.json()
上的 JSON 序列化错误,#922 由 @samuelcolvin 负责 -
阐明
remove_untouched
的用法,改进没有验证器的类型的错误消息,#926 由 @retnikt
v1.0b2 (2019-10-07)¶
-
将
StrictBool
typecheck 标记为bool
以允许默认值且不会出现 mypy 错误,#690 由 @dmontagu 提出 -
将文档构建从 Sphinx 转移到 MkDocs,重写了大部分文档,#856 由 @samuelcolvin
-
为
GenericModel
子类添加对自定义命名方案的支持,#859 由 @dmontagu 提出 -
将
if TYPE_CHECKING:
添加到排除的行中以进行测试覆盖,#874 由 @dmontagu 完成 -
将
allow_population_by_alias
重命名为allow_population_by_field_name
,移除关于它的不必要警告,#875 由 @samuelcolvin
v1.0b1 (2019-10-01)¶
-
重大更改:将
Schema
重命名为Field
,将其变为一个函数以安抚 mypy,#577 由 @samuelcolvin 提出 -
重大变更:由 @dmontagu 对
bool
、#617 的解析行为进行修改 -
重大变更:
get_validators
不再被识别,使用__get_validators__
。Config.ignore_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 提出 -
重大更改:由 @Raphael-C-Almeida 向
post_init_post_parse
添加了对initvars
的支持,#748 -
重大更改:对于具有自定义根的模型,使
BaseModel.json()
仅序列化__root__
键,#752 由 @dmontagu 提出 -
重大变更:对
URL
解析逻辑的完全重写,#755 由 @samuelcolvin 完成 -
重大变更:当子类中未提供时,为字段确定保留超类注释,#757 由 @dmontagu 提出
-
重大变更:
BaseSettings
现在使用特殊的env
设置来定义要读取哪些环境变量,而不是别名,#847 由 @samuelcolvin 提出 -
在验证器中添加对
assert
语句的支持,#653 由 @abdusco 提出 -
更新文档以指定使用
pydantic.dataclasses.dataclass
和子类化pydantic.BaseModel
,#710 由 @maddosaurus -
允许通过
json_loads
和json_dumps
Config
属性进行自定义 JSON 解码和编码,#714 由 @samuelcolvin -
使所有带注释的字段按照声明的顺序出现,#715 由 @dmontagu
-
使用 pytest 测试
mypy
集成,#735 由 @dmontagu -
将
__repr__
方法添加到ErrorWrapper
,#738 由 @samuelcolvin -
为数据类中的
FrozenSet
成员添加了支持,并在尝试使用 Pydantic 不支持的typing
模块中的类型时提供了更好的错误,#745 由 @djpetti 提出 -
为 Pycharm 插件添加文档,#750 由 @koxudaxi
-
修复文档中的错误示例,#753 由 @dmontagu 提出
-
将与打字相关的对象移至
pydantic.typing
,#761 ,由 @samuelcolvin 操作 -
对
ErrorWrapper
、ValidationError
和日期时间解析的小性能改进,#763 由 @samuelcolvin 完成 -
对
datetime
/date
/time
/timedelta
类型的改进:更具描述性的错误,将错误更改为value_error
而非type_error
,支持字节,#766 由 @samuelcolvin -
修复具有多个允许值的
Literal
类型的错误消息,#770 由 @dmontagu 提出 -
通过将下划线转换为空格改进了 JSON 模式中的自动生成的
title
字段,#772 由 @skewty -
支持
mypy --no-implicit-reexport
用于数据类,同时尊重 pydantic 本身中的--no-implicit-reexport
,#783 由 @samuelcolvin 提出 -
添加
PaymentCardNumber
类型,#790 由 @matin -
修复列表的常量验证,#794 由 @hmvp
-
在不允许有额外字段的模型的架构中将
additionalProperties
设置为 false,#796 由 @Code0x58 提出 -
EmailStr
验证方法现在根据 RFC 5321 以区分大小写的方式返回本地部分,#798 由 @henriklindgren 提出 -
增加了对
ConstrainedFloat
、ConstrainedInt
和ConstrainedStr
严格性验证的能力,并添加了StrictFloat
和StrictInt
类,#799 由 @DerRidda 完成 -
改进对
None
和Optional
的处理,在验证器上用each_item
替换whole
(反向含义,默认False
),#803 由 @samuelcolvin 负责 -
添加对
Type[T]
类型提示的支持,#807 由 @timonbimon 提出 -
通过移除
change_exceptions
带来的性能改进,更改 pydantic 错误的构建方式,#819 由 @samuelcolvin -
修复在解析过程中由
BaseModel
类型的模型字段导致ValidationError
时出现的错误消息,#820 由 @dmontagu -
允许在
Config
上使用getter_dict
,将GetterDict
修改为更像Mapping
对象,从而更易于处理,#821 由 @samuelcolvin -
仅在基础
GenericModel
类上检查TypeVar
参数,#842 由 @zpencerq -
将
Model._schema_cache
重命名为Model.__schema_cache__
,Model._json_encoder
重命名为Model.__json_encoder__
,Model._custom_root_type
重命名为Model.__custom_root_type__
,#851 由 @samuelcolvin 完成
v0.32.2 (2019-08-17)¶
(文档可在此处获取)
-
修复带有数据类继承的
__post_init__
用法,由 @samuelcolvin 修复 #739 -
修复 GenericModels 类上必填字段的验证,#742 由 @amitbl
-
修复在
GenericModel
字段上定义自定义Schema
的问题,#754 由 @amitbl 提出
v0.32.1 (2019-08-08)¶
-
当
validate_assignment
开启时,不验证额外字段,#724 由 @YaraslauZhylko
v0.32 (2019-08-06)¶
-
将模型名称添加到
ValidationError
错误消息中,#676 由 @dmontagu -
重大更改:在
BaseModel
上删除__getattr__
并将__values__
重命名为__dict__
,使用__values__
属性时发出弃用警告,属性访问速度最多提高 14 倍,#712 由 @Bobronium 完成 -
在 Python 3.6 中支持
ForwardRef
(无自引用注释),#706 由 @koxudaxi 提出 -
在
Config
子类中实现schema_extra
,#663 由 @tiangolo 完成
v0.31.1 (2019-07-31)¶
-
为
EnumError
、#697 修复 JSON 生成,由 @dmontagu 完成 -
更新众多依赖项
v0.31 (2019-07-24)¶
-
对浮点
multiple_of
值的更好支持,#652 由 @justindujardin -
为
NewType
和Literal
修复模式生成,#649 由 @dmontagu 完成 -
修复
alias_generator
和字段配置冲突,#645 由 @gmetzker 处理,#658 由 @Bobronium 处理 -
针对
EnumError
、#673 的更详细消息,由 @dmontagu 提供 -
为
dict
、json
和copy
增加高级排除支持,#648 由 @Bobronium 完成 -
修复
GenericModel
中具有具体参数化字段的模型的错误,#672 由 @dmontagu 提出 -
为
Literal
类型添加文档,#651 由 @dmontagu 完成 -
为自定义描述符支持添加
Config.keep_untouched
,#679 由 @Bobronium 提出 -
在内部使用
inspect.cleandoc
获取模型描述,#657 由 @tiangolo 提供 -
将
Color
添加到模式生成中,由 @euri10 完成 -
为 Literal 类型添加文档,#651 由 @dmontagu
v0.30.1 (2019-07-15)¶
-
修复以便继承并更改
__init__
的嵌套类能够被正确处理,同时仍允许self
作为参数,#644 由 @lnaden 和 @dgasmith 完成
v0.30 (2019-07-07)¶
-
在代码中强制使用单引号,#612 由 @samuelcolvin 提出
-
修复数据类继承和
__post_init__
、#606 导致的无限递归,由 @Hanaasagi 完成 -
由 @dmontagu 为
GenericModel
、#610 修复默认值 -
明确自引用模型需要 Python 3.7 及以上版本,#616 由 @vlcinsky
-
修复类型的截断,#611 由 @dmontagu
-
添加
alias_generator
支持,#622 由 @Bobronium -
修复未参数化的泛型类型模式生成,#625 由 @dmontagu
-
修复具有对同一模型的多个/循环引用的模式生成,#621 由 @tiangolo 和 @wongpat 完成
-
支持自定义根类型,#628 由 @koxudaxi 提出
-
在
parse_obj
中支持self
作为字段名称,#632 由 @samuelcolvin
v0.29 (2019-06-19)¶
- support dataclasses.InitVar, #592 by @pfrederiks
-
更新了文档,以阐明在属性注释下定义多种类型时
Union
的用法,并展示类型顺序如何影响所提供值的编组,#594 由 @somada141 完成 - add
conlist
type, #583 by @hmvp -
为泛型添加支持,#595 由 @dmontagu 提出
v0.28 (2019-06-06)¶
-
修复在 Python 3.7 中使用具有循环引用的模型时对 JSON 模式生成的支持,#572 由 @tiangolo
-
支持
__post_init_post_parse__
在数据类上,#567 由 @sevaho -
允许将数据类转储为 JSON,#575 由 @samuelcolvin 和 @DanielOberg 完成
-
ORM 模式,#562 由 @samuelcolvin
-
在 IPython 上修复
pydantic.compiled
,#573 由 @dmontagu 和 @samuelcolvin 完成 - add
StrictBool
type, #579 by @cazgp
v0.27 (2019-05-30)¶
-
重大更改
_pydantic_post_init
在验证之前执行数据类的原始__post_init__
,#560 由 @HeavenVolkoff -
修复未指定参数的泛型类型的处理,#550 由 @dmontagu
-
重大变更(可能):这是使用 Cython 编译的第一个版本,请查看文档,如果遇到问题请提交问题报告
v0.27.0a1 (2019-05-26)¶
-
为
list
、tuple
和set
、#540 修复 JSON 模式,由 @tiangolo 完成 -
使用 Cython 编译,
manylinux
二进制文件,其他一些性能改进,#548 由 @samuelcolvin 完成
v0.26 (2019-05-22)¶
-
为
IPvAnyAddress
、IPvAnyInterface
、IPvAnyNetwork
#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
的模式生成进行修复 #532 由 @euri10 完成 -
添加
Color
类型,#504 由 @pilosus 和 @samuelcolvin
v0.25 (2019-05-05)¶
-
改进关于自引用模型和注释的文档,#487 由 @theenglishway
-
使用额外的密钥修复
.dict()
,#490 由 @JaewonKim 完成 -
在
Schema
、#434 中支持const
关键字,由 @Sean1708
v0.24 (2019-04-23)¶
-
修复子类型中
ForwardRef
的处理,例如Union
、#464 ,由 @tiangolo 完成 -
修复秘密序列化,#465 由 @atheuz
-
支持数据类的自定义验证器,#454 由 @primal100 提出
-
修复
parse_obj
以应对类似字典的对象,#472 由 @samuelcolvin -
修复嵌套基于数据类的模型中的模式生成,#474 由 @NoAnyLove
-
为
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
收集错误,#450 由 @tigerwings -
支持专业的
ClassVars
,#455 由 @tyrylu -
修复
ipaddress
类型的 JSON 序列化,#333 由 @pilosus 完成 -
添加
SecretStr
和SecretBytes
类型,#452 由 @atheuz
v0.22 (2019-03-29)¶
-
从
ipaddress
标准库添加IPv{4,6,Any}Network
和IPv{4,6,Any}Interface
类型,#333 由 @pilosus -
为
datetime
类型添加文档,#386 由 @pilosus 完成 -
修复基于数据类模型中的模式生成,#408 由 @pilosus
-
修复嵌套模型中的路径,#437 由 @kataev
-
添加
Sequence
支持,#304 由 @pilosus
v0.21.0 (2019-03-15)¶
-
修复
NoneIsNotAllowedError
消息中的错别字,#414 由 @YaraslauZhylko 发布 -
添加
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 提出 -
支持
ForwardRef
(因此也支持from __future__ import annotations
)使用数据类,#397 由 @samuelcolvin 提出
v0.20.0a1 (2019-02-13)¶
-
重大更改(可能):验证器的参数解析更加复杂,现在允许
values
、config
和field
的任何子集,例如(cls, value, field)
,但是可变关键字参数(“**kwargs
”)必须称为kwargs
,#388 由 @samuelcolvin -
重大更改:向
BaseModel.dict()
添加skip_defaults
参数以允许跳过未明确设置的字段,Model.construct()
的签名已更改,#389 由 @dgasmith 完成 -
为 PEP-561 支持添加
py.typed
标记文件,#391 由 @je-l 完成 -
修复针对多重继承/混入的
extra
行为,#394 由 @YaraslauZhylko 提出
v0.19.0 (2019-02-04)¶
- Support
Callable
type hint, fix #279 by @proofit404 -
修复带有
validator
修饰符的字段的模式,由 @tiangolo 修复 #375 -
将
multiple_of
约束添加到ConstrainedDecimal
、ConstrainedFloat
、ConstrainedInt
及其相关类型condecimal
、confloat
和conint
#371,感谢 @StephenBrown2 -
已弃用
ignore_extra
和allow_extra
配置字段,转而支持extra
,#352 由 @liiight 提出 -
为所有函数添加类型注释,使用 mypy 进行全面测试,#373 由 @samuelcolvin
-
针对
validate_all
或validate_always
的“缺失”错误的修复,#381 由 @samuelcolvin 完成 -
将日期/日期时间解析的第二个/毫秒分水岭更改为
2e10
,#385 ,由 @samuelcolvin 完成
v0.18.2 (2019-01-22)¶
-
修复带有
Optional
字段的模式生成,由 @samuelcolvin 修复 #361
v0.18.1 (2019-01-17)¶
-
添加
ConstrainedBytes
和conbytes
类型,#315 @Gr1N -
在包中添加
MANIFEST.in
以包含许可证.tar.gz
,#358 由 @samuelcolvin
v0.18.0 (2019-01-13)¶
-
重大变更:不要对字典的键调用验证器,#254 由 @samuelcolvin
-
当默认值为
None
或类型为可选时,使用always=True
修复验证器,同时防止为子字段调用whole
验证器,由 @samuelcolvin 修复 #132 -
改进设置优先级的文档,并允许其轻松更改,#343 由 @samuelcolvin
-
修复
ignore_extra=False
和allow_population_by_alias=True
,由 @samuelcolvin 修复 #257 -
重大变更:默认将
BaseConfig
属性min_anystr_length
和max_anystr_length
设置为None
,由 @tiangolo 在 #350 中修复 #349 -
添加对延迟注释的支持,#348 由 @samuelcolvin
v0.17.0 (2018-12-27)¶
-
将
timedelta
的模式修复为数字,#325 由 @tiangolo 完成 -
防止验证器在继承后被反复调用,#327 由 @samuelcolvin
-
在 IPython 中防止重复验证器检查,由 @samuelcolvin 修复 #312
-
在文档中添加“使用 Pydantic”部分,#323 由 @tiangolo 提交,#326 由 @samuelcolvin 提交
-
修复由 @nkonin 标注为
: dict
、: list
、: tuple
和: set
、#330 及 #335 的字段的模式生成 -
在模式中为作为字典键的受约束字符串添加支持,#332 由 @tiangolo
-
在数据类装饰器中支持传递 Config 类,#276 由 @jarekkar (重大更改:此操作取代了带有
config
的validate_assignment
参数) -
对嵌套数据类的支持,#334 由 @samuelcolvin
-
获取带有
PyObject
的ImportError
时出现更好的错误,#309 由 @samuelcolvin -
将
get_validators
重命名为__get_validators__
,使用旧名称时发出弃用警告,#338 由 @samuelcolvin -
通过从字段中排除此类属性来支持
ClassVar
,#184 由 @samuelcolvin 提供
v0.16.1 (2018-12-10)¶
-
修复
create_model
以正确使用传入的__config__
,#320 由 @hugoduncan
v0.16.0 (2018-12-03)¶
-
重大变更:重构模式生成以与 JSON 模式和 OpenAPI 规范兼容,#308 由 @tiangolo
-
将
schema
添加到schema
模块,以便从基础模型生成顶级模式,#308 由 @tiangolo -
向
Schema
类添加其他字段,以声明对str
和数值的验证,#311 由 @tiangolo -
在字段上将
_schema
重命名为schema
,#318 由 @samuelcolvin 操作 -
将
case_insensitive
选项添加到BaseSettings
Config
,#277 由 @jasonkuhrt
v0.15.0 (2018-11-18)¶
-
将代码库迁移为使用 black,#287 由 @samuelcolvin
-
修复设置中别名的使用,#286 由 @jasonkuhrt 和 @samuelcolvin 完成
-
修复
parse_date
、#298 中的日期时间解析,由 @samuelcolvin 完成 -
允许数据类继承,由 @samuelcolvin 修复 #293
- fix
PyObject = None
, fix #305 by @samuelcolvin -
允许
Pattern
类型,由 @samuelcolvin 修复 #303
v0.14.0 (2018-10-02)¶
-
数据类装饰器,#269 由 @Gaunt 和 @samuelcolvin 提出
v0.13.1 (2018-09-21)¶
-
修复 int_validator 未将
bool
转换为int
的问题 #264 由 @nphyatt 提出 -
为
BaseModel.copy()
#249、@gangefors 添加深度复制支持
v0.13.0 (2018-08-25)¶
-
如果字段的名称遮蔽了现有的
BaseModel
属性 #242,则引发异常 -
添加
UrlStr
和urlstr
类型 #236 -
时间差 json 编码 ISO8601 和总秒数,自定义 json 编码器 #247,由 @cfkanesan 和 @samuelcolvin
-
允许
timedelta
对象作为timedelta
类型属性的值(与datetime
等行为匹配) #247
v0.12.1 (2018-07-31)¶
-
修复使用
typing.Any
#237 定义的字段的模式生成
v0.12.0 (2018-07-31)¶
-
在
.dict()
和.json()
模型方法中添加by_alias
参数 #205 - add Json type support #214
- support tuples #227
-
架构 #213 的重大改进和变更
v0.11.2 (2018-07-05)¶
- add
NewType
support #115 -
修复
list
、set
和tuple
验证 #225 -
分离出
validate_model
方法,允许错误与有效值一起返回 #221
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: remove msgpack parsing #201
-
添加
FilePath
和DirectoryPath
类型 #10 -
模型模式生成 #190
-
模型和模式的 JSON 序列化 #133
v0.10.0 (2018-06-11)¶
-
添加
Config.allow_population_by_alias
#160,谢谢 @bendemaree -
重大变更:新的错误格式 #179,感谢 @Gr1N
-
重大更改:移除了
Config.min_number_size
和Config.max_number_size
#183,感谢 @Gr1N -
重大更改:将
lt
和gt
参数对conint
等的行为纠正。#188 对于旧行为,请使用le
和ge
#194,感谢 @jaheba -
添加了错误上下文,并能够使用
Config.error_msg_templates
#183 重新定义错误消息模板,感谢 @Gr1N -
修复验证器异常 #150 中的错别字
-
复制默认为模型值,因此不同的模型不会共享对象 #154
v0.9.1 (2018-05-10)¶
-
允许在配置类上自定义
get_field_config
#159 -
添加
UUID1
、UUID3
、UUID4
和UUID5
类型 #167,感谢 @Gr1N -
修改一些不一致的文档字符串和注释 #173,感谢 @YannLuo
-
修复外来类型的类型注释 #171,感谢 @Gr1N
-
在奇异类型中重复使用类型验证器 #171
-
每月计划的需求更新 #168
-
添加
Decimal
、ConstrainedDecimal
和condecimal
类型 #170,谢谢 @Gr1N
v0.9.0 (2018-04-28)¶
-
调整电子邮件验证器导入错误消息 #145
-
修复输入为 0 #144 时
parse_date()
和parse_datetime()
的解析错误,感谢 @YannLuo -
将
Config.anystr_strip_whitespace
和strip_whitespace
关键字参数添加到constr
,默认值为False
#163,谢谢 @Gr1N -
添加
ConstrainedFloat
、confloat
、PositiveFloat
和NegativeFloat
类型 #166,感谢 @Gr1N
v0.8.0 (2018-03-25)¶
-
修复
inherit_config
#139 的类型注释 -
重大变更:在验证器中检查无效的字段名称 #140
-
验证父模型的属性 #141
-
重大更改:电子邮件验证现在使用 email-validator #142
v0.7.1 (2018-02-07)¶
-
修复与
create_model
修改基类相关的错误
v0.7.0 (2018-02-06)¶
-
增加了与抽象基类(ABCs)的兼容性 #123
- add
create_model
method #113 #125 -
重大更改:在模型中将
.config
重命名为.__config__
-
重大更改:在模型中删除已弃用的
.values()
,改用.dict()
-
删除对
OrderedDict
的使用并使用简单的字典 #126 - add
Config.use_enum_values
#127 -
添加形式为
@validate('*')
#128 的通配符验证器
v0.6.4 (2018-02-01)¶
-
允许 Python 日期和时间对象 #122
v0.6.3 (2017-11-26)¶
-
修复在没有
README.rst
存在的情况下直接安装
v0.6.2 (2017-11-13)¶
-
无效验证器使用的错误
-
在
Settings
中对复杂模型进行更安全的检查
v0.6.1 (2017-11-08)¶
-
防止重复的验证器,#101
-
将
always
关键字参数添加到验证器中,#102
v0.6.0 (2017-11-07)¶
-
任务验证 #94,感谢 petroswork!
-
环境变量中用于复杂类型的 JSON,#96
-
为复杂验证添加
validator
装饰器,#97 -
贬值
values(...)
并用.dict(...)
替换,#99
v0.5.0 (2017-10-23)¶
- 添加
UUID
验证 #89 -
如果错误对象(JSON)中的
index
和track
为 null,则将其从错误对象中移除 #90 -
改进当提供列表而非字典时的错误文本 #90
-
将基准测试表添加到文档 #91
v0.4.0 (2017-07-08)¶
-
在字符串验证错误中显示长度
-
在继承期间修复配置中的别名 #55
- 简化错误显示
-
在
truncate
中使用 Unicode 省略号 -
添加
parse_obj
、parse_raw
和parse_file
辅助函数 #58 -
将仅注释字段切换为在字段列表中排在首位而不是最后一位
v0.3.0 (2017-06-21)¶
-
通过
config.allow_mutation = False
的不可变模型,相关的清理和性能改进 #44 -
不可变的辅助方法
construct()
和copy()
#53 -
允许对模型进行腌制 #53
-
setattr
已被移除,因为__setattr__
现在是智能的 #44 -
raise_exception
已移除,模型现在总是抛出异常 #44 -
实例方法验证器已移除
-
django-restful-framework 基准测试已添加 #47
- fix inheritance bug #49
-
使 str 类型更严格,以便列表、字典等不会被强制转换为字符串。#52
-
添加
StrictStr
,其仅始终将字符串作为输入 #52
v0.2.1 (2017-06-07)¶
-
pypi 和 travis 一起搞砸了
v0.2
的部署,这应该能解决它
v0.2.0 (2017-06-07)¶
-
重大变更:模型中的
values()
现在是一个方法而不是属性,接受include
和exclude
参数 -
允许仅注释字段支持 mypy
-
为模型添加漂亮的
to_string(pretty=True)
方法
v0.1.0 (2017-06-03)¶
- add docs
- add history
本文总阅读量次