跳转到主要内容

Pydantic验证和序列化的核心功能

项目描述

pydantic-core

CI Coverage pypi versions license

此软件包为pydantic的验证和序列化提供核心功能。

Pydantic-core的速度比pydantic V1快约17倍。有关详细信息,请参阅tests/benchmarks/

直接使用示例

注意:您不需要直接使用pydantic-core;相反,使用pydantic,它反过来使用pydantic-core。

from pydantic_core import SchemaValidator, ValidationError


v = SchemaValidator(
    {
        'type': 'typed-dict',
        'fields': {
            'name': {
                'type': 'typed-dict-field',
                'schema': {
                    'type': 'str',
                },
            },
            'age': {
                'type': 'typed-dict-field',
                'schema': {
                    'type': 'int',
                    'ge': 18,
                },
            },
            'is_developer': {
                'type': 'typed-dict-field',
                'schema': {
                    'type': 'default',
                    'schema': {'type': 'bool'},
                    'default': True,
                },
            },
        },
    }
)

r1 = v.validate_python({'name': 'Samuel', 'age': 35})
assert r1 == {'name': 'Samuel', 'age': 35, 'is_developer': True}

# pydantic-core can also validate JSON directly
r2 = v.validate_json('{"name": "Samuel", "age": 35}')
assert r1 == r2

try:
    v.validate_python({'name': 'Samuel', 'age': 11})
except ValidationError as e:
    print(e)
    """
    1 validation error for model
    age
      Input should be greater than or equal to 18
      [type=greater_than_equal, context={ge: 18}, input_value=11, input_type=int]
    """

入门

您需要安装rust stable 安装,或者如果您想生成准确的覆盖率,可以使用rust nightly。

安装了rust和python 3.8+后,可以使用以下方式编译pydantic-core:

# clone this repo or your fork
git clone git@github.com:pydantic/pydantic-core.git
cd pydantic-core
# create a new virtual env
python3 -m venv env
source env/bin/activate
# install dependencies and install pydantic-core
make install

这就完成了,上面的示例现在应该可以运行。

您可能想查看python/pydantic_core/_pydantic_core.pyipython/pydantic_core/core_schema.py以获取有关Python API的更多信息。除此之外,tests/提供大量使用示例。

如果您想为pydantic-core做出贡献,您需要使用一些其他make命令:

  • make build-dev 在开发过程中构建软件包
  • make build-prod 执行针对基准测试的优化构建
  • make test 运行测试
  • make testcov 运行测试并生成覆盖率报告
  • make lint 用于运行代码检查器
  • make format 用于格式化 Python 和 Rust 代码
  • make 用于运行 format build-dev lint test

性能分析

可以使用来自 flamegraph-rsflamegraph 工具 对代码进行性能分析。(已在 Linux 上测试。)您可以使用 cargo install flamegraph 安装此工具。

运行 make build-profiling 安装包含调试符号的发布版本(性能分析所需)。

构建完成后,可以使用(例如)来对 pytest 基准进行性能分析

flamegraph -- pytest tests/benchmarks/test_micro_benchmarks.py -k test_list_of_ints_core_py --benchmark-enable

flamegraph 命令将在 flamegraph.svg 处生成一个交互式 SVG 文件。

发布

  1. 在本地提高软件包版本。不要仅在 Github 上编辑 Cargo.toml,您需要同时更新 Cargo.tomlCargo.lock
  2. 提交一个版本提升的 PR 并将其合并。
  3. 前往 https://github.com/pydantic/pydantic-core/releases 并点击 "创建新发布"。
  4. 在 "选择标签" 下拉菜单中输入新标签 v<新版本> 并在出现选项时选择 "发布时创建新标签"。
  5. 在表单中输入发布标题,例如 "v<新版本> "。
  6. 点击 "生成发布说明" 按钮
  7. 点击 "发布" 按钮
  8. 前往 https://github.com/pydantic/pydantic-core/actions 并确保所有发布构建都成功完成。
  9. 前往 https://pypi.ac.cn/project/pydantic-core/ 并确保最新版本已发布。
  10. 完成 🎉

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

pydantic_core-2.24.0.tar.gz (405.7 kB 查看哈希值)

上传时间 源代码

构建分发

pydantic_core-2.24.0-pp310-pypy310_pp73-win_amd64.whl (1.9 MB 查看哈希值)

