-
Notifications
You must be signed in to change notification settings - Fork 261
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
Support complex numbers #1331
Support complex numbers #1331
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1331 +/- ##
==========================================
- Coverage 90.21% 89.55% -0.67%
==========================================
Files 106 111 +5
Lines 16339 17537 +1198
Branches 36 41 +5
==========================================
+ Hits 14740 15705 +965
- Misses 1592 1812 +220
- Partials 7 20 +13
... and 34 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
|
CodSpeed Performance ReportMerging #1331 will not alter performanceComparing Summary
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work thus far, thanks!!
As discussed in pydantic/pydantic#8555, since there is no official representation for complex numbers in JSON, I propose to express complex numbers as dictionaries with two keys, real and imag, with floating point values. Please find examples in the newly added test suites in this PR.
I agree with this approach. @davidhewitt what do you think? I suppose we could have support for either this or the 1+2j
format (maybe with a config flag...)
Note that function str_as_complex in shared.rs is not yet implemented as I need to discuss with the team if we want to support this. For example, we might want to accept strings like 1+2j as a valid complex number, as long as these strings follow the format described in python's documentation.
As mentioned on the pydantic
PR, I'd be keen to support this.
This implementation, however, will be a bit tricky. Using regular expression is the simplest solution, but it is going to be a bit slow since building regex is rather costly.
Perhaps we can speed things up by using the rust regex crate?
The safest solution is probably to do exactly the same as how cpython parses strings. I think that can be done in a separate PR for easier reviews.
Probably a question for @davidhewitt here.
Thanks! I've looked into the rust regex crate. It has rather limited functionality, specifically lookahead, which means we will need to handle some corner cases ourselves or create some not so straightforward logic. Another crate fancy_regex has better support for regex, but introducing another dependency on a non-native library makes me a bit hesitant unless it's really necessary or beneficial enough. With regex, my biggest concern is whether or not we can capture exactly what is accepted by python. I'm concerned about accidentally accepting/rejecting some strings that are actually rejected/accepted by the complex class in python, which might bring users unexpected problems. If the team thinks it's okay with regex (and maybe you don't feel like having this cumbersome dictionary representation at all,) I can definitely look into that. |
What if we avoided using either a regex or |
That sounds good to me. Then I'll work on that. On the other hand, what do
you think about the dict representation I proposed and implemented in this
PR? Should we still keep it or should we only accept strings like `1+2j`?
|
We'll chat with the team in our open source sync tomorrow and get back to you :). |
Let's go with the string representation for now, and if the feature lands with some popularity, we can add support for the dictionary style. For now, if folks really need that dict type serialization for complex numbers, they can use a custom serializer. |
I've updated the implementation. There is one test case failing with pypy, and I think that's because of some bugs in pypy. How do you usually handle discrepancy between pypy and python? Can we ignore this case for now and simply add a note in the documentation? Another question regarding |
Yes, we can xfail this case when running on PyPy. If you're willing to also report the case on the PyPy GitHub, it would help them be aware they need to fix :)
In this case it won't pass until we update pydantic |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this is looking great! There's a few edge cases to discuss wrt config, constraints, and unions. Beyond that, this implementation looks rock-solid 🪨
src/input/input_python.rs
Outdated
fn validate_complex<'a>(&'a self, _py: Python<'py>) -> ValResult<ValidationMatch<EitherComplex<'py>>> { | ||
if let Ok(complex) = self.downcast::<PyComplex>() { | ||
return Ok(ValidationMatch::exact(EitherComplex::Py(complex.to_owned()))); | ||
} else if let Ok(s) = self.downcast::<PyString>() { | ||
return Ok(ValidationMatch::exact(EitherComplex::Py(string_to_complex(s, self)?))); | ||
} else if self.is_exact_instance_of::<PyFloat>() { | ||
return Ok(ValidationMatch::exact(EitherComplex::Complex([ | ||
self.extract::<f64>().unwrap(), | ||
0.0, | ||
]))); | ||
} else if self.is_exact_instance_of::<PyInt>() { | ||
return Ok(ValidationMatch::exact(EitherComplex::Complex([ | ||
self.extract::<i64>().unwrap() as f64, | ||
0.0, | ||
]))); | ||
} | ||
Err(ValError::new(ErrorTypeDefaults::ComplexType, self)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should have a think here about what behaviour we expect in strict
mode. Probably we only want to accept complex
objects in strict. Do we want to accept integers / floats in "strict" mode? In lax, we can accept everything for sure.
Also, similarly the ValidationMatch::exact
calls should probably be downgraded to either strict
or lax
- these will set the level of priority in e.g. complex | int
union. I think most would agree that complex | int
would expect an integer value to not be cast to a complex. We might want some according tests for some of these union cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
strict
mode is strict in terms of typing, right? I was mostly thinking from the perspective of mathematics when I added float
and int
. I suppose then we should only allow complex
objects in strict mode? Then ValidationMatch::exact
is the same as strict
. This sounds reasonable to me, but I'm not exactly sure about the how different exact
and strict
usually are.
One more question about strict
mode: how does it apply to other input types? Is it like when the input is in JSON, we only accept strings in strict
mode?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suppose then we should only allow
complex
objects in strict mode?
I think so, yes (note that in JSON it's less straightforward as you note). In JSON I think we only accept strings in strict
mode, yes.
Then
ValidationMatch::exact
is the same asstrict
.
IIRC in other cases I made subclasses strict
, if complex
objects allow subclassing. I'd check what I did for ints or floats.
src/validators/complex.rs
Outdated
} | ||
|
||
#[derive(Debug)] | ||
pub struct ComplexValidator {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we probably need a strict mode flag here at the very least.
What about constraints like Le
, or MultipleOf
? They might get painful, so I'm ok to defer those to later as long as they fail gracefully.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to support constraints for complex numbers?
I thought about constraints initially when I checked other validators to get some ideas of how to implement this complex validator, but I don't think constraints are going to be useful. For example, Le
and relevant constraints don't really make sense as complex numbers don't have a default ordering. Users can apply additional filtering ad hoc based on the ordering they define, but I don't think we can add that kind of constraints to the validator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am happy for us to not support constraints for now.
Hi @davidhewitt, how should we proceed with this? Do we wait for input from the team or should we manage to make a decision here ourselves? |
Hey @changhc, Sorry we've dropped the ball on feedback here. Will chat with the team early next week so that we can move this forward and include it in our v2.9 release 🚀 ! |
Thanks @sydney-runkle! I'm making some changes to address David's comments. They will be ready soon! |
Hi @davidhewitt, I've implemented the strict mode for complex numbers. As we discussed, when strict mode is on,
Because of the strict mode, I tweaked the messages for validation errors a little bit to make errors less confusing to users. Specifically for python input,
For other input types, the error is rather simple as complex strings are the only acceptable input values when strict mode is on. I also added some test cases for dictionaries involving complex keys just to make sure things work as expected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This generally looks great to me, thanks.
The only change I'd like to see would be to remove the custom py_strict
error type and use an instance-of error instead.
src/input/input_python.rs
Outdated
return Ok(ValidationMatch::strict(EitherComplex::Py(complex.to_owned()))); | ||
} | ||
if strict { | ||
return Err(ValError::new(ErrorTypeDefaults::ComplexTypePyStrict, self)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think rather than a new type here, we can use isinstance error:
return Err(ValError::new(ErrorTypeDefaults::ComplexTypePyStrict, self)); | |
return Err(ValError::new( | |
ErrorType::IsInstanceOf { | |
class: PyComplex::type_object(py).qualname() | |
.and_then(|name| name.extract()) | |
.unwrap_or_else(|_| "complex".to_owned()), | |
context: None, | |
}, | |
self, | |
)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated. The error message now looks like:
pydantic_core._pydantic_core.ValidationError: 1 validation error for complex
Input should be an instance of complex [type=is_instance_of, input_value='foobar', input_type=str]
For further information visit https://errors.pydantic.dev/2.8/v/is_instance_of
@davidhewitt, are we ready to move this across the line? |
Yep, LGTM! Thanks @changhc |
Thanks! I'll update pydantic/pydantic#9654 once this PR is merged and the next minor release includes these changes. |
Great! I'll get this merged tomorrow 🚀 |
Great work @changhc, going to go ahead and merge this - the failing integration tests should soon be fixed with your branch. Do we need to make any more updates to pydantic/pydantic#9654 other than supporting a new version of |
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `2.8.2` -> `2.9.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.8.2/2.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.8.2/2.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.9.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v290-2024-09-05) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.9.0) The code released in v2.9.0 is practically identical to that of v2.9.0b2. ##### What's Changed ##### Packaging - Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9801](https://github.com/pydantic/pydantic/pull/9801) - Bump `pydantic-extra-types` to `v2.9.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9832](https://github.com/pydantic/pydantic/pull/9832) - Support compatibility with `pdm v2.18.1` by [@​Viicos](https://github.com/Viicos) in [#​10138](https://github.com/pydantic/pydantic/pull/10138) - Bump `v1` version stub to `v1.10.18` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10214](https://github.com/pydantic/pydantic/pull/10214) - Bump `pydantic-core` to `v2.23.2` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10311](https://github.com/pydantic/pydantic/pull/10311) ##### New Features - Add support for `ZoneInfo` by [@​Youssefares](https://github.com/Youssefares) in [#​9896](https://github.com/pydantic/pydantic/pull/9896) - Add `Config.val_json_bytes` by [@​josh-newman](https://github.com/josh-newman) in [#​9770](https://github.com/pydantic/pydantic/pull/9770) - Add DSN for Snowflake by [@​aditkumar72](https://github.com/aditkumar72) in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - Support `complex` number by [@​changhc](https://github.com/changhc) in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - Add support for `annotated_types.Not` by [@​aditkumar72](https://github.com/aditkumar72) in [#​10210](https://github.com/pydantic/pydantic/pull/10210) - Allow `WithJsonSchema` to inject `$ref`s w/ `http` or `https` links by [@​dAIsySHEng1](https://github.com/dAIsySHEng1) in [#​9863](https://github.com/pydantic/pydantic/pull/9863) - Allow validators to customize validation JSON schema by [@​Viicos](https://github.com/Viicos) in [#​10094](https://github.com/pydantic/pydantic/pull/10094) - Support parametrized `PathLike` types by [@​nix010](https://github.com/nix010) in [#​9764](https://github.com/pydantic/pydantic/pull/9764) - Add tagged union serializer that attempts to use `str` or `callable` discriminators to select the correct serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1397](https://github.com/pydantic/pydantic-core/pull/1397) ##### Changes - Breaking Change: Merge `dict` type `json_schema_extra` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9792](https://github.com/pydantic/pydantic/pull/9792) - For more info (how to replicate old behavior) on this change, see [here](https://docs.pydantic.dev/dev/concepts/json_schema/#merging-json_schema_extra) - Refactor annotation injection for known (often generic) types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9979](https://github.com/pydantic/pydantic/pull/9979) - Move annotation compatibility errors to validation phase by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9999](https://github.com/pydantic/pydantic/pull/9999) - Improve runtime errors for string constraints like `pattern` for incompatible types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10158](https://github.com/pydantic/pydantic/pull/10158) - Remove `'allOf'` JSON schema workarounds by [@​dpeachey](https://github.com/dpeachey) in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - Remove `typed_dict_cls` data from `CoreMetadata` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10180](https://github.com/pydantic/pydantic/pull/10180) - Deprecate passing a dict to the `Examples` class by [@​Viicos](https://github.com/Viicos) in [#​10181](https://github.com/pydantic/pydantic/pull/10181) - Remove `initial_metadata` from internal metadata construct by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10194](https://github.com/pydantic/pydantic/pull/10194) - Use `re.Pattern.search` instead of `re.Pattern.match` for consistency with `rust` behavior by [@​tinez](https://github.com/tinez) in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - Show value of wrongly typed data in `pydantic-core` serialization warning by [@​BoxyUwU](https://github.com/BoxyUwU) in [pydantic/pydantic-core#1377](https://github.com/pydantic/pydantic-core/pull/1377) - Breaking Change: in `pydantic-core`, change `metadata` type hint in core schemas from `Any` -> `Dict[str, Any] | None` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1411](https://github.com/pydantic/pydantic-core/pull/1411) - Raise helpful warning when `self` isn't returned from model validator by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10255](https://github.com/pydantic/pydantic/pull/10255) ##### Performance - Initial start at improving import times for modules, using caching primarily by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10009](https://github.com/pydantic/pydantic/pull/10009) - Using cached internal import for `BaseModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10013](https://github.com/pydantic/pydantic/pull/10013) - Simplify internal generics logic - remove generator overhead by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10059](https://github.com/pydantic/pydantic/pull/10059) - Remove default module globals from types namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10123](https://github.com/pydantic/pydantic/pull/10123) - Performance boost: skip caching parent namespaces in most cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10113](https://github.com/pydantic/pydantic/pull/10113) - Update ns stack with already copied ns by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10267](https://github.com/pydantic/pydantic/pull/10267) ##### Minor Internal Improvements - ⚡️ Speed up `multiple_of_validator()` by 31% in `pydantic/_internal/_validators.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9839](https://github.com/pydantic/pydantic/pull/9839) - ⚡️ Speed up `ModelPrivateAttr.__set_name__()` by 18% in `pydantic/fields.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9841](https://github.com/pydantic/pydantic/pull/9841) - ⚡️ Speed up `dataclass()` by 7% in `pydantic/dataclasses.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9843](https://github.com/pydantic/pydantic/pull/9843) - ⚡️ Speed up function `_field_name_for_signature` by 37% in `pydantic/_internal/_signature.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9951](https://github.com/pydantic/pydantic/pull/9951) - ⚡️ Speed up method `GenerateSchema._unpack_refs_defs` by 26% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9949](https://github.com/pydantic/pydantic/pull/9949) - ⚡️ Speed up function `apply_each_item_validators` by 100% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9950](https://github.com/pydantic/pydantic/pull/9950) - ⚡️ Speed up method `ConfigWrapper.core_config` by 28% in `pydantic/_internal/_config.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9953](https://github.com/pydantic/pydantic/pull/9953) ##### Fixes - Respect `use_enum_values` on `Literal` types by [@​kwint](https://github.com/kwint) in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - Prevent type error for exotic `BaseModel/RootModel` inheritance by [@​dmontagu](https://github.com/dmontagu) in [#​9913](https://github.com/pydantic/pydantic/pull/9913) - Fix typing issue with field_validator-decorated methods by [@​dmontagu](https://github.com/dmontagu) in [#​9914](https://github.com/pydantic/pydantic/pull/9914) - Replace `str` type annotation with `Any` in validator factories in documentation on validators by [@​maximilianfellhuber](https://github.com/maximilianfellhuber) in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - Fix `ComputedFieldInfo.wrapped_property` pointer when a property setter is assigned by [@​tlambert03](https://github.com/tlambert03) in [#​9892](https://github.com/pydantic/pydantic/pull/9892) - Fix recursive typing of `main.IncEnx` by [@​tlambert03](https://github.com/tlambert03) in [#​9924](https://github.com/pydantic/pydantic/pull/9924) - Allow usage of `type[Annotated[...]]` by [@​Viicos](https://github.com/Viicos) in [#​9932](https://github.com/pydantic/pydantic/pull/9932) - `mypy` plugin: handle frozen fields on a per-field basis by [@​dmontagu](https://github.com/dmontagu) in [#​9935](https://github.com/pydantic/pydantic/pull/9935) - Fix typo in `invalid-annotated-type` error code by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9948](https://github.com/pydantic/pydantic/pull/9948) - Simplify schema generation for `uuid`, `url`, and `ip` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9975](https://github.com/pydantic/pydantic/pull/9975) - Move `date` schemas to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9976](https://github.com/pydantic/pydantic/pull/9976) - Move `decimal.Decimal` validation to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9977](https://github.com/pydantic/pydantic/pull/9977) - Simplify IP address schema in `_std_types_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9959](https://github.com/pydantic/pydantic/pull/9959) - Fix type annotations for some potentially generic `GenerateSchema.match_type` options by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9961](https://github.com/pydantic/pydantic/pull/9961) - Add class name to "has conflict" warnings by [@​msabramo](https://github.com/msabramo) in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - Fix `dataclass` ignoring `default_factory` passed in Annotated by [@​kc0506](https://github.com/kc0506) in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - Fix `Sequence` ignoring `discriminator` by [@​kc0506](https://github.com/kc0506) in [#​9980](https://github.com/pydantic/pydantic/pull/9980) - Fix typing for `IPvAnyAddress` and `IPvAnyInterface` by [@​haoyun](https://github.com/haoyun) in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - Fix false positives on v1 models in `mypy` plugin for `from_orm` check requiring from_attributes=True config by [@​radekwlsk](https://github.com/radekwlsk) in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - Apply `strict=True` to `__init__` in `mypy` plugin by [@​kc0506](https://github.com/kc0506) in [#​9998](https://github.com/pydantic/pydantic/pull/9998) - Refactor application of `deque` annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10018](https://github.com/pydantic/pydantic/pull/10018) - Raise a better user error when failing to evaluate a forward reference by [@​Viicos](https://github.com/Viicos) in [#​10030](https://github.com/pydantic/pydantic/pull/10030) - Fix evaluation of `__pydantic_extra__` annotation in specific circumstances by [@​Viicos](https://github.com/Viicos) in [#​10070](https://github.com/pydantic/pydantic/pull/10070) - Fix `frozen` enforcement for `dataclasses` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10066](https://github.com/pydantic/pydantic/pull/10066) - Remove logic to handle unused `__get_pydantic_core_schema__` signature by [@​Viicos](https://github.com/Viicos) in [#​10075](https://github.com/pydantic/pydantic/pull/10075) - Use `is_annotated` consistently by [@​Viicos](https://github.com/Viicos) in [#​10095](https://github.com/pydantic/pydantic/pull/10095) - Fix `PydanticDeprecatedSince26` typo by [@​kc0506](https://github.com/kc0506) in [#​10101](https://github.com/pydantic/pydantic/pull/10101) - Improve `pyright` tests, refactor model decorators signatures by [@​Viicos](https://github.com/Viicos) in [#​10092](https://github.com/pydantic/pydantic/pull/10092) - Fix `ip` serialization logic by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10112](https://github.com/pydantic/pydantic/pull/10112) - Warn when frozen defined twice for `dataclasses` by [@​mochi22](https://github.com/mochi22) in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - Do not compute JSON Schema default when plain serializers are used with `when_used` set to `'json-unless-none'` and the default value is `None` by [@​Viicos](https://github.com/Viicos) in [#​10121](https://github.com/pydantic/pydantic/pull/10121) - Fix `ImportString` special cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10137](https://github.com/pydantic/pydantic/pull/10137) - Blacklist default globals to support exotic user code with `__` prefixed annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10136](https://github.com/pydantic/pydantic/pull/10136) - Handle `nullable` schemas with `serialization` schema available during JSON Schema generation by [@​Viicos](https://github.com/Viicos) in [#​10132](https://github.com/pydantic/pydantic/pull/10132) - Reorganize `BaseModel` annotations by [@​kc0506](https://github.com/kc0506) in [#​10110](https://github.com/pydantic/pydantic/pull/10110) - Fix core schema simplification when serialization schemas are involved in specific scenarios by [@​Viicos](https://github.com/Viicos) in [#​10155](https://github.com/pydantic/pydantic/pull/10155) - Add support for stringified annotations when using `PrivateAttr` with `Annotated` by [@​Viicos](https://github.com/Viicos) in [#​10157](https://github.com/pydantic/pydantic/pull/10157) - Fix JSON Schema `number` type for literal and enum schemas by [@​Viicos](https://github.com/Viicos) in [#​10172](https://github.com/pydantic/pydantic/pull/10172) - Fix JSON Schema generation of fields with plain validators in serialization mode by [@​Viicos](https://github.com/Viicos) in [#​10167](https://github.com/pydantic/pydantic/pull/10167) - Fix invalid JSON Schemas being generated for functions in certain scenarios by [@​Viicos](https://github.com/Viicos) in [#​10188](https://github.com/pydantic/pydantic/pull/10188) - Make sure generated JSON Schemas are valid in tests by [@​Viicos](https://github.com/Viicos) in [#​10182](https://github.com/pydantic/pydantic/pull/10182) - Fix key error with custom serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10200](https://github.com/pydantic/pydantic/pull/10200) - Add 'wss' for allowed schemes in NatsDsn by [@​swelborn](https://github.com/swelborn) in [#​10224](https://github.com/pydantic/pydantic/pull/10224) - Fix `Mapping` and `MutableMapping` annotations to use mapping schema instead of dict schema by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10020](https://github.com/pydantic/pydantic/pull/10020) - Fix JSON Schema generation for constrained dates by [@​Viicos](https://github.com/Viicos) in [#​10185](https://github.com/pydantic/pydantic/pull/10185) - Fix discriminated union bug regression when using enums by [@​kfreezen](https://github.com/kfreezen) in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - Fix `field_serializer` with computed field when using `*` by [@​nix010](https://github.com/nix010) in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - Try each option in `Union` serializer before inference by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1398](https://github.com/pydantic/pydantic-core/pull/1398) - Fix `float` serialization behavior in `strict` mode by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1400](https://github.com/pydantic/pydantic-core/pull/1400) - Introduce `exactness` into Decimal validation logic to improve union validation behavior by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1405](https://github.com/pydantic/pydantic-core/pull/1405) - Fix new warnings assertions to use `pytest.warns()` by [@​mgorny](https://github.com/mgorny) in [#​10241](https://github.com/pydantic/pydantic/pull/10241) - Fix a crash when cleaning the namespace in `ModelMetaclass` by [@​Viicos](https://github.com/Viicos) in [#​10242](https://github.com/pydantic/pydantic/pull/10242) - Fix parent namespace issue with model rebuilds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10257](https://github.com/pydantic/pydantic/pull/10257) - Remove defaults filter for namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10261](https://github.com/pydantic/pydantic/pull/10261) - Use identity instead of equality after validating model in `__init__` by [@​Viicos](https://github.com/Viicos) in [#​10264](https://github.com/pydantic/pydantic/pull/10264) - Support `BigInt` serialization for `int` subclasses by [@​kxx317](https://github.com/kxx317) in [pydantic/pydantic-core#1417](https://github.com/pydantic/pydantic-core/pull/1417) - Support signature for wrap validators without `info` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10277](https://github.com/pydantic/pydantic/pull/10277) - Ensure `__pydantic_complete__` is set when rebuilding `dataclasses` by [@​Viicos](https://github.com/Viicos) in [#​10291](https://github.com/pydantic/pydantic/pull/10291) - Respect `schema_generator` config value in `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10300](https://github.com/pydantic/pydantic/pull/10300) ##### New Contributors ##### `pydantic` - [@​kwint](https://github.com/kwint) made their first contribution in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - [@​seekinginfiniteloop](https://github.com/seekinginfiniteloop) made their first contribution in [#​9822](https://github.com/pydantic/pydantic/pull/9822) - [@​a-alexander](https://github.com/a-alexander) made their first contribution in [#​9848](https://github.com/pydantic/pydantic/pull/9848) - [@​maximilianfellhuber](https://github.com/maximilianfellhuber) made their first contribution in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - [@​karmaBonfire](https://github.com/karmaBonfire) made their first contribution in [#​9945](https://github.com/pydantic/pydantic/pull/9945) - [@​s-rigaud](https://github.com/s-rigaud) made their first contribution in [#​9958](https://github.com/pydantic/pydantic/pull/9958) - [@​msabramo](https://github.com/msabramo) made their first contribution in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - [@​DimaCybr](https://github.com/DimaCybr) made their first contribution in [#​9972](https://github.com/pydantic/pydantic/pull/9972) - [@​kc0506](https://github.com/kc0506) made their first contribution in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - [@​haoyun](https://github.com/haoyun) made their first contribution in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - [@​radekwlsk](https://github.com/radekwlsk) made their first contribution in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - [@​dpeachey](https://github.com/dpeachey) made their first contribution in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [#​10085](https://github.com/pydantic/pydantic/pull/10085) - [@​mochi22](https://github.com/mochi22) made their first contribution in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - [@​aditkumar72](https://github.com/aditkumar72) made their first contribution in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - [@​changhc](https://github.com/changhc) made their first contribution in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - [@​insumanth](https://github.com/insumanth) made their first contribution in [#​10229](https://github.com/pydantic/pydantic/pull/10229) - [@​AdolfoVillalobos](https://github.com/AdolfoVillalobos) made their first contribution in [#​10240](https://github.com/pydantic/pydantic/pull/10240) - [@​bllchmbrs](https://github.com/bllchmbrs) made their first contribution in [#​10270](https://github.com/pydantic/pydantic/pull/10270) ##### `pydantic-core` - [@​kfreezen](https://github.com/kfreezen) made their first contribution in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - [@​tinez](https://github.com/tinez) made their first contribution in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - [@​fft001](https://github.com/fft001) made their first contribution in [pydantic/pydantic-core#1362](https://github.com/pydantic/pydantic-core/pull/1362) - [@​nix010](https://github.com/nix010) made their first contribution in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [pydantic/pydantic-core#1379](https://github.com/pydantic/pydantic-core/pull/1379) - [@​candleindark](https://github.com/candleindark) made their first contribution in [pydantic/pydantic-core#1404](https://github.com/pydantic/pydantic-core/pull/1404) - [@​changhc](https://github.com/changhc) made their first contribution in [pydantic/pydantic-core#1331](https://github.com/pydantic/pydantic-core/pull/1331) </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 was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/spiraldb/ziggy-pydust). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@headlessui/react](https://github.com/tailwindlabs/headlessui) ([source](https://github.com/tailwindlabs/headlessui/tree/HEAD/packages/@headlessui-react)) | [`2.1.3` -> `2.1.5`](https://renovatebot.com/diffs/npm/@headlessui%2freact/2.1.3/2.1.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@headlessui%2freact/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@headlessui%2freact/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@headlessui%2freact/2.1.3/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@headlessui%2freact/2.1.3/2.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@tailwindcss/forms](https://github.com/tailwindlabs/tailwindcss-forms) | [`0.5.8` -> `0.5.9`](https://renovatebot.com/diffs/npm/@tailwindcss%2fforms/0.5.8/0.5.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@tailwindcss%2fforms/0.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@tailwindcss%2fforms/0.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@tailwindcss%2fforms/0.5.8/0.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tailwindcss%2fforms/0.5.8/0.5.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.16.3` -> `20.16.5`](https://renovatebot.com/diffs/npm/@types%2fnode/20.16.3/20.16.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.16.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.16.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.16.3/20.16.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.16.3/20.16.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [ai](https://sdk.vercel.ai/docs) ([source](https://github.com/vercel/ai)) | [`3.3.25` -> `3.3.30`](https://renovatebot.com/diffs/npm/ai/3.3.25/3.3.30) | [![age](https://developer.mend.io/api/mc/badges/age/npm/ai/3.3.30?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ai/3.3.30?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ai/3.3.25/3.3.30?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ai/3.3.25/3.3.30?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [eslint-config-next](https://nextjs.org/docs/app/building-your-application/configuring/eslint#eslint-config) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next)) | [`14.2.7` -> `14.2.8`](https://renovatebot.com/diffs/npm/eslint-config-next/14.2.7/14.2.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-next/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-config-next/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-config-next/14.2.7/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-next/14.2.7/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [guardrails-ai](https://www.guardrailsai.com/) | `0.5.6` -> `0.5.7` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/guardrails-ai/0.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/guardrails-ai/0.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/guardrails-ai/0.5.6/0.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/guardrails-ai/0.5.6/0.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [next](https://nextjs.org) ([source](https://github.com/vercel/next.js)) | [`14.2.7` -> `14.2.8`](https://renovatebot.com/diffs/npm/next/14.2.7/14.2.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/next/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/next/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/next/14.2.7/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/next/14.2.7/14.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [openai](https://github.com/openai/openai-python) | `1.43.0` -> `1.44.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/openai/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/openai/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/openai/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/openai/1.43.0/1.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [openai](https://github.com/openai/openai-node) | [`4.57.0` -> `4.58.1`](https://renovatebot.com/diffs/npm/openai/4.57.0/4.58.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.58.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.58.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.57.0/4.58.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.57.0/4.58.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [postcss](https://postcss.org/) ([source](https://github.com/postcss/postcss)) | [`8.4.44` -> `8.4.45`](https://renovatebot.com/diffs/npm/postcss/8.4.44/8.4.45) | [![age](https://developer.mend.io/api/mc/badges/age/npm/postcss/8.4.45?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/postcss/8.4.45?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/postcss/8.4.44/8.4.45?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/postcss/8.4.44/8.4.45?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `2.8.2` -> `2.9.1` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pydantic/2.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pydantic/2.8.2/2.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.8.2/2.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | [`5.5.4` -> `5.6.2`](https://renovatebot.com/diffs/npm/typescript/5.5.4/5.6.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.5.4/5.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.5.4/5.6.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>tailwindlabs/headlessui (@​headlessui/react)</summary> ### [`v2.1.5`](https://github.com/tailwindlabs/headlessui/blob/HEAD/packages/@​headlessui-react/CHANGELOG.md#215---2024-09-04) [Compare Source](https://github.com/tailwindlabs/headlessui/compare/@headlessui/[email protected]...@headlessui/[email protected]) ##### Fixed - Fix transition bug on Firefox, triggered by clicking the `PopoverButton` in rapid succession ([#​3452](https://github.com/tailwindlabs/headlessui/pull/3452)) ### [`v2.1.4`](https://github.com/tailwindlabs/headlessui/blob/HEAD/packages/@​headlessui-react/CHANGELOG.md#214---2024-09-03) [Compare Source](https://github.com/tailwindlabs/headlessui/compare/@headlessui/[email protected]...@headlessui/[email protected]) ##### Fixed - Fix components not closing properly when using the `transition` prop ([#​3448](https://github.com/tailwindlabs/headlessui/pull/3448)) </details> <details> <summary>tailwindlabs/tailwindcss-forms (@​tailwindcss/forms)</summary> ### [`v0.5.9`](https://github.com/tailwindlabs/tailwindcss-forms/blob/HEAD/CHANGELOG.md#059---2024-09-05) [Compare Source](https://github.com/tailwindlabs/tailwindcss-forms/compare/v0.5.8...v0.5.9) ##### Fixed - Fallback to static chevron color if theme is using variables ([#​167](https://github.com/tailwindlabs/tailwindcss-forms/pull/167)) </details> <details> <summary>vercel/ai (ai)</summary> ### [`v3.3.30`](https://github.com/vercel/ai/releases/tag/ai%403.3.30) [Compare Source](https://github.com/vercel/ai/compare/[email protected]@3.3.30) ##### Patch Changes - [`6ee1f8e`](https://github.com/vercel/ai/commit/6ee1f8e): feat (ai/core): add toDataStream to streamText result ### [`v3.3.29`](https://github.com/vercel/ai/releases/tag/ai%403.3.29) [Compare Source](https://github.com/vercel/ai/compare/[email protected]@3.3.29) ##### Patch Changes - [`1e3dfd2`](https://github.com/vercel/ai/commit/1e3dfd2): feat (ai/core): enhance pipeToData/TextStreamResponse methods ### [`v3.3.28`](https://github.com/vercel/ai/releases/tag/ai%403.3.28) [Compare Source](https://github.com/vercel/ai/compare/[email protected]@3.3.28) ##### Patch Changes - [`db61c53`](https://github.com/vercel/ai/commit/db61c53): feat (ai/core): middleware support ### [`v3.3.27`](https://github.com/vercel/ai/releases/tag/ai%403.3.27) [Compare Source](https://github.com/vercel/ai/compare/[email protected]@3.3.27) ##### Patch Changes - [`03313cd`](https://github.com/vercel/ai/commit/03313cd): feat (ai): expose response id, response model, response timestamp in telemetry and api - [`3be7c1c`](https://github.com/vercel/ai/commit/3be7c1c): fix (provider/anthropic): support prompt caching on assistant messages - Updated dependencies \[[`03313cd`](https://github.com/vercel/ai/commit/03313cd)] - Updated dependencies \[[`3be7c1c`](https://github.com/vercel/ai/commit/3be7c1c)] - [@​ai-sdk/provider-utils](https://github.com/ai-sdk/provider-utils)[@​1](https://github.com/1).0.18 - [@​ai-sdk/provider](https://github.com/ai-sdk/provider)[@​0](https://github.com/0).0.23 - [@​ai-sdk/react](https://github.com/ai-sdk/react)[@​0](https://github.com/0).0.55 - [@​ai-sdk/solid](https://github.com/ai-sdk/solid)[@​0](https://github.com/0).0.44 - [@​ai-sdk/svelte](https://github.com/ai-sdk/svelte)[@​0](https://github.com/0).0.46 - [@​ai-sdk/ui-utils](https://github.com/ai-sdk/ui-utils)[@​0](https://github.com/0).0.41 - [@​ai-sdk/vue](https://github.com/ai-sdk/vue)[@​0](https://github.com/0).0.46 ### [`v3.3.26`](https://github.com/vercel/ai/releases/tag/ai%403.3.26) [Compare Source](https://github.com/vercel/ai/compare/[email protected]@3.3.26) ##### Patch Changes - Updated dependencies \[[`4ab883f`](https://github.com/vercel/ai/commit/4ab883f)] - [@​ai-sdk/react](https://github.com/ai-sdk/react)[@​0](https://github.com/0).0.54 </details> <details> <summary>vercel/next.js (eslint-config-next)</summary> ### [`v14.2.8`](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8) [Compare Source](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8) </details> <details> <summary>vercel/next.js (next)</summary> ### [`v14.2.8`](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8) [Compare Source](https://github.com/vercel/next.js/compare/v14.2.7...v14.2.8) </details> <details> <summary>openai/openai-python (openai)</summary> ### [`v1.44.0`](https://github.com/openai/openai-python/blob/HEAD/CHANGELOG.md#1440-2024-09-06) [Compare Source](https://github.com/openai/openai-python/compare/v1.43.1...v1.44.0) Full Changelog: [v1.43.1...v1.44.0](https://github.com/openai/openai-python/compare/v1.43.1...v1.44.0) ##### Features - **vector store:** improve chunking strategy type names ([#​1690](https://github.com/openai/openai-python/issues/1690)) ([e82cd85](https://github.com/openai/openai-python/commit/e82cd85ac4962e36cb3b139c503069b56918688f)) ### [`v1.43.1`](https://github.com/openai/openai-python/blob/HEAD/CHANGELOG.md#1431-2024-09-05) [Compare Source](https://github.com/openai/openai-python/compare/v1.43.0...v1.43.1) Full Changelog: [v1.43.0...v1.43.1](https://github.com/openai/openai-python/compare/v1.43.0...v1.43.1) ##### Chores - pyproject.toml formatting changes ([#​1687](https://github.com/openai/openai-python/issues/1687)) ([3387ede](https://github.com/openai/openai-python/commit/3387ede0b896788bf1197378b01941c75bd6e179)) </details> <details> <summary>openai/openai-node (openai)</summary> ### [`v4.58.1`](https://github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4581-2024-09-06) [Compare Source](https://github.com/openai/openai-node/compare/v4.58.0...v4.58.1) Full Changelog: [v4.58.0...v4.58.1](https://github.com/openai/openai-node/compare/v4.58.0...v4.58.1) ##### Chores - **docs:** update browser support information ([#​1045](https://github.com/openai/openai-node/issues/1045)) ([d326cc5](https://github.com/openai/openai-node/commit/d326cc54a77c450672fbf07d736cec80a9ba72fb)) ### [`v4.58.0`](https://github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4580-2024-09-05) [Compare Source](https://github.com/openai/openai-node/compare/v4.57.3...v4.58.0) Full Changelog: [v4.57.3...v4.58.0](https://github.com/openai/openai-node/compare/v4.57.3...v4.58.0) ##### Features - **vector store:** improve chunking strategy type names ([#​1041](https://github.com/openai/openai-node/issues/1041)) ([471cec3](https://github.com/openai/openai-node/commit/471cec3228886253f07c13a362827a31e9ec7b63)) ##### Bug Fixes - **uploads:** avoid making redundant memory copies ([#​1043](https://github.com/openai/openai-node/issues/1043)) ([271297b](https://github.com/openai/openai-node/commit/271297bd32393d4c5663023adf82f8fb19dc3d25)) ### [`v4.57.3`](https://github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4573-2024-09-04) [Compare Source](https://github.com/openai/openai-node/compare/v4.57.2...v4.57.3) Full Changelog: [v4.57.2...v4.57.3](https://github.com/openai/openai-node/compare/v4.57.2...v4.57.3) ##### Bug Fixes - **helpers/zod:** avoid import issue in certain environments ([#​1039](https://github.com/openai/openai-node/issues/1039)) ([e238daa](https://github.com/openai/openai-node/commit/e238daa7c12f3fb13369f58b9d405365f5efcc8f)) ##### Chores - **internal:** minor bump qs version ([#​1037](https://github.com/openai/openai-node/issues/1037)) ([8ec218e](https://github.com/openai/openai-node/commit/8ec218e9efb657927b3c0346822a96872aeaf137)) ### [`v4.57.2`](https://github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4572-2024-09-04) [Compare Source](https://github.com/openai/openai-node/compare/v4.57.1...v4.57.2) Full Changelog: [v4.57.1...v4.57.2](https://github.com/openai/openai-node/compare/v4.57.1...v4.57.2) ##### Chores - **internal:** dependency updates ([#​1035](https://github.com/openai/openai-node/issues/1035)) ([e815fb6](https://github.com/openai/openai-node/commit/e815fb6dee75219563d3a7776774ba1c2984560e)) ### [`v4.57.1`](https://github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4571-2024-09-03) [Compare Source](https://github.com/openai/openai-node/compare/v4.57.0...v4.57.1) Full Changelog: [v4.57.0...v4.57.1](https://github.com/openai/openai-node/compare/v4.57.0...v4.57.1) ##### Bug Fixes - **assistants:** correctly accumulate tool calls when streaming ([#​1031](https://github.com/openai/openai-node/issues/1031)) ([d935ad3](https://github.com/openai/openai-node/commit/d935ad3fa37b2701f4c9f6e433ada6074280a871)) - **client:** correct File construction from node-fetch Responses ([#​1029](https://github.com/openai/openai-node/issues/1029)) ([22ebdc2](https://github.com/openai/openai-node/commit/22ebdc2ca7d98e0f266110c4cf827e53a0a22026)) - runTools without stream should not emit user message events ([#​1005](https://github.com/openai/openai-node/issues/1005)) ([22ded4d](https://github.com/openai/openai-node/commit/22ded4d549a157482a8de2faf65e92c5be07fa95)) ##### Chores - **internal/tests:** workaround bug in recent types/node release ([3c7bdfd](https://github.com/openai/openai-node/commit/3c7bdfdb373bff77db0e3fecd5d49ddfa4284cd9)) </details> <details> <summary>postcss/postcss (postcss)</summary> ### [`v8.4.45`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8445) [Compare Source](https://github.com/postcss/postcss/compare/8.4.44...8.4.45) - Removed unnecessary fix which could lead to infinite loop. </details> <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.9.1`](https://github.com/pydantic/pydantic/releases/tag/v2.9.1): (2024-09-09) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.9.0...v2.9.1) #### What's Changed ##### Fixes - Fix Predicate issue in v2.9.0 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10321](https://github.com/pydantic/pydantic/pull/10321) - Fixing `annotated-types` bound to `>=0.6.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10327](https://github.com/pydantic/pydantic/pull/10327) - Turn `tzdata` install requirement into optional `timezone` dependency by [@​jakob-keller](https://github.com/jakob-keller) in [#​10331](https://github.com/pydantic/pydantic/pull/10331) - Fix `IncExc` type alias definition by [@​Viicos](https://github.com/Viicos) in [#​10339](https://github.com/pydantic/pydantic/pull/10339) - Use correct types namespace when building namedtuple core schemas by [@​Viicos](https://github.com/Viicos) in [#​10337](https://github.com/pydantic/pydantic/pull/10337) - Fix evaluation of stringified annotations during namespace inspection by [@​Viicos](https://github.com/Viicos) in [#​10347](https://github.com/pydantic/pydantic/pull/10347) - Fix tagged union serialization with alias generators by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1442](https://github.com/pydantic/pydantic-core/pull/1442) **Full Changelog**: pydantic/pydantic@v2.9.0...v2.9.1 ### [`v2.9.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v290-2024-09-05) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.9.0) The code released in v2.9.0 is practically identical to that of v2.9.0b2. ##### What's Changed ##### Packaging - Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9801](https://github.com/pydantic/pydantic/pull/9801) - Bump `pydantic-extra-types` to `v2.9.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9832](https://github.com/pydantic/pydantic/pull/9832) - Support compatibility with `pdm v2.18.1` by [@​Viicos](https://github.com/Viicos) in [#​10138](https://github.com/pydantic/pydantic/pull/10138) - Bump `v1` version stub to `v1.10.18` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10214](https://github.com/pydantic/pydantic/pull/10214) - Bump `pydantic-core` to `v2.23.2` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10311](https://github.com/pydantic/pydantic/pull/10311) ##### New Features - Add support for `ZoneInfo` by [@​Youssefares](https://github.com/Youssefares) in [#​9896](https://github.com/pydantic/pydantic/pull/9896) - Add `Config.val_json_bytes` by [@​josh-newman](https://github.com/josh-newman) in [#​9770](https://github.com/pydantic/pydantic/pull/9770) - Add DSN for Snowflake by [@​aditkumar72](https://github.com/aditkumar72) in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - Support `complex` number by [@​changhc](https://github.com/changhc) in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - Add support for `annotated_types.Not` by [@​aditkumar72](https://github.com/aditkumar72) in [#​10210](https://github.com/pydantic/pydantic/pull/10210) - Allow `WithJsonSchema` to inject `$ref`s w/ `http` or `https` links by [@​dAIsySHEng1](https://github.com/dAIsySHEng1) in [#​9863](https://github.com/pydantic/pydantic/pull/9863) - Allow validators to customize validation JSON schema by [@​Viicos](https://github.com/Viicos) in [#​10094](https://github.com/pydantic/pydantic/pull/10094) - Support parametrized `PathLike` types by [@​nix010](https://github.com/nix010) in [#​9764](https://github.com/pydantic/pydantic/pull/9764) - Add tagged union serializer that attempts to use `str` or `callable` discriminators to select the correct serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1397](https://github.com/pydantic/pydantic-core/pull/1397) ##### Changes - Breaking Change: Merge `dict` type `json_schema_extra` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9792](https://github.com/pydantic/pydantic/pull/9792) - For more info (how to replicate old behavior) on this change, see [here](https://docs.pydantic.dev/dev/concepts/json_schema/#merging-json_schema_extra) - Refactor annotation injection for known (often generic) types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9979](https://github.com/pydantic/pydantic/pull/9979) - Move annotation compatibility errors to validation phase by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9999](https://github.com/pydantic/pydantic/pull/9999) - Improve runtime errors for string constraints like `pattern` for incompatible types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10158](https://github.com/pydantic/pydantic/pull/10158) - Remove `'allOf'` JSON schema workarounds by [@​dpeachey](https://github.com/dpeachey) in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - Remove `typed_dict_cls` data from `CoreMetadata` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10180](https://github.com/pydantic/pydantic/pull/10180) - Deprecate passing a dict to the `Examples` class by [@​Viicos](https://github.com/Viicos) in [#​10181](https://github.com/pydantic/pydantic/pull/10181) - Remove `initial_metadata` from internal metadata construct by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10194](https://github.com/pydantic/pydantic/pull/10194) - Use `re.Pattern.search` instead of `re.Pattern.match` for consistency with `rust` behavior by [@​tinez](https://github.com/tinez) in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - Show value of wrongly typed data in `pydantic-core` serialization warning by [@​BoxyUwU](https://github.com/BoxyUwU) in [pydantic/pydantic-core#1377](https://github.com/pydantic/pydantic-core/pull/1377) - Breaking Change: in `pydantic-core`, change `metadata` type hint in core schemas from `Any` -> `Dict[str, Any] | None` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1411](https://github.com/pydantic/pydantic-core/pull/1411) - Raise helpful warning when `self` isn't returned from model validator by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10255](https://github.com/pydantic/pydantic/pull/10255) ##### Performance - Initial start at improving import times for modules, using caching primarily by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10009](https://github.com/pydantic/pydantic/pull/10009) - Using cached internal import for `BaseModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10013](https://github.com/pydantic/pydantic/pull/10013) - Simplify internal generics logic - remove generator overhead by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10059](https://github.com/pydantic/pydantic/pull/10059) - Remove default module globals from types namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10123](https://github.com/pydantic/pydantic/pull/10123) - Performance boost: skip caching parent namespaces in most cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10113](https://github.com/pydantic/pydantic/pull/10113) - Update ns stack with already copied ns by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10267](https://github.com/pydantic/pydantic/pull/10267) ##### Minor Internal Improvements - ⚡️ Speed up `multiple_of_validator()` by 31% in `pydantic/_internal/_validators.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9839](https://github.com/pydantic/pydantic/pull/9839) - ⚡️ Speed up `ModelPrivateAttr.__set_name__()` by 18% in `pydantic/fields.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9841](https://github.com/pydantic/pydantic/pull/9841) - ⚡️ Speed up `dataclass()` by 7% in `pydantic/dataclasses.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9843](https://github.com/pydantic/pydantic/pull/9843) - ⚡️ Speed up function `_field_name_for_signature` by 37% in `pydantic/_internal/_signature.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9951](https://github.com/pydantic/pydantic/pull/9951) - ⚡️ Speed up method `GenerateSchema._unpack_refs_defs` by 26% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9949](https://github.com/pydantic/pydantic/pull/9949) - ⚡️ Speed up function `apply_each_item_validators` by 100% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9950](https://github.com/pydantic/pydantic/pull/9950) - ⚡️ Speed up method `ConfigWrapper.core_config` by 28% in `pydantic/_internal/_config.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9953](https://github.com/pydantic/pydantic/pull/9953) ##### Fixes - Respect `use_enum_values` on `Literal` types by [@​kwint](https://github.com/kwint) in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - Prevent type error for exotic `BaseModel/RootModel` inheritance by [@​dmontagu](https://github.com/dmontagu) in [#​9913](https://github.com/pydantic/pydantic/pull/9913) - Fix typing issue with field_validator-decorated methods by [@​dmontagu](https://github.com/dmontagu) in [#​9914](https://github.com/pydantic/pydantic/pull/9914) - Replace `str` type annotation with `Any` in validator factories in documentation on validators by [@​maximilianfellhuber](https://github.com/maximilianfellhuber) in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - Fix `ComputedFieldInfo.wrapped_property` pointer when a property setter is assigned by [@​tlambert03](https://github.com/tlambert03) in [#​9892](https://github.com/pydantic/pydantic/pull/9892) - Fix recursive typing of `main.IncEnx` by [@​tlambert03](https://github.com/tlambert03) in [#​9924](https://github.com/pydantic/pydantic/pull/9924) - Allow usage of `type[Annotated[...]]` by [@​Viicos](https://github.com/Viicos) in [#​9932](https://github.com/pydantic/pydantic/pull/9932) - `mypy` plugin: handle frozen fields on a per-field basis by [@​dmontagu](https://github.com/dmontagu) in [#​9935](https://github.com/pydantic/pydantic/pull/9935) - Fix typo in `invalid-annotated-type` error code by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9948](https://github.com/pydantic/pydantic/pull/9948) - Simplify schema generation for `uuid`, `url`, and `ip` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9975](https://github.com/pydantic/pydantic/pull/9975) - Move `date` schemas to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9976](https://github.com/pydantic/pydantic/pull/9976) - Move `decimal.Decimal` validation to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9977](https://github.com/pydantic/pydantic/pull/9977) - Simplify IP address schema in `_std_types_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9959](https://github.com/pydantic/pydantic/pull/9959) - Fix type annotations for some potentially generic `GenerateSchema.match_type` options by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9961](https://github.com/pydantic/pydantic/pull/9961) - Add class name to "has conflict" warnings by [@​msabramo](https://github.com/msabramo) in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - Fix `dataclass` ignoring `default_factory` passed in Annotated by [@​kc0506](https://github.com/kc0506) in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - Fix `Sequence` ignoring `discriminator` by [@​kc0506](https://github.com/kc0506) in [#​9980](https://github.com/pydantic/pydantic/pull/9980) - Fix typing for `IPvAnyAddress` and `IPvAnyInterface` by [@​haoyun](https://github.com/haoyun) in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - Fix false positives on v1 models in `mypy` plugin for `from_orm` check requiring from_attributes=True config by [@​radekwlsk](https://github.com/radekwlsk) in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - Apply `strict=True` to `__init__` in `mypy` plugin by [@​kc0506](https://github.com/kc0506) in [#​9998](https://github.com/pydantic/pydantic/pull/9998) - Refactor application of `deque` annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10018](https://github.com/pydantic/pydantic/pull/10018) - Raise a better user error when failing to evaluate a forward reference by [@​Viicos](https://github.com/Viicos) in [#​10030](https://github.com/pydantic/pydantic/pull/10030) - Fix evaluation of `__pydantic_extra__` annotation in specific circumstances by [@​Viicos](https://github.com/Viicos) in [#​10070](https://github.com/pydantic/pydantic/pull/10070) - Fix `frozen` enforcement for `dataclasses` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10066](https://github.com/pydantic/pydantic/pull/10066) - Remove logic to handle unused `__get_pydantic_core_schema__` signature by [@​Viicos](https://github.com/Viicos) in [#​10075](https://github.com/pydantic/pydantic/pull/10075) - Use `is_annotated` consistently by [@​Viicos](https://github.com/Viicos) in [#​10095](https://github.com/pydantic/pydantic/pull/10095) - Fix `PydanticDeprecatedSince26` typo by [@​kc0506](https://github.com/kc0506) in [#​10101](https://github.com/pydantic/pydantic/pull/10101) - Improve `pyright` tests, refactor model decorators signatures by [@​Viicos](https://github.com/Viicos) in [#​10092](https://github.com/pydantic/pydantic/pull/10092) - Fix `ip` serialization logic by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10112](https://github.com/pydantic/pydantic/pull/10112) - Warn when frozen defined twice for `dataclasses` by [@​mochi22](https://github.com/mochi22) in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - Do not compute JSON Schema default when plain serializers are used with `when_used` set to `'json-unless-none'` and the default value is `None` by [@​Viicos](https://github.com/Viicos) in [#​10121](https://github.com/pydantic/pydantic/pull/10121) - Fix `ImportString` special cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10137](https://github.com/pydantic/pydantic/pull/10137) - Blacklist default globals to support exotic user code with `__` prefixed annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10136](https://github.com/pydantic/pydantic/pull/10136) - Handle `nullable` schemas with `serialization` schema available during JSON Schema generation by [@​Viicos](https://github.com/Viicos) in [#​10132](https://github.com/pydantic/pydantic/pull/10132) - Reorganize `BaseModel` annotations by [@​kc0506](https://github.com/kc0506) in [#​10110](https://github.com/pydantic/pydantic/pull/10110) - Fix core schema simplification when serialization schemas are involved in specific scenarios by [@​Viicos](https://github.com/Viicos) in [#​10155](https://github.com/pydantic/pydantic/pull/10155) - Add support for stringified annotations when using `PrivateAttr` with `Annotated` by [@​Viicos](https://github.com/Viicos) in [#​10157](https://github.com/pydantic/pydantic/pull/10157) - Fix JSON Schema `number` type for literal and enum schemas by [@​Viicos](https://github.com/Viicos) in [#​10172](https://github.com/pydantic/pydantic/pull/10172) - Fix JSON Schema generation of fields with plain validators in serialization mode by [@​Viicos](https://github.com/Viicos) in [#​10167](https://github.com/pydantic/pydantic/pull/10167) - Fix invalid JSON Schemas being generated for functions in certain scenarios by [@​Viicos](https://github.com/Viicos) in [#​10188](https://github.com/pydantic/pydantic/pull/10188) - Make sure generated JSON Schemas are valid in tests by [@​Viicos](https://github.com/Viicos) in [#​10182](https://github.com/pydantic/pydantic/pull/10182) - Fix key error with custom serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10200](https://github.com/pydantic/pydantic/pull/10200) - Add 'wss' for allowed schemes in NatsDsn by [@​swelborn](https://github.com/swelborn) in [#​10224](https://github.com/pydantic/pydantic/pull/10224) - Fix `Mapping` and `MutableMapping` annotations to use mapping schema instead of dict schema by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10020](https://github.com/pydantic/pydantic/pull/10020) - Fix JSON Schema generation for constrained dates by [@​Viicos](https://github.com/Viicos) in [#​10185](https://github.com/pydantic/pydantic/pull/10185) - Fix discriminated union bug regression when using enums by [@​kfreezen](https://github.com/kfreezen) in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - Fix `field_serializer` with computed field when using `*` by [@​nix010](https://github.com/nix010) in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - Try each option in `Union` serializer before inference by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1398](https://github.com/pydantic/pydantic-core/pull/1398) - Fix `float` serialization behavior in `strict` mode by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1400](https://github.com/pydantic/pydantic-core/pull/1400) - Introduce `exactness` into Decimal validation logic to improve union validation behavior by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1405](https://github.com/pydantic/pydantic-core/pull/1405) - Fix new warnings assertions to use `pytest.warns()` by [@​mgorny](https://github.com/mgorny) in [#​10241](https://github.com/pydantic/pydantic/pull/10241) - Fix a crash when cleaning the namespace in `ModelMetaclass` by [@​Viicos](https://github.com/Viicos) in [#​10242](https://github.com/pydantic/pydantic/pull/10242) - Fix parent namespace issue with model rebuilds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10257](https://github.com/pydantic/pydantic/pull/10257) - Remove defaults filter for namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10261](https://github.com/pydantic/pydantic/pull/10261) - Use identity instead of equality after validating model in `__init__` by [@​Viicos](https://github.com/Viicos) in [#​10264](https://github.com/pydantic/pydantic/pull/10264) - Support `BigInt` serialization for `int` subclasses by [@​kxx317](https://github.com/kxx317) in [pydantic/pydantic-core#1417](https://github.com/pydantic/pydantic-core/pull/1417) - Support signature for wrap validators without `info` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10277](https://github.com/pydantic/pydantic/pull/10277) - Ensure `__pydantic_complete__` is set when rebuilding `dataclasses` by [@​Viicos](https://github.com/Viicos) in [#​10291](https://github.com/pydantic/pydantic/pull/10291) - Respect `schema_generator` config value in `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10300](https://github.com/pydantic/pydantic/pull/10300) ##### New Contributors ##### `pydantic` - [@​kwint](https://github.com/kwint) made their first contribution in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - [@​seekinginfiniteloop](https://github.com/seekinginfiniteloop) made their first contribution in [#​9822](https://github.com/pydantic/pydantic/pull/9822) - [@​a-alexander](https://github.com/a-alexander) made their first contribution in [#​9848](https://github.com/pydantic/pydantic/pull/9848) - [@​maximilianfellhuber](https://github.com/maximilianfellhuber) made their first contribution in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - [@​karmaBonfire](https://github.com/karmaBonfire) made their first contribution in [#​9945](https://github.com/pydantic/pydantic/pull/9945) - [@​s-rigaud](https://github.com/s-rigaud) made their first contribution in [#​9958](https://github.com/pydantic/pydantic/pull/9958) - [@​msabramo](https://github.com/msabramo) made their first contribution in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - [@​DimaCybr](https://github.com/DimaCybr) made their first contribution in [#​9972](https://github.com/pydantic/pydantic/pull/9972) - [@​kc0506](https://github.com/kc0506) made their first contribution in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - [@​haoyun](https://github.com/haoyun) made their first contribution in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - [@​radekwlsk](https://github.com/radekwlsk) made their first contribution in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - [@​dpeachey](https://github.com/dpeachey) made their first contribution in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [#​10085](https://github.com/pydantic/pydantic/pull/10085) - [@​mochi22](https://github.com/mochi22) made their first contribution in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - [@​aditkumar72](https://github.com/aditkumar72) made their first contribution in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - [@​changhc](https://github.com/changhc) made their first contribution in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - [@​insumanth](https://github.com/insumanth) made their first contribution in [#​10229](https://github.com/pydantic/pydantic/pull/10229) - [@​AdolfoVillalobos](https://github.com/AdolfoVillalobos) made their first contribution in [#​10240](https://github.com/pydantic/pydantic/pull/10240) - [@​bllchmbrs](https://github.com/bllchmbrs) made their first contribution in [#​10270](https://github.com/pydantic/pydantic/pull/10270) ##### `pydantic-core` - [@​kfreezen](https://github.com/kfreezen) made their first contribution in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - [@​tinez](https://github.com/tinez) made their first contribution in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - [@​fft001](https://github.com/fft001) made their first contribution in [pydantic/pydantic-core#1362](https://github.com/pydantic/pydantic-core/pull/1362) - [@​nix010](https://github.com/nix010) made their first contribution in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [pydantic/pydantic-core#1379](https://github.com/pydantic/pydantic-core/pull/1379) - [@​candleindark](https://github.com/candleindark) made their first contribution in [pydantic/pydantic-core#1404](https://github.com/pydantic/pydantic-core/pull/1404) - [@​changhc](https://github.com/changhc) made their first contribution in [pydantic/pydantic-core#1331](https://github.com/pydantic/pydantic-core/pull/1331) </details> <details> <summary>microsoft/TypeScript (typescript)</summary> ### [`v5.6.2`](https://github.com/microsoft/TypeScript/compare/v5.5.4...a7e3374f13327483fbe94e32806d65785b0b6cda) [Compare Source](https://github.com/microsoft/TypeScript/compare/v5.5.4...v5.6.2) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone America/Chicago, 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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/autoblocksai/autoblocks-examples). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | dependencies | minor | `2.4.2` -> `2.10.2` | `2.10.3` | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.10.2`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2102-2024-11-25) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.10.1...v2.10.2) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.10.2) ##### What's Changed ##### Fixes - Only evaluate FieldInfo annotations if required during schema building by [@​Viicos](https://github.com/Viicos) in [#​10769](https://github.com/pydantic/pydantic/pull/10769) - Do not evaluate annotations for private fields by [@​Viicos](https://github.com/Viicos) in [#​10962](https://github.com/pydantic/pydantic/pull/10962) - Support serialization as any for `Secret` types and `Url` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10947](https://github.com/pydantic/pydantic/pull/10947) - Fix type hint of `Field.default` to be compatible with Python 3.8 and 3.9 by [@​Viicos](https://github.com/Viicos) in [#​10972](https://github.com/pydantic/pydantic/pull/10972) - Add hashing support for URL types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10975](https://github.com/pydantic/pydantic/pull/10975) - Hide `BaseModel.__replace__` definition from type checkers by [@​Viicos](https://github.com/Viicos) in [10979](https://github.com/pydantic/pydantic/pull/10979) ### [`v2.10.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2101-2024-11-21) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.10.0...v2.10.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.10.1) ##### What's Changed ##### Packaging - Bump `pydantic-core` version to `v2.27.1` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10938](https://github.com/pydantic/pydantic/pull/10938) ##### Fixes - Use the correct frame when instantiating a parametrized `TypeAdapter` by [@​Viicos](https://github.com/Viicos) in [#​10893](https://github.com/pydantic/pydantic/pull/10893) - Relax check for validated data in `default_factory` utils by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10909](https://github.com/pydantic/pydantic/pull/10909) - Fix type checking issue with `model_fields` and `model_computed_fields` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10911](https://github.com/pydantic/pydantic/pull/10911) - Use the parent configuration during schema generation for stdlib `dataclass`es by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10928](https://github.com/pydantic/pydantic/pull/10928) - Use the `globals` of the function when evaluating the return type of serializers and `computed_field`s by [@​Viicos](https://github.com/Viicos) in [#​10929](https://github.com/pydantic/pydantic/pull/10929) - Fix URL constraint application by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10922](https://github.com/pydantic/pydantic/pull/10922) - Fix URL equality with different validation methods by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10934](https://github.com/pydantic/pydantic/pull/10934) - Fix JSON schema title when specified as `''` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10936](https://github.com/pydantic/pydantic/pull/10936) - Fix `python` mode serialization for `complex` inference by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic-core#1549](https://github.com/pydantic/pydantic-core/pull/1549) ##### New Contributors ### [`v2.10.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2100-2024-11-20) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.9.2...v2.10.0) The code released in v2.10.0 is practically identical to that of v2.10.0b2. [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.10.0) See the [v2.10 release blog post](https://pydantic.dev/articles/pydantic-v2-10-release) for the highlights! ##### What's Changed ##### Packaging - Bump `pydantic-core` to `v2.27.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10825](https://github.com/pydantic/pydantic/pull/10825) - Replaced pdm with uv by [@​frfahim](https://github.com/frfahim) in [#​10727](https://github.com/pydantic/pydantic/pull/10727) ##### New Features - Support `fractions.Fraction` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10318](https://github.com/pydantic/pydantic/pull/10318) - Support `Hashable` for json validation by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10324](https://github.com/pydantic/pydantic/pull/10324) - Add a `SocketPath` type for `linux` systems by [@​theunkn0wn1](https://github.com/theunkn0wn1) in [#​10378](https://github.com/pydantic/pydantic/pull/10378) - Allow arbitrary refs in JSON schema `examples` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10417](https://github.com/pydantic/pydantic/pull/10417) - Support `defer_build` for Pydantic dataclasses by [@​Viicos](https://github.com/Viicos) in [#​10313](https://github.com/pydantic/pydantic/pull/10313) - Adding v1 / v2 incompatibility warning for nested v1 model by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10431](https://github.com/pydantic/pydantic/pull/10431) - Add support for unpacked `TypedDict` to type hint variadic keyword arguments with `@validate_call` by [@​Viicos](https://github.com/Viicos) in [#​10416](https://github.com/pydantic/pydantic/pull/10416) - Support compiled patterns in `protected_namespaces` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10522](https://github.com/pydantic/pydantic/pull/10522) - Add support for `propertyNames` in JSON schema by [@​FlorianSW](https://github.com/FlorianSW) in [#​10478](https://github.com/pydantic/pydantic/pull/10478) - Adding `__replace__` protocol for Python 3.13+ support by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10596](https://github.com/pydantic/pydantic/pull/10596) - Expose public `sort` method for JSON schema generation by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10595](https://github.com/pydantic/pydantic/pull/10595) - Add runtime validation of `@validate_call` callable argument by [@​kc0506](https://github.com/kc0506) in [#​10627](https://github.com/pydantic/pydantic/pull/10627) - Add `experimental_allow_partial` support by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​10748](https://github.com/pydantic/pydantic/pull/10748) - Support default factories taking validated data as an argument by [@​Viicos](https://github.com/Viicos) in [#​10678](https://github.com/pydantic/pydantic/pull/10678) - Allow subclassing `ValidationError` and `PydanticCustomError` by [@​Youssefares](https://github.com/Youssefares) in [pydantic/pydantic-core#1413](https://github.com/pydantic/pydantic-core/pull/1413) - Add `trailing-strings` support to `experimental_allow_partial` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10825](https://github.com/pydantic/pydantic/pull/10825) - Add `rebuild()` method for `TypeAdapter` and simplify `defer_build` patterns by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10537](https://github.com/pydantic/pydantic/pull/10537) - Improve `TypeAdapter` instance repr by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10872](https://github.com/pydantic/pydantic/pull/10872) ##### Changes - Don't allow customization of `SchemaGenerator` until interface is more stable by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10303](https://github.com/pydantic/pydantic/pull/10303) - Cleanly `defer_build` on `TypeAdapters`, removing experimental flag by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10329](https://github.com/pydantic/pydantic/pull/10329) - Fix `mro` of generic subclass by [@​kc0506](https://github.com/kc0506) in [#​10100](https://github.com/pydantic/pydantic/pull/10100) - Strip whitespaces on JSON Schema title generation by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10404](https://github.com/pydantic/pydantic/pull/10404) - Use `b64decode` and `b64encode` for `Base64Bytes` type by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10486](https://github.com/pydantic/pydantic/pull/10486) - Relax protected namespace config default by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10441](https://github.com/pydantic/pydantic/pull/10441) - Revalidate parametrized generics if instance's origin is subclass of OG class by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10666](https://github.com/pydantic/pydantic/pull/10666) - Warn if configuration is specified on the `@dataclass` decorator and with the `__pydantic_config__` attribute by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10406](https://github.com/pydantic/pydantic/pull/10406) - Recommend against using `Ellipsis` (...) with `Field` by [@​Viicos](https://github.com/Viicos) in [#​10661](https://github.com/pydantic/pydantic/pull/10661) - Migrate to subclassing instead of annotated approach for pydantic url types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10662](https://github.com/pydantic/pydantic/pull/10662) - Change JSON schema generation of `Literal`s and `Enums` by [@​Viicos](https://github.com/Viicos) in [#​10692](https://github.com/pydantic/pydantic/pull/10692) - Simplify unions involving `Any` or `Never` when replacing type variables by [@​Viicos](https://github.com/Viicos) in [#​10338](https://github.com/pydantic/pydantic/pull/10338) - Do not require padding when decoding `base64` bytes by [@​bschoenmaeckers](https://github.com/bschoenmaeckers) in [pydantic/pydantic-core#1448](https://github.com/pydantic/pydantic-core/pull/1448) - Support dates all the way to 1BC by [@​changhc](https://github.com/changhc) in [pydantic/speedate#77](https://github.com/pydantic/speedate/pull/77) ##### Performance - Schema cleaning: skip unnecessary copies during schema walking by [@​Viicos](https://github.com/Viicos) in [#​10286](https://github.com/pydantic/pydantic/pull/10286) - Refactor namespace logic for annotations evaluation by [@​Viicos](https://github.com/Viicos) in [#​10530](https://github.com/pydantic/pydantic/pull/10530) - Improve email regexp on edge cases by [@​AlekseyLobanov](https://github.com/AlekseyLobanov) in [#​10601](https://github.com/pydantic/pydantic/pull/10601) - `CoreMetadata` refactor with an emphasis on documentation, schema build time performance, and reducing complexity by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10675](https://github.com/pydantic/pydantic/pull/10675) ##### Fixes - Remove guarding check on `computed_field` with `field_serializer` by [@​nix010](https://github.com/nix010) in [#​10390](https://github.com/pydantic/pydantic/pull/10390) - Fix `Predicate` issue in `v2.9.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10321](https://github.com/pydantic/pydantic/pull/10321) - Fixing `annotated-types` bound by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10327](https://github.com/pydantic/pydantic/pull/10327) - Turn `tzdata` install requirement into optional `timezone` dependency by [@​jakob-keller](https://github.com/jakob-keller) in [#​10331](https://github.com/pydantic/pydantic/pull/10331) - Use correct types namespace when building `namedtuple` core schemas by [@​Viicos](https://github.com/Viicos) in [#​10337](https://github.com/pydantic/pydantic/pull/10337) - Fix evaluation of stringified annotations during namespace inspection by [@​Viicos](https://github.com/Viicos) in [#​10347](https://github.com/pydantic/pydantic/pull/10347) - Fix `IncEx` type alias definition by [@​Viicos](https://github.com/Viicos) in [#​10339](https://github.com/pydantic/pydantic/pull/10339) - Do not error when trying to evaluate annotations of private attributes by [@​Viicos](https://github.com/Viicos) in [#​10358](https://github.com/pydantic/pydantic/pull/10358) - Fix nested type statement by [@​kc0506](https://github.com/kc0506) in [#​10369](https://github.com/pydantic/pydantic/pull/10369) - Improve typing of `ModelMetaclass.mro` by [@​Viicos](https://github.com/Viicos) in [#​10372](https://github.com/pydantic/pydantic/pull/10372) - Fix class access of deprecated `computed_field`s by [@​Viicos](https://github.com/Viicos) in [#​10391](https://github.com/pydantic/pydantic/pull/10391) - Make sure `inspect.iscoroutinefunction` works on coroutines decorated with `@validate_call` by [@​MovisLi](https://github.com/MovisLi) in [#​10374](https://github.com/pydantic/pydantic/pull/10374) - Fix `NameError` when using `validate_call` with PEP 695 on a class by [@​kc0506](https://github.com/kc0506) in [#​10380](https://github.com/pydantic/pydantic/pull/10380) - Fix `ZoneInfo` with various invalid types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10408](https://github.com/pydantic/pydantic/pull/10408) - Fix `PydanticUserError` on empty `model_config` with annotations by [@​cdwilson](https://github.com/cdwilson) in [#​10412](https://github.com/pydantic/pydantic/pull/10412) - Fix variance issue in `_IncEx` type alias, only allow `True` by [@​Viicos](https://github.com/Viicos) in [#​10414](https://github.com/pydantic/pydantic/pull/10414) - Fix serialization schema generation when using `PlainValidator` by [@​Viicos](https://github.com/Viicos) in [#​10427](https://github.com/pydantic/pydantic/pull/10427) - Fix schema generation error when serialization schema holds references by [@​Viicos](https://github.com/Viicos) in [#​10444](https://github.com/pydantic/pydantic/pull/10444) - Inline references if possible when generating schema for `json_schema_input_type` by [@​Viicos](https://github.com/Viicos) in [#​10439](https://github.com/pydantic/pydantic/pull/10439) - Fix recursive arguments in `Representation` by [@​Viicos](https://github.com/Viicos) in [#​10480](https://github.com/pydantic/pydantic/pull/10480) - Fix representation for builtin function types by [@​kschwab](https://github.com/kschwab) in [#​10479](https://github.com/pydantic/pydantic/pull/10479) - Add python validators for decimal constraints (`max_digits` and `decimal_places`) by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10506](https://github.com/pydantic/pydantic/pull/10506) - Only fetch `__pydantic_core_schema__` from the current class during schema generation by [@​Viicos](https://github.com/Viicos) in [#​10518](https://github.com/pydantic/pydantic/pull/10518) - Fix `stacklevel` on deprecation warnings for `BaseModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10520](https://github.com/pydantic/pydantic/pull/10520) - Fix warning `stacklevel` in `BaseModel.__init__` by [@​Viicos](https://github.com/Viicos) in [#​10526](https://github.com/pydantic/pydantic/pull/10526) - Improve error handling for in-evaluable refs for discriminator application by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10440](https://github.com/pydantic/pydantic/pull/10440) - Change the signature of `ConfigWrapper.core_config` to take the title directly by [@​Viicos](https://github.com/Viicos) in [#​10562](https://github.com/pydantic/pydantic/pull/10562) - Do not use the previous config from the stack for dataclasses without config by [@​Viicos](https://github.com/Viicos) in [#​10576](https://github.com/pydantic/pydantic/pull/10576) - Fix serialization for IP types with `mode='python'` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10594](https://github.com/pydantic/pydantic/pull/10594) - Support constraint application for `Base64Etc` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10584](https://github.com/pydantic/pydantic/pull/10584) - Fix `validate_call` ignoring `Field` in `Annotated` by [@​kc0506](https://github.com/kc0506) in [#​10610](https://github.com/pydantic/pydantic/pull/10610) - Raise an error when `Self` is invalid by [@​kc0506](https://github.com/kc0506) in [#​10609](https://github.com/pydantic/pydantic/pull/10609) - Using `core_schema.InvalidSchema` instead of metadata injection + checks by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10523](https://github.com/pydantic/pydantic/pull/10523) - Tweak type alias logic by [@​kc0506](https://github.com/kc0506) in [#​10643](https://github.com/pydantic/pydantic/pull/10643) - Support usage of `type` with `typing.Self` and type aliases by [@​kc0506](https://github.com/kc0506) in [#​10621](https://github.com/pydantic/pydantic/pull/10621) - Use overloads for `Field` and `PrivateAttr` functions by [@​Viicos](https://github.com/Viicos) in [#​10651](https://github.com/pydantic/pydantic/pull/10651) - Clean up the `mypy` plugin implementation by [@​Viicos](https://github.com/Viicos) in [#​10669](https://github.com/pydantic/pydantic/pull/10669) - Properly check for `typing_extensions` variant of `TypeAliasType` by [@​Daraan](https://github.com/Daraan) in [#​10713](https://github.com/pydantic/pydantic/pull/10713) - Allow any mapping in `BaseModel.model_copy()` by [@​Viicos](https://github.com/Viicos) in [#​10751](https://github.com/pydantic/pydantic/pull/10751) - Fix `isinstance` behavior for urls by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10766](https://github.com/pydantic/pydantic/pull/10766) - Ensure `cached_property` can be set on Pydantic models by [@​Viicos](https://github.com/Viicos) in [#​10774](https://github.com/pydantic/pydantic/pull/10774) - Fix equality checks for primitives in literals by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1459](https://github.com/pydantic/pydantic-core/pull/1459) - Properly enforce `host_required` for URLs by [@​Viicos](https://github.com/Viicos) in [pydantic/pydantic-core#1488](https://github.com/pydantic/pydantic-core/pull/1488) - Fix when `coerce_numbers_to_str` enabled and string has invalid Unicode character by [@​andrey-berenda](https://github.com/andrey-berenda) in [pydantic/pydantic-core#1515](https://github.com/pydantic/pydantic-core/pull/1515) - Fix serializing `complex` values in `Enum`s by [@​changhc](https://github.com/changhc) in [pydantic/pydantic-core#1524](https://github.com/pydantic/pydantic-core/pull/1524) - Refactor `_typing_extra` module by [@​Viicos](https://github.com/Viicos) in [#​10725](https://github.com/pydantic/pydantic/pull/10725) - Support intuitive equality for urls by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10798](https://github.com/pydantic/pydantic/pull/10798) - Add `bytearray` to `TypeAdapter.validate_json` signature by [@​samuelcolvin](https://github.com/samuelcolvin) in [#​10802](https://github.com/pydantic/pydantic/pull/10802) - Ensure class access of method descriptors is performed when used as a default with `Field` by [@​Viicos](https://github.com/Viicos) in [#​10816](https://github.com/pydantic/pydantic/pull/10816) - Fix circular import with `validate_call` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10807](https://github.com/pydantic/pydantic/pull/10807) - Fix error when using type aliases referencing other type aliases by [@​Viicos](https://github.com/Viicos) in [#​10809](https://github.com/pydantic/pydantic/pull/10809) - Fix `IncEx` type alias to be compatible with mypy by [@​Viicos](https://github.com/Viicos) in [#​10813](https://github.com/pydantic/pydantic/pull/10813) - Make `__signature__` a lazy property, do not deepcopy defaults by [@​Viicos](https://github.com/Viicos) in [#​10818](https://github.com/pydantic/pydantic/pull/10818) - Make `__signature__` lazy for dataclasses, too by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10832](https://github.com/pydantic/pydantic/pull/10832) - Subclass all single host url classes from `AnyUrl` to preserve behavior from v2.9 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10856](https://github.com/pydantic/pydantic/pull/10856) ##### New Contributors - [@​jakob-keller](https://github.com/jakob-keller) made their first contribution in [#​10331](https://github.com/pydantic/pydantic/pull/10331) - [@​MovisLi](https://github.com/MovisLi) made their first contribution in [#​10374](https://github.com/pydantic/pydantic/pull/10374) - [@​joaopalmeiro](https://github.com/joaopalmeiro) made their first contribution in [#​10405](https://github.com/pydantic/pydantic/pull/10405) - [@​theunkn0wn1](https://github.com/theunkn0wn1) made their first contribution in [#​10378](https://github.com/pydantic/pydantic/pull/10378) - [@​cdwilson](https://github.com/cdwilson) made their first contribution in [#​10412](https://github.com/pydantic/pydantic/pull/10412) - [@​dlax](https://github.com/dlax) made their first contribution in [#​10421](https://github.com/pydantic/pydantic/pull/10421) - [@​kschwab](https://github.com/kschwab) made their first contribution in [#​10479](https://github.com/pydantic/pydantic/pull/10479) - [@​santibreo](https://github.com/santibreo) made their first contribution in [#​10453](https://github.com/pydantic/pydantic/pull/10453) - [@​FlorianSW](https://github.com/FlorianSW) made their first contribution in [#​10478](https://github.com/pydantic/pydantic/pull/10478) - [@​tkasuz](https://github.com/tkasuz) made their first contribution in [#​10555](https://github.com/pydantic/pydantic/pull/10555) - [@​AlekseyLobanov](https://github.com/AlekseyLobanov) made their first contribution in [#​10601](https://github.com/pydantic/pydantic/pull/10601) - [@​NiclasvanEyk](https://github.com/NiclasvanEyk) made their first contribution in [#​10667](https://github.com/pydantic/pydantic/pull/10667) - [@​mschoettle](https://github.com/mschoettle) made their first contribution in [#​10677](https://github.com/pydantic/pydantic/pull/10677) - [@​Daraan](https://github.com/Daraan) made their first contribution in [#​10713](https://github.com/pydantic/pydantic/pull/10713) - [@​k4nar](https://github.com/k4nar) made their first contribution in [#​10736](https://github.com/pydantic/pydantic/pull/10736) - [@​UriyaHarpeness](https://github.com/UriyaHarpeness) made their first contribution in [#​10740](https://github.com/pydantic/pydantic/pull/10740) - [@​frfahim](https://github.com/frfahim) made their first contribution in [#​10727](https://github.com/pydantic/pydantic/pull/10727) ### [`v2.9.2`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v292-2024-09-17) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.9.1...v2.9.2) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.9.2) ##### What's Changed ##### Fixes - Do not error when trying to evaluate annotations of private attributes by [@​Viicos](https://github.com/Viicos) in [#​10358](https://github.com/pydantic/pydantic/pull/10358) - Adding notes on designing sound `Callable` discriminators by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10400](https://github.com/pydantic/pydantic/pull/10400) - Fix serialization schema generation when using `PlainValidator` by [@​Viicos](https://github.com/Viicos) in [#​10427](https://github.com/pydantic/pydantic/pull/10427) - Fix `Union` serialization warnings by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1449](https://github.com/pydantic/pydantic-core/pull/1449) - Fix variance issue in `_IncEx` type alias, only allow `True` by [@​Viicos](https://github.com/Viicos) in [#​10414](https://github.com/pydantic/pydantic/pull/10414) - Fix `ZoneInfo` validation with various invalid types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10408](https://github.com/pydantic/pydantic/pull/10408) ### [`v2.9.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v291-2024-09-09) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.9.0...v2.9.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.9.1) ##### What's Changed ##### Fixes - Fix Predicate issue in v2.9.0 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10321](https://github.com/pydantic/pydantic/pull/10321) - Fixing `annotated-types` bound to `>=0.6.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10327](https://github.com/pydantic/pydantic/pull/10327) - Turn `tzdata` install requirement into optional `timezone` dependency by [@​jakob-keller](https://github.com/jakob-keller) in [#​10331](https://github.com/pydantic/pydantic/pull/10331) - Fix `IncExc` type alias definition by [@​Viicos](https://github.com/Viicos) in [#​10339](https://github.com/pydantic/pydantic/pull/10339) - Use correct types namespace when building namedtuple core schemas by [@​Viicos](https://github.com/Viicos) in [#​10337](https://github.com/pydantic/pydantic/pull/10337) - Fix evaluation of stringified annotations during namespace inspection by [@​Viicos](https://github.com/Viicos) in [#​10347](https://github.com/pydantic/pydantic/pull/10347) - Fix tagged union serialization with alias generators by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1442](https://github.com/pydantic/pydantic-core/pull/1442) ### [`v2.9.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v290-2024-09-05) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.9.0) The code released in v2.9.0 is practically identical to that of v2.9.0b2. ##### What's Changed ##### Packaging - Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9801](https://github.com/pydantic/pydantic/pull/9801) - Bump `pydantic-extra-types` to `v2.9.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9832](https://github.com/pydantic/pydantic/pull/9832) - Support compatibility with `pdm v2.18.1` by [@​Viicos](https://github.com/Viicos) in [#​10138](https://github.com/pydantic/pydantic/pull/10138) - Bump `v1` version stub to `v1.10.18` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10214](https://github.com/pydantic/pydantic/pull/10214) - Bump `pydantic-core` to `v2.23.2` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10311](https://github.com/pydantic/pydantic/pull/10311) ##### New Features - Add support for `ZoneInfo` by [@​Youssefares](https://github.com/Youssefares) in [#​9896](https://github.com/pydantic/pydantic/pull/9896) - Add `Config.val_json_bytes` by [@​josh-newman](https://github.com/josh-newman) in [#​9770](https://github.com/pydantic/pydantic/pull/9770) - Add DSN for Snowflake by [@​aditkumar72](https://github.com/aditkumar72) in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - Support `complex` number by [@​changhc](https://github.com/changhc) in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - Add support for `annotated_types.Not` by [@​aditkumar72](https://github.com/aditkumar72) in [#​10210](https://github.com/pydantic/pydantic/pull/10210) - Allow `WithJsonSchema` to inject `$ref`s w/ `http` or `https` links by [@​dAIsySHEng1](https://github.com/dAIsySHEng1) in [#​9863](https://github.com/pydantic/pydantic/pull/9863) - Allow validators to customize validation JSON schema by [@​Viicos](https://github.com/Viicos) in [#​10094](https://github.com/pydantic/pydantic/pull/10094) - Support parametrized `PathLike` types by [@​nix010](https://github.com/nix010) in [#​9764](https://github.com/pydantic/pydantic/pull/9764) - Add tagged union serializer that attempts to use `str` or `callable` discriminators to select the correct serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1397](https://github.com/pydantic/pydantic-core/pull/1397) ##### Changes - Breaking Change: Merge `dict` type `json_schema_extra` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9792](https://github.com/pydantic/pydantic/pull/9792) - For more info (how to replicate old behavior) on this change, see [here](https://docs.pydantic.dev/dev/concepts/json_schema/#merging-json_schema_extra) - Refactor annotation injection for known (often generic) types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9979](https://github.com/pydantic/pydantic/pull/9979) - Move annotation compatibility errors to validation phase by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9999](https://github.com/pydantic/pydantic/pull/9999) - Improve runtime errors for string constraints like `pattern` for incompatible types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10158](https://github.com/pydantic/pydantic/pull/10158) - Remove `'allOf'` JSON schema workarounds by [@​dpeachey](https://github.com/dpeachey) in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - Remove `typed_dict_cls` data from `CoreMetadata` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10180](https://github.com/pydantic/pydantic/pull/10180) - Deprecate passing a dict to the `Examples` class by [@​Viicos](https://github.com/Viicos) in [#​10181](https://github.com/pydantic/pydantic/pull/10181) - Remove `initial_metadata` from internal metadata construct by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10194](https://github.com/pydantic/pydantic/pull/10194) - Use `re.Pattern.search` instead of `re.Pattern.match` for consistency with `rust` behavior by [@​tinez](https://github.com/tinez) in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - Show value of wrongly typed data in `pydantic-core` serialization warning by [@​BoxyUwU](https://github.com/BoxyUwU) in [pydantic/pydantic-core#1377](https://github.com/pydantic/pydantic-core/pull/1377) - Breaking Change: in `pydantic-core`, change `metadata` type hint in core schemas from `Any` -> `Dict[str, Any] | None` by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1411](https://github.com/pydantic/pydantic-core/pull/1411) - Raise helpful warning when `self` isn't returned from model validator by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10255](https://github.com/pydantic/pydantic/pull/10255) ##### Performance - Initial start at improving import times for modules, using caching primarily by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10009](https://github.com/pydantic/pydantic/pull/10009) - Using cached internal import for `BaseModel` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10013](https://github.com/pydantic/pydantic/pull/10013) - Simplify internal generics logic - remove generator overhead by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10059](https://github.com/pydantic/pydantic/pull/10059) - Remove default module globals from types namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10123](https://github.com/pydantic/pydantic/pull/10123) - Performance boost: skip caching parent namespaces in most cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10113](https://github.com/pydantic/pydantic/pull/10113) - Update ns stack with already copied ns by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10267](https://github.com/pydantic/pydantic/pull/10267) ##### Minor Internal Improvements - ⚡️ Speed up `multiple_of_validator()` by 31% in `pydantic/_internal/_validators.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9839](https://github.com/pydantic/pydantic/pull/9839) - ⚡️ Speed up `ModelPrivateAttr.__set_name__()` by 18% in `pydantic/fields.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9841](https://github.com/pydantic/pydantic/pull/9841) - ⚡️ Speed up `dataclass()` by 7% in `pydantic/dataclasses.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9843](https://github.com/pydantic/pydantic/pull/9843) - ⚡️ Speed up function `_field_name_for_signature` by 37% in `pydantic/_internal/_signature.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9951](https://github.com/pydantic/pydantic/pull/9951) - ⚡️ Speed up method `GenerateSchema._unpack_refs_defs` by 26% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9949](https://github.com/pydantic/pydantic/pull/9949) - ⚡️ Speed up function `apply_each_item_validators` by 100% in `pydantic/_internal/_generate_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9950](https://github.com/pydantic/pydantic/pull/9950) - ⚡️ Speed up method `ConfigWrapper.core_config` by 28% in `pydantic/_internal/_config.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9953](https://github.com/pydantic/pydantic/pull/9953) ##### Fixes - Respect `use_enum_values` on `Literal` types by [@​kwint](https://github.com/kwint) in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - Prevent type error for exotic `BaseModel/RootModel` inheritance by [@​dmontagu](https://github.com/dmontagu) in [#​9913](https://github.com/pydantic/pydantic/pull/9913) - Fix typing issue with field_validator-decorated methods by [@​dmontagu](https://github.com/dmontagu) in [#​9914](https://github.com/pydantic/pydantic/pull/9914) - Replace `str` type annotation with `Any` in validator factories in documentation on validators by [@​maximilianfellhuber](https://github.com/maximilianfellhuber) in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - Fix `ComputedFieldInfo.wrapped_property` pointer when a property setter is assigned by [@​tlambert03](https://github.com/tlambert03) in [#​9892](https://github.com/pydantic/pydantic/pull/9892) - Fix recursive typing of `main.IncEnx` by [@​tlambert03](https://github.com/tlambert03) in [#​9924](https://github.com/pydantic/pydantic/pull/9924) - Allow usage of `type[Annotated[...]]` by [@​Viicos](https://github.com/Viicos) in [#​9932](https://github.com/pydantic/pydantic/pull/9932) - `mypy` plugin: handle frozen fields on a per-field basis by [@​dmontagu](https://github.com/dmontagu) in [#​9935](https://github.com/pydantic/pydantic/pull/9935) - Fix typo in `invalid-annotated-type` error code by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9948](https://github.com/pydantic/pydantic/pull/9948) - Simplify schema generation for `uuid`, `url`, and `ip` types by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9975](https://github.com/pydantic/pydantic/pull/9975) - Move `date` schemas to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9976](https://github.com/pydantic/pydantic/pull/9976) - Move `decimal.Decimal` validation to `_generate_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9977](https://github.com/pydantic/pydantic/pull/9977) - Simplify IP address schema in `_std_types_schema.py` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9959](https://github.com/pydantic/pydantic/pull/9959) - Fix type annotations for some potentially generic `GenerateSchema.match_type` options by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9961](https://github.com/pydantic/pydantic/pull/9961) - Add class name to "has conflict" warnings by [@​msabramo](https://github.com/msabramo) in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - Fix `dataclass` ignoring `default_factory` passed in Annotated by [@​kc0506](https://github.com/kc0506) in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - Fix `Sequence` ignoring `discriminator` by [@​kc0506](https://github.com/kc0506) in [#​9980](https://github.com/pydantic/pydantic/pull/9980) - Fix typing for `IPvAnyAddress` and `IPvAnyInterface` by [@​haoyun](https://github.com/haoyun) in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - Fix false positives on v1 models in `mypy` plugin for `from_orm` check requiring from_attributes=True config by [@​radekwlsk](https://github.com/radekwlsk) in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - Apply `strict=True` to `__init__` in `mypy` plugin by [@​kc0506](https://github.com/kc0506) in [#​9998](https://github.com/pydantic/pydantic/pull/9998) - Refactor application of `deque` annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10018](https://github.com/pydantic/pydantic/pull/10018) - Raise a better user error when failing to evaluate a forward reference by [@​Viicos](https://github.com/Viicos) in [#​10030](https://github.com/pydantic/pydantic/pull/10030) - Fix evaluation of `__pydantic_extra__` annotation in specific circumstances by [@​Viicos](https://github.com/Viicos) in [#​10070](https://github.com/pydantic/pydantic/pull/10070) - Fix `frozen` enforcement for `dataclasses` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10066](https://github.com/pydantic/pydantic/pull/10066) - Remove logic to handle unused `__get_pydantic_core_schema__` signature by [@​Viicos](https://github.com/Viicos) in [#​10075](https://github.com/pydantic/pydantic/pull/10075) - Use `is_annotated` consistently by [@​Viicos](https://github.com/Viicos) in [#​10095](https://github.com/pydantic/pydantic/pull/10095) - Fix `PydanticDeprecatedSince26` typo by [@​kc0506](https://github.com/kc0506) in [#​10101](https://github.com/pydantic/pydantic/pull/10101) - Improve `pyright` tests, refactor model decorators signatures by [@​Viicos](https://github.com/Viicos) in [#​10092](https://github.com/pydantic/pydantic/pull/10092) - Fix `ip` serialization logic by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10112](https://github.com/pydantic/pydantic/pull/10112) - Warn when frozen defined twice for `dataclasses` by [@​mochi22](https://github.com/mochi22) in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - Do not compute JSON Schema default when plain serializers are used with `when_used` set to `'json-unless-none'` and the default value is `None` by [@​Viicos](https://github.com/Viicos) in [#​10121](https://github.com/pydantic/pydantic/pull/10121) - Fix `ImportString` special cases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10137](https://github.com/pydantic/pydantic/pull/10137) - Blacklist default globals to support exotic user code with `__` prefixed annotations by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10136](https://github.com/pydantic/pydantic/pull/10136) - Handle `nullable` schemas with `serialization` schema available during JSON Schema generation by [@​Viicos](https://github.com/Viicos) in [#​10132](https://github.com/pydantic/pydantic/pull/10132) - Reorganize `BaseModel` annotations by [@​kc0506](https://github.com/kc0506) in [#​10110](https://github.com/pydantic/pydantic/pull/10110) - Fix core schema simplification when serialization schemas are involved in specific scenarios by [@​Viicos](https://github.com/Viicos) in [#​10155](https://github.com/pydantic/pydantic/pull/10155) - Add support for stringified annotations when using `PrivateAttr` with `Annotated` by [@​Viicos](https://github.com/Viicos) in [#​10157](https://github.com/pydantic/pydantic/pull/10157) - Fix JSON Schema `number` type for literal and enum schemas by [@​Viicos](https://github.com/Viicos) in [#​10172](https://github.com/pydantic/pydantic/pull/10172) - Fix JSON Schema generation of fields with plain validators in serialization mode by [@​Viicos](https://github.com/Viicos) in [#​10167](https://github.com/pydantic/pydantic/pull/10167) - Fix invalid JSON Schemas being generated for functions in certain scenarios by [@​Viicos](https://github.com/Viicos) in [#​10188](https://github.com/pydantic/pydantic/pull/10188) - Make sure generated JSON Schemas are valid in tests by [@​Viicos](https://github.com/Viicos) in [#​10182](https://github.com/pydantic/pydantic/pull/10182) - Fix key error with custom serializer by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10200](https://github.com/pydantic/pydantic/pull/10200) - Add 'wss' for allowed schemes in NatsDsn by [@​swelborn](https://github.com/swelborn) in [#​10224](https://github.com/pydantic/pydantic/pull/10224) - Fix `Mapping` and `MutableMapping` annotations to use mapping schema instead of dict schema by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10020](https://github.com/pydantic/pydantic/pull/10020) - Fix JSON Schema generation for constrained dates by [@​Viicos](https://github.com/Viicos) in [#​10185](https://github.com/pydantic/pydantic/pull/10185) - Fix discriminated union bug regression when using enums by [@​kfreezen](https://github.com/kfreezen) in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - Fix `field_serializer` with computed field when using `*` by [@​nix010](https://github.com/nix010) in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - Try each option in `Union` serializer before inference by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1398](https://github.com/pydantic/pydantic-core/pull/1398) - Fix `float` serialization behavior in `strict` mode by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1400](https://github.com/pydantic/pydantic-core/pull/1400) - Introduce `exactness` into Decimal validation logic to improve union validation behavior by [@​sydney-runkle](https://github.com/sydney-runkle) in in [pydantic/pydantic-core#1405](https://github.com/pydantic/pydantic-core/pull/1405) - Fix new warnings assertions to use `pytest.warns()` by [@​mgorny](https://github.com/mgorny) in [#​10241](https://github.com/pydantic/pydantic/pull/10241) - Fix a crash when cleaning the namespace in `ModelMetaclass` by [@​Viicos](https://github.com/Viicos) in [#​10242](https://github.com/pydantic/pydantic/pull/10242) - Fix parent namespace issue with model rebuilds by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10257](https://github.com/pydantic/pydantic/pull/10257) - Remove defaults filter for namespace by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10261](https://github.com/pydantic/pydantic/pull/10261) - Use identity instead of equality after validating model in `__init__` by [@​Viicos](https://github.com/Viicos) in [#​10264](https://github.com/pydantic/pydantic/pull/10264) - Support `BigInt` serialization for `int` subclasses by [@​kxx317](https://github.com/kxx317) in [pydantic/pydantic-core#1417](https://github.com/pydantic/pydantic-core/pull/1417) - Support signature for wrap validators without `info` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10277](https://github.com/pydantic/pydantic/pull/10277) - Ensure `__pydantic_complete__` is set when rebuilding `dataclasses` by [@​Viicos](https://github.com/Viicos) in [#​10291](https://github.com/pydantic/pydantic/pull/10291) - Respect `schema_generator` config value in `TypeAdapter` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​10300](https://github.com/pydantic/pydantic/pull/10300) ##### New Contributors ##### `pydantic` - [@​kwint](https://github.com/kwint) made their first contribution in [#​9787](https://github.com/pydantic/pydantic/pull/9787) - [@​seekinginfiniteloop](https://github.com/seekinginfiniteloop) made their first contribution in [#​9822](https://github.com/pydantic/pydantic/pull/9822) - [@​a-alexander](https://github.com/a-alexander) made their first contribution in [#​9848](https://github.com/pydantic/pydantic/pull/9848) - [@​maximilianfellhuber](https://github.com/maximilianfellhuber) made their first contribution in [#​9885](https://github.com/pydantic/pydantic/pull/9885) - [@​karmaBonfire](https://github.com/karmaBonfire) made their first contribution in [#​9945](https://github.com/pydantic/pydantic/pull/9945) - [@​s-rigaud](https://github.com/s-rigaud) made their first contribution in [#​9958](https://github.com/pydantic/pydantic/pull/9958) - [@​msabramo](https://github.com/msabramo) made their first contribution in [#​9964](https://github.com/pydantic/pydantic/pull/9964) - [@​DimaCybr](https://github.com/DimaCybr) made their first contribution in [#​9972](https://github.com/pydantic/pydantic/pull/9972) - [@​kc0506](https://github.com/kc0506) made their first contribution in [#​9971](https://github.com/pydantic/pydantic/pull/9971) - [@​haoyun](https://github.com/haoyun) made their first contribution in [#​9990](https://github.com/pydantic/pydantic/pull/9990) - [@​radekwlsk](https://github.com/radekwlsk) made their first contribution in [#​9938](https://github.com/pydantic/pydantic/pull/9938) - [@​dpeachey](https://github.com/dpeachey) made their first contribution in [#​10029](https://github.com/pydantic/pydantic/pull/10029) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [#​10085](https://github.com/pydantic/pydantic/pull/10085) - [@​mochi22](https://github.com/mochi22) made their first contribution in [#​10082](https://github.com/pydantic/pydantic/pull/10082) - [@​aditkumar72](https://github.com/aditkumar72) made their first contribution in [#​10128](https://github.com/pydantic/pydantic/pull/10128) - [@​changhc](https://github.com/changhc) made their first contribution in [#​9654](https://github.com/pydantic/pydantic/pull/9654) - [@​insumanth](https://github.com/insumanth) made their first contribution in [#​10229](https://github.com/pydantic/pydantic/pull/10229) - [@​AdolfoVillalobos](https://github.com/AdolfoVillalobos) made their first contribution in [#​10240](https://github.com/pydantic/pydantic/pull/10240) - [@​bllchmbrs](https://github.com/bllchmbrs) made their first contribution in [#​10270](https://github.com/pydantic/pydantic/pull/10270) ##### `pydantic-core` - [@​kfreezen](https://github.com/kfreezen) made their first contribution in [pydantic/pydantic-core#1286](https://github.com/pydantic/pydantic-core/pull/1286) - [@​tinez](https://github.com/tinez) made their first contribution in [pydantic/pydantic-core#1368](https://github.com/pydantic/pydantic-core/pull/1368) - [@​fft001](https://github.com/fft001) made their first contribution in [pydantic/pydantic-core#1362](https://github.com/pydantic/pydantic-core/pull/1362) - [@​nix010](https://github.com/nix010) made their first contribution in [pydantic/pydantic-core#1349](https://github.com/pydantic/pydantic-core/pull/1349) - [@​BoxyUwU](https://github.com/BoxyUwU) made their first contribution in [pydantic/pydantic-core#1379](https://github.com/pydantic/pydantic-core/pull/1379) - [@​candleindark](https://github.com/candleindark) made their first contribution in [pydantic/pydantic-core#1404](https://github.com/pydantic/pydantic-core/pull/1404) - [@​changhc](https://github.com/changhc) made their first contribution in [pydantic/pydantic-core#1331](https://github.com/pydantic/pydantic-core/pull/1331) ### [`v2.8.2`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v282-2024-07-03) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.8.1...v2.8.2) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.8.2) ##### What's Changed ##### Fixes - Fix issue with assertion caused by pluggable schema validator by [@​dmontagu](https://github.com/dmontagu) in [#​9838](https://github.com/pydantic/pydantic/pull/9838) ### [`v2.8.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v281-2024-07-03) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.8.0...v2.8.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.8.1) ##### What's Changed ##### Packaging - Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9801](https://github.com/pydantic/pydantic/pull/9801) - Bump `pydantic-core` to `v2.20.1`, `pydantic-extra-types` to `v2.9.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9832](https://github.com/pydantic/pydantic/pull/9832) ##### Fixes - Fix breaking change in `to_snake` from v2.7 -> v2.8 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9812](https://github.com/pydantic/pydantic/pull/9812) - Fix list constraint json schema application by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9818](https://github.com/pydantic/pydantic/pull/9818) - Support time duration more than 23 by [@​nix010](https://github.com/nix010) in [pydantic/speedate#64](https://github.com/pydantic/speedate/pull/64) - Fix millisecond fraction being handled with the wrong scale by [@​davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#65](https://github.com/pydantic/speedate/pull/65) - Handle negative fractional durations correctly by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/speedate#71](https://github.com/pydantic/speedate/pull/71) ### [`v2.8.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v280-2024-07-01) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.7.4...v2.8.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.8.0) The code released in v2.8.0 is functionally identical to that of v2.8.0b1. ##### What's Changed ##### Packaging - Update citation version automatically with new releases by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9673](https://github.com/pydantic/pydantic/pull/9673) - Bump pyright to `v1.1.367` and add type checking tests for pipeline API by [@​adriangb](https://github.com/adriangb) in [#​9674](https://github.com/pydantic/pydantic/pull/9674) - Update `pydantic.v1` stub to `v1.10.17` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9707](https://github.com/pydantic/pydantic/pull/9707) - General package updates to prep for `v2.8.0b1` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9741](https://github.com/pydantic/pydantic/pull/9741) - Bump `pydantic-core` to `v2.20.0` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9745](https://github.com/pydantic/pydantic/pull/9745) - Add support for Python 3.13 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9743](https://github.com/pydantic/pydantic/pull/9743) - Update `pdm` version used for `pdm.lock` to v2.16.1 by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9761](https://github.com/pydantic/pydantic/pull/9761) - Update to `ruff` `v0.4.8` by [@​Viicos](https://github.com/Viicos) in [#​9585](https://github.com/pydantic/pydantic/pull/9585) ##### New Features - Experimental: support `defer_build` for `TypeAdapter` by [@​MarkusSintonen](https://github.com/MarkusSintonen) in [#​8939](https://github.com/pydantic/pydantic/pull/8939) - Implement `deprecated` field in json schema by [@​NeevCohen](https://github.com/NeevCohen) in [#​9298](https://github.com/pydantic/pydantic/pull/9298) - Experimental: Add pipeline API by [@​adriangb](https://github.com/adriangb) in [#​9459](https://github.com/pydantic/pydantic/pull/9459) - Add support for programmatic title generation by [@​NeevCohen](https://github.com/NeevCohen) in [#​9183](https://github.com/pydantic/pydantic/pull/9183) - Implement `fail_fast` feature by [@​uriyyo](https://github.com/uriyyo) in [#​9708](https://github.com/pydantic/pydantic/pull/9708) - Add `ser_json_inf_nan='strings'` mode to produce valid JSON by [@​josh-newman](https://github.com/josh-newman) in [pydantic/pydantic-core#1307](https://github.com/pydantic/pydantic-core/pull/1307) ##### Changes - Add warning when "alias" is set in ignored `Annotated` field by [@​nix010](https://github.com/nix010) in [#​9170](https://github.com/pydantic/pydantic/pull/9170) - Support serialization of some serializable defaults in JSON schema by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9624](https://github.com/pydantic/pydantic/pull/9624) - Relax type specification for `__validators__` values in `create_model` by [@​sydney-runkle](https://github.com/sydney-runkle) in [#​9697](https://github.com/pydantic/pydantic/pull/9697) - **Breaking Change:** Improve `smart` union matching logic by [@​sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1322](https://github.com/pydantic/pydantic-core/pull/1322) You can read more about our `smart` union matching logic [here](https://docs.pydantic.dev/dev/concepts/unions/#smart-mode). In some cases, if the old behavior is desired, you can switch to `left-to-right` mode and change the order of your `Union` members. ##### Performance ##### Internal Improvements - ⚡️ Speed up `_display_error_loc()` by 25% in `pydantic/v1/error_wrappers.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9653](https://github.com/pydantic/pydantic/pull/9653) - ⚡️ Speed up `_get_all_json_refs()` by 34% in `pydantic/json_schema.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9650](https://github.com/pydantic/pydantic/pull/9650) - ⚡️ Speed up `is_pydantic_dataclass()` by 41% in `pydantic/dataclasses.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9652](https://github.com/pydantic/pydantic/pull/9652) - ⚡️ Speed up `to_snake()` by 27% in `pydantic/alias_generators.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9747](https://github.com/pydantic/pydantic/pull/9747) - ⚡️ Speed up `unwrap_wrapped_function()` by 93% in `pydantic/_internal/_decorators.py` by [@​misrasaurabh1](https://github.com/misrasaurabh1) in [#​9727](https://github.com/pydantic/pydantic/pull/9727) ##### Fixes - Replace `__spec__.parent` with `__package__` by [@​hramezani](https://github.com/hramezani) in [#​9331](https://github.com/pydantic/pydantic/pull/9331) - Fix Outputted Model JSON Schema for `Sequence` type by [@​anesmemisevic](https://github.com/anesmemisevic) in [#​9303](https://github.com/pydantic/pydantic/pull/9303) - Fix typing of `_frame_depth` by [@​Viicos](https://github.com/Viicos) in [#​9353](https://github.com/pydantic/pydantic/pull/9353) - Make `ImportString` json schema compatible by [@​amitschang](https://github.com/am </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImF1dG9tZXJnZSJdfQ==-->
Change Summary
Implement a validator and a serialiser for complex numbers.
As discussed in pydantic/pydantic#8555, since there is no official representation for complex numbers in JSON, I propose to express complex numbers as dictionaries with two keys,
real
andimag
, with floating point values. Please find examples in the newly added test suites in this PR.Note that function
str_as_complex
inshared.rs
is not yet implemented as I need to discuss with the team if we want to support this. For example, we might want to accept strings like1+2j
as a valid complex number, as long as these strings follow the format described in python's documentation. This implementation, however, will be a bit tricky. Using regular expression is the simplest solution, but it is going to be a bit slow since building regex is rather costly. Parsing strings using the cratenum_complex
will make the implementation very neat, butnum_complex
is more tolerant in terms of string format, which means we will need to handle strings not allowed in python and it is going to be problematic. The safest solution is probably to do exactly the same as how cpython parses strings. I think that can be done in a separate PR for easier reviews.Related issue number
pydantic/pydantic#8555
Checklist
pydantic-core
(except for expected changes)