-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SchemaSerializer.__reduce__
method to enable pickle
serialization
#1006
Conversation
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
@davidhewitt I am unable to assign reviewers, but PTAL.
|
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
CodSpeed Performance ReportMerging #1006 will improve performances by 42.09%Comparing Summary
Benchmarks breakdown
|
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## main #1006 +/- ##
==========================================
+ Coverage 93.05% 93.06% +0.01%
==========================================
Files 106 106
Lines 15714 15739 +25
Branches 35 35
==========================================
+ Hits 14622 14648 +26
+ Misses 1085 1084 -1
Partials 7 7
... and 1 file with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
__reduce__
method to SchemaSerializer to enable cloudpickle
serializationSchemaSerializer.__reduce__
method to enable cloudpickle
serialization
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
What you're suggesting generally makes sense. I'd take a look at how pydantic-core/src/validators/mod.rs Lines 144 to 149 in d93482e
|
cls.__schema__ = SchemaSerializer( | ||
core_schema.model_schema(cls, GC_TEST_SCHEMA_INNER), config={'ser_json_timedelta': 'float'} | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curious why this was necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wasn't necessary, I just wanted to ensure that there was coverage of the garbage collection path when a config was passed given that I'm holding a reference to it now (existing tests didn't take a config).
You're pretty close! Please ignore the benchmarks and pydantic-integration test. |
@adriangb oh wow, thanks for the pointer, it would've saved me a lot of trouble if I'd seen Looks like I came to essentially the same solution. The differences are:
Let me know if/how you'd like me to update these to match more closely. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally looks great, thanks! Just posted my suggestion of how to implement __reduce__
, and if you're happy with it then it'd be great to update SchemaValidator
to work the same way. I also think it's probably a bug if we're not pickling the config for SchemaValidator
.
src/serializers/mod.rs
Outdated
pub fn __reduce__(&self, py: Python) -> PyResult<(PyObject, (PyObject, PyObject))> { | ||
// Enables support for `cloudpickle` serialization. | ||
Ok(( | ||
SchemaSerializer::type_object(py).to_object(py), | ||
(self.py_schema.to_object(py), self.py_config.to_object(py)), | ||
)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here's my take:
pub fn __reduce__(&self, py: Python) -> PyResult<(PyObject, (PyObject, PyObject))> { | |
// Enables support for `cloudpickle` serialization. | |
Ok(( | |
SchemaSerializer::type_object(py).to_object(py), | |
(self.py_schema.to_object(py), self.py_config.to_object(py)), | |
)) | |
} | |
pub fn __reduce__(slf: &PyCell<Self>) -> PyResult<(&PyType, (PyObject, PyObject))> { | |
let py = slf.py(); | |
let args = (slf.get().schema.to_object(py), slf.get().py_config.to_object(py)); | |
let cls = slf.get_type(); | |
Ok((cls, args)) | |
} |
You'll need to update the #[pyclass]
definition above for SchemaSerializer
to include #[pyclass(frozen)]
.
Justifications:
slf: &PyCell<Self>
is equivalent toself
Python objectslf.get()
gives read access to the Rust data as long as it'sfrozen
- I think we want to look up
type(self)
rather than hard-codeSchemaSerializer
type in case we allow subclassing later.slf.get_type()
is a cleaner way to do it than trying to usegetattr
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense, thanks for the pointers, I'll update!
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Ok @davidhewitt I've updated the PR to include the suggested changes.
|
SchemaSerializer.__reduce__
method to enable cloudpickle
serializationSchemaSerializer.__reduce__
method to enable pickle
serialization
@@ -480,17 +479,6 @@ def test_tz_constraint_wrong(): | |||
validate_core_schema(core_schema.datetime_schema(tz_constraint='wrong')) | |||
|
|||
|
|||
def test_tz_pickle() -> None: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is moved to test_pickling.py
v.validate_test([]) | ||
|
||
|
||
def test_schema_validator_containing_config(): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I verified that this newly-added test case fails without my changes to SchemaValidator.__reduce__
(config object is lost).
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
… cloudpickle-support
Signed-off-by: Edward Oakes <ed.nmi.oakes@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great to me, many thanks 👍
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `2.4.2` -> `2.5.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.5.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@​Viicos](https://github.com/Viicos) in [#​8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@​adriangb](https://github.com/adriangb) in [#​7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@​chris-spann](https://github.com/chris-spann) in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@​utkini](https://github.com/utkini) in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@​Luca-Blight](https://github.com/Luca-Blight) in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@​zakstucke](https://github.com/zakstucke) in [#​7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@​hramezani](https://github.com/hramezani) in [#​7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@​dmontagu](https://github.com/dmontagu) in [#​7983](https://github.com/pydantic/pydantic/pull/7983) - Make union case tags affect union error messages by [@​dmontagu](https://github.com/dmontagu) in [#​8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@​alexmojaki](https://github.com/alexmojaki) in [#​8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@​dmontagu](https://github.com/dmontagu) in [#​7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@​edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@​dmontagu](https://github.com/dmontagu) in [#​7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@​dmontagu](https://github.com/dmontagu) in [#​7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@​pmmmwh](https://github.com/pmmmwh) in [#​7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@​edoakes](https://github.com/edoakes) in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@​alexmojaki](https://github.com/alexmojaki) in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@​alexmojaki](https://github.com/alexmojaki) in [#​7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@​alexmojaki](https://github.com/alexmojaki) in [#​7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@​me-and](https://github.com/me-and) in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@​PrettyWood](https://github.com/PrettyWood) in [#​7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@​hramezani](https://github.com/hramezani) in [#​7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@​alexmojaki](https://github.com/alexmojaki) in [#​7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@​dmontagu](https://github.com/dmontagu) in [#​7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@​alexdrydew](https://github.com/alexdrydew) in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@​howsunjow](https://github.com/howsunjow) in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@​joakimnordling](https://github.com/joakimnordling) in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@​Iipin](https://github.com/Iipin) in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@​tabassco](https://github.com/tabassco) in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@​alexmojaki](https://github.com/alexmojaki) in [#​8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@​Mr-Pepe](https://github.com/Mr-Pepe) in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@​dmontagu](https://github.com/dmontagu) in [#​8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@​michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@​Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@​schneebuzz](https://github.com/schneebuzz) made their first contribution in [#​7699](https://github.com/pydantic/pydantic/pull/7699) - [@​edoakes](https://github.com/edoakes) made their first contribution in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - [@​alexmojaki](https://github.com/alexmojaki) made their first contribution in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - [@​NickG123](https://github.com/NickG123) made their first contribution in [#​7751](https://github.com/pydantic/pydantic/pull/7751) - [@​gowthamgts](https://github.com/gowthamgts) made their first contribution in [#​7830](https://github.com/pydantic/pydantic/pull/7830) - [@​jamesbraza](https://github.com/jamesbraza) made their first contribution in [#​7848](https://github.com/pydantic/pydantic/pull/7848) - [@​laundmo](https://github.com/laundmo) made their first contribution in [#​7850](https://github.com/pydantic/pydantic/pull/7850) - [@​rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#​7870](https://github.com/pydantic/pydantic/pull/7870) - [@​waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#​7878](https://github.com/pydantic/pydantic/pull/7878) - [@​chris-spann](https://github.com/chris-spann) made their first contribution in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - [@​me-and](https://github.com/me-and) made their first contribution in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - [@​utkini](https://github.com/utkini) made their first contribution in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - [@​bn-l](https://github.com/bn-l) made their first contribution in [#​7744](https://github.com/pydantic/pydantic/pull/7744) - [@​alexdrydew](https://github.com/alexdrydew) made their first contribution in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - [@​Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - [@​howsunjow](https://github.com/howsunjow) made their first contribution in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - [@​joakimnordling](https://github.com/joakimnordling) made their first contribution in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - [@​icfly2](https://github.com/icfly2) made their first contribution in [#​7976](https://github.com/pydantic/pydantic/pull/7976) - [@​Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#​8003](https://github.com/pydantic/pydantic/pull/8003) - [@​Iipin](https://github.com/Iipin) made their first contribution in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - [@​tabassco](https://github.com/tabassco) made their first contribution in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - [@​Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - [@​0x00cl](https://github.com/0x00cl) made their first contribution in [#​8010](https://github.com/pydantic/pydantic/pull/8010) - [@​barraponto](https://github.com/barraponto) made their first contribution in [#​8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@​sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@​michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/fulcrum-so/ziggy-pydust). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `==2.4.2` -> `==2.5.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.5.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@​Viicos](https://github.com/Viicos) in [#​8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@​adriangb](https://github.com/adriangb) in [#​7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@​chris-spann](https://github.com/chris-spann) in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@​utkini](https://github.com/utkini) in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@​Luca-Blight](https://github.com/Luca-Blight) in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@​zakstucke](https://github.com/zakstucke) in [#​7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@​hramezani](https://github.com/hramezani) in [#​7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@​dmontagu](https://github.com/dmontagu) in [#​7983](https://github.com/pydantic/pydantic/pull/7983) - Make union case tags affect union error messages by [@​dmontagu](https://github.com/dmontagu) in [#​8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@​alexmojaki](https://github.com/alexmojaki) in [#​8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@​dmontagu](https://github.com/dmontagu) in [#​7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@​edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@​dmontagu](https://github.com/dmontagu) in [#​7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@​dmontagu](https://github.com/dmontagu) in [#​7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@​pmmmwh](https://github.com/pmmmwh) in [#​7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@​edoakes](https://github.com/edoakes) in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@​alexmojaki](https://github.com/alexmojaki) in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@​alexmojaki](https://github.com/alexmojaki) in [#​7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@​alexmojaki](https://github.com/alexmojaki) in [#​7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@​me-and](https://github.com/me-and) in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@​PrettyWood](https://github.com/PrettyWood) in [#​7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@​hramezani](https://github.com/hramezani) in [#​7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@​alexmojaki](https://github.com/alexmojaki) in [#​7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@​dmontagu](https://github.com/dmontagu) in [#​7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@​alexdrydew](https://github.com/alexdrydew) in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@​howsunjow](https://github.com/howsunjow) in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@​joakimnordling](https://github.com/joakimnordling) in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@​Iipin](https://github.com/Iipin) in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@​tabassco](https://github.com/tabassco) in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@​alexmojaki](https://github.com/alexmojaki) in [#​8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@​Mr-Pepe](https://github.com/Mr-Pepe) in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@​dmontagu](https://github.com/dmontagu) in [#​8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@​michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@​Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@​schneebuzz](https://github.com/schneebuzz) made their first contribution in [#​7699](https://github.com/pydantic/pydantic/pull/7699) - [@​edoakes](https://github.com/edoakes) made their first contribution in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - [@​alexmojaki](https://github.com/alexmojaki) made their first contribution in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - [@​NickG123](https://github.com/NickG123) made their first contribution in [#​7751](https://github.com/pydantic/pydantic/pull/7751) - [@​gowthamgts](https://github.com/gowthamgts) made their first contribution in [#​7830](https://github.com/pydantic/pydantic/pull/7830) - [@​jamesbraza](https://github.com/jamesbraza) made their first contribution in [#​7848](https://github.com/pydantic/pydantic/pull/7848) - [@​laundmo](https://github.com/laundmo) made their first contribution in [#​7850](https://github.com/pydantic/pydantic/pull/7850) - [@​rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#​7870](https://github.com/pydantic/pydantic/pull/7870) - [@​waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#​7878](https://github.com/pydantic/pydantic/pull/7878) - [@​chris-spann](https://github.com/chris-spann) made their first contribution in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - [@​me-and](https://github.com/me-and) made their first contribution in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - [@​utkini](https://github.com/utkini) made their first contribution in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - [@​bn-l](https://github.com/bn-l) made their first contribution in [#​7744](https://github.com/pydantic/pydantic/pull/7744) - [@​alexdrydew](https://github.com/alexdrydew) made their first contribution in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - [@​Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - [@​howsunjow](https://github.com/howsunjow) made their first contribution in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - [@​joakimnordling](https://github.com/joakimnordling) made their first contribution in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - [@​icfly2](https://github.com/icfly2) made their first contribution in [#​7976](https://github.com/pydantic/pydantic/pull/7976) - [@​Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#​8003](https://github.com/pydantic/pydantic/pull/8003) - [@​Iipin](https://github.com/Iipin) made their first contribution in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - [@​tabassco](https://github.com/tabassco) made their first contribution in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - [@​Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - [@​0x00cl](https://github.com/0x00cl) made their first contribution in [#​8010](https://github.com/pydantic/pydantic/pull/8010) - [@​barraponto](https://github.com/barraponto) made their first contribution in [#​8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@​sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@​michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/allenporter/flux-local). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `==2.4.2` -> `==2.5.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.4.2/2.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.5.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@​Viicos](https://github.com/Viicos) in [#​8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@​adriangb](https://github.com/adriangb) in [#​7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@​chris-spann](https://github.com/chris-spann) in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@​utkini](https://github.com/utkini) in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@​Luca-Blight](https://github.com/Luca-Blight) in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@​zakstucke](https://github.com/zakstucke) in [#​7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@​hramezani](https://github.com/hramezani) in [#​7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@​dmontagu](https://github.com/dmontagu) in [#​7983](https://github.com/pydantic/pydantic/pull/7983) - Make union case tags affect union error messages by [@​dmontagu](https://github.com/dmontagu) in [#​8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@​alexmojaki](https://github.com/alexmojaki) in [#​8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@​dmontagu](https://github.com/dmontagu) in [#​7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@​edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@​dmontagu](https://github.com/dmontagu) in [#​7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@​dmontagu](https://github.com/dmontagu) in [#​7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@​pmmmwh](https://github.com/pmmmwh) in [#​7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@​edoakes](https://github.com/edoakes) in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@​alexmojaki](https://github.com/alexmojaki) in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@​alexmojaki](https://github.com/alexmojaki) in [#​7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@​alexmojaki](https://github.com/alexmojaki) in [#​7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@​me-and](https://github.com/me-and) in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@​PrettyWood](https://github.com/PrettyWood) in [#​7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@​hramezani](https://github.com/hramezani) in [#​7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@​alexmojaki](https://github.com/alexmojaki) in [#​7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@​dmontagu](https://github.com/dmontagu) in [#​7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@​alexdrydew](https://github.com/alexdrydew) in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@​howsunjow](https://github.com/howsunjow) in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@​joakimnordling](https://github.com/joakimnordling) in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@​Iipin](https://github.com/Iipin) in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@​tabassco](https://github.com/tabassco) in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@​alexmojaki](https://github.com/alexmojaki) in [#​8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@​Mr-Pepe](https://github.com/Mr-Pepe) in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@​dmontagu](https://github.com/dmontagu) in [#​8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@​michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@​Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@​schneebuzz](https://github.com/schneebuzz) made their first contribution in [#​7699](https://github.com/pydantic/pydantic/pull/7699) - [@​edoakes](https://github.com/edoakes) made their first contribution in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - [@​alexmojaki](https://github.com/alexmojaki) made their first contribution in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - [@​NickG123](https://github.com/NickG123) made their first contribution in [#​7751](https://github.com/pydantic/pydantic/pull/7751) - [@​gowthamgts](https://github.com/gowthamgts) made their first contribution in [#​7830](https://github.com/pydantic/pydantic/pull/7830) - [@​jamesbraza](https://github.com/jamesbraza) made their first contribution in [#​7848](https://github.com/pydantic/pydantic/pull/7848) - [@​laundmo](https://github.com/laundmo) made their first contribution in [#​7850](https://github.com/pydantic/pydantic/pull/7850) - [@​rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#​7870](https://github.com/pydantic/pydantic/pull/7870) - [@​waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#​7878](https://github.com/pydantic/pydantic/pull/7878) - [@​chris-spann](https://github.com/chris-spann) made their first contribution in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - [@​me-and](https://github.com/me-and) made their first contribution in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - [@​utkini](https://github.com/utkini) made their first contribution in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - [@​bn-l](https://github.com/bn-l) made their first contribution in [#​7744](https://github.com/pydantic/pydantic/pull/7744) - [@​alexdrydew](https://github.com/alexdrydew) made their first contribution in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - [@​Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - [@​howsunjow](https://github.com/howsunjow) made their first contribution in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - [@​joakimnordling](https://github.com/joakimnordling) made their first contribution in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - [@​icfly2](https://github.com/icfly2) made their first contribution in [#​7976](https://github.com/pydantic/pydantic/pull/7976) - [@​Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#​8003](https://github.com/pydantic/pydantic/pull/8003) - [@​Iipin](https://github.com/Iipin) made their first contribution in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - [@​tabassco](https://github.com/tabassco) made their first contribution in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - [@​Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - [@​0x00cl](https://github.com/0x00cl) made their first contribution in [#​8010](https://github.com/pydantic/pydantic/pull/8010) - [@​barraponto](https://github.com/barraponto) made their first contribution in [#​8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@​sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@​michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/allenporter/pyrainbird). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `==2.2.0` -> `==2.5.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.2.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.2.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.5.1`](https://github.com/pydantic/pydantic/releases/tag/v2.5.1): 2023-11-15 [Compare Source](https://github.com/pydantic/pydantic/compare/v2.5.0...v2.5.1) #### v2.5.1 (2023-11-15) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.1) ##### What's Changed ##### Packaging - uprev pydantic-core to 2.14.3 by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8120](https://github.com/pydantic/pydantic/pull/8120) ##### Fixes - Fix package description limit by [@​dmontagu](https://github.com/dmontagu) in [#​8097](https://github.com/pydantic/pydantic/pull/8097) - Fix `ValidateCallWrapper` error when creating a model which has a @​validate_call wrapped field annotation by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​8110](https://github.com/pydantic/pydantic/pull/8110) Full Changelog: pydantic/pydantic@v2.5.0...v2.5.1/ ### [`v2.5.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@​Viicos](https://github.com/Viicos) in [#​8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@​adriangb](https://github.com/adriangb) in [#​7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@​chris-spann](https://github.com/chris-spann) in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@​utkini](https://github.com/utkini) in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@​Luca-Blight](https://github.com/Luca-Blight) in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@​zakstucke](https://github.com/zakstucke) in [#​7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@​hramezani](https://github.com/hramezani) in [#​7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@​dmontagu](https://github.com/dmontagu) in [#​7983](https://github.com/pydantic/pydantic/pull/7983) - Make union case tags affect union error messages by [@​dmontagu](https://github.com/dmontagu) in [#​8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@​alexmojaki](https://github.com/alexmojaki) in [#​8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@​dmontagu](https://github.com/dmontagu) in [#​7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@​edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@​dmontagu](https://github.com/dmontagu) in [#​7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@​dmontagu](https://github.com/dmontagu) in [#​7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@​pmmmwh](https://github.com/pmmmwh) in [#​7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@​edoakes](https://github.com/edoakes) in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@​alexmojaki](https://github.com/alexmojaki) in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@​alexmojaki](https://github.com/alexmojaki) in [#​7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@​alexmojaki](https://github.com/alexmojaki) in [#​7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@​me-and](https://github.com/me-and) in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@​PrettyWood](https://github.com/PrettyWood) in [#​7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@​hramezani](https://github.com/hramezani) in [#​7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@​alexmojaki](https://github.com/alexmojaki) in [#​7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@​dmontagu](https://github.com/dmontagu) in [#​7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@​alexdrydew](https://github.com/alexdrydew) in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@​howsunjow](https://github.com/howsunjow) in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@​joakimnordling](https://github.com/joakimnordling) in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@​Iipin](https://github.com/Iipin) in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@​tabassco](https://github.com/tabassco) in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@​alexmojaki](https://github.com/alexmojaki) in [#​8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@​Mr-Pepe](https://github.com/Mr-Pepe) in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@​dmontagu](https://github.com/dmontagu) in [#​8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@​michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@​Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@​schneebuzz](https://github.com/schneebuzz) made their first contribution in [#​7699](https://github.com/pydantic/pydantic/pull/7699) - [@​edoakes](https://github.com/edoakes) made their first contribution in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - [@​alexmojaki](https://github.com/alexmojaki) made their first contribution in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - [@​NickG123](https://github.com/NickG123) made their first contribution in [#​7751](https://github.com/pydantic/pydantic/pull/7751) - [@​gowthamgts](https://github.com/gowthamgts) made their first contribution in [#​7830](https://github.com/pydantic/pydantic/pull/7830) - [@​jamesbraza](https://github.com/jamesbraza) made their first contribution in [#​7848](https://github.com/pydantic/pydantic/pull/7848) - [@​laundmo](https://github.com/laundmo) made their first contribution in [#​7850](https://github.com/pydantic/pydantic/pull/7850) - [@​rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#​7870](https://github.com/pydantic/pydantic/pull/7870) - [@​waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#​7878](https://github.com/pydantic/pydantic/pull/7878) - [@​chris-spann](https://github.com/chris-spann) made their first contribution in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - [@​me-and](https://github.com/me-and) made their first contribution in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - [@​utkini](https://github.com/utkini) made their first contribution in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - [@​bn-l](https://github.com/bn-l) made their first contribution in [#​7744](https://github.com/pydantic/pydantic/pull/7744) - [@​alexdrydew](https://github.com/alexdrydew) made their first contribution in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - [@​Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - [@​howsunjow](https://github.com/howsunjow) made their first contribution in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - [@​joakimnordling](https://github.com/joakimnordling) made their first contribution in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - [@​icfly2](https://github.com/icfly2) made their first contribution in [#​7976](https://github.com/pydantic/pydantic/pull/7976) - [@​Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#​8003](https://github.com/pydantic/pydantic/pull/8003) - [@​Iipin](https://github.com/Iipin) made their first contribution in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - [@​tabassco](https://github.com/tabassco) made their first contribution in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - [@​Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - [@​0x00cl](https://github.com/0x00cl) made their first contribution in [#​8010](https://github.com/pydantic/pydantic/pull/8010) - [@​barraponto](https://github.com/barraponto) made their first contribution in [#​8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@​sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@​michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) ### [`v2.4.2`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v242-2023-09-27) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.1...v2.4.2) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.2) ##### What's Changed ##### Fixes - Fix bug with JSON schema for sequence of discriminated union by [@​dmontagu](https://github.com/dmontagu) in [#​7647](https://github.com/pydantic/pydantic/pull/7647) - Fix schema references in discriminated unions by [@​adriangb](https://github.com/adriangb) in [#​7646](https://github.com/pydantic/pydantic/pull/7646) - Fix json schema generation for recursive models by [@​adriangb](https://github.com/adriangb) in [#​7653](https://github.com/pydantic/pydantic/pull/7653) - Fix `models_json_schema` for generic models by [@​adriangb](https://github.com/adriangb) in [#​7654](https://github.com/pydantic/pydantic/pull/7654) - Fix xfailed test for generic model signatures by [@​adriangb](https://github.com/adriangb) in [#​7658](https://github.com/pydantic/pydantic/pull/7658) ##### New Contributors - [@​austinorr](https://github.com/austinorr) made their first contribution in [#​7657](https://github.com/pydantic/pydantic/pull/7657) - [@​peterHoburg](https://github.com/peterHoburg) made their first contribution in [#​7670](https://github.com/pydantic/pydantic/pull/7670) ### [`v2.4.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v241-2023-09-26) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.0...v2.4.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.1) ##### What's Changed ##### Packaging - Update pydantic-core to 2.10.1 by [@​davidhewitt](https://github.com/davidhewitt) in [#​7633](https://github.com/pydantic/pydantic/pull/7633) ##### Fixes - Serialize unsubstituted type vars as `Any` by [@​adriangb](https://github.com/adriangb) in [#​7606](https://github.com/pydantic/pydantic/pull/7606) - Remove schema building caches by [@​adriangb](https://github.com/adriangb) in [#​7624](https://github.com/pydantic/pydantic/pull/7624) - Fix an issue where JSON schema extras weren't JSON encoded by [@​dmontagu](https://github.com/dmontagu) in [#​7625](https://github.com/pydantic/pydantic/pull/7625) ### [`v2.4.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v240-2023-09-22) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.3.0...v2.4.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.0) ##### What's Changed ##### Packaging - Update pydantic-core to 2.10.0 by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7542](https://github.com/pydantic/pydantic/pull/7542) ##### New Features - Add `Base64Url` types by [@​dmontagu](https://github.com/dmontagu) in [#​7286](https://github.com/pydantic/pydantic/pull/7286) - Implement optional `number` to `str` coercion by [@​lig](https://github.com/lig) in [#​7508](https://github.com/pydantic/pydantic/pull/7508) - Allow access to `field_name` and `data` in all validators if there is data and a field name by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7542](https://github.com/pydantic/pydantic/pull/7542) - Add `BaseModel.model_validate_strings` and `TypeAdapter.validate_strings` by [@​hramezani](https://github.com/hramezani) in [#​7552](https://github.com/pydantic/pydantic/pull/7552) - Add Pydantic `plugins` experimental implementation by [@​lig](https://github.com/lig) [@​samuelcolvin](https://github.com/samuelcolvin) and [@​Kludex](https://github.com/Kludex) in [#​6820](https://github.com/pydantic/pydantic/pull/6820) ##### Changes - Do not override `model_post_init` in subclass with private attrs by [@​Viicos](https://github.com/Viicos) in [#​7302](https://github.com/pydantic/pydantic/pull/7302) - Make fields with defaults not required in the serialization schema by default by [@​dmontagu](https://github.com/dmontagu) in [#​7275](https://github.com/pydantic/pydantic/pull/7275) - Mark `Extra` as deprecated by [@​disrupted](https://github.com/disrupted) in [#​7299](https://github.com/pydantic/pydantic/pull/7299) - Make `EncodedStr` a dataclass by [@​Kludex](https://github.com/Kludex) in [#​7396](https://github.com/pydantic/pydantic/pull/7396) - Move `annotated_handlers` to be public by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7569](https://github.com/pydantic/pydantic/pull/7569) ##### Performance - Simplify flattening and inlining of `CoreSchema` by [@​adriangb](https://github.com/adriangb) in [#​7523](https://github.com/pydantic/pydantic/pull/7523) - Remove unused copies in `CoreSchema` walking by [@​adriangb](https://github.com/adriangb) in [#​7528](https://github.com/pydantic/pydantic/pull/7528) - Add caches for collecting definitions and invalid schemas from a CoreSchema by [@​adriangb](https://github.com/adriangb) in [#​7527](https://github.com/pydantic/pydantic/pull/7527) - Eagerly resolve discriminated unions and cache cases where we can't by [@​adriangb](https://github.com/adriangb) in [#​7529](https://github.com/pydantic/pydantic/pull/7529) - Replace `dict.get` and `dict.setdefault` with more verbose versions in `CoreSchema` building hot paths by [@​adriangb](https://github.com/adriangb) in [#​7536](https://github.com/pydantic/pydantic/pull/7536) - Cache invalid `CoreSchema` discovery by [@​adriangb](https://github.com/adriangb) in [#​7535](https://github.com/pydantic/pydantic/pull/7535) - Allow disabling `CoreSchema` validation for faster startup times by [@​adriangb](https://github.com/adriangb) in [#​7565](https://github.com/pydantic/pydantic/pull/7565) ##### Fixes - Fix config detection for `TypedDict` from grandparent classes by [@​dmontagu](https://github.com/dmontagu) in [#​7272](https://github.com/pydantic/pydantic/pull/7272) - Fix hash function generation for frozen models with unusual MRO by [@​dmontagu](https://github.com/dmontagu) in [#​7274](https://github.com/pydantic/pydantic/pull/7274) - Make `strict` config overridable in field for Path by [@​hramezani](https://github.com/hramezani) in [#​7281](https://github.com/pydantic/pydantic/pull/7281) - Use `ser_json_<timedelta|bytes>` on default in `GenerateJsonSchema` by [@​Kludex](https://github.com/Kludex) in [#​7269](https://github.com/pydantic/pydantic/pull/7269) - Adding a check that alias is validated as an identifier for Python by [@​andree0](https://github.com/andree0) in [#​7319](https://github.com/pydantic/pydantic/pull/7319) - Raise an error when computed field overrides field by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7346](https://github.com/pydantic/pydantic/pull/7346) - Fix applying `SkipValidation` to referenced schemas by [@​adriangb](https://github.com/adriangb) in [#​7381](https://github.com/pydantic/pydantic/pull/7381) - Enforce behavior of private attributes having double leading underscore by [@​lig](https://github.com/lig) in [#​7265](https://github.com/pydantic/pydantic/pull/7265) - Standardize `__get_pydantic_core_schema__` signature by [@​hramezani](https://github.com/hramezani) in [#​7415](https://github.com/pydantic/pydantic/pull/7415) - Fix generic dataclass fields mutation bug (when using `TypeAdapter`) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7435](https://github.com/pydantic/pydantic/pull/7435) - Fix `TypeError` on `model_validator` in `wrap` mode by [@​pmmmwh](https://github.com/pmmmwh) in [#​7496](https://github.com/pydantic/pydantic/pull/7496) - Improve enum error message by [@​hramezani](https://github.com/hramezani) in [#​7506](https://github.com/pydantic/pydantic/pull/7506) - Make `repr` work for instances that failed initialization when handling `ValidationError`s by [@​dmontagu](https://github.com/dmontagu) in [#​7439](https://github.com/pydantic/pydantic/pull/7439) - Fixed a regular expression denial of service issue by limiting whitespaces by [@​prodigysml](https://github.com/prodigysml) in [#​7360](https://github.com/pydantic/pydantic/pull/7360) - Fix handling of `UUID` values having `UUID.version=None` by [@​lig](https://github.com/lig) in [#​7566](https://github.com/pydantic/pydantic/pull/7566) - Fix `__iter__` returning private `cached_property` info by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7570](https://github.com/pydantic/pydantic/pull/7570) - Improvements to version info message by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7594](https://github.com/pydantic/pydantic/pull/7594) ##### New Contributors - [@​15498th](https://github.com/15498th) made their first contribution in [#​7238](https://github.com/pydantic/pydantic/pull/7238) - [@​GabrielCappelli](https://github.com/GabrielCappelli) made their first contribution in [#​7213](https://github.com/pydantic/pydantic/pull/7213) - [@​tobni](https://github.com/tobni) made their first contribution in [#​7184](https://github.com/pydantic/pydantic/pull/7184) - [@​redruin1](https://github.com/redruin1) made their first contribution in [#​7282](https://github.com/pydantic/pydantic/pull/7282) - [@​FacerAin](https://github.com/FacerAin) made their first contribution in [#​7288](https://github.com/pydantic/pydantic/pull/7288) - [@​acdha](https://github.com/acdha) made their first contribution in [#​7297](https://github.com/pydantic/pydantic/pull/7297) - [@​andree0](https://github.com/andree0) made their first contribution in [#​7319](https://github.com/pydantic/pydantic/pull/7319) - [@​gordonhart](https://github.com/gordonhart) made their first contribution in [#​7375](https://github.com/pydantic/pydantic/pull/7375) - [@​pmmmwh](https://github.com/pmmmwh) made their first contribution in [#​7496](https://github.com/pydantic/pydantic/pull/7496) - [@​disrupted](https://github.com/disrupted) made their first contribution in [#​7299](https://github.com/pydantic/pydantic/pull/7299) - [@​prodigysml](https://github.com/prodigysml) made their first contribution in [#​7360](https://github.com/pydantic/pydantic/pull/7360) ### [`v2.3.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v230-2023-08-23) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.2.1...v2.3.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.3.0) - 🔥 Remove orphaned changes file from repo by [@​lig](https://github.com/lig) in [#​7168](https://github.com/pydantic/pydantic/pull/7168) - Add copy button on documentation by [@​Kludex](https://github.com/Kludex) in [#​7190](https://github.com/pydantic/pydantic/pull/7190) - Fix docs on JSON type by [@​Kludex](https://github.com/Kludex) in [#​7189](https://github.com/pydantic/pydantic/pull/7189) - Update mypy 1.5.0 to 1.5.1 in CI by [@​hramezani](https://github.com/hramezani) in [#​7191](https://github.com/pydantic/pydantic/pull/7191) - fix download links badge by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7200](https://github.com/pydantic/pydantic/pull/7200) - add 2.2.1 to changelog by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7212](https://github.com/pydantic/pydantic/pull/7212) - Make ModelWrapValidator protocols generic by [@​dmontagu](https://github.com/dmontagu) in [#​7154](https://github.com/pydantic/pydantic/pull/7154) - Correct `Field(..., exclude: bool)` docs by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7214](https://github.com/pydantic/pydantic/pull/7214) - Make shadowing attributes a warning instead of an error by [@​adriangb](https://github.com/adriangb) in [#​7193](https://github.com/pydantic/pydantic/pull/7193) - Document `Base64Str` and `Base64Bytes` by [@​Kludex](https://github.com/Kludex) in [#​7192](https://github.com/pydantic/pydantic/pull/7192) - Fix `config.defer_build` for serialization first cases by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7024](https://github.com/pydantic/pydantic/pull/7024) - clean Model docstrings in JSON Schema by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7210](https://github.com/pydantic/pydantic/pull/7210) - fix [#​7228](https://github.com/pydantic/pydantic/pull/7228) (typo): docs in `validators.md` to correct `validate_default` kwarg by [@​lmmx](https://github.com/lmmx) in [#​7229](https://github.com/pydantic/pydantic/pull/7229) - ✅ Implement `tzinfo.fromutc` method for `TzInfo` in `pydantic-core` by [@​lig](https://github.com/lig) in [#​7019](https://github.com/pydantic/pydantic/pull/7019) - Support `__get_validators__` by [@​hramezani](https://github.com/hramezani) in [#​7197](https://github.com/pydantic/pydantic/pull/7197) ### [`v2.2.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v221-2023-08-18) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.2.0...v2.2.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.2.1) - Make `xfail`ing test for root model extra stop `xfail`ing by [@​dmontagu](https://github.com/dmontagu) in [#​6937](https://github.com/pydantic/pydantic/pull/6937) - Optimize recursion detection by stopping on the second visit for the same object by [@​mciucu](https://github.com/mciucu) in [#​7160](https://github.com/pydantic/pydantic/pull/7160) - fix link in docs by [@​tlambert03](https://github.com/tlambert03) in [#​7166](https://github.com/pydantic/pydantic/pull/7166) - Replace MiMalloc w/ default allocator by [@​adriangb](https://github.com/adriangb) in [pydantic/pydantic-core#900](https://github.com/pydantic/pydantic-core/pull/900) - Bump pydantic-core to 2.6.1 and prepare 2.2.1 release by [@​adriangb](https://github.com/adriangb) in [#​7176](https://github.com/pydantic/pydantic/pull/7176) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/GoogleCloudPlatform/database-query-extension). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `>=1.7.4,<1.11` -> `>=1.7.4,<2.6` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/1.10.13/2.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/1.10.13/2.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.5.3`](https://github.com/pydantic/pydantic/releases/tag/v2.5.3): 2023-12-22 [Compare Source](https://github.com/pydantic/pydantic/compare/v2.5.2...v2.5.3) ##### v2.5.3 (2023-12-22) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.3) ##### What's Changed ##### Packaging - uprev `pydantic-core` to 2.14.6 ##### Fixes - Fix memory leak with recursive definitions creating reference cycles by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1125](https://github.com/pydantic/pydantic-core/pull/1125) Full Changelog: https://github.com/pydantic/pydantic/compare/v2.5.2...v2.5.3/ ### [`v2.5.2`](https://github.com/pydantic/pydantic/releases/tag/v2.5.2): 2023-11-22 [Compare Source](https://github.com/pydantic/pydantic/compare/v2.5.1...v2.5.2) #### v2.5.2 (2023-11-22) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.2) ##### What's Changed ##### Packaging - uprev `pydantic-core` to 2.14.5 ##### New Features - Add `ConfigDict.ser_json_inf_nan` by [@​davidhewitt](https://github.com/davidhewitt) in [#​8159](https://github.com/pydantic/pydantic/pull/8159) ##### Fixes - Fix validation of `Literal` from JSON keys when used as `dict` key by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1075](https://github.com/pydantic/pydantic-core/pull/1075) - Fix bug re `custom_init` on members of `Union` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1076](https://github.com/pydantic/pydantic-core/pull/1076) - Fix `JsonValue` `bool` serialization by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​8190](https://github.com/pydantic/pydantic/pull/8159) - Fix handling of unhashable inputs with `Literal` in `Union`s by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1089](https://github.com/pydantic/pydantic-core/pull/1089) ### [`v2.5.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v251-2023-11-15) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.5.0...v2.5.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.1) ##### What's Changed ##### Packaging - uprev pydantic-core to 2.14.3 by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8120](https://github.com/pydantic/pydantic/pull/8120) ##### Fixes - Fix package description limit by [@​dmontagu](https://github.com/dmontagu) in [#​8097](https://github.com/pydantic/pydantic/pull/8097) - Fix `ValidateCallWrapper` error when creating a model which has a @​validate_call wrapped field annotation by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​8110](https://github.com/pydantic/pydantic/pull/8110) ### [`v2.5.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@​Viicos](https://github.com/Viicos) in [#​8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@​adriangb](https://github.com/adriangb) in [#​7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@​chris-spann](https://github.com/chris-spann) in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@​utkini](https://github.com/utkini) in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@​Luca-Blight](https://github.com/Luca-Blight) in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@​zakstucke](https://github.com/zakstucke) in [#​7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@​hramezani](https://github.com/hramezani) in [#​7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@​dmontagu](https://github.com/dmontagu) in [#​7983](https://github.com/pydantic/pydantic/pull/7983) - `CallableDiscriminator` renamed to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Make union case tags affect union error messages by [@​dmontagu](https://github.com/dmontagu) in [#​8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@​alexmojaki](https://github.com/alexmojaki) in [#​8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@​dmontagu](https://github.com/dmontagu) in [#​7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@​dmontagu](https://github.com/dmontagu) in [#​8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@​edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@​samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@​dmontagu](https://github.com/dmontagu) in [#​7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@​dmontagu](https://github.com/dmontagu) in [#​7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@​pmmmwh](https://github.com/pmmmwh) in [#​7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@​edoakes](https://github.com/edoakes) in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@​alexmojaki](https://github.com/alexmojaki) in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@​alexmojaki](https://github.com/alexmojaki) in [#​7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@​alexmojaki](https://github.com/alexmojaki) in [#​7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@​alexmojaki](https://github.com/alexmojaki) in [#​7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@​me-and](https://github.com/me-and) in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@​PrettyWood](https://github.com/PrettyWood) in [#​7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@​hramezani](https://github.com/hramezani) in [#​7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@​alexmojaki](https://github.com/alexmojaki) in [#​7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@​dmontagu](https://github.com/dmontagu) in [#​7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@​alexdrydew](https://github.com/alexdrydew) in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@​howsunjow](https://github.com/howsunjow) in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@​joakimnordling](https://github.com/joakimnordling) in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@​Iipin](https://github.com/Iipin) in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@​tabassco](https://github.com/tabassco) in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@​alexmojaki](https://github.com/alexmojaki) in [#​8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@​Mr-Pepe](https://github.com/Mr-Pepe) in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@​dmontagu](https://github.com/dmontagu) in [#​8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@​michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@​Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@​schneebuzz](https://github.com/schneebuzz) made their first contribution in [#​7699](https://github.com/pydantic/pydantic/pull/7699) - [@​edoakes](https://github.com/edoakes) made their first contribution in [#​7780](https://github.com/pydantic/pydantic/pull/7780) - [@​alexmojaki](https://github.com/alexmojaki) made their first contribution in [#​7775](https://github.com/pydantic/pydantic/pull/7775) - [@​NickG123](https://github.com/NickG123) made their first contribution in [#​7751](https://github.com/pydantic/pydantic/pull/7751) - [@​gowthamgts](https://github.com/gowthamgts) made their first contribution in [#​7830](https://github.com/pydantic/pydantic/pull/7830) - [@​jamesbraza](https://github.com/jamesbraza) made their first contribution in [#​7848](https://github.com/pydantic/pydantic/pull/7848) - [@​laundmo](https://github.com/laundmo) made their first contribution in [#​7850](https://github.com/pydantic/pydantic/pull/7850) - [@​rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#​7870](https://github.com/pydantic/pydantic/pull/7870) - [@​waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#​7878](https://github.com/pydantic/pydantic/pull/7878) - [@​chris-spann](https://github.com/chris-spann) made their first contribution in [#​7863](https://github.com/pydantic/pydantic/pull/7863) - [@​me-and](https://github.com/me-and) made their first contribution in [#​7810](https://github.com/pydantic/pydantic/pull/7810) - [@​utkini](https://github.com/utkini) made their first contribution in [#​7768](https://github.com/pydantic/pydantic/pull/7768) - [@​bn-l](https://github.com/bn-l) made their first contribution in [#​7744](https://github.com/pydantic/pydantic/pull/7744) - [@​alexdrydew](https://github.com/alexdrydew) made their first contribution in [#​7893](https://github.com/pydantic/pydantic/pull/7893) - [@​Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#​7930](https://github.com/pydantic/pydantic/pull/7930) - [@​howsunjow](https://github.com/howsunjow) made their first contribution in [#​7925](https://github.com/pydantic/pydantic/pull/7925) - [@​joakimnordling](https://github.com/joakimnordling) made their first contribution in [#​7881](https://github.com/pydantic/pydantic/pull/7881) - [@​icfly2](https://github.com/icfly2) made their first contribution in [#​7976](https://github.com/pydantic/pydantic/pull/7976) - [@​Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#​8003](https://github.com/pydantic/pydantic/pull/8003) - [@​Iipin](https://github.com/Iipin) made their first contribution in [#​7972](https://github.com/pydantic/pydantic/pull/7972) - [@​tabassco](https://github.com/tabassco) made their first contribution in [#​8004](https://github.com/pydantic/pydantic/pull/8004) - [@​Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#​7979](https://github.com/pydantic/pydantic/pull/7979) - [@​0x00cl](https://github.com/0x00cl) made their first contribution in [#​8010](https://github.com/pydantic/pydantic/pull/8010) - [@​barraponto](https://github.com/barraponto) made their first contribution in [#​8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@​sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@​michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) ### [`v2.4.2`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v242-2023-09-27) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.1...v2.4.2) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.2) ##### What's Changed ##### Fixes - Fix bug with JSON schema for sequence of discriminated union by [@​dmontagu](https://github.com/dmontagu) in [#​7647](https://github.com/pydantic/pydantic/pull/7647) - Fix schema references in discriminated unions by [@​adriangb](https://github.com/adriangb) in [#​7646](https://github.com/pydantic/pydantic/pull/7646) - Fix json schema generation for recursive models by [@​adriangb](https://github.com/adriangb) in [#​7653](https://github.com/pydantic/pydantic/pull/7653) - Fix `models_json_schema` for generic models by [@​adriangb](https://github.com/adriangb) in [#​7654](https://github.com/pydantic/pydantic/pull/7654) - Fix xfailed test for generic model signatures by [@​adriangb](https://github.com/adriangb) in [#​7658](https://github.com/pydantic/pydantic/pull/7658) ##### New Contributors - [@​austinorr](https://github.com/austinorr) made their first contribution in [#​7657](https://github.com/pydantic/pydantic/pull/7657) - [@​peterHoburg](https://github.com/peterHoburg) made their first contribution in [#​7670](https://github.com/pydantic/pydantic/pull/7670) ### [`v2.4.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v241-2023-09-26) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.4.0...v2.4.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.1) ##### What's Changed ##### Packaging - Update pydantic-core to 2.10.1 by [@​davidhewitt](https://github.com/davidhewitt) in [#​7633](https://github.com/pydantic/pydantic/pull/7633) ##### Fixes - Serialize unsubstituted type vars as `Any` by [@​adriangb](https://github.com/adriangb) in [#​7606](https://github.com/pydantic/pydantic/pull/7606) - Remove schema building caches by [@​adriangb](https://github.com/adriangb) in [#​7624](https://github.com/pydantic/pydantic/pull/7624) - Fix an issue where JSON schema extras weren't JSON encoded by [@​dmontagu](https://github.com/dmontagu) in [#​7625](https://github.com/pydantic/pydantic/pull/7625) ### [`v2.4.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v240-2023-09-22) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.3.0...v2.4.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.4.0) ##### What's Changed ##### Packaging - Update pydantic-core to 2.10.0 by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7542](https://github.com/pydantic/pydantic/pull/7542) ##### New Features - Add `Base64Url` types by [@​dmontagu](https://github.com/dmontagu) in [#​7286](https://github.com/pydantic/pydantic/pull/7286) - Implement optional `number` to `str` coercion by [@​lig](https://github.com/lig) in [#​7508](https://github.com/pydantic/pydantic/pull/7508) - Allow access to `field_name` and `data` in all validators if there is data and a field name by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7542](https://github.com/pydantic/pydantic/pull/7542) - Add `BaseModel.model_validate_strings` and `TypeAdapter.validate_strings` by [@​hramezani](https://github.com/hramezani) in [#​7552](https://github.com/pydantic/pydantic/pull/7552) - Add Pydantic `plugins` experimental implementation by [@​lig](https://github.com/lig) [@​samuelcolvin](https://github.com/samuelcolvin) and [@​Kludex](https://github.com/Kludex) in [#​6820](https://github.com/pydantic/pydantic/pull/6820) ##### Changes - Do not override `model_post_init` in subclass with private attrs by [@​Viicos](https://github.com/Viicos) in [#​7302](https://github.com/pydantic/pydantic/pull/7302) - Make fields with defaults not required in the serialization schema by default by [@​dmontagu](https://github.com/dmontagu) in [#​7275](https://github.com/pydantic/pydantic/pull/7275) - Mark `Extra` as deprecated by [@​disrupted](https://github.com/disrupted) in [#​7299](https://github.com/pydantic/pydantic/pull/7299) - Make `EncodedStr` a dataclass by [@​Kludex](https://github.com/Kludex) in [#​7396](https://github.com/pydantic/pydantic/pull/7396) - Move `annotated_handlers` to be public by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7569](https://github.com/pydantic/pydantic/pull/7569) ##### Performance - Simplify flattening and inlining of `CoreSchema` by [@​adriangb](https://github.com/adriangb) in [#​7523](https://github.com/pydantic/pydantic/pull/7523) - Remove unused copies in `CoreSchema` walking by [@​adriangb](https://github.com/adriangb) in [#​7528](https://github.com/pydantic/pydantic/pull/7528) - Add caches for collecting definitions and invalid schemas from a CoreSchema by [@​adriangb](https://github.com/adriangb) in [#​7527](https://github.com/pydantic/pydantic/pull/7527) - Eagerly resolve discriminated unions and cache cases where we can't by [@​adriangb](https://github.com/adriangb) in [#​7529](https://github.com/pydantic/pydantic/pull/7529) - Replace `dict.get` and `dict.setdefault` with more verbose versions in `CoreSchema` building hot paths by [@​adriangb](https://github.com/adriangb) in [#​7536](https://github.com/pydantic/pydantic/pull/7536) - Cache invalid `CoreSchema` discovery by [@​adriangb](https://github.com/adriangb) in [#​7535](https://github.com/pydantic/pydantic/pull/7535) - Allow disabling `CoreSchema` validation for faster startup times by [@​adriangb](https://github.com/adriangb) in [#​7565](https://github.com/pydantic/pydantic/pull/7565) ##### Fixes - Fix config detection for `TypedDict` from grandparent classes by [@​dmontagu](https://github.com/dmontagu) in [#​7272](https://github.com/pydantic/pydantic/pull/7272) - Fix hash function generation for frozen models with unusual MRO by [@​dmontagu](https://github.com/dmontagu) in [#​7274](https://github.com/pydantic/pydantic/pull/7274) - Make `strict` config overridable in field for Path by [@​hramezani](https://github.com/hramezani) in [#​7281](https://github.com/pydantic/pydantic/pull/7281) - Use `ser_json_<timedelta|bytes>` on default in `GenerateJsonSchema` by [@​Kludex](https://github.com/Kludex) in [#​7269](https://github.com/pydantic/pydantic/pull/7269) - Adding a check that alias is validated as an identifier for Python by [@​andree0](https://github.com/andree0) in [#​7319](https://github.com/pydantic/pydantic/pull/7319) - Raise an error when computed field overrides field by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7346](https://github.com/pydantic/pydantic/pull/7346) - Fix applying `SkipValidation` to referenced schemas by [@​adriangb](https://github.com/adriangb) in [#​7381](https://github.com/pydantic/pydantic/pull/7381) - Enforce behavior of private attributes having double leading underscore by [@​lig](https://github.com/lig) in [#​7265](https://github.com/pydantic/pydantic/pull/7265) - Standardize `__get_pydantic_core_schema__` signature by [@​hramezani](https://github.com/hramezani) in [#​7415](https://github.com/pydantic/pydantic/pull/7415) - Fix generic dataclass fields mutation bug (when using `TypeAdapter`) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7435](https://github.com/pydantic/pydantic/pull/7435) - Fix `TypeError` on `model_validator` in `wrap` mode by [@​pmmmwh](https://github.com/pmmmwh) in [#​7496](https://github.com/pydantic/pydantic/pull/7496) - Improve enum error message by [@​hramezani](https://github.com/hramezani) in [#​7506](https://github.com/pydantic/pydantic/pull/7506) - Make `repr` work for instances that failed initialization when handling `ValidationError`s by [@​dmontagu](https://github.com/dmontagu) in [#​7439](https://github.com/pydantic/pydantic/pull/7439) - Fixed a regular expression denial of service issue by limiting whitespaces by [@​prodigysml](https://github.com/prodigysml) in [#​7360](https://github.com/pydantic/pydantic/pull/7360) - Fix handling of `UUID` values having `UUID.version=None` by [@​lig](https://github.com/lig) in [#​7566](https://github.com/pydantic/pydantic/pull/7566) - Fix `__iter__` returning private `cached_property` info by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​7570](https://github.com/pydantic/pydantic/pull/7570) - Improvements to version info message by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7594](https://github.com/pydantic/pydantic/pull/7594) ##### New Contributors - [@​15498th](https://github.com/15498th) made their first contribution in [#​7238](https://github.com/pydantic/pydantic/pull/7238) - [@​GabrielCappelli](https://github.com/GabrielCappelli) made their first contribution in [#​7213](https://github.com/pydantic/pydantic/pull/7213) - [@​tobni](https://github.com/tobni) made their first contribution in [#​7184](https://github.com/pydantic/pydantic/pull/7184) - [@​redruin1](https://github.com/redruin1) made their first contribution in [#​7282](https://github.com/pydantic/pydantic/pull/7282) - [@​FacerAin](https://github.com/FacerAin) made their first contribution in [#​7288](https://github.com/pydantic/pydantic/pull/7288) - [@​acdha](https://github.com/acdha) made their first contribution in [#​7297](https://github.com/pydantic/pydantic/pull/7297) - [@​andree0](https://github.com/andree0) made their first contribution in [#​7319](https://github.com/pydantic/pydantic/pull/7319) - [@​gordonhart](https://github.com/gordonhart) made their first contribution in [#​7375](https://github.com/pydantic/pydantic/pull/7375) - [@​pmmmwh](https://github.com/pmmmwh) made their first contribution in [#​7496](https://github.com/pydantic/pydantic/pull/7496) - [@​disrupted](https://github.com/disrupted) made their first contribution in [#​7299](https://github.com/pydantic/pydantic/pull/7299) - [@​prodigysml](https://github.com/prodigysml) made their first contribution in [#​7360](https://github.com/pydantic/pydantic/pull/7360) ### [`v2.3.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v230-2023-08-23) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.2.1...v2.3.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.3.0) - 🔥 Remove orphaned changes file from repo by [@​lig](https://github.com/lig) in [#​7168](https://github.com/pydantic/pydantic/pull/7168) - Add copy button on documentation by [@​Kludex](https://github.com/Kludex) in [#​7190](https://github.com/pydantic/pydantic/pull/7190) - Fix docs on JSON type by [@​Kludex](https://github.com/Kludex) in [#​7189](https://github.com/pydantic/pydantic/pull/7189) - Update mypy 1.5.0 to 1.5.1 in CI by [@​hramezani](https://github.com/hramezani) in [#​7191](https://github.com/pydantic/pydantic/pull/7191) - fix download links badge by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7200](https://github.com/pydantic/pydantic/pull/7200) - add 2.2.1 to changelog by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7212](https://github.com/pydantic/pydantic/pull/7212) - Make ModelWrapValidator protocols generic by [@​dmontagu](https://github.com/dmontagu) in [#​7154](https://github.com/pydantic/pydantic/pull/7154) - Correct `Field(..., exclude: bool)` docs by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7214](https://github.com/pydantic/pydantic/pull/7214) - Make shadowing attributes a warning instead of an error by [@​adriangb](https://github.com/adriangb) in [#​7193](https://github.com/pydantic/pydantic/pull/7193) - Document `Base64Str` and `Base64Bytes` by [@​Kludex](https://github.com/Kludex) in [#​7192](https://github.com/pydantic/pydantic/pull/7192) - Fix `config.defer_build` for serialization first cases by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7024](https://github.com/pydantic/pydantic/pull/7024) - clean Model docstrings in JSON Schema by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7210](https://github.com/pydantic/pydantic/pull/7210) - fix [#​7228](https://github.com/pydantic/pydantic/pull/7228) (typo): docs in `validators.md` to correct `validate_default` kwarg by [@​lmmx](https://github.com/lmmx) in [#​7229](https://github.com/pydantic/pydantic/pull/7229) - ✅ Implement `tzinfo.fromutc` method for `TzInfo` in `pydantic-core` by [@​lig](https://github.com/lig) in [#​7019](https://github.com/pydantic/pydantic/pull/7019) - Support `__get_validators__` by [@​hramezani](https://github.com/hramezani) in [#​7197](https://github.com/pydantic/pydantic/pull/7197) ### [`v2.2.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v221-2023-08-18) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.2.0...v2.2.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.2.1) - Make `xfail`ing test for root model extra stop `xfail`ing by [@​dmontagu](https://github.com/dmontagu) in [#​6937](https://github.com/pydantic/pydantic/pull/6937) - Optimize recursion detection by stopping on the second visit for the same object by [@​mciucu](https://github.com/mciucu) in [#​7160](https://github.com/pydantic/pydantic/pull/7160) - fix link in docs by [@​tlambert03](https://github.com/tlambert03) in [#​7166](https://github.com/pydantic/pydantic/pull/7166) - Replace MiMalloc w/ default allocator by [@​adriangb](https://github.com/adriangb) in [pydantic/pydantic-core#900](https://github.com/pydantic/pydantic-core/pull/900) - Bump pydantic-core to 2.6.1 and prepare 2.2.1 release by [@​adriangb](https://github.com/adriangb) in [#​7176](https://github.com/pydantic/pydantic/pull/7176) ### [`v2.2.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v220-2023-08-17) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.1.1...v2.2.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.2.0) - Split "pipx install" setup command into two commands on the documentation site by [@​nomadmtb](https://github.com/nomadmtb) in [#​6869](https://github.com/pydantic/pydantic/pull/6869) - Deprecate `Field.include` by [@​hramezani](https://github.com/hramezani) in [#​6852](https://github.com/pydantic/pydantic/pull/6852) - Fix typo in default factory error msg by [@​hramezani](https://github.com/hramezani) in [#​6880](https://github.com/pydantic/pydantic/pull/6880) - Simplify handling of typing.Annotated in GenerateSchema by [@​dmontagu](https://github.com/dmontagu) in [#​6887](https://github.com/pydantic/pydantic/pull/6887) - Re-enable fastapi tests in CI by [@​dmontagu](https://github.com/dmontagu) in [#​6883](https://github.com/pydantic/pydantic/pull/6883) - Make it harder to hit collisions with json schema defrefs by [@​dmontagu](https://github.com/dmontagu) in [#​6566](https://github.com/pydantic/pydantic/pull/6566) - Cleaner error for invalid input to `Path` fields by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6903](https://github.com/pydantic/pydantic/pull/6903) - :memo: support Coordinate Type by [@​yezz123](https://github.com/yezz123) in [#​6906](https://github.com/pydantic/pydantic/pull/6906) - Fix `ForwardRef` wrapper for py 3.10.0 (shim until bpo-45166) by [@​randomir](https://github.com/randomir) in [#​6919](https://github.com/pydantic/pydantic/pull/6919) - Fix misbehavior related to copying of RootModel by [@​dmontagu](https://github.com/dmontagu) in [#​6918](https://github.com/pydantic/pydantic/pull/6918) - Fix issue with recursion error caused by ParamSpec by [@​dmontagu](https://github.com/dmontagu) in [#​6923](https://github.com/pydantic/pydantic/pull/6923) - Add section about Constrained classes to the Migration Guide by [@​Kludex](https://github.com/Kludex) in [#​6924](https://github.com/pydantic/pydantic/pull/6924) - Use `main` branch for badge links by [@​Viicos](https://github.com/Viicos) in [#​6925](https://github.com/pydantic/pydantic/pull/6925) - Add test for v1/v2 Annotated discrepancy by [@​carlbordum](https://github.com/carlbordum) in [#​6926](https://github.com/pydantic/pydantic/pull/6926) - Make the v1 mypy plugin work with both v1 and v2 by [@​dmontagu](https://github.com/dmontagu) in [#​6921](https://github.com/pydantic/pydantic/pull/6921) - Fix issue where generic models couldn't be parametrized with BaseModel by [@​dmontagu](https://github.com/dmontagu) in [#​6933](https://github.com/pydantic/pydantic/pull/6933) - Remove xfail for discriminated union with alias by [@​dmontagu](https://github.com/dmontagu) in [#​6938](https://github.com/pydantic/pydantic/pull/6938) - add field_serializer to computed_field by [@​andresliszt](https://github.com/andresliszt) in [#​6965](https://github.com/pydantic/pydantic/pull/6965) - Use union_schema with Type\[Union\[...]] by [@​JeanArhancet](https://github.com/JeanArhancet) in [#​6952](https://github.com/pydantic/pydantic/pull/6952) - Fix inherited typeddict attributes / config by [@​adriangb](https://github.com/adriangb) in [#​6981](https://github.com/pydantic/pydantic/pull/6981) - fix dataclass annotated before validator called twice by [@​davidhewitt](https://github.com/davidhewitt) in [#​6998](https://github.com/pydantic/pydantic/pull/6998) - Update test-fastapi deselected tests by [@​hramezani](https://github.com/hramezani) in [#​7014](https://github.com/pydantic/pydantic/pull/7014) - Fix validator doc format by [@​hramezani](https://github.com/hramezani) in [#​7015](https://github.com/pydantic/pydantic/pull/7015) - Fix typo in docstring of model_json_schema by [@​AdamVinch-Federated](https://github.com/AdamVinch-Federated) in [#​7032](https://github.com/pydantic/pydantic/pull/7032) - remove unused "type ignores" with pyright by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7026](https://github.com/pydantic/pydantic/pull/7026) - Add benchmark representing FastAPI startup time by [@​adriangb](https://github.com/adriangb) in [#​7030](https://github.com/pydantic/pydantic/pull/7030) - Fix json_encoders for Enum subclasses by [@​adriangb](https://github.com/adriangb) in [#​7029](https://github.com/pydantic/pydantic/pull/7029) - Update docstring of `ser_json_bytes` regarding base64 encoding by [@​Viicos](https://github.com/Viicos) in [#​7052](https://github.com/pydantic/pydantic/pull/7052) - Allow `@validate_call` to work on async methods by [@​adriangb](https://github.com/adriangb) in [#​7046](https://github.com/pydantic/pydantic/pull/7046) - Fix: mypy error with `Settings` and `SettingsConfigDict` by [@​JeanArhancet](https://github.com/JeanArhancet) in [#​7002](https://github.com/pydantic/pydantic/pull/7002) - Fix some typos (repeated words and it's/its) by [@​eumiro](https://github.com/eumiro) in [#​7063](https://github.com/pydantic/pydantic/pull/7063) - Fix the typo in docstring by [@​harunyasar](https://github.com/harunyasar) in [#​7062](https://github.com/pydantic/pydantic/pull/7062) - Docs: Fix broken URL in the pydantic-settings package recommendation by [@​swetjen](https://github.com/swetjen) in [#​6995](https://github.com/pydantic/pydantic/pull/6995) - Handle constraints being applied to schemas that don't accept it by [@​adriangb](https://github.com/adriangb) in [#​6951](https://github.com/pydantic/pydantic/pull/6951) - Replace almost_equal_floats with math.isclose by [@​eumiro](https://github.com/eumiro) in [#​7082](https://github.com/pydantic/pydantic/pull/7082) - bump pydantic-core to 2.5.0 by [@​davidhewitt](https://github.com/davidhewitt) in [#​7077](https://github.com/pydantic/pydantic/pull/7077) - Add `short_version` and use it in links by [@​hramezani](https://github.com/hramezani) in [#​7115](https://github.com/pydantic/pydantic/pull/7115) - 📝 Add usage link to `RootModel` by [@​Kludex](https://github.com/Kludex) in [#​7113](https://github.com/pydantic/pydantic/pull/7113) - Revert "Fix default port for mongosrv DSNs ([#​6827](https://github.com/pydantic/pydantic/issues/6827))" by [@​Kludex](https://github.com/Kludex) in [#​7116](https://github.com/pydantic/pydantic/pull/7116) - Clarify validate_default and \_Unset handling in usage docs and migration guide by [@​benbenbang](https://github.com/benbenbang) in [#​6950](https://github.com/pydantic/pydantic/pull/6950) - Tweak documentation of `Field.exclude` by [@​Viicos](https://github.com/Viicos) in [#​7086](https://github.com/pydantic/pydantic/pull/7086) - Do not require `validate_assignment` to use `Field.frozen` by [@​Viicos](https://github.com/Viicos) in [#​7103](https://github.com/pydantic/pydantic/pull/7103) - tweaks to `_core_utils` by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​7040](https://github.com/pydantic/pydantic/pull/7040) - Make DefaultDict working with set by [@​hramezani](https://github.com/hramezani) in [#​7126](https://github.com/pydantic/pydantic/pull/7126) - Don't always require typing.Generic as a base for partially parametrized models by [@​dmontagu](https://github.com/dmontagu) in [#​7119](https://github.com/pydantic/pydantic/pull/7119) - Fix issue with JSON schema incorrectly using parent class core schema by [@​dmontagu](https://github.com/dmontagu) in [#​7020](https://github.com/pydantic/pydantic/pull/7020) - Fix xfailed test related to TypedDict and alias_generator by [@​dmontagu](https://github.com/dmontagu) in [#​6940](https://github.com/pydantic/pydantic/pull/6940) - Improve error message for NameEmail by [@​dmontagu](https://github.com/dmontagu) in [#​6939](https://github.com/pydantic/pydantic/pull/6939) - Fix generic computed fields by [@​dmontagu](https://github.com/dmontagu) in [#​6988](https://github.com/pydantic/pydantic/pull/6988) - Reflect namedtuple default values during validation by [@​dmontagu](https://github.com/dmontagu) in [#​7144](https://github.com/pydantic/pydantic/pull/7144) - Update dependencies, fix pydantic-core usage, fix CI issues by [@​dmontagu](https://github.com/dmontagu) in [#​7150](https://github.com/pydantic/pydantic/pull/7150) - Add mypy 1.5.0 by [@​hramezani](https://github.com/hramezani) in [#​7118](https://github.com/pydantic/pydantic/pull/7118) - Handle non-json native enum values by [@​adriangb](https://github.com/adriangb) in [#​7056](https://github.com/pydantic/pydantic/pull/7056) - document `round_trip` in Json type documentation by [@​jc-louis](https://github.com/jc-louis) in [#​7137](https://github.com/pydantic/pydantic/pull/7137) - Relax signature checks to better support builtins and C extension functions as validators by [@​adriangb](https://github.com/adriangb) in [#​7101](https://github.com/pydantic/pydantic/pull/7101) - add union_mode='left_to_right' by [@​davidhewitt](https://github.com/davidhewitt) in [#​7151](https://github.com/pydantic/pydantic/pull/7151) - Include an error message hint for inherited ordering by [@​yvalencia91](https://github.com/yvalencia91) in [#​7124](https://github.com/pydantic/pydantic/pull/7124) - Fix one docs link and resolve some warnings for two others by [@​dmontagu](https://github.com/dmontagu) in [#​7153](https://github.com/pydantic/pydantic/pull/7153) - Include Field extra keys name in warning by [@​hramezani](https://github.com/hramezani) in [#​7136](https://github.com/pydantic/pydantic/pull/7136) ### [`v2.1.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v211-2023-07-25) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.1.0...v2.1.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.1.1) - Skip FieldInfo merging when unnecessary by [@​dmontagu](https://github.com/dmontagu) in [#​6862](https://github.com/pydantic/pydantic/pull/6862) ### [`v2.1.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v210-2023-07-25) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.0.3...v2.1.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.1.0) - Add `StringConstraints` for use as Annotated metadata by [@​adriangb](https://github.com/adriangb) in [#​6605](https://github.com/pydantic/pydantic/pull/6605) - Try to fix intermittently failing CI by [@​adriangb](https://github.com/adriangb) in [#​6683](https://github.com/pydantic/pydantic/pull/6683) - Remove redundant example of optional vs default. by [@​ehiggs-deliverect](https://github.com/ehiggs-deliverect) in [#​6676](https://github.com/pydantic/pydantic/pull/6676) - Docs update by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6692](https://github.com/pydantic/pydantic/pull/6692) - Remove the Validate always section in validator docs by [@​adriangb](https://github.com/adriangb) in [#​6679](https://github.com/pydantic/pydantic/pull/6679) - Fix recursion error in json schema generation by [@​adriangb](https://github.com/adriangb) in [#​6720](https://github.com/pydantic/pydantic/pull/6720) - Fix incorrect subclass check for secretstr by [@​AlexVndnblcke](https://github.com/AlexVndnblcke) in [#​6730](https://github.com/pydantic/pydantic/pull/6730) - update pdm / pdm lockfile to 2.8.0 by [@​davidhewitt](https://github.com/davidhewitt) in [#​6714](https://github.com/pydantic/pydantic/pull/6714) - unpin pdm on more CI jobs by [@​davidhewitt](https://github.com/davidhewitt) in [#​6755](https://github.com/pydantic/pydantic/pull/6755) - improve source locations for auxiliary packages in docs by [@​davidhewitt](https://github.com/davidhewitt) in [#​6749](https://github.com/pydantic/pydantic/pull/6749) - Assume builtins don't accept an info argument by [@​adriangb](https://github.com/adriangb) in [#​6754](https://github.com/pydantic/pydantic/pull/6754) - Fix bug where calling `help(BaseModelSubclass)` raises errors by [@​hramezani](https://github.com/hramezani) in [#​6758](https://github.com/pydantic/pydantic/pull/6758) - Fix mypy plugin handling of `@model_validator(mode="after")` by [@​ljodal](https://github.com/ljodal) in [#​6753](https://github.com/pydantic/pydantic/pull/6753) - update pydantic-core to 2.3.1 by [@​davidhewitt](https://github.com/davidhewitt) in [#​6756](https://github.com/pydantic/pydantic/pull/6756) - Mypy plugin for settings by [@​hramezani](https://github.com/hramezani) in [#​6760](https://github.com/pydantic/pydantic/pull/6760) - Use `contentSchema` keyword for JSON schema by [@​dmontagu](https://github.com/dmontagu) in [#​6715](https://github.com/pydantic/pydantic/pull/6715) - fast-path checking finite decimals by [@​davidhewitt](https://github.com/davidhewitt) in [#​6769](https://github.com/pydantic/pydantic/pull/6769) - Docs update by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6771](https://github.com/pydantic/pydantic/pull/6771) - Improve json schema doc by [@​hramezani](https://github.com/hramezani) in [#​6772](https://github.com/pydantic/pydantic/pull/6772) - Update validator docs by [@​adriangb](https://github.com/adriangb) in [#​6695](https://github.com/pydantic/pydantic/pull/6695) - Fix typehint for wrap validator by [@​dmontagu](https://github.com/dmontagu) in [#​6788](https://github.com/pydantic/pydantic/pull/6788) - 🐛 Fix validation warning for unions of Literal and other type by [@​lig](https://github.com/lig) in [#​6628](https://github.com/pydantic/pydantic/pull/6628) - Update documentation for generics support in V2 by [@​tpdorsey](https://github.com/tpdorsey) in [#​6685](https://github.com/pydantic/pydantic/pull/6685) - add pydantic-core build info to `version_info()` by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6785](https://github.com/pydantic/pydantic/pull/6785) - Fix pydantic dataclasses that use slots with default values by [@​dmontagu](https://github.com/dmontagu) in [#​6796](https://github.com/pydantic/pydantic/pull/6796) - Fix inheritance of hash function for frozen models by [@​dmontagu](https://github.com/dmontagu) in [#​6789](https://github.com/pydantic/pydantic/pull/6789) - ✨ Add `SkipJsonSchema` annotation by [@​Kludex](https://github.com/Kludex) in [#​6653](https://github.com/pydantic/pydantic/pull/6653) - Error if an invalid field name is used with Field by [@​dmontagu](https://github.com/dmontagu) in [#​6797](https://github.com/pydantic/pydantic/pull/6797) - Add `GenericModel` to `MOVED_IN_V2` by [@​adriangb](https://github.com/adriangb) in [#​6776](https://github.com/pydantic/pydantic/pull/6776) - Remove unused code from `docs/usage/types/custom.md` by [@​hramezani](https://github.com/hramezani) in [#​6803](https://github.com/pydantic/pydantic/pull/6803) - Fix `float` -> `Decimal` coercion precision loss by [@​adriangb](https://github.com/adriangb) in [#​6810](https://github.com/pydantic/pydantic/pull/6810) - remove email validation from the north star benchmark by [@​davidhewitt](https://github.com/davidhewitt) in [#​6816](https://github.com/pydantic/pydantic/pull/6816) - Fix link to mypy by [@​progsmile](https://github.com/progsmile) in [#​6824](https://github.com/pydantic/pydantic/pull/6824) - Improve initialization hooks example by [@​hramezani](https://github.com/hramezani) in [#​6822](https://github.com/pydantic/pydantic/pull/6822) - Fix default port for mongosrv DSNs by [@​dmontagu](https://github.com/dmontagu) in [#​6827](https://github.com/pydantic/pydantic/pull/6827) - Improve API documentation, in particular more links between usage and API docs by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6780](https://github.com/pydantic/pydantic/pull/6780) - update pydantic-core to 2.4.0 by [@​davidhewitt](https://github.com/davidhewitt) in [#​6831](https://github.com/pydantic/pydantic/pull/6831) - Fix `annotated_types.MaxLen` validator for custom sequence types by [@​ImogenBits](https://github.com/ImogenBits) in [#​6809](https://github.com/pydantic/pydantic/pull/6809) - Update V1 by [@​hramezani](https://github.com/hramezani) in [#​6833](https://github.com/pydantic/pydantic/pull/6833) - Make it so callable JSON schema extra works by [@​dmontagu](https://github.com/dmontagu) in [#​6798](https://github.com/pydantic/pydantic/pull/6798) - Fix serialization issue with `InstanceOf` by [@​dmontagu](https://github.com/dmontagu) in [#​6829](https://github.com/pydantic/pydantic/pull/6829) - Add back support for `json_encoders` by [@​adriangb](https://github.com/adriangb) in [#​6811](https://github.com/pydantic/pydantic/pull/6811) - Update field annotations when building the schema by [@​dmontagu](https://github.com/dmontagu) in [#​6838](https://github.com/pydantic/pydantic/pull/6838) - Use `WeakValueDictionary` to fix generic memory leak by [@​dmontagu](https://github.com/dmontagu) in [#​6681](https://github.com/pydantic/pydantic/pull/6681) - Add `config.defer_build` to optionally make model building lazy by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6823](https://github.com/pydantic/pydantic/pull/6823) - delegate `UUID` serialization to pydantic-core by [@​davidhewitt](https://github.com/davidhewitt) in [#​6850](https://github.com/pydantic/pydantic/pull/6850) - Update `json_encoders` docs by [@​adriangb](https://github.com/adriangb) in [#​6848](https://github.com/pydantic/pydantic/pull/6848) - Fix error message for `staticmethod`/`classmethod` order with validate_call by [@​dmontagu](https://github.com/dmontagu) in [#​6686](https://github.com/pydantic/pydantic/pull/6686) - Improve documentation for `Config` by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​6847](https://github.com/pydantic/pydantic/pull/6847) - Update serialization doc to mention `Field.exclude` takes priority over call-time `include/exclude` by [@​hramezani](https://github.com/hramezani) in [#​6851](https://github.com/pydantic/pydantic/pull/6851) - Allow customizing core schema generation by making `GenerateSchema` public by [@​adriangb](https://github.com/adriangb) in [#​6737](https://github.com/pydantic/pydantic/pull/6737) ### [`v2.0.3`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v203-2023-07-05) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.0.2...v2.0.3) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.0.3) - Mention PyObject (v1) moving to ImportString (v2) in migration doc by [@​slafs](https://github.com/slafs) in [#​6456](https://github.com/pydantic/pydantic/pull/6456) - Fix release-tweet CI by [@​Kludex](https://github.com/Kludex) in [#​6461](https://github.com/pydantic/pydantic/pull/6461) - Revise the section on required / optional / nullable fields. by [@​ybressler](https://github.com/ybressler) in [#​6468](https://github.com/pydantic/pydantic/pull/6468) - Warn if a type hint is not in fact a type by [@​adriangb](https://github.com/adriangb) in [#​6479](https://github.com/pydantic/pydantic/pull/6479) - Replace TransformSchema with GetPydanticSchema by [@​dmontagu](https://github.com/dmontagu) in [#​6484](https://github.com/pydantic/pydantic/pull/6484) - Fix the un-hashability of various annotation types, for use in caching generic containers by [@​dmontagu](https://github.com/dmontagu) in [#​6480](https://github.com/pydantic/pydantic/pull/6480) - PYD-164: Rework custom types docs by [@​adriangb](https://github.com/adriangb) in [#​6490](https://github.com/pydantic/pydantic/pull/6490) - Fix ci by [@​adriangb](https://github.com/adriangb) in [#​6507](https://github.com/pydantic/pydantic/pull/6507) - Fix forward ref in generic by [@​adriangb](https://github.com/adriangb) in [#​6511](https://github.com/pydantic/pydantic/pull/6511) - Fix generation of serialization JSON schemas for core_schema.ChainSchema by [@​dmontagu](https://github.com/dmontagu) in [#​6515](https://github.com/pydantic/pydantic/pull/6515) - Document the change in `Field.alias` behavior in Pydantic V2 by [@​hramezani](https://github.com/hramezani) in [#​6508](https://github.com/pydantic/pydantic/pull/6508) - Give better error message attempting to compute the json schema of a model with undefined fields by [@​dmontagu](https://github.com/dmontagu) in [#​6519](https://github.com/pydantic/pydantic/pull/6519) - Document `alias_priority` by [@​tpdorsey](https://github.com/tpdorsey) in [#​6520](https://github.com/pydantic/pydantic/pull/6520) - Add redirect for types documentation by [@​tpdorsey](https://github.com/tpdorsey) in [#​6513](https://t </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/libretime/libretime). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNDQuMiIsInVwZGF0ZWRJblZlciI6IjM3LjEwMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: jo <ljonas@riseup.net>
Change Summary
Currently
pydantic
model definitions cannot be serialized using cloudpickle. One of the underlying issues is that theSchemaSerializer
object is not serializable (even using vanillapickle
).This PR enables serialization for the
SchemaSerializer
by:schema
andconfig
objects required to initialize theSchemaSerializer
, and__reduce__
method that instructscloudpickle
to reconstruct theSchemaSerializer
from these objects.I've also updated the existing
SchemaValidator
codepath to match this one, including fixing a bug where theconfig
object was being lost on serialization.Related issue number
pydantic/pydantic#6763
Checklist
pydantic-core
(except for expected changes)