v2.4.0 2023-09-25
What's Changed
Packaging
- Update pydantic-core to 2.10.0 by @samuelcolvin in #7542
New Features
- Add
Base64Urltypes by @dmontagu in #7286 - Implement optional
numbertostrcoercion by @lig in #7508 - Allow access to
field_nameanddatain all validators if there is data and a field name by @samuelcolvin in #7542 - Add
BaseModel.model_validate_stringsandTypeAdapter.validate_stringsby @hramezani in #7552 - Add Pydantic
pluginsexperimental implementation by @lig @samuelcolvin and @Kludex in #6820
Changes
- Do not override
model_post_initin 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
Extraas deprecated by @disrupted in #7299 - Make
EncodedStra dataclass by @Kludex in #7396 - Move
annotated_handlersto be public by @samuelcolvin in #7569
Performance
- Simplify flattening and inlining of
CoreSchemaby @adriangb in #7523 - Remove unused copies in
CoreSchemawalking 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.getanddict.setdefaultwith more verbose versions inCoreSchemabuilding hot paths by @adriangb in #7536 - Cache invalid
CoreSchemadiscovery by @adriangb in #7535 - Allow disabling
CoreSchemavalidation for faster startup times by @adriangb in #7565
Fixes
- Fix config detection for
TypedDictfrom grandparent classes by @dmontagu in #7272 - Fix hash function generation for frozen models with unusual MRO by @dmontagu in #7274
- Make
strictconfig overridable in field for Path by @hramezani in #7281 - Use
ser_json_<timedelta|bytes>on default inGenerateJsonSchemaby @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
SkipValidationto 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
TypeErroronmodel_validatorinwrapmode by @pmmmwh in #7496 - Improve enum error message by @hramezani in #7506
- Make
reprwork for instances that failed initialization when handlingValidationErrors by @dmontagu in #7439 - Fixed a regular expression denial of service issue by limiting whitespaces by @prodigysml in #7360
- Fix handling of
UUIDvalues havingUUID.version=Noneby @lig in #7566 - Fix
__iter__returning privatecached_propertyinfo 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