Skip to main content

Getting Started

pydantic-core provides the core functionality for Pydantic validation and serialization. It is written in Rust for high performance and is significantly faster than Pydantic V1.

[!NOTE] Most users should not use pydantic-core directly. Instead, use the main pydantic package, which provides a higher-level API and uses pydantic-core internally.

Prerequisites

  • Python: 3.10 or newer.
  • Rust: Stable version (only required if building from source).
  • uv: Recommended for development and dependency management.
  • make: Used for running development commands.

Installation

The easiest way to install pydantic-core is via pip:

pip install pydantic-core

Hello World / Quick Start

pydantic-core uses a schema-based approach to validation. You define a schema as a Python dictionary and use SchemaValidator to validate data against it.

from pydantic_core import SchemaValidator, ValidationError

# Define a schema for a dictionary with specific fields
v = SchemaValidator(
{
'type': 'typed-dict',
'fields': {
'name': {
'type': 'typed-dict-field',
'schema': {'type': 'str'},
},
'age': {
'type': 'typed-dict-field',
'schema': {
'type': 'int',
'ge': 18,
},
},
},
}
)

# Validate Python data
try:
result = v.validate_python({'name': 'Samuel', 'age': 35})
print(result)
# Output: {'name': 'Samuel', 'age': 35}
except ValidationError as e:
print(e)

# pydantic-core can also validate JSON directly for better performance
json_data = '{"name": "Samuel", "age": 35}'
result_json = v.validate_json(json_data)
assert result == result_json

Verify Installation

You can verify that pydantic-core is installed correctly by checking its version:

python -c "import pydantic_core; print(pydantic_core.__version__)"

Other Install Options

Development Setup

If you want to contribute to pydantic-core or build it from source, follow these steps:

  1. Clone the repository:

    git clone https://github.com/pydantic/pydantic-core.git
    cd pydantic-core
  2. Install dependencies and build the development version using make:

    make install
  3. Run tests to ensure everything is working:

    make test

Next Steps

  • Schema Definitions: See pydantic_core.core_schema for a full list of available schema types and configuration options.
  • Usage Examples: Explore the tests/ directory for comprehensive examples of validators and serializers.
  • Type Hints: Refer to pydantic_core for the Python API type definitions.

Troubleshooting

Building from Source

If you encounter issues while building from source (e.g., during pip install on an unsupported platform), ensure you have the latest version of the Rust toolchain installed:

rustup update stable

Performance Profiling

On Linux, you can profile the code using flamegraph:

cargo install flamegraph
make build-profiling
flamegraph -- pytest tests/benchmarks/test_micro_benchmarks.py