8000 replace ultra_strict with new union implementation by davidhewitt · Pull Request #867 · pydantic/pydantic-core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

replace ultra_strict with new union implementation #867

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

Merged
merged 15 commits into from
Nov 8, 2023

Conversation

davidhewitt
Copy link
Contributor
@davidhewitt davidhewitt commented Aug 9, 2023

Change Summary

This PR reworks union validation by replacing ultra_strict validation mode by a mechanism that allows validators to self-report how "exact" a match the input is. There are three tiers: exact, strict, and lax.

The mechanism by which I did this is to introduce Exactness in the ValidationState.

At the moment I've only implemented this self-reporting of exactness for int, bool, float and str inputs (see the changes to validate_int, validate_float and validate_bool). All other validators will self-report as "unknown", which forces the union to do separate strict and lax validations to work out how good the match is. If merged, we should add one or more follow-up PRs to remove as many uses of set_exactness_unknown, as this'll improve quality of union matches by e.g. allowing list[int] to be distinguished from list[float] etc. in a single pass.

The new union algorithm can be summarised as:

  • Run a match for validators from left-to-right. If any succeed with an exact match, stop immediately and return that result.
    • In lax mode, while passing from left-to-right, validators which succeed with "unknown" accuracy are rerun with strict mode to determine whether the result should be treated as "lax" or "strict".
  • If none are exact, if any of them succeeded with a "strict" match, return the leftmost one.
  • If in lax mode, if any succeeded at all, return the leftmost one.
  • All must have failed; return the errors.

Related issue number

pydantic/pydantic#6830
pydantic/pydantic#7097
pydantic/pydantic#7110

Fixes pydantic/pydantic#8049

Checklist

  • Unit tests for the changes exist
  • Documentation reflects the changes where applicable
  • Pydantic tests pass with this pydantic-core (except for expected changes)
  • My PR is ready to review, please add a comment including the phrase "please review" to assign reviewers

Selected Reviewer: @dmontagu

@adriangb
Copy link
Member
adriangb commented Aug 9, 2023

This seems great to me! If CI passes and performance is good, let's get this merged.

@codecov
Copy link
codecov bot commented Aug 9, 2023

Codecov Report

Merging #867 (18f5fce) into main (0c46146) will increase coverage by 0.03%.
The diff coverage is 93.40%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #867      +/-   ##
==========================================
+ Coverage   89.59%   89.63%   +0.03%     
==========================================
  Files         106      106              
  Lines       16796    16391     -405     
  Branches       35       35              
==========================================
- Hits        15049    14692     -357     
+ Misses       1740     1692      -48     
  Partials        7        7              
Files Coverage Δ
src/definitions.rs 85.49% <ø> (-0.64%) ⬇️
src/input/mod.rs 100.00% <ø> (ø)
src/input/return_enums.rs 85.14% <100.00%> (+0.58%) ⬆️
src/validators/any.rs 100.00% <100.00%> (ø)
src/validators/arguments.rs 99.57% <100.00%> (-0.03%) ⬇️
src/validators/bool.rs 100.00% <100.00%> (ø)
src/validators/bytes.rs 97.18% <100.00%> (+3.28%) ⬆️
src/validators/call.rs 98.11% <ø> (+4.08%) ⬆️
src/validators/callable.rs 95.45% <100.00%> (-0.85%) ⬇️
src/validators/chain.rs 98.03% <ø> (+5.05%) ⬆️
... and 39 more

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0c46146...18f5fce. Read the comment docs.

@codspeed-hq
Copy link
codspeed-hq bot commented Aug 9, 2023

CodSpeed Performance Report

Merging #867 will degrade performances by 24.95%

Comparing dh/one-pass-unions-2 (ae5dfd5) with main (0c46146)

Summary

⚡ 1 improvements
❌ 1 regressions
✅ 138 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark main dh/one-pass-unions-2 Change
test_dont_raise_error 29.3 µs 39.1 µs -24.95%
test_decimal_from_string_core 81.3 µs 67.7 µs +20.12%

@davidhewitt
Copy link
Contributor Author

I'll address the integration test failures and then upload benchmarks.

@davidhewitt
Copy link
Contributor Author

So this is generally compatible with existing behaviour except for this test in the pydantic suite

assert TypeAdapter(UUID | str).validate_json('"f4fe10b4-e0c8-4232-ba26-4acd491c2414"') == UUID(
            'f4fe10b4-e0c8-4232-ba26-4acd491c2414'
        )

because after this PR, in JSON mode the str is a better match than a UUID for a str input.

See also pydantic/pydantic#7097. Already in Python mode we return str for this case. I see two contradictory arguments:

  • In JSON mode a UUID is a better match in this case.
  • It's better if Python and JSON mode select the same union variant.

I would appreciate some design input here. I'm slightly leaning towards the first argument - UUID is the better match, and that we should mark pydantic/pydantic#7097 as resolved by union_mode="left_to_right" in combination with the fact that we explicitly accept the different modes may select different union variants.

The first option is also nice as it's then no change of behaviour at all (but I'd need to rework this PR to implement it).

@davidhewitt
Copy link
Contributor Author

please review

Copy link
Member
@samuelcolvin samuelcolvin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in general this looks good, a few questions suggestions.

strict: bool,
coerce_numbers_to_str: bool,
) -> ValResult<ValidationMatch<EitherString<'a>>> {
// Justification for `strict` instead of `exact` is that in JSON strings can also
Copy link
Member
8000

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will this want to change in future, if so can we leave a consistent TODO: V3 comment to make it easy to find in future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This depends what you think of e.g. pydantic/pydantic#7097. The current semantic that this PR preserves is that UUID is "as good" as str for a UUID-format JSON string, so it's dependent on ordering. Changing this to be "exact" means that in JSON mode a str in a union wins over UUID, datetime, etc, irrespective of position.

That is a positive change for simplicity and matches Python semantics better, so there is a case to consider breaking this, but it's not clear cut IMO.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's hard to argue that in datetime | str or UUID | str or datetime | int that the type which actually matches JSON type shouldn't take priority. If you agree I would be happy to change it now.

Otherwise add the TODO: V3 comment so we remember to change it in future.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree but feeling a bit cautious so will mark as TODO and we can decide later if it's a 2.6 or V3 thing.

Copy link
Collaborator
@dmontagu dmontagu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the edge cases discussed on slack (which are now mostly addressed?), I approve.

In particular, just want to make sure these behave the same as on main:

from typing import Any

from pydantic import BaseModel


class Model(BaseModel):
    x: float | Any

print(repr(Model(x=1).x))
#> 1
from typing import Any

from pydantic import BaseModel


class Model(BaseModel):
    x: int | Any

print(repr(Model(x=1.0).x))
#> 1.0

Comment on lines +707 to +710
# int *is* coerced to float, this is a strict validation
schema = core_schema.union_schema([core_schema.float_schema(), core_schema.any_schema()])
validator = SchemaValidator(schema)
assert repr(validator.validate_python(1)) == '1.0'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a known difference against main; on main this will not coerce and will keep as an int.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In particular, just want to make sure these behave the same as on main:

Specifically @dmontagu this one has changed, in discussion with @samuelcolvin we believe this to be okay.

