Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Data validation using Python type hints.
Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.8+; validate it with Pydantic.
We've recently launched Pydantic Logfire to help you monitor your applications. Learn more
Pydantic V2 is a ground-up rewrite that offers many new features, performance improvements, and some breaking changes compared to Pydantic V1.
If you're using Pydantic V1 you may want to look at the
pydantic V1.10 Documentation or,
1.10.X-fixes
git branch. Pydantic V2 also ships with the latest version of Pydantic V1 built in so that you can incrementally upgrade your code base and projects: from pydantic import v1 as pydantic_v1
.
See documentation for more details.
Install using pip install -U pydantic
or conda install pydantic -c conda-forge
.
For more installation options to make Pydantic even faster,
see the Install section in the documentation.
from datetime import datetime
from typing import List, 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
For guidance on setting up a development environment and how to make a contribution to Pydantic, see Contributing to Pydantic.
See our security policy.
'examples'
keys by @Viicos in #11325pydantic-core
to v2.27.2 by @davidhewitt in #11138AnyUrl
objects by @alexprabhat99 in #11082len
to _BaseUrl
to avoid TypeError by @Kharianne in #11111defer_build
is set on Pydantic dataclasses by @Viicos in #10984dict
core schema keys by @Viicos in #10989PlainSerializer
and WrapSerializer
functions by @Viicos in #11008default_factory_takes_validated_data
property to FieldInfo
by @Viicos in #11034serialization
mode by @sydney-runkle in #11035Secret
types and Url
types by @sydney-runkle in #10947Field.default
to be compatible with Python 3.8 and 3.9 by @Viicos in #10972BaseModel.__replace__
definition from type checkers by @Viicos in 10979pydantic-core
version to v2.27.1
by @sydney-runkle in #10938TypeAdapter
by @Viicos in #10893default_factory
utils by @sydney-runkle in #10909model_fields
and model_computed_fields
by @sydney-runkle in #10911dataclass
es by @sydney-runkle in #10928globals
of the function when evaluating the return type of serializers and computed_field
s by @Viicos in #10929''
by @sydney-runkle in #10936python
mode serialization for complex
inference by @sydney-runkle in pydantic-core#1549The code released in v2.10.0 is practically identical to that of v2.10.0b2.
See the v2.10 release blog post for the highlights!
pydantic-core
to v2.27.0
by @sydney-runkle in #10825fractions.Fraction
by @sydney-runkle in #10318Hashable
for json validation by @sydney-runkle in #10324SocketPath
type for linux
systems by @theunkn0wn1 in #10378examples
by @sydney-runkle in #10417defer_build
for Pydantic dataclasses by @Viicos in #10313TypedDict
to type hint variadic keyword arguments with @validate_call
by @Viicos in #10416protected_namespaces
by @sydney-runkle in #10522propertyNames
in JSON schema by @FlorianSW in #10478__replace__
protocol for Python 3.13+ support by @sydney-runkle in #10596sort
method for JSON schema generation by @sydney-runkle in #10595@validate_call
callable argument by @kc0506 in #10627experimental_allow_partial
support by @samuelcolvin in #10748ValidationError
and PydanticCustomError
by @Youssefares in pydantic/pydantic-core#1413trailing-strings
support to experimental_allow_partial
by @sydney-runkle in #10825rebuild()
method for TypeAdapter
and simplify defer_build
patterns by @sydney-runkle in #10537TypeAdapter
instance repr by @sydney-runkle in #10872SchemaGenerator
until interface is more stable by @sydney-runkle in #10303defer_build
on TypeAdapters
, removing experimental flag by @sydney-runkle in #10329mro
of generic subclass by @kc0506 in #10100b64decode
and b64encode
for Base64Bytes
type by @sydney-runkle in #10486@dataclass
decorator and with the __pydantic_config__
attribute by @sydney-runkle in #10406Ellipsis
(...) with Field
by @Viicos in #10661Literal
s and Enums
by @Viicos in #10692Any
or Never
when replacing type variables by @Viicos in #10338base64
bytes by @bschoenmaeckers in pydantic/pydantic-core#1448CoreMetadata
refactor with an emphasis on documentation, schema build time performance, and reducing complexity by @sydney-runkle in #10675computed_field
with field_serializer
by @nix010 in #10390Predicate
issue in v2.9.0
by @sydney-runkle in #10321annotated-types
bound by @sydney-runkle in #10327tzdata
install requirement into optional timezone
dependency by @jakob-keller in #10331namedtuple
core schemas by @Viicos in #10337IncEx
type alias definition by @Viicos in #10339ModelMetaclass.mro
by @Viicos in #10372computed_field
s by @Viicos in #10391inspect.iscoroutinefunction
works on coroutines decorated with @validate_call
by @MovisLi in #10374NameError
when using validate_call
with PEP 695 on a class by @kc0506 in #10380ZoneInfo
with various invalid types by @sydney-runkle in #10408PydanticUserError
on empty model_config
with annotations by @cdwilson in #10412_IncEx
type alias, only allow True
by @Viicos in #10414PlainValidator
by @Viicos in #10427json_schema_input_type
by @Viicos in #10439Representation
by @Viicos in #10480max_digits
and decimal_places
) by @sydney-runkle in #10506__pydantic_core_schema__
from the current class during schema generation by @Viicos in #10518stacklevel
on deprecation warnings for BaseModel
by @sydney-runkle in #10520stacklevel
in BaseModel.__init__
by @Viicos in #10526ConfigWrapper.core_config
to take the title directly by @Viicos in #10562mode='python'
by @sydney-runkle in #10594Base64Etc
types by @sydney-runkle in #10584validate_call
ignoring Field
in Annotated
by @kc0506 in #10610Self
is invalid by @kc0506 in #10609core_schema.InvalidSchema
instead of metadata injection + checks by @sydney-runkle in #10523type
with typing.Self
and type aliases by @kc0506 in #10621Field
and PrivateAttr
functions by @Viicos in #10651mypy
plugin implementation by @Viicos in #10669typing_extensions
variant of TypeAliasType
by @Daraan in #10713BaseModel.model_copy()
by @Viicos in #10751isinstance
behavior for urls by @sydney-runkle in #10766cached_property
can be set on Pydantic models by @Viicos in #10774host_required
for URLs by @Viicos in pydantic/pydantic-core#1488coerce_numbers_to_str
enabled and string has invalid Unicode character by @andrey-berenda in pydantic/pydantic-core#1515complex
values in Enum
s by @changhc in pydantic/pydantic-core#1524_typing_extra
module by @Viicos in #10725bytearray
to TypeAdapter.validate_json
signature by @samuelcolvin in #10802Field
by @Viicos in #10816validate_call
by @sydney-runkle in #10807IncEx
type alias to be compatible with mypy by @Viicos in #10813__signature__
a lazy property, do not deepcopy defaults by @Viicos in #10818__signature__
lazy for dataclasses, too by @sydney-runkle in #10832AnyUrl
to preserve behavior from v2.9 by @sydney-runkle in #10856Pre-release, see the GitHub release for details.
Pre-release, see the GitHub release for details.
... see here for earlier changes.
FAQs
Data validation using Python type hints
We found that pydantic demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.