What's Changed
Packaging
- Update pydantic-core to 2.10.0 by @samuelcolvin in #7542
New Features
- Add
Base64Url
types by @dmontagu in #7286 - Implement optional
number
tostr
coercion by @lig in #7508 - Allow access to
field_name
anddata
in all validators if there is data and a field name by @samuelcolvin in #7542 - Add
BaseModel.model_validate_strings
andTypeAdapter.validate_strings
by @hramezani in #7552 - Add Pydantic
plugins
experimental implementation by @lig @samuelcolvin and @Kludex in #6820
Changes
- Do not override
model_post_init
in subclass with private attrs by @Viicos in #7302 - Make fields with defaults not required in the serialization schema by default by @dmontagu in #7275
- Mark
Extra
as deprecated by @disrupted in #7299 - Make
EncodedStr
a dataclass by @Kludex in #7396 - Move
annotated_handlers
to be public by @samuelcolvin in #7569
Performance
- Simplify flattening and inlining of
CoreSchema
by @adriangb in #7523 - Remove unused copies in
CoreSchema
walking by @adriangb in #7528 - Add caches for collecting definitions and invalid schemas from a CoreSchema by @adriangb in #7527
- Eagerly resolve discriminated unions and cache cases where we can't by @adriangb in #7529
- Replace
dict.get
anddict.setdefault
with more verbose versions inCoreSchema
building hot paths by @adriangb in #7536 - Cache invalid
CoreSchema
discovery by @adriangb in #7535 - Allow disabling
CoreSchema
validation for faster startup times by @adriangb in #7565
Fixes
- Fix config detection for
TypedDict
from grandparent classes by @dmontagu in #7272 - Fix hash function generation for frozen models with unusual MRO by @dmontagu in #7274
- Make
strict
config overridable in field for Path by @hramezani in #7281 - Use
ser_json_<timedelta|bytes>
on default inGenerateJsonSchema
by @Kludex in #7269 - Adding a check that alias is validated as an identifier for Python by @andree0 in #7319
- Raise an error when computed field overrides field by @sydney-runkle in #7346
- Fix applying
SkipValidation
to referenced schemas by @adriangb in #7381 - Enforce behavior of private attributes having double leading underscore by @lig in #7265
- Standardize
__get_pydantic_core_schema__
signature by @hramezani in #7415 - Fix generic dataclass fields mutation bug (when using
TypeAdapter
) by @sydney-runkle in #7435 - Fix
TypeError
onmodel_validator
inwrap
mode by @pmmmwh in #7496 - Improve enum error message by @hramezani in #7506
- Make
repr
work for instances that failed initialization when handlingValidationError
s by @dmontagu in #7439 - Fixed a regular expression denial of service issue by limiting whitespaces by @prodigysml in #7360
- Fix handling of
UUID
values havingUUID.version=None
by @lig in #7566 - Fix
__iter__
returning privatecached_property
info by @sydney-runkle in #7570 - Improvements to version info message by @samuelcolvin in #7594
New Contributors
- @15498th made their first contribution in #7238
- @GabrielCappelli made their first contribution in #7213
- @tobni made their first contribution in #7184
- @redruin1 made their first contribution in #7282
- @FacerAin made their first contribution in #7288
- @acdha made their first contribution in #7297
- @andree0 made their first contribution in #7319
- @gordonhart made their first contribution in #7375
- @pmmmwh made their first contribution in #7496
- @disrupted made their first contribution in #7299
- @prodigysml made their first contribution in #7360
Full Changelog: v2.3.0...v2.4.0