上传时间 PyPy Windows x86-64

pydantic_core-2.24.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传时间 PyPy musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传时间 PyPy musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (1.7 MB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

pydantic_core-2.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传时间 PyPy macOS 10.12+ x86-64

pydantic_core-2.24.0-pp39-pypy39_pp73-win_amd64.whl (1.9 MB 查看哈希值)

上传时间 PyPy Windows x86-64

pydantic_core-2.24.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传于 PyPy musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (1.7 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

pydantic_core-2.24.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传于 PyPy macOS 10.12+ x86-64

pydantic_core-2.24.0-cp313-none-win_amd64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.13 Windows x86-64

pydantic_core-2.24.0-cp313-none-win32.whl (1.7 MB 查看哈希值)

上传于 CPython 3.13 Windows x86

pydantic_core-2.24.0-cp313-cp313-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp313-cp313-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传时间 CPython 3.13 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp313-cp313-macosx_11_0_arm64.whl (1.8 MB 查看哈希值)

上传时间 CPython 3.13 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp313-cp313-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.13 macOS 10.12+ x86-64

pydantic_core-2.24.0-cp312-none-win_amd64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

pydantic_core-2.24.0-cp312-none-win32.whl (1.7 MB 查看哈希值)

上传于 CPython 3.12 Windows x86

pydantic_core-2.24.0-cp312-cp312-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp312-cp312-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB 查看哈希值)

上传于 CPython 3.12 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp312-cp312-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.12+ x86-64

pydantic_core-2.24.0-cp311-none-win_amd64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

pydantic_core-2.24.0-cp311-none-win32.whl (1.7 MB 查看哈希值)

上传于 CPython 3.11 Windows x86

pydantic_core-2.24.0-cp311-cp311-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp311-cp311-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp311-cp311-macosx_11_0_arm64.whl (1.8 MB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp311-cp311-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.11 macOS 10.12+ x86-64

pydantic_core-2.24.0-cp310-none-win_amd64.whl (1.9 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

pydantic_core-2.24.0-cp310-none-win32.whl (1.7 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86

pydantic_core-2.24.0-cp310-cp310-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp310-cp310-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传时间 CPython 3.10 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希)

上传于 CPython 3.10 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp310-cp310-macosx_11_0_arm64.whl (1.8 MB 查看哈希)

上传于 CPython 3.10 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp310-cp310-macosx_10_12_x86_64.whl (1.9 MB 查看哈希)

上传于 CPython 3.10 macOS 10.12+ x86-64

pydantic_core-2.24.0-cp39-none-win_amd64.whl (1.9 MB 查看哈希)

上传于 CPython 3.9 Windows x86-64

pydantic_core-2.24.0-cp39-none-win32.whl (1.7 MB 查看哈希)

上传于 CPython 3.9 Windows x86

pydantic_core-2.24.0-cp39-cp39-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp39-cp39-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希)

上传于 CPython 3.9 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希)

上传于 CPython 3.9 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp39-cp39-macosx_11_0_arm64.whl (1.8 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp39-cp39-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.12+ x86-64

pydantic_core-2.24.0-cp38-none-win_amd64.whl (1.9 MB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

pydantic_core-2.24.0-cp38-none-win32.whl (1.7 MB 查看哈希值)

上传于 CPython 3.8 Windows x86

pydantic_core-2.24.0-cp38-cp38-musllinux_1_1_x86_64.whl (2.1 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

pydantic_core-2.24.0-cp38-cp38-musllinux_1_1_aarch64.whl (2.0 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ ARM64

pydantic_core-2.24.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

pydantic_core-2.24.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.7 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ s390x

pydantic_core-2.24.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ppc64le

pydantic_core-2.24.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.8 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARMv7l

pydantic_core-2.24.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

pydantic_core-2.24.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (1.9 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.5+ i686

pydantic_core-2.24.0-cp38-cp38-macosx_11_0_arm64.whl (1.8 MB 查看哈希)

上传时间 CPython 3.8 macOS 11.0+ ARM64

pydantic_core-2.24.0-cp38-cp38-macosx_10_12_x86_64.whl (1.9 MB 查看哈希)

上传时间 CPython 3.8 macOS 10.12+ x86-64

由以下支持