pydantic/pydantic
开发工具用 Python 类型注解做数据校验与解析的基础库,适合需要处理外部数据或配置的后端开发者。
项目介绍
Pydantic Validation 把普通的 Python 3.10+ 类型注解变成运行时的数据校验和解析逻辑。开发者声明一个模型后,Pydantic 会按字段类型做合理转换、套用默认值,并在数据不符合要求时抛出明确的校验错误。README 强调模型应保持为「纯正、规范的 Python」,这样编辑器和 linter 无需特殊语法就能理解模型定义 README 示例。
它主要面向 API 和后端开发者,用于校验请求载荷、配置文件或其他外部数据。模型定义同时可以产出 JSON Schema,因此仓库把 json-schema 列为主题之一 仓库。
Pydantic V2 是一次彻底重写,带来了性能提升,也存在相对 V1 的破坏性变更。V1.10 仍有文档保留,V2 内置了最新版 V1,可以通过 from pydantic import v1 as pydantic_v1 逐步迁移现有代码 V1 与 V2 说明。
快速使用
Pydantic 要求 Python 3.10 或更高版本,可用 pip 或 conda 安装 安装文档:
pip install -U pydantic
下面这个 README 示例展示了校验和类型转换的过程 README 示例:
from datetime import datetime
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str = 'John Doe'
signup_ts: Optional[datetime] = None
friends: list[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123
字符串 '123' 被转成整数,时间字符串被解析为 datetime,混合列表变成 [1, 2, 3]。输入不合法时,Pydantic 会抛出校验错误,而不是生成一个字段错乱的对象。如果需要更快的安装方式或可选加速,README 链接的安装文档提供了更多选项 安装选项。
使用约束
- 当前 V2 系列要求 Python 3.10 及以上 版本徽章信息。
- 基于 V1 写的代码迁移到 V2 时可能需要改动,因为重写包含破坏性变更;内置的 V1 命名空间是官方给出的迁移路径 V1 与 V2 说明。
- 项目采用 MIT 许可证 许可证。
- README 还介绍了同公司的商业产品 Logfire,用于 AI 可观测性;使用 Pydantic 本身并不需要它 Logfire 段落。
HotRepo 点评
该项目在 HotRepo 的 2026-11-06 Python 日榜中出现,记录为 29,311 stars、3,144 forks,当天新增 21 stars,在该榜单位列第 12。已采集的星标曲线过于稀疏,不足以判断趋势;这份快照只能说明这个已经成熟的库当天仍有人关注。
围绕 Pydantic 的讨论更多集中在依赖信任上,而非功能本身。2024 年的一串评论回顾了维护者早前对更换 JSON 依赖的谨慎态度:有评论者把这种警惕与后来的 XZ Utils 事件联系起来,也有人认为这种类比缺乏证据(coldcache,2024-06-05;arp242,2024-06-06)讨论串。另一条回复指出 Pydantic 被大量大型组织使用,因此依赖的可见性很重要(noitpmeder,2024-06-06)评论。对读者来说,这比星数更有参考价值:它是一层被大量项目依赖的校验组件,其依赖选择的影响面不小。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。