Skip to content

Core validation logic for pydantic written in rust

License

Notifications You must be signed in to change notification settings

riyavsinha/pydantic-core

Repository files navigation

pydantic-core

CI Coverage

This package provides the core functionality for pydantic.

The package is currently a work in progress and subject to significant change.

There is, as yet, no integration with pydantic, so schemas can only be defined via dictionaries.

The plan is to generate this schema definition from type hints in pydantic, then create a SchemaValidator upon model creation.

pydantic-core will be a separate package, required by pydantic.

Example of usage:

from pydantic_core import SchemaValidator
from devtools import debug

v = SchemaValidator({
    'title': 'MyModel',
    'type': 'model',
    'fields': {
        'name': {
            'type': 'str',
        },
        'age': {
            'type': 'int-constrained',
            'ge': 18,
        },
        'is_employer': {
            'type': 'bool',
            'default': True,
        },
    },
})
print(repr(v))

r = v.validate_python({'name': 'John', 'age': 42})
debug(r)

Pydantic-core is currently around 17x faster than pydantic standard. See benchmarks/run.py for details.

This relative performance will be less impressive for small models but could be significantly move impressive for deeply nested models.

The improvement will decrease slightly when we have to create a class instance after validation, but shouldn't change more.

The aim is to remain 10x faster than current pydantic for common use cases.

The current implementation only deals with parsing/validation of the schema, in future this package could be used to improve the performance of .dict() and .json() methods.

About

Core validation logic for pydantic written in rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 59.0%
  • Rust 40.4%
  • Other 0.6%