@davidhewitt davidhewitt merged commit f409e00 into main Nov 8, 2023
@davidhewitt davidhewitt deleted the dh/one-pass-unions-2 branch November 8, 2023 21:40
renovate bot added a commit to spiraldb/ziggy-pydust that referenced this pull request Nov 13, 2023
[![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://togithub.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://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.2...v2.5.0)

[GitHub
release](https://togithub.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://togithub.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1)
- Update to `pyright==1.1.335` by
[@&#8203;Viicos](https://togithub.com/Viicos) in
[#&#8203;8075](https://togithub.com/pydantic/pydantic/pull/8075)

##### New Features

- Allow plugins to catch non `ValidationError` errors by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7806](https://togithub.com/pydantic/pydantic/pull/7806)
- Support `__doc__` argument in `create_model()` by
[@&#8203;chris-spann](https://togithub.com/chris-spann) in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- Expose `regex_engine` flag - meaning you can use with the Rust or
Python regex libraries in constraints by
[@&#8203;utkini](https://togithub.com/utkini) in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- Save return type generated from type annotation in `ComputedFieldInfo`
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7889](https://togithub.com/pydantic/pydantic/pull/7889)
- Adopting `ruff` formatter by
[@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- Added `validation_error_cause` to config by
[@&#8203;zakstucke](https://togithub.com/zakstucke) in
[#&#8203;7626](https://togithub.com/pydantic/pydantic/pull/7626)
- Make path of the item to validate available in plugin by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7861](https://togithub.com/pydantic/pydantic/pull/7861)
- Add `CallableDiscriminator` and `Tag` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7983](https://togithub.com/pydantic/pydantic/pull/7983)
- Make union case tags affect union error messages by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8001](https://togithub.com/pydantic/pydantic/pull/8001)
- Add `examples` and `json_schema_extra` to `@computed_field` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8013](https://togithub.com/pydantic/pydantic/pull/8013)
- Add `JsonValue` type by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7998](https://togithub.com/pydantic/pydantic/pull/7998)
- Allow `str` as argument to `Discriminator` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8047](https://togithub.com/pydantic/pydantic/pull/8047)
- Add `SchemaSerializer.__reduce__` method to enable pickle
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[pydantic/pydantic-core#1006](https://togithub.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
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#867](https://togithub.com/pydantic/pydantic-core/pull/867)
- Add support for instance method reassignment when `extra='allow'` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7683](https://togithub.com/pydantic/pydantic/pull/7683)
- Support JSON schema generation for `Enum` types with no cases by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7927](https://togithub.com/pydantic/pydantic/pull/7927)
- Warn if a class inherits from `Generic` before `BaseModel` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7891](https://togithub.com/pydantic/pydantic/pull/7891)

##### Performance

- New custom JSON parser, `jiter` by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#974](https://togithub.com/pydantic/pydantic-core/pull/974)
- PGO build for MacOS M1 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#1063](https://togithub.com/pydantic/pydantic-core/pull/1063)
- Use `__getattr__` for all package imports, improve import time by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7947](https://togithub.com/pydantic/pydantic/pull/7947)

##### Fixes

- Fix `mypy` issue with subclasses of `RootModel` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7677](https://togithub.com/pydantic/pydantic/pull/7677)
- Properly rebuild the `FieldInfo` when a forward ref gets evaluated by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7698](https://togithub.com/pydantic/pydantic/pull/7698)
- Fix failure to load `SecretStr` from JSON (regression in v2.4) by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7729](https://togithub.com/pydantic/pydantic/pull/7729)
- Fix `defer_build` behavior with `TypeAdapter` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7736](https://togithub.com/pydantic/pydantic/pull/7736)
- Improve compatibility with legacy `mypy` versions by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7742](https://togithub.com/pydantic/pydantic/pull/7742)
- Fix: update `TypeVar` handling when default is not set by
[@&#8203;pmmmwh](https://togithub.com/pmmmwh) in
[#&#8203;7719](https://togithub.com/pydantic/pydantic/pull/7719)
- Support specification of `strict` on `Enum` type fields by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7761](https://togithub.com/pydantic/pydantic/pull/7761)
- Wrap `weakref.ref` instead of subclassing to fix `cloudpickle`
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- Keep values of private attributes set within `model_post_init` in
subclasses by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- Add more specific type for non-callable `json_schema_extra` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7803](https://togithub.com/pydantic/pydantic/pull/7803)
- Raise an error when deleting frozen (model) fields by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7800](https://togithub.com/pydantic/pydantic/pull/7800)
- Fix schema sorting bug with default values by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7817](https://togithub.com/pydantic/pydantic/pull/7817)
- Use generated alias for aliases that are not specified otherwise by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7802](https://togithub.com/pydantic/pydantic/pull/7802)
- Support `strict` specification for `UUID` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7865](https://togithub.com/pydantic/pydantic/pull/7865)
- JSON schema: fix extra parameter handling by
[@&#8203;me-and](https://togithub.com/me-and) in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses
by [@&#8203;PrettyWood](https://togithub.com/PrettyWood) in
[#&#8203;7827](https://togithub.com/pydantic/pydantic/pull/7827)
- Support `validate_call` decorator for methods in classes with
`__slots__` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7883](https://togithub.com/pydantic/pydantic/pull/7883)
- Fix pydantic dataclass problem with `dataclasses.field` default by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7898](https://togithub.com/pydantic/pydantic/pull/7898)
- Fix schema generation for generics with union type bounds by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7899](https://togithub.com/pydantic/pydantic/pull/7899)
- Fix version for `importlib_metadata` on python 3.7 by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7904](https://togithub.com/pydantic/pydantic/pull/7904)
- Support `|` operator (Union) in PydanticRecursiveRef by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7892](https://togithub.com/pydantic/pydantic/pull/7892)
- Fix `display_as_type` for `TypeAliasType` in python 3.12 by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7929](https://togithub.com/pydantic/pydantic/pull/7929)
- Add support for `NotRequired` generics in `TypedDict` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7932](https://togithub.com/pydantic/pydantic/pull/7932)
- Make generic `TypeAliasType` specifications produce different schema
definitions by [@&#8203;alexdrydew](https://togithub.com/alexdrydew) in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- Added fix for signature of inherited dataclass by
[@&#8203;howsunjow](https://togithub.com/howsunjow) in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- Make the model name generation more robust in JSON schema by
[@&#8203;joakimnordling](https://togithub.com/joakimnordling) in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- Fix plurals in validation error messages (in tests) by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- `PrivateAttr` is passed from `Annotated` default position by
[@&#8203;tabassco](https://togithub.com/tabassco) in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- Don't decode bytes (which may not be UTF8) when displaying SecretBytes
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8012](https://togithub.com/pydantic/pydantic/pull/8012)
- Use `classmethod` instead of `classmethod[Any, Any, Any]` by
[@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- Clearer error on invalid Plugin by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8023](https://togithub.com/pydantic/pydantic/pull/8023)
- Correct pydantic dataclasses import by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8027](https://togithub.com/pydantic/pydantic/pull/8027)
- Fix misbehavior for models referencing redefined type aliases by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8050](https://togithub.com/pydantic/pydantic/pull/8050)
- Fix `Optional` field with `validate_default` only performing one field
validation by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1002](https://togithub.com/pydantic/pydantic-core/pull/1002)
- Fix `definition-ref` bug with `Dict` keys by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1014](https://togithub.com/pydantic/pydantic-core/pull/1014)
- Fix bug allowing validation of `bool` types with
`coerce_numbers_to_str=True` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1017](https://togithub.com/pydantic/pydantic-core/pull/1017)
- Don't accept `NaN` in float and decimal constraints by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1037](https://togithub.com/pydantic/pydantic-core/pull/1037)
- Add `lax_str` and `lax_int` support for enum values not inherited from
str/int by [@&#8203;michaelhly](https://togithub.com/michaelhly) in
[pydantic/pydantic-core#1015](https://togithub.com/pydantic/pydantic-core/pull/1015)
- Support subclasses in lists in `Union` of `List` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1039](https://togithub.com/pydantic/pydantic-core/pull/1039)
- Allow validation against `max_digits` and `decimals` to pass if
normalized or non-normalized input is valid by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1049](https://togithub.com/pydantic/pydantic-core/pull/1049)
- Fix: proper pluralization in `ValidationError` messages by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[pydantic/pydantic-core#1050](https://togithub.com/pydantic/pydantic-core/pull/1050)
- Disallow the string `'-'` as `datetime` input by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/speedate#52](https://togithub.com/pydantic/speedate/pull/52) &
[pydantic/pydantic-core#1060](https://togithub.com/pydantic/pydantic-core/pull/1060)
- Fix: NaN and Inf float serialization by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1062](https://togithub.com/pydantic/pydantic-core/pull/1062)
- Restore manylinux-compatible PGO builds by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1068](https://togithub.com/pydantic/pydantic-core/pull/1068)

##### New Contributors

##### `pydantic`

- [@&#8203;schneebuzz](https://togithub.com/schneebuzz) made their first
contribution in
[#&#8203;7699](https://togithub.com/pydantic/pydantic/pull/7699)
- [@&#8203;edoakes](https://togithub.com/edoakes) made their first
contribution in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- [@&#8203;alexmojaki]
CEB7
(https://togithub.com/alexmojaki) made their first
contribution in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- [@&#8203;NickG123](https://togithub.com/NickG123) made their first
contribution in
[#&#8203;7751](https://togithub.com/pydantic/pydantic/pull/7751)
- [@&#8203;gowthamgts](https://togithub.com/gowthamgts) made their first
contribution in
[#&#8203;7830](https://togithub.com/pydantic/pydantic/pull/7830)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[#&#8203;7848](https://togithub.com/pydantic/pydantic/pull/7848)
- [@&#8203;laundmo](https://togithub.com/laundmo) made their first
contribution in
[#&#8203;7850](https://togithub.com/pydantic/pydantic/pull/7850)
- [@&#8203;rahmatnazali](https://togithub.com/rahmatnazali) made their
first contribution in
[#&#8203;7870](https://togithub.com/pydantic/pydantic/pull/7870)
- [@&#8203;waterfountain1996](https://togithub.com/waterfountain1996)
made their first contribution in
[#&#8203;7878](https://togithub.com/pydantic/pydantic/pull/7878)
- [@&#8203;chris-spann](https://togithub.com/chris-spann) made their
first contribution in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- [@&#8203;me-and](https://togithub.com/me-and) made their first
contribution in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- [@&#8203;utkini](https://togithub.com/utkini) made their first
contribution in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- [@&#8203;bn-l](https://togithub.com/bn-l) made their first
contribution in
[#&#8203;7744](https://togithub.com/pydantic/pydantic/pull/7744)
- [@&#8203;alexdrydew](https://togithub.com/alexdrydew) made their first
contribution in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- [@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) made their
first contribution in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- [@&#8203;howsunjow](https://togithub.com/howsunjow) made their first
contribution in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- [@&#8203;joakimnordling](https://togithub.com/joakimnordling) made
their first contribution in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- [@&#8203;icfly2](https://togithub.com/icfly2) made their first
contribution in
[#&#8203;7976](https://togithub.com/pydantic/pydantic/pull/7976)
- [@&#8203;Yummy-Yums](https://togithub.com/Yummy-Yums) made their first
contribution in
[#&#8203;8003](https://togithub.com/pydantic/pydantic/pull/8003)
- [@&#8203;Iipin](https://togithub.com/Iipin) made their first
contribution in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- [@&#8203;tabassco](https://togithub.com/tabassco) made their first
contribution in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- [@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) made their first
contribution in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- [@&#8203;0x00cl](https://togithub.com/0x00cl) made their first
contribution in
[#&#8203;8010](https://togithub.com/pydantic/pydantic/pull/8010)
- [@&#8203;barraponto](https://togithub.com/barraponto) made their first
contribution in
[#&#8203;8032](https://togithub.com/pydantic/pydantic/pull/8032)

##### `pydantic-core`

- [@&#8203;sisp](https://togithub.com/sisp) made their first
contribution in
[pydantic/pydantic-core#995](https://togithub.com/pydantic/pydantic-core/pull/995)
- [@&#8203;michaelhly](https://togithub.com/michaelhly) made their first
contribution in
[pydantic/pydantic-core#1015](https://togithub.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>
renovate bot added a commit to allenporter/flux-local that referenced this pull request Nov 14, 2023
[![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://togithub.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://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.2...v2.5.0)

[GitHub
release](https://togithub.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://togithub.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1)
- Update to `pyright==1.1.335` by
[@&#8203;Viicos](https://togithub.com/Viicos) in
[#&#8203;8075](https://togithub.com/pydantic/pydantic/pull/8075)

##### New Features

- Allow plugins to catch non `ValidationError` errors by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7806](https://togithub.com/pydantic/pydantic/pull/7806)
- Support `__doc__` argument in `create_model()` by
[@&#8203;chris-spann](https://togithub.com/chris-spann) in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- Expose `regex_engine` flag - meaning you can use with the Rust or
Python regex libraries in constraints by
[@&#8203;utkini](https://togithub.com/utkini) in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- Save return type generated from type annotation in `ComputedFieldInfo`
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7889](https://togithub.com/pydantic/pydantic/pull/7889)
- Adopting `ruff` formatter by
[@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- Added `validation_error_cause` to config by
[@&#8203;zakstucke](https://togithub.com/zakstucke) in
[#&#8203;7626](https://togithub.com/pydantic/pydantic/pull/7626)
- Make path of the item to validate available in plugin by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7861](https://togithub.com/pydantic/pydantic/pull/7861)
- Add `CallableDiscriminator` and `Tag` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7983](https://togithub.com/pydantic/pydantic/pull/7983)
- Make union case tags affect union error messages by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8001](https://togithub.com/pydantic/pydantic/pull/8001)
- Add `examples` and `json_schema_extra` to `@computed_field` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8013](https://togithub.com/pydantic/pydantic/pull/8013)
- Add `JsonValue` type by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7998](https://togithub.com/pydantic/pydantic/pull/7998)
- Allow `str` as argument to `Discriminator` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8047](https://togithub.com/pydantic/pydantic/pull/8047)
- Add `SchemaSerializer.__reduce__` method to enable pickle
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[pydantic/pydantic-core#1006](https://togithub.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
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#867](https://togithub.com/pydantic/pydantic-core/pull/867)
- Add support for instance method reassignment when `extra='allow'` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7683](https://togithub.com/pydantic/pydantic/pull/7683)
- Support JSON schema generation for `Enum` types with no cases by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7927](https://togithub.com/pydantic/pydantic/pull/7927)
- Warn if a class inherits from `Generic` before `BaseModel` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7891](https://togithub.com/pydantic/pydantic/pull/7891)

##### Performance

- New custom JSON parser, `jiter` by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#974](https://togithub.com/pydantic/pydantic-core/pull/974)
- PGO build for MacOS M1 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#1063](https://togithub.com/pydantic/pydantic-core/pull/1063)
- Use `__getattr__` for all package imports, improve import time by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7947](https://togithub.com/pydantic/pydantic/pull/7947)

##### Fixes

- Fix `mypy` issue with subclasses of `RootModel` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7677](https://togithub.com/pydantic/pydantic/pull/7677)
- Properly rebuild the `FieldInfo` when a forward ref gets evaluated by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7698](https://togithub.com/pydantic/pydantic/pull/7698)
- Fix failure to load `SecretStr` from JSON (regression in v2.4) by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7729](https://togithub.com/pydantic/pydantic/pull/7729)
- Fix `defer_build` behavior with `TypeAdapter` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7736](https://togithub.com/pydantic/pydantic/pull/7736)
- Improve compatibility with legacy `mypy` versions by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7742](https://togithub.com/pydantic/pydantic/pull/7742)
- Fix: update `TypeVar` handling when default is not set by
[@&#8203;pmmmwh](https://togithub.com/pmmmwh) in
[#&#8203;7719](https://togithub.com/pydantic/pydantic/pull/7719)
- Support specification of `strict` on `Enum` type fields by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7761](https://togithub.com/pydantic/pydantic/pull/7761)
- Wrap `weakref.ref` instead of subclassing to fix `cloudpickle`
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- Keep values of private attributes set within `model_post_init` in
subclasses by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- Add more specific type for non-callable `json_schema_extra` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7803](https://togithub.com/pydantic/pydantic/pull/7803)
- Raise an error when deleting frozen (model) fields by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7800](https://togithub.com/pydantic/pydantic/pull/7800)
- Fix schema sorting bug with default values by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7817](https://togithub.com/pydantic/pydantic/pull/7817)
- Use ge
F438
nerated alias for aliases that are not specified otherwise by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7802](https://togithub.com/pydantic/pydantic/pull/7802)
- Support `strict` specification for `UUID` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7865](https://togithub.com/pydantic/pydantic/pull/7865)
- JSON schema: fix extra parameter handling by
[@&#8203;me-and](https://togithub.com/me-and) in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses
by [@&#8203;PrettyWood](https://togithub.com/PrettyWood) in
[#&#8203;7827](https://togithub.com/pydantic/pydantic/pull/7827)
- Support `validate_call` decorator for methods in classes with
`__slots__` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7883](https://togithub.com/pydantic/pydantic/pull/7883)
- Fix pydantic dataclass problem with `dataclasses.field` default by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7898](https://togithub.com/pydantic/pydantic/pull/7898)
- Fix schema generation for generics with union type bounds by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7899](https://togithub.com/pydantic/pydantic/pull/7899)
- Fix version for `importlib_metadata` on python 3.7 by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7904](https://togithub.com/pydantic/pydantic/pull/7904)
- Support `|` operator (Union) in PydanticRecursiveRef by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7892](https://togithub.com/pydantic/pydantic/pull/7892)
- Fix `display_as_type` for `TypeAliasType` in python 3.12 by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7929](https://togithub.com/pydantic/pydantic/pull/7929)
- Add support for `NotRequired` generics in `TypedDict` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7932](https://togithub.com/pydantic/pydantic/pull/7932)
- Make generic `TypeAliasType` specifications produce different schema
definitions by [@&#8203;alexdrydew](https://togithub.com/alexdrydew) in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- Added fix for signature of inherited dataclass by
[@&#8203;howsunjow](https://togithub.com/howsunjow) in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- Make the model name generation more robust in JSON schema by
[@&#8203;joakimnordling](https://togithub.com/joakimnordling) in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- Fix plurals in validation error messages (in tests) by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- `PrivateAttr` is passed from `Annotated` default position by
[@&#8203;tabassco](https://togithub.com/tabassco) in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- Don't decode bytes (which may not be UTF8) when displaying SecretBytes
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8012](https://togithub.com/pydantic/pydantic/pull/8012)
- Use `classmethod` instead of `classmethod[Any, Any, Any]` by
[@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- Clearer error on invalid Plugin by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8023](https://togithub.com/pydantic/pydantic/pull/8023)
- Correct pydantic dataclasses import by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8027](https://togithub.com/pydantic/pydantic/pull/8027)
- Fix misbehavior for models referencing redefined type aliases by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8050](https://togithub.com/pydantic/pydantic/pull/8050)
- Fix `Optional` field with `validate_default` only performing one field
validation by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1002](https://togithub.com/pydantic/pydantic-core/pull/1002)
- Fix `definition-ref` bug with `Dict` keys by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1014](https://togithub.com/pydantic/pydantic-core/pull/1014)
- Fix bug allowing validation of `bool` types with
`coerce_numbers_to_str=True` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1017](https://togithub.com/pydantic/pydantic-core/pull/1017)
- Don't accept `NaN` in float and decimal constraints by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1037](https://togithub.com/pydantic/pydantic-core/pull/1037)
- Add `lax_str` and `lax_int` support for enum values not inherited from
str/int by [@&#8203;michaelhly](https://togithub.com/michaelhly) in
[pydantic/pydantic-core#1015](https://togithub.com/pydantic/pydantic-core/pull/1015)
- Support subclasses in lists in `Union` of `List` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1039](https://togithub.com/pydantic/pydantic-core/pull/1039)
- Allow validation against `max_digits` and `decimals` to pass if
normalized or non-normalized input is valid by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1049](https://togithub.com/pydantic/pydantic-core/pull/1049)
- Fix: proper pluralization in `ValidationError` messages by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[pydantic/pydantic-core#1050](https://togithub.com/pydantic/pydantic-core/pull/1050)
- Disallow the string `'-'` as `datetime` input by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/speedate#52](https://togithub.com/pydantic/speedate/pull/52) &
[pydantic/pydantic-core#1060](https://togithub.com/pydantic/pydantic-core/pull/1060)
- Fix: NaN and Inf float serialization by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1062](https://togithub.com/pydantic/pydantic-core/pull/1062)
- Restore manylinux-compatible PGO builds by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1068](https://togithub.com/pydantic/pydantic-core/pull/1068)

##### New Contributors

##### `pydantic`

- [@&#8203;schneebuzz](https://togithub.com/schneebuzz) made their first
contribution in
[#&#8203;7699](https://togithub.com/pydantic/pydantic/pull/7699)
- [@&#8203;edoakes](https://togithub.com/edoakes) made their first
contribution in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- [@&#8203;alexmojaki](https://togithub.com/alexmojaki) made their first
contribution in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- [@&#8203;NickG123](https://togithub.com/NickG123) made their first
contribution in
[#&#8203;7751](https://togithub.com/pydantic/pydantic/pull/7751)
- [@&#8203;gowthamgts](https://togithub.com/gowthamgts) made their first
contribution in
[#&#8203;7830](https://togithub.com/pydantic/pydantic/pull/7830)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[#&#8203;7848](https://togithub.com/pydantic/pydantic/pull/7848)
- [@&#8203;laundmo](https://togithub.com/laundmo) made their first
contribution in
[#&#8203;7850](https://togithub.com/pydantic/pydantic/pull/7850)
- [@&#8203;rahmatnazali](https://togithub.com/rahmatnazali) made their
first contribution in
[#&#8203;7870](https://togithub.com/pydantic/pydantic/pull/7870)
- [@&#8203;waterfountain1996](https://togithub.com/waterfountain1996)
made their first contribution in
[#&#8203;7878](https://togithub.com/pydantic/pydantic/pull/7878)
- [@&#8203;chris-spann](https://togithub.com/chris-spann) made their
first contribution in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- [@&#8203;me-and](https://togithub.com/me-and) made their first
contribution in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- [@&#8203;utkini](https://togithub.com/utkini) made their first
contribution in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- [@&#8203;bn-l](https://togithub.com/bn-l) made their first
contribution in
[#&#8203;7744](https://togithub.com/pydantic/pydantic/pull/7744)
- [@&#8203;alexdrydew](https://togithub.com/alexdrydew) made their first
contribution in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- [@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) made their
first contribution in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- [@&#8203;howsunjow](https://togithub.com/howsunjow) made their first
contribution in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- [@&#8203;joakimnordling](https://togithub.com/joakimnordling) made
their first contribution in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- [@&#8203;icfly2](https://togithub.com/icfly2) made their first
contribution in
[#&#8203;7976](https://togithub.com/pydantic/pydantic/pull/7976)
- [@&#8203;Yummy-Yums](https://togithub.com/Yummy-Yums) made their first
contribution in
[#&#8203;8003](https://togithub.com/pydantic/pydantic/pull/8003)
- [@&#8203;Iipin](https://togithub.com/Iipin) made their first
contribution in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- [@&#8203;tabassco](https://togithub.com/tabassco) made their first
contribution in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- [@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) made their first
contribution in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- [@&#8203;0x00cl](https://togithub.com/0x00cl) made their first
contribution in
[#&#8203;8010](https://togithub.com/pydantic/pydantic/pull/8010)
- [@&#8203;barraponto](https://togithub.com/barraponto) made their first
contribution in
[#&#8203;8032](https://togithub.com/pydantic/pydantic/pull/8032)

##### `pydantic-core`

- [@&#8203;sisp](https://togithub.com/sisp) made their first
contribution in
[pydantic/pydantic-core#995](https://togithub.com/pydantic/pydantic-core/pull/995)
- [@&#8203;michaelhly](https://togithub.com/michaelhly) made their first
contribution in
[pydantic/pydantic-core#1015](https://togithub.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>
renovate bot added a commit to allenporter/pyrainbird that referenced this pull request Nov 15, 2023
[![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://togithub.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://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.2...v2.5.0)

[GitHub
release](https://togithub.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://togithub.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1)
- Update to `pyright==1.1.335` by
[@&#8203;Viicos](https://togithub.com/Viicos) in
[#&#8203;8075](https://togithub.com/pydantic/pydantic/pull/8075)

##### New Features

- Allow plugins to catch non `ValidationError` errors by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7806](https://togithub.com/pydantic/pydantic/pull/7806)
- Support `__doc__` argument in `create_model()` by
[@&#8203;chris-spann](https://togithub.com/chris-spann) in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- Expose `regex_engine` flag - meaning you can use with the Rust or
Python regex libraries in constraints by
[@&#8203;utkini](https://togithub.com/utkini) in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- Save return type generated from type annotation in `ComputedFieldInfo`
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7889](https://togithub.com/pydantic/pydantic/pull/7889)
- Adopting `ruff` formatter by
[@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- Added `validation_error_cause` to config by
[@&#8203;zakstucke](https://togithub.com/zakstucke) in
[#&#8203;7626](https://togithub.com/pydantic/pydantic/pull/7626)
- Make path of the item to validate available in plugin by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7861](https://togithub.com/pydantic/pydantic/pull/7861)
- Add `CallableDiscriminator` and `Tag` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7983](https://togithub.com/pydantic/pydantic/pull/7983)
- Make union case tags affect union error messages by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8001](https://togithub.com/pydantic/pydantic/pull/8001)
- Add `examples` and `json_schema_extra` to `@computed_field` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8013](https://togithub.com/pydantic/pydantic/pull/8013)
- Add `JsonValue` type by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7998](https://togithub.com/pydantic/pydantic/pull/7998)
- Allow `str` as argument to `Discriminator` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8047](https://togithub.com/pydantic/pydantic/pull/8047)
- Add `SchemaSerializer.__reduce__` method to enable pickle
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[pydantic/pydantic-core#1006](https://togithub.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
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#867](https://togithub.com/pydantic/pydantic-core/pull/867)
- Add support for instance method reassignment when `extra='allow'` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7683](https://togithub.com/pydantic/pydantic/pull/7683)
- Support JSON schema generation for `Enum` types with no cases by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7927](https://togithub.com/pydantic/pydantic/pull/7927)
- Warn if a class inherits from `Generic` before `BaseModel` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7891](https://togithub.com/pydantic/pydantic/pull/7891)

##### Performance

- New custom JSON parser, `jiter` by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#974](https://togithub.com/pydantic/pydantic-core/pull/974)
- PGO build for MacOS M1 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#1063](https://togithub.com/pydantic/pydantic-core/pull/1063)
- Use `__getattr__` for all package imports, improve import time by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7947](https://togithub.com/pydantic/pydantic/pull/7947)

##### Fixes

- Fix `mypy` issue with subclasses of `RootModel` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7677](https://togithub.com/pydantic/pydantic/pull/7677)
- Properly rebuild the `FieldInfo` when a forward ref gets evaluated by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7698](https://togithub.com/pydantic/pydantic/pull/7698)
- Fix failure to load `SecretStr` from JSON (regression in v2.4) by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7729](https://togithub.com/pydantic/pydantic/pull/7729)
- Fix `defer_build` behavior with `TypeAdapter` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7736](https://togithub.com/pydantic/pydantic/pull/7736)
- Improve compatibility with legacy `mypy` versions by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7742](https://togithub.com/pydantic/pydantic/pull/7742)
- Fix: update `TypeVar` handling when default is not set by
[@&#8203;pmmmwh](https://togithub.com/pmmmwh) in
[#&#8203;7719](https://togithub.com/pydantic/pydantic/pull/7719)
- Support specification of `strict` on `Enum` type fields by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7761](https://togithub.com/pydantic/pydantic/pull/7761)
- Wrap `weakref.ref` instead of subclassing to fix `cloudpickle`
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- Keep values of private attributes set within `model_post_init` in
subclasses by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- Add more specific type for non-callable `json_schema_extra` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7803](https://togithub.com/pydantic/pydantic/pull/7803)
- Raise an error when deleting frozen (model) fields by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7800](https://togithub.com/pydantic/pydantic/pull/7800)
- Fix schema sorting bug with default values by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7817](https://togithub.com/pydantic/pydantic/pull/7817)
- Use generated alias for aliases that are not specified otherwise by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7802](https://togithub.com/pydantic/pydantic/pull/7802)
- Support `strict` specification for `UUID` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7865](https://togithub.com/pydantic/pydantic/pull/7865)
- JSON schema: fix extra parameter handling by
[@&#8203;me-and](https://togithub.com/me-and) in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses
by [@&#8203;PrettyWood](https://togithub.com/PrettyWood) in
[#&#8203;7827](https://togithub.com/pydantic/pydantic/pull/7827)
- Support `validate_call` decorator for methods in classes with
`__slots__` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7883](https://togithub.com/pydantic/pydantic/pull/7883)
- Fix pydantic dataclass problem with `dataclasses.field` default by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7898](https://togithub.com/pydantic/pydantic/pull/7898)
- Fix schema generation for generics with union type bounds by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7899](https://togithub.com/pydantic/pydantic/pull/7899)
- Fix version for `importlib_metadata` on python 3.7 by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7904](https://togithub.com/pydantic/pydantic/pull/7904)
- Support `|` operator (Union) in PydanticRecursiveRef by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7892](https://togithub.com/pydantic/pydantic/pull/7892)
- Fix `display_as_type` for `TypeAliasType` in python 3.12 by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7929](https://togithub.com/pydantic/pydantic/pull/7929)
- Add support for `NotRequired` generics in `TypedDict` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7932](https://togithub.com/pydantic/pydantic/pull/7932)
- Make generic `TypeAliasType` specifications produce different schema
definitions by [@&#8203;alexdrydew](https://togithub.com/alexdrydew) in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- Added fix for signature of inherited dataclass by
[@&#8203;howsunjow](https://togithub.com/howsunjow) in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- Make the model name generation more robust in JSON schema by
[@&#8203;joakimnordling](https://togithub.com/joakimnordling) in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- Fix plurals in validation error messages (in tests) by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- `PrivateAttr` is passed from `Annotated` default position by
[@&#8203;tabassco](https://togithub.com/tabassco) in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- Don't decode bytes (which may not be UTF8) when displaying SecretBytes
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8012](https://togithub.com/pydantic/pydantic/pull/8012)
- Use `classmethod` instead of `classmethod[Any, Any, Any]` by
[@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- Clearer error on invalid Plugin by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8023](https://togithub.com/pydantic/pydantic/pull/8023)
- Correct pydantic dataclasses import by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8027](https://togithub.com/pydantic/pydantic/pull/8027)
- Fix misbehavior for models referencing redefined type aliases by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8050](https://togithub.com/pydantic/pydantic/pull/8050)
- Fix `Optional` field with `validate_default` only performing one field
validation by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1002](https://togithub.com/pydantic/pydantic-core/pull/1002)
- Fix `definition-ref` bug with `Dict` keys by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1014](https://togithub.com/pydantic/pydantic-core/pull/1014)
- Fix bug allowing validation of `bool` types with
`coerce_numbers_to_str=True` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1017](https://togithub.com/pydantic/pydantic-core/pull/1017)
- Don't accept `NaN` in float and decimal constraints by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1037](https://togithub.com/pydantic/pydantic-core/pull/1037)
- Add `lax_str` and `lax_int` support for enum values not inherited from
str/int by [@&#8203;michaelhly](https://togithub.com/michaelhly) in
[pydantic/pydantic-core#1015](https://togithub.com/pydantic/pydantic-core/pull/1015)
- Support subclasses in lists in `Union` of `List` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1039](https://togithub.com/pydantic/pydantic-core/pull/1039)
- Allow validation against `max_digits` and `decimals` to pass if
normalized or non-normalized input is valid by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1049](https://togithub.com/pydantic/pydantic-core/pull/1049)
- Fix: proper pluralization in `ValidationError` messages by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[pydantic/pydantic-core#1050](https://togithub.com/pydantic/pydantic-core/pull/1050)
- Disallow the string `'-'` as `datetime` input by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/speedate#52](https://togithub.com/pydantic/speedate/pull/52) &
[pydantic/pydantic-core#1060](https://togithub.com/pydantic/pydantic-core/pull/1060)
- Fix: NaN and Inf float serialization by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1062](https://togithub.com/pydantic/pydantic-core/pull/1062)
- Restore manylinux-compatible PGO builds by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1068](https://togithub.com/pydantic/pydantic-core/pull/1068)

##### New Contributors

##### `pydantic`

- [@&#8203;schneebuzz](https://togithub.com/schneebuzz) made their first
contribution in
[#&#8203;7699](https://togithub.com/pydantic/pydantic/pull/7699)
- [@&#8203;edoakes](https://togithub.com/edoakes) made their first
contribution in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- [@&#8203;alexmojaki](https://togithub.com/alexmojaki) made their first
contribution in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- [@&#8203;NickG123](https://togithub.com/NickG123) made their first
contribution in
[#&#8203;7751](https://togithub.com/pydantic/pydantic/pull/7751)
- [@&#8203;gowthamgts](https://togithub.com/gowthamgts) made their first
contribution in
[#&#8203;7830](https://togithub.com/pydantic/pydantic/pull/7830)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[#&#8203;7848](https://togithub.com/pydantic/pydantic/pull/7848)
- [@&#8203;laundmo](https://togithub.com/laundmo) made their first
contribution in
[#&#8203;7850](https://togithub.com/pydantic/pydantic/pull/7850)
- [@&#8203;rahmatnazali](https://togithub.com/rahmatnazali) made their
first contribution in
[#&#8203;7870](https://togithub.com/pydantic/pydantic/pull/7870)
- [@&#8203;waterfountain1996](https://togithub.com/waterfountain1996)
made their first contribution in
[#&#8203;7878](https://togithub.com/pydantic/pydantic/pull/7878)
- [@&#8203;chris-spann](https://togithub.com/chris-spann) made their
first contribution in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- [@&#8203;me-and](https://togithub.com/me-and) made their first
contribution in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- [@&#8203;utkini](https://togithub.com/utkini) made their first
contribution in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- [@&#8203;bn-l](https://togithub.com/bn-l) made their first
contribution in
[#&#8203;7744](https://togithub.com/pydantic/pydantic/pull/7744)
- [@&#8203;alexdrydew](https://togithub.com/alexdrydew) made their first
contribution in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- [@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) made their
first contribution in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- [@&#8203;howsunjow](https://togithub.com/howsunjow) made their first
contribution in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- [@&#8203;joakimnordling](https://togithub.com/joakimnordling) made
their first contribution in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- [@&#8203;icfly2](https://togithub.com/icfly2) made their first
contribution in
[#&#8203;7976](https://togithub.com/pydantic/pydantic/pull/7976)
- [@&#8203;Yummy-Yums](https://togithub.com/Yummy-Yums) made their first
contribution in
[#&#8203;8003](https://togithub.com/pydantic/pydantic/pull/8003)
- [@&#8203;Iipin](https://togithub.com/Iipin) made their first
contribution in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- [@&#8203;tabassco](https://togithub.com/tabassco) made their first
contribution in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- [@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) made their first
contribution in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- [@&#8203;0x00cl](https://togithub.com/0x00cl) made their first
contribution in
[#&#8203;8010](https://togithub.com/pydantic/pydantic/pull/8010)
- [@&#8203;barraponto](https://togithub.com/barraponto) made their first
contribution in
[#&#8203;8032](https://togithub.com/pydantic/pydantic/pull/8032)

##### `pydantic-core`

- [@&#8203;sisp](https://togithub.com/sisp) made their first
contribution in
[pydantic/pydantic-core#995](https://togithub.com/pydantic/pydantic-core/pull/995)
- [@&#8203;michaelhly](https://togithub.com/michaelhly) made their first
contribution in
[pydantic/pydantic-core#1015](https://togithub.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>
duwenxin99 pushed a commit to GoogleCloudPlatform/genai-databases-retrieval-app that referenced this pull request Nov 15, 2023
[![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://togithub.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://togithub.com/pydantic/pydantic/releases/tag/v2.5.1):
2023-11-15

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.5.0...v2.5.1)

#### v2.5.1 (2023-11-15)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.5.1)

##### What's Changed

##### Packaging

- uprev pydantic-core to 2.14.3 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8120](https://togithub.com/pydantic/pydantic/pull/8120)

##### Fixes

- Fix package description limit by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8097](https://togithub.com/pydantic/pydantic/pull/8097)
- Fix `ValidateCallWrapper` error when creating a model which has a
@&#8203;validate_call wrapped field annotation by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;8110](https://togithub.com/pydantic/pydantic/pull/8110)

Full Changelog:
pydantic/pydantic@v2.5.0...v2.5.1/

###
[`v2.5.0`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.2...v2.5.0)

[GitHub
release](https://togithub.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://togithub.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1)
- Update to `pyright==1.1.335` by
[@&#8203;Viicos](https://togithub.com/Viicos) in
[#&#8203;8075](https://togithub.com/pydantic/pydantic/pull/8075)

##### New Features

- Allow plugins to catch non `ValidationError` errors by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7806](https://togithub.com/pydantic/pydantic/pull/7806)
- Support `__doc__` argument in `create_model()` by
[@&#8203;chris-spann](https://togithub.com/chris-spann) in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- Expose `regex_engine` flag - meaning you can use with the Rust or
Python regex libraries in constraints by
[@&#8203;utkini](https://togithub.com/utkini) in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- Save return type generated from type annotation in `ComputedFieldInfo`
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7889](https://togithub.com/pydantic/pydantic/pull/7889)
- Adopting `ruff` formatter by
[@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- Added `validation_error_cause` to config by
[@&#8203;zakstucke](https://togithub.com/zakstucke) in
[#&#8203;7626](https://togithub.com/pydantic/pydantic/pull/7626)
- Make path of the item to validate available in plugin by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7861](https://togithub.com/pydantic/pydantic/pull/7861)
- Add `CallableDiscriminator` and `Tag` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7983](https://togithub.com/pydantic/pydantic/pull/7983)
- Make union case tags affect union error messages by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8001](https://togithub.com/pydantic/pydantic/pull/8001)
- Add `examples` and `json_schema_extra` to `@computed_field` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8013](https://togithub.com/pydantic/pydantic/pull/8013)
- Add `JsonValue` type by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7998](https://togithub.com/pydantic/pydantic/pull/7998)
- Allow `str` as argument to `Discriminator` by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8047](https://togithub.com/pydantic/pydantic/pull/8047)
- Add `SchemaSerializer.__reduce__` method to enable pickle
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[pydantic/pydantic-core#1006](https://togithub.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
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#867](https://togithub.com/pydantic/pydantic-core/pull/867)
- Add support for instance method reassignment when `extra='allow'` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7683](https://togithub.com/pydantic/pydantic/pull/7683)
- Support JSON schema generation for `Enum` types with no cases by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7927](https://togithub.com/pydantic/pydantic/pull/7927)
- Warn if a class inherits from `Generic` before `BaseModel` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7891](https://togithub.com/pydantic/pydantic/pull/7891)

##### Performance

- New custom JSON parser, `jiter` by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#974](https://togithub.com/pydantic/pydantic-core/pull/974)
- PGO build for MacOS M1 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[pydantic/pydantic-core#1063](https://togithub.com/pydantic/pydantic-core/pull/1063)
- Use `__getattr__` for all package imports, improve import time by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7947](https://togithub.com/pydantic/pydantic/pull/7947)

##### Fixes

- Fix `mypy` issue with subclasses of `RootModel` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7677](https://togithub.com/pydantic/pydantic/pull/7677)
- Properly rebuild the `FieldInfo` when a forward ref gets evaluated by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7698](https://togithub.com/pydantic/pydantic/pull/7698)
- Fix failure to load `SecretStr` from JSON (regression in v2.4) by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7729](https://togithub.com/pydantic/pydantic/pull/7729)
- Fix `defer_build` behavior with `TypeAdapter` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7736](https://togithub.com/pydantic/pydantic/pull/7736)
- Improve compatibility with legacy `mypy` versions by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7742](https://togithub.com/pydantic/pydantic/pull/7742)
- Fix: update `TypeVar` handling when default is not set by
[@&#8203;pmmmwh](https://togithub.com/pmmmwh) in
[#&#8203;7719](https://togithub.com/pydantic/pydantic/pull/7719)
- Support specification of `strict` on `Enum` type fields by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7761](https://togithub.com/pydantic/pydantic/pull/7761)
- Wrap `weakref.ref` instead of subclassing to fix `cloudpickle`
serialization by [@&#8203;edoakes](https://togithub.com/edoakes) in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- Keep values of private attributes set within `model_post_init` in
subclasses by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- Add more specific type for non-callable `json_schema_extra` by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7803](https://togithub.com/pydantic/pydantic/pull/7803)
- Raise an error when deleting frozen (model) fields by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7800](https://togithub.com/pydantic/pydantic/pull/7800)
- Fix schema sorting bug with default values by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7817](https://togithub.com/pydantic/pydantic/pull/7817)
- Use generated alias for aliases that are not specified otherwise by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7802](https://togithub.com/pydantic/pydantic/pull/7802)
- Support `strict` specification for `UUID` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7865](https://togithub.com/pydantic/pydantic/pull/7865)
- JSON schema: fix extra parameter handling by
[@&#8203;me-and](https://togithub.com/me-and) in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses
by [@&#8203;PrettyWood](https://togithub.com/PrettyWood) in
[#&#8203;7827](https://togithub.com/pydantic/pydantic/pull/7827)
- Support `validate_call` decorator for methods in classes with
`__slots__` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7883](https://togithub.com/pydantic/pydantic/pull/7883)
- Fix pydantic dataclass problem with `dataclasses.field` default by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7898](https://togithub.com/pydantic/pydantic/pull/7898)
- Fix schema generation for generics with union type bounds by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7899](https://togithub.com/pydantic/pydantic/pull/7899)
- Fix version for `importlib_metadata` on python 3.7 by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7904](https://togithub.com/pydantic/pydantic/pull/7904)
- Support `|` operator (Union) in PydanticRecursiveRef by
[@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;7892](https://togithub.com/pydantic/pydantic/pull/7892)
- Fix `display_as_type` for `TypeAliasType` in python 3.12 by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7929](https://togithub.com/pydantic/pydantic/pull/7929)
- Add support for `NotRequired` generics in `TypedDict` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7932](https://togithub.com/pydantic/pydantic/pull/7932)
- Make generic `TypeAliasType` specifications produce different schema
definitions by [@&#8203;alexdrydew](https://togithub.com/alexdrydew) in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- Added fix for signature of inherited dataclass by
[@&#8203;howsunjow](https://togithub.com/howsunjow) in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- Make the model name generation more robust in JSON schema by
[@&#8203;joakimnordling](https://togithub.com/joakimnordling) in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- Fix plurals in validation error messages (in tests) by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- `PrivateAttr` is passed from `Annotated` default position by
[@&#8203;tabassco](https://togithub.com/tabassco) in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- Don't decode bytes (which may not be UTF8) when displaying SecretBytes
by [@&#8203;alexmojaki](https://togithub.com/alexmojaki) in
[#&#8203;8012](https://togithub.com/pydantic/pydantic/pull/8012)
- Use `classmethod` instead of `classmethod[Any, Any, Any]` by
[@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- Clearer error on invalid Plugin by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8023](https://togithub.com/pydantic/pydantic/pull/8023)
- Correct pydantic dataclasses import by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;8027](https://togithub.com/pydantic/pydantic/pull/8027)
- Fix misbehavior for models referencing redefined type aliases by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;8050](https://togithub.com/pydantic/pydantic/pull/8050)
- Fix `Optional` field with `validate_default` only performing one field
validation by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1002](https://togithub.com/pydantic/pydantic-core/pull/1002)
- Fix `definition-ref` bug with `Dict` keys by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1014](https://togithub.com/pydantic/pydantic-core/pull/1014)
- Fix bug allowing validation of `bool` types with
`coerce_numbers_to_str=True` by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1017](https://togithub.com/pydantic/pydantic-core/pull/1017)
- Don't accept `NaN` in float and decimal constraints by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1037](https://togithub.com/pydantic/pydantic-core/pull/1037)
- Add `lax_str` and `lax_int` support for enum values not inherited from
str/int by [@&#8203;michaelhly](https://togithub.com/michaelhly) in
[pydantic/pydantic-core#1015](https://togithub.com/pydantic/pydantic-core/pull/1015)
- Support subclasses in lists in `Union` of `List` types by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1039](https://togithub.com/pydantic/pydantic-core/pull/1039)
- Allow validation against `max_digits` and `decimals` to pass if
normalized or non-normalized input is valid by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[pydantic/pydantic-core#1049](https://togithub.com/pydantic/pydantic-core/pull/1049)
- Fix: proper pluralization in `ValidationError` messages by
[@&#8203;Iipin](https://togithub.com/Iipin) in
[pydantic/pydantic-core#1050](https://togithub.com/pydantic/pydantic-core/pull/1050)
- Disallow the string `'-'` as `datetime` input by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/speedate#52](https://togithub.com/pydantic/speedate/pull/52) &
[pydantic/pydantic-core#1060](https://togithub.com/pydantic/pydantic-core/pull/1060)
- Fix: NaN and Inf float serialization by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1062](https://togithub.com/pydantic/pydantic-core/pull/1062)
- Restore manylinux-compatible PGO builds by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[pydantic/pydantic-core#1068](https://togithub.com/pydantic/pydantic-core/pull/1068)

##### New Contributors

##### `pydantic`

- [@&#8203;schneebuzz](https://togithub.com/schneebuzz) made their first
contribution in
[#&#8203;7699](https://togithub.com/pydantic/pydantic/pull/7699)
- [@&#8203;edoakes](https://togithub.com/edoakes) made their first
contribution in
[#&#8203;7780](https://togithub.com/pydantic/pydantic/pull/7780)
- [@&#8203;alexmojaki](https://togithub.com/alexmojaki) made their first
contribution in
[#&#8203;7775](https://togithub.com/pydantic/pydantic/pull/7775)
- [@&#8203;NickG123](https://togithub.com/NickG123) made their first
contribution in
[#&#8203;7751](https://togithub.com/pydantic/pydantic/pull/7751)
- [@&#8203;gowthamgts](https://togithub.com/gowthamgts) made their first
contribution in
[#&#8203;7830](https://togithub.com/pydantic/pydantic/pull/7830)
- [@&#8203;jamesbraza](https://togithub.com/jamesbraza) made their first
contribution in
[#&#8203;7848](https://togithub.com/pydantic/pydantic/pull/7848)
- [@&#8203;laundmo](https://togithub.com/laundmo) made their first
contribution in
[#&#8203;7850](https://togithub.com/pydantic/pydantic/pull/7850)
- [@&#8203;rahmatnazali](https://togithub.com/rahmatnazali) made their
first contribution in
[#&#8203;7870](https://togithub.com/pydantic/pydantic/pull/7870)
- [@&#8203;waterfountain1996](https://togithub.com/waterfountain1996)
made their first contribution in
[#&#8203;7878](https://togithub.com/pydantic/pydantic/pull/7878)
- [@&#8203;chris-spann](https://togithub.com/chris-spann) made their
first contribution in
[#&#8203;7863](https://togithub.com/pydantic/pydantic/pull/7863)
- [@&#8203;me-and](https://togithub.com/me-and) made their first
contribution in
[#&#8203;7810](https://togithub.com/pydantic/pydantic/pull/7810)
- [@&#8203;utkini](https://togithub.com/utkini) made their first
contribution in
[#&#8203;7768](https://togithub.com/pydantic/pydantic/pull/7768)
- [@&#8203;bn-l](https://togithub.com/bn-l) made their first
contribution in
[#&#8203;7744](https://togithub.com/pydantic/pydantic/pull/7744)
- [@&#8203;alexdrydew](https://togithub.com/alexdrydew) made their first
contribution in
[#&#8203;7893](https://togithub.com/pydantic/pydantic/pull/7893)
- [@&#8203;Luca-Blight](https://togithub.com/Luca-Blight) made their
first contribution in
[#&#8203;7930](https://togithub.com/pydantic/pydantic/pull/7930)
- [@&#8203;howsunjow](https://togithub.com/howsunjow) made their first
contribution in
[#&#8203;7925](https://togithub.com/pydantic/pydantic/pull/7925)
- [@&#8203;joakimnordling](https://togithub.com/joakimnordling) made
their first contribution in
[#&#8203;7881](https://togithub.com/pydantic/pydantic/pull/7881)
- [@&#8203;icfly2](https://togithub.com/icfly2) made their first
contribution in
[#&#8203;7976](https://togithub.com/pydantic/pydantic/pull/7976)
- [@&#8203;Yummy-Yums](https://togithub.com/Yummy-Yums) made their first
contribution in
[#&#8203;8003](https://togithub.com/pydantic/pydantic/pull/8003)
- [@&#8203;Iipin](https://togithub.com/Iipin) made their first
contribution in
[#&#8203;7972](https://togithub.com/pydantic/pydantic/pull/7972)
- [@&#8203;tabassco](https://togithub.com/tabassco) made their first
contribution in
[#&#8203;8004](https://togithub.com/pydantic/pydantic/pull/8004)
- [@&#8203;Mr-Pepe](https://togithub.com/Mr-Pepe) made their first
contribution in
[#&#8203;7979](https://togithub.com/pydantic/pydantic/pull/7979)
- [@&#8203;0x00cl](https://togithub.com/0x00cl) made their first
contribution in
[#&#8203;8010](https://togithub.com/pydantic/pydantic/pull/8010)
- [@&#8203;barraponto](https://togithub.com/barraponto) made their first
contribution in
[#&#8203;8032](https://togithub.com/pydantic/pydantic/pull/8032)

##### `pydantic-core`

- [@&#8203;sisp](https://togithub.com/sisp) made their first
contribution in
[pydantic/pydantic-core#995](https://togithub.com/pydantic/pydantic-core/pull/995)
- [@&#8203;michaelhly](https://togithub.com/michaelhly) made their first
contribution in
[pydantic/pydantic-core#1015](https://togithub.com/pydantic/pydantic-core/pull/1015)

###
[`v2.4.2`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v242-2023-09-27)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.1...v2.4.2)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.4.2)

##### What's Changed

##### Fixes

- Fix bug with JSON schema for sequence of discriminated union by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7647](https://togithub.com/pydantic/pydantic/pull/7647)
- Fix schema references in discriminated unions by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7646](https://togithub.com/pydantic/pydantic/pull/7646)
- Fix json schema generation for recursive models by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7653](https://togithub.com/pydantic/pydantic/pull/7653)
- Fix `models_json_schema` for generic models by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7654](https://togithub.com/pydantic/pydantic/pull/7654)
- Fix xfailed test for generic model signatures by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7658](https://togithub.com/pydantic/pydantic/pull/7658)

##### New Contributors

- [@&#8203;austinorr](https://togithub.com/austinorr) made their first
contribution in
[#&#8203;7657](https://togithub.com/pydantic/pydantic/pull/7657)
- [@&#8203;peterHoburg](https://togithub.com/peterHoburg) made their
first contribution in
[#&#8203;7670](https://togithub.com/pydantic/pydantic/pull/7670)

###
[`v2.4.1`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v241-2023-09-26)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.4.0...v2.4.1)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.4.1)

##### What's Changed

##### Packaging

- Update pydantic-core to 2.10.1 by
[@&#8203;davidhewitt](https://togithub.com/davidhewitt) in
[#&#8203;7633](https://togithub.com/pydantic/pydantic/pull/7633)

##### Fixes

- Serialize unsubstituted type vars as `Any` by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7606](https://togithub.com/pydantic/pydantic/pull/7606)
- Remove schema building caches by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7624](https://togithub.com/pydantic/pydantic/pull/7624)
- Fix an issue where JSON schema extras weren't JSON encoded by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7625](https://togithub.com/pydantic/pydantic/pull/7625)

###
[`v2.4.0`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v240-2023-09-22)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.3.0...v2.4.0)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.4.0)

##### What's Changed

##### Packaging

- Update pydantic-core to 2.10.0 by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7542](https://togithub.com/pydantic/pydantic/pull/7542)

##### New Features

- Add `Base64Url` types by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7286](https://togithub.com/pydantic/pydantic/pull/7286)
- Implement optional `number` to `str` coercion by
[@&#8203;lig](https://togithub.com/lig) in
[#&#8203;7508](https://togithub.com/pydantic/pydantic/pull/7508)
- Allow access to `field_name` and `data` in all validators if there is
data and a field name by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7542](https://togithub.com/pydantic/pydantic/pull/7542)
- Add `BaseModel.model_validate_strings` and
`TypeAdapter.validate_strings` by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7552](https://togithub.com/pydantic/pydantic/pull/7552)
- Add Pydantic `plugins` experimental implementation by
[@&#8203;lig](https://togithub.com/lig)
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) and
[@&#8203;Kludex](https://togithub.com/Kludex) in
[#&#8203;6820](https://togithub.com/pydantic/pydantic/pull/6820)

##### Changes

- Do not override `model_post_init` in subclass with private attrs by
[@&#8203;Viicos](https://togithub.com/Viicos) in
[#&#8203;7302](https://togithub.com/pydantic/pydantic/pull/7302)
- Make fields with defaults not required in the serialization schema by
default by [@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7275](https://togithub.com/pydantic/pydantic/pull/7275)
- Mark `Extra` as deprecated by
[@&#8203;disrupted](https://togithub.com/disrupted) in
[#&#8203;7299](https://togithub.com/pydantic/pydantic/pull/7299)
- Make `EncodedStr` a dataclass by
[@&#8203;Kludex](https://togithub.com/Kludex) in
[#&#8203;7396](https://togithub.com/pydantic/pydantic/pull/7396)
- Move `annotated_handlers` to be public by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7569](https://togithub.com/pydantic/pydantic/pull/7569)

##### Performance

- Simplify flattening and inlining of `CoreSchema` by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7523](https://togithub.com/pydantic/pydantic/pull/7523)
- Remove unused copies in `CoreSchema` walking by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7528](https://togithub.com/pydantic/pydantic/pull/7528)
- Add caches for collecting definitions and invalid schemas from a
CoreSchema by [@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7527](https://togithub.com/pydantic/pydantic/pull/7527)
- Eagerly resolve discriminated unions and cache cases where we can't by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7529](https://togithub.com/pydantic/pydantic/pull/7529)
- Replace `dict.get` and `dict.setdefault` with more verbose versions in
`CoreSchema` building hot paths by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7536](https://togithub.com/pydantic/pydantic/pull/7536)
- Cache invalid `CoreSchema` discovery by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7535](https://togithub.com/pydantic/pydantic/pull/7535)
- Allow disabling `CoreSchema` validation for faster startup times by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7565](https://togithub.com/pydantic/pydantic/pull/7565)

##### Fixes

- Fix config detection for `TypedDict` from grandparent classes by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7272](https://togithub.com/pydantic/pydantic/pull/7272)
- Fix hash function generation for frozen models with unusual MRO by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7274](https://togithub.com/pydantic/pydantic/pull/7274)
- Make `strict` config overridable in field for Path by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7281](https://togithub.com/pydantic/pydantic/pull/7281)
- Use `ser_json_<timedelta|bytes>` on default in `GenerateJsonSchema` by
[@&#8203;Kludex](https://togithub.com/Kludex) in
[#&#8203;7269](https://togithub.com/pydantic/pydantic/pull/7269)
- Adding a check that alias is validated as an identifier for Python by
[@&#8203;andree0](https://togithub.com/andree0) in
[#&#8203;7319](https://togithub.com/pydantic/pydantic/pull/7319)
- Raise an error when computed field overrides field by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7346](https://togithub.com/pydantic/pydantic/pull/7346)
- Fix applying `SkipValidation` to referenced schemas by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7381](https://togithub.com/pydantic/pydantic/pull/7381)
- Enforce behavior of private attributes having double leading
underscore by [@&#8203;lig](https://togithub.com/lig) in
[#&#8203;7265](https://togithub.com/pydantic/pydantic/pull/7265)
- Standardize `__get_pydantic_core_schema__` signature by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7415](https://togithub.com/pydantic/pydantic/pull/7415)
- Fix generic dataclass fields mutation bug (when using `TypeAdapter`)
by [@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7435](https://togithub.com/pydantic/pydantic/pull/7435)
- Fix `TypeError` on `model_validator` in `wrap` mode by
[@&#8203;pmmmwh](https://togithub.com/pmmmwh) in
[#&#8203;7496](https://togithub.com/pydantic/pydantic/pull/7496)
- Improve enum error message by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7506](https://togithub.com/pydantic/pydantic/pull/7506)
- Make `repr` work for instances that failed initialization when
handling `ValidationError`s by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7439](https://togithub.com/pydantic/pydantic/pull/7439)
- Fixed a regular expression denial of service issue by limiting
whitespaces by [@&#8203;prodigysml](https://togithub.com/prodigysml) in
[#&#8203;7360](https://togithub.com/pydantic/pydantic/pull/7360)
- Fix handling of `UUID` values having `UUID.version=None` by
[@&#8203;lig](https://togithub.com/lig) in
[#&#8203;7566](https://togithub.com/pydantic/pydantic/pull/7566)
- Fix `__iter__` returning private `cached_property` info by
[@&#8203;sydney-runkle](https://togithub.com/sydney-runkle) in
[#&#8203;7570](https://togithub.com/pydantic/pydantic/pull/7570)
- Improvements to version info message by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7594](https://togithub.com/pydantic/pydantic/pull/7594)

##### New Contributors

- [@&#8203;15498th](https://togithub.com/15498th) made their first
contribution in
[#&#8203;7238](https://togithub.com/pydantic/pydantic/pull/7238)
- [@&#8203;GabrielCappelli](https://togithub.com/GabrielCappelli) made
their first contribution in
[#&#8203;7213](https://togithub.com/pydantic/pydantic/pull/7213)
- [@&#8203;tobni](https://togithub.com/tobni) made their first
contribution in
[#&#8203;7184](https://togithub.com/pydantic/pydantic/pull/7184)
- [@&#8203;redruin1](https://togithub.com/redruin1) made their first
contribution in
[#&#8203;7282](https://togithub.com/pydantic/pydantic/pull/7282)
- [@&#8203;FacerAin](https://togithub.com/FacerAin) made their first
contribution in
[#&#8203;7288](https://togithub.com/pydantic/pydantic/pull/7288)
- [@&#8203;acdha](https://togithub.com/acdha) made their first
contribution in
[#&#8203;7297](https://togithub.com/pydantic/pydantic/pull/7297)
- [@&#8203;andree0](https://togithub.com/andree0) made their first
contribution in
[#&#8203;7319](https://togithub.com/pydantic/pydantic/pull/7319)
- [@&#8203;gordonhart](https://togithub.com/gordonhart) made their first
contribution in
[#&#8203;7375](https://togithub.com/pydantic/pydantic/pull/7375)
- [@&#8203;pmmmwh](https://togithub.com/pmmmwh) made their first
contribution in
[#&#8203;7496](https://togithub.com/pydantic/pydantic/pull/7496)
- [@&#8203;disrupted](https://togithub.com/disrupted) made their first
contribution in
[#&#8203;7299](https://togithub.com/pydantic/pydantic/pull/7299)
- [@&#8203;prodigysml](https://togithub.com/prodigysml) made their first
contribution in
[#&#8203;7360](https://togithub.com/pydantic/pydantic/pull/7360)

###
[`v2.3.0`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v230-2023-08-23)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.2.1...v2.3.0)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.3.0)

- 🔥 Remove orphaned changes file from repo by
[@&#8203;lig](https://togithub.com/lig) in
[#&#8203;7168](https://togithub.com/pydantic/pydantic/pull/7168)
- Add copy button on documentation by
[@&#8203;Kludex](https://togithub.com/Kludex) in
[#&#8203;7190](https://togithub.com/pydantic/pydantic/pull/7190)
- Fix docs on JSON type by [@&#8203;Kludex](https://togithub.com/Kludex)
in [#&#8203;7189](https://togithub.com/pydantic/pydantic/pull/7189)
- Update mypy 1.5.0 to 1.5.1 in CI by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7191](https://togithub.com/pydantic/pydantic/pull/7191)
- fix download links badge by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7200](https://togithub.com/pydantic/pydantic/pull/7200)
- add 2.2.1 to changelog by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7212](https://togithub.com/pydantic/pydantic/pull/7212)
- Make ModelWrapValidator protocols generic by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;7154](https://togithub.com/pydantic/pydantic/pull/7154)
- Correct `Field(..., exclude: bool)` docs by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7214](https://togithub.com/pydantic/pydantic/pull/7214)
- Make shadowing attributes a warning instead of an error by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7193](https://togithub.com/pydantic/pydantic/pull/7193)
- Document `Base64Str` and `Base64Bytes` by
[@&#8203;Kludex](https://togithub.com/Kludex) in
[#&#8203;7192](https://togithub.com/pydantic/pydantic/pull/7192)
- Fix `config.defer_build` for serialization first cases by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7024](https://togithub.com/pydantic/pydantic/pull/7024)
- clean Model docstrings in JSON Schema by
[@&#8203;samuelcolvin](https://togithub.com/samuelcolvin) in
[#&#8203;7210](https://togithub.com/pydantic/pydantic/pull/7210)
- fix [#&#8203;7228](https://togithub.com/pydantic/pydantic/pull/7228)
(typo): docs in `validators.md` to correct `validate_default` kwarg by
[@&#8203;lmmx](https://togithub.com/lmmx) in
[#&#8203;7229](https://togithub.com/pydantic/pydantic/pull/7229)
- ✅ Implement `tzinfo.fromutc` method for `TzInfo` in `pydantic-core` by
[@&#8203;lig](https://togithub.com/lig) in
[#&#8203;7019](https://togithub.com/pydantic/pydantic/pull/7019)
- Support `__get_validators__` by
[@&#8203;hramezani](https://togithub.com/hramezani) in
[#&#8203;7197](https://togithub.com/pydantic/pydantic/pull/7197)

###
[`v2.2.1`](https://togithub.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v221-2023-08-18)

[Compare
Source](https://togithub.com/pydantic/pydantic/compare/v2.2.0...v2.2.1)

[GitHub
release](https://togithub.com/pydantic/pydantic/releases/tag/v2.2.1)

- Make `xfail`ing test for root model extra stop `xfail`ing by
[@&#8203;dmontagu](https://togithub.com/dmontagu) in
[#&#8203;6937](https://togithub.com/pydantic/pydantic/pull/6937)
- Optimize recursion detection by stopping on the second visit for the
same object by [@&#8203;mciucu](https://togithub.com/mciucu) in
[#&#8203;7160](https://togithub.com/pydantic/pydantic/pull/7160)
- fix link in docs by
[@&#8203;tlambert03](https://togithub.com/tlambert03) in
[#&#8203;7166](https://togithub.com/pydantic/pydantic/pull/7166)
- Replace MiMalloc w/ default allocator by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[pydantic/pydantic-core#900](https://togithub.com/pydantic/pydantic-core/pull/900)
- Bump pydantic-core to 2.6.1 and prepare 2.2.1 release by
[@&#8203;adriangb](https://togithub.com/adriangb) in
[#&#8203;7176](https://togithub.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==-->