Update dependency pydantic to v2.9.0
This MR contains the following updates:
Package | Update | Change |
---|---|---|
pydantic (changelog) | minor |
==2.7.4 -> ==2.9.0
|
⚠ WarningSome dependencies could not be looked up. Check the warning logs for more information.
Release Notes
pydantic/pydantic (pydantic)
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
tov0.5.0
andpyright
tov1.1.369
by @sydney-runkle in #9801 - Bump
pydantic-extra-types
tov2.9.0
by @sydney-runkle in #9832 - Support compatibility with
pdm v2.18.1
by @Viicos in #10138 - Bump
v1
version stub tov1.10.18
by @sydney-runkle in #10214 - Bump
pydantic-core
tov2.23.2
by @sydney-runkle in #10311
New Features
- Add support for
ZoneInfo
by @Youssefares in #9896 - Add
Config.val_json_bytes
by @josh-newman in #9770 - Add DSN for Snowflake by @aditkumar72 in #10128
- Support
complex
number by @changhc in #9654 - Add support for
annotated_types.Not
by @aditkumar72 in #10210 - Allow
WithJsonSchema
to inject$ref
s w/http
orhttps
links by @dAIsySHEng1 in #9863 - Allow validators to customize validation JSON schema by @Viicos in #10094
- Support parametrized
PathLike
types by @nix010 in #9764 - Add tagged union serializer that attempts to use
str
orcallable
discriminators to select the correct serializer by @sydney-runkle in in pydantic/pydantic-core#1397
Changes
- Breaking Change: Merge
dict
typejson_schema_extra
by @sydney-runkle in #9792- For more info (how to replicate old behavior) on this change, see here
- Refactor annotation injection for known (often generic) types by @sydney-runkle in #9979
- Move annotation compatibility errors to validation phase by @sydney-runkle in #9999
- Improve runtime errors for string constraints like
pattern
for incompatible types by @sydney-runkle in #10158 - Remove
'allOf'
JSON schema workarounds by @dpeachey in #10029 - Remove
typed_dict_cls
data fromCoreMetadata
by @sydney-runkle in #10180 - Deprecate passing a dict to the
Examples
class by @Viicos in #10181 - Remove
initial_metadata
from internal metadata construct by @sydney-runkle in #10194 - Use
re.Pattern.search
instead ofre.Pattern.match
for consistency withrust
behavior by @tinez in pydantic/pydantic-core#1368 - Show value of wrongly typed data in
pydantic-core
serialization warning by @BoxyUwU in pydantic/pydantic-core#1377 - Breaking Change: in
pydantic-core
, changemetadata
type hint in core schemas fromAny
->Dict[str, Any] | None
by @sydney-runkle in pydantic/pydantic-core#1411 - Raise helpful warning when
self
isn't returned from model validator by @sydney-runkle in #10255
Performance
- Initial start at improving import times for modules, using caching primarily by @sydney-runkle in #10009
- Using cached internal import for
BaseModel
by @sydney-runkle in #10013 - Simplify internal generics logic - remove generator overhead by @sydney-runkle in #10059
- Remove default module globals from types namespace by @sydney-runkle in #10123
- Performance boost: skip caching parent namespaces in most cases by @sydney-runkle in #10113
- Update ns stack with already copied ns by @sydney-runkle in #10267
Minor Internal Improvements
-
⚡ ️ Speed upmultiple_of_validator()
by 31% inpydantic/_internal/_validators.py
by @misrasaurabh1 in #9839 -
⚡ ️ Speed upModelPrivateAttr.__set_name__()
by 18% inpydantic/fields.py
by @misrasaurabh1 in #9841 -
⚡ ️ Speed updataclass()
by 7% inpydantic/dataclasses.py
by @misrasaurabh1 in #9843 -
⚡ ️ Speed up function_field_name_for_signature
by 37% inpydantic/_internal/_signature.py
by @misrasaurabh1 in #9951 -
⚡ ️ Speed up methodGenerateSchema._unpack_refs_defs
by 26% inpydantic/_internal/_generate_schema.py
by @misrasaurabh1 in #9949 -
⚡ ️ Speed up functionapply_each_item_validators
by 100% inpydantic/_internal/_generate_schema.py
by @misrasaurabh1 in #9950 -
⚡ ️ Speed up methodConfigWrapper.core_config
by 28% inpydantic/_internal/_config.py
by @misrasaurabh1 in #9953
Fixes
- Respect
use_enum_values
onLiteral
types by @kwint in #9787 - Prevent type error for exotic
BaseModel/RootModel
inheritance by @dmontagu in #9913 - Fix typing issue with field_validator-decorated methods by @dmontagu in #9914
- Replace
str
type annotation withAny
in validator factories in documentation on validators by @maximilianfellhuber in #9885 - Fix
ComputedFieldInfo.wrapped_property
pointer when a property setter is assigned by @tlambert03 in #9892 - Fix recursive typing of
main.IncEnx
by @tlambert03 in #9924 - Allow usage of
type[Annotated[...]]
by @Viicos in #9932 -
mypy
plugin: handle frozen fields on a per-field basis by @dmontagu in #9935 - Fix typo in
invalid-annotated-type
error code by @sydney-runkle in #9948 - Simplify schema generation for
uuid
,url
, andip
types by @sydney-runkle in #9975 - Move
date
schemas to_generate_schema.py
by @sydney-runkle in #9976 - Move
decimal.Decimal
validation to_generate_schema.py
by @sydney-runkle in #9977 - Simplify IP address schema in
_std_types_schema.py
by @sydney-runkle in #9959 - Fix type annotations for some potentially generic
GenerateSchema.match_type
options by @sydney-runkle in #9961 - Add class name to "has conflict" warnings by @msabramo in #9964
- Fix
dataclass
ignoringdefault_factory
passed in Annotated by @kc0506 in #9971 - Fix
Sequence
ignoringdiscriminator
by @kc0506 in #9980 - Fix typing for
IPvAnyAddress
andIPvAnyInterface
by @haoyun in #9990 - Fix false positives on v1 models in
mypy
plugin forfrom_orm
check requiring from_attributes=True config by @radekwlsk in #9938 - Apply
strict=True
to__init__
inmypy
plugin by @kc0506 in #9998 - Refactor application of
deque
annotations by @sydney-runkle in #10018 - Raise a better user error when failing to evaluate a forward reference by @Viicos in #10030
- Fix evaluation of
__pydantic_extra__
annotation in specific circumstances by @Viicos in #10070 - Fix
frozen
enforcement fordataclasses
by @sydney-runkle in #10066 - Remove logic to handle unused
__get_pydantic_core_schema__
signature by @Viicos in #10075 - Use
is_annotated
consistently by @Viicos in #10095 - Fix
PydanticDeprecatedSince26
typo by @kc0506 in #10101 - Improve
pyright
tests, refactor model decorators signatures by @Viicos in #10092 - Fix
ip
serialization logic by @sydney-runkle in #10112 - Warn when frozen defined twice for
dataclasses
by @mochi22 in #10082 - Do not compute JSON Schema default when plain serializers are used with
when_used
set to'json-unless-none'
and the default value isNone
by @Viicos in #10121 - Fix
ImportString
special cases by @sydney-runkle in #10137 - Blacklist default globals to support exotic user code with
__
prefixed annotations by @sydney-runkle in #10136 - Handle
nullable
schemas withserialization
schema available during JSON Schema generation by @Viicos in #10132 - Reorganize
BaseModel
annotations by @kc0506 in #10110 - Fix core schema simplification when serialization schemas are involved in specific scenarios by @Viicos in #10155
- Add support for stringified annotations when using
PrivateAttr
withAnnotated
by @Viicos in #10157 - Fix JSON Schema
number
type for literal and enum schemas by @Viicos in #10172 - Fix JSON Schema generation of fields with plain validators in serialization mode by @Viicos in #10167
- Fix invalid JSON Schemas being generated for functions in certain scenarios by @Viicos in #10188
- Make sure generated JSON Schemas are valid in tests by @Viicos in #10182
- Fix key error with custom serializer by @sydney-runkle in #10200
- Add 'wss' for allowed schemes in NatsDsn by @swelborn in #10224
- Fix
Mapping
andMutableMapping
annotations to use mapping schema instead of dict schema by @sydney-runkle in #10020 - Fix JSON Schema generation for constrained dates by @Viicos in #10185
- Fix discriminated union bug regression when using enums by @kfreezen in pydantic/pydantic-core#1286
- Fix
field_serializer
with computed field when using*
by @nix010 in pydantic/pydantic-core#1349 - Try each option in
Union
serializer before inference by @sydney-runkle in pydantic/pydantic-core#1398 - Fix
float
serialization behavior instrict
mode by @sydney-runkle in pydantic/pydantic-core#1400 - Introduce
exactness
into Decimal validation logic to improve union validation behavior by @sydney-runkle in in pydantic/pydantic-core#1405 - Fix new warnings assertions to use
pytest.warns()
by @mgorny in #10241 - Fix a crash when cleaning the namespace in
ModelMetaclass
by @Viicos in #10242 - Fix parent namespace issue with model rebuilds by @sydney-runkle in #10257
- Remove defaults filter for namespace by @sydney-runkle in #10261
- Use identity instead of equality after validating model in
__init__
by @Viicos in #10264 - Support
BigInt
serialization forint
subclasses by @kxx317 in pydantic/pydantic-core#1417 - Support signature for wrap validators without
info
by @sydney-runkle in #10277 - Ensure
__pydantic_complete__
is set when rebuildingdataclasses
by @Viicos in #10291 - Respect
schema_generator
config value inTypeAdapter
by @sydney-runkle in #10300
New Contributors
pydantic
- @kwint made their first contribution in #9787
- @seekinginfiniteloop made their first contribution in #9822
- @a-alexander made their first contribution in #9848
- @maximilianfellhuber made their first contribution in #9885
- @karmaBonfire made their first contribution in #9945
- @s-rigaud made their first contribution in #9958
- @msabramo made their first contribution in #9964
- @DimaCybr made their first contribution in #9972
- @kc0506 made their first contribution in #9971
- @haoyun made their first contribution in #9990
- @radekwlsk made their first contribution in #9938
- @dpeachey made their first contribution in #10029
- @BoxyUwU made their first contribution in #10085
- @mochi22 made their first contribution in #10082
- @aditkumar72 made their first contribution in #10128
- @changhc made their first contribution in #9654
- @insumanth made their first contribution in #10229
- @AdolfoVillalobos made their first contribution in #10240
- @bllchmbrs made their first contribution in #10270
pydantic-core
- @kfreezen made their first contribution in pydantic/pydantic-core#1286
- @tinez made their first contribution in pydantic/pydantic-core#1368
- @fft001 made their first contribution in pydantic/pydantic-core#1362
- @nix010 made their first contribution in pydantic/pydantic-core#1349
- @BoxyUwU made their first contribution in pydantic/pydantic-core#1379
- @candleindark made their first contribution in pydantic/pydantic-core#1404
- @changhc made their first contribution in pydantic/pydantic-core#1331
v2.8.2
What's Changed
Fixes
- Fix issue with assertion caused by pluggable schema validator by @dmontagu in #9838
v2.8.1
What's Changed
Packaging
- Bump
ruff
tov0.5.0
andpyright
tov1.1.369
by @sydney-runkle in #9801 - Bump
pydantic-core
tov2.20.1
,pydantic-extra-types
tov2.9.0
by @sydney-runkle in #9832
Fixes
- Fix breaking change in
to_snake
from v2.7 -> v2.8 by @sydney-runkle in #9812 - Fix list constraint json schema application by @sydney-runkle in #9818
- Support time duration more than 23 by @nix010 in pydantic/speedate#64
- Fix millisecond fraction being handled with the wrong scale by @davidhewitt in pydantic/speedate#65
- Handle negative fractional durations correctly by @sydney-runkle in pydantic/speedate#71
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 in #9673
- Bump pyright to
v1.1.367
and add type checking tests for pipeline API by @adriangb in #9674 - Update
pydantic.v1
stub tov1.10.17
by @sydney-runkle in #9707 - General package updates to prep for
v2.8.0b1
by @sydney-runkle in #9741 - Bump
pydantic-core
tov2.20.0
by @sydney-runkle in #9745 - Add support for Python 3.13 by @sydney-runkle in #9743
- Update
pdm
version used forpdm.lock
to v2.16.1 by @sydney-runkle in #9761 - Update to
ruff
v0.4.8
by @Viicos in #9585
New Features
- Experimental: support
defer_build
forTypeAdapter
by @MarkusSintonen in #8939 - Implement
deprecated
field in json schema by @NeevCohen in #9298 - Experimental: Add pipeline API by @adriangb in #9459
- Add support for programmatic title generation by @NeevCohen in #9183
- Implement
fail_fast
feature by @uriyyo in #9708 - Add
ser_json_inf_nan='strings'
mode to produce valid JSON by @josh-newman in pydantic/pydantic-core#1307
Changes
- Add warning when "alias" is set in ignored
Annotated
field by @nix010 in #9170 - Support serialization of some serializable defaults in JSON schema by @sydney-runkle in #9624
- Relax type specification for
__validators__
values increate_model
by @sydney-runkle in #9697 -
Breaking Change: Improve
smart
union matching logic by @sydney-runkle in pydantic/pydantic-core#1322 You can read more about oursmart
union matching logic here. In some cases, if the old behavior is desired, you can switch toleft-to-right
mode and change the order of yourUnion
members.
Performance
Internal Improvements
-
⚡ ️ Speed up_display_error_loc()
by 25% inpydantic/v1/error_wrappers.py
by @misrasaurabh1 in #9653 -
⚡ ️ Speed up_get_all_json_refs()
by 34% inpydantic/json_schema.py
by @misrasaurabh1 in #9650 -
⚡ ️ Speed upis_pydantic_dataclass()
by 41% inpydantic/dataclasses.py
by @misrasaurabh1 in #9652 -
⚡ ️ Speed upto_snake()
by 27% inpydantic/alias_generators.py
by @misrasaurabh1 in #9747 -
⚡ ️ Speed upunwrap_wrapped_function()
by 93% inpydantic/_internal/_decorators.py
by @misrasaurabh1 in #9727
Fixes
- Replace
__spec__.parent
with__package__
by @hramezani in #9331 - Fix Outputted Model JSON Schema for
Sequence
type by @anesmemisevic in #9303 - Fix typing of
_frame_depth
by @Viicos in #9353 - Make
ImportString
json schema compatible by @amitschang in #9344 - Hide private attributes (
PrivateAttr
) from__init__
signature in type checkers by @idan22moral in #9293 - Make detection of
TypeVar
defaults robust to the CPythonPEP-696
implementation by @AlexWaygood in #9426 - Fix usage of
PlainSerializer
with builtin types by @Viicos in #9450 - Add more robust custom validation examples by @ChrisPappalardo in #9468
- Fix ignored
strict
specification forStringConstraint(strict=False)
by @vbmendes in #9476 - Breaking Change: Use PEP 570 syntax by @Viicos in #9479
- Use
Self
where possible by @Viicos in #9479 - Do not alter
RootModel.model_construct
signature in themypy
plugin by @Viicos in #9480 - Fixed type hint of
validation_context
by @OhioDschungel6 in #9508 - Support context being passed to TypeAdapter's
dump_json
/dump_python
by @alexcouper in #9495 - Updates type signature for
Field()
constructor by @bjmc in #9484 - Improve builtin alias generators by @sydney-runkle in #9561
- Fix typing of
TypeAdapter
by @Viicos in #9570 - Add fallback default value for private fields in
__setstate__
of BaseModel by @anhpham1509 in #9584 - Support
PEP 746
by @adriangb in #9587 - Allow validator and serializer functions to have default values by @Viicos in #9478
- Fix bug with mypy plugin's handling of covariant
TypeVar
fields by @dmontagu in #9606 - Fix multiple annotation / constraint application logic by @sydney-runkle in #9623
- Respect
regex
flags in validation and json schema by @sydney-runkle in #9591 - Fix type hint on
IpvAnyAddress
by @sydney-runkle in #9640 - Allow a field specifier on
__pydantic_extra__
by @dmontagu in #9659 - Use normalized case for file path comparison by @sydney-runkle in #9737
- Modify constraint application logic to allow field constraints on
Optional[Decimal]
by @lazyhope in #9754 -
validate_call
type params fix by @sydney-runkle in #9760 - Check all warnings returned by pytest.warns() by @s-t-e-v-e-n-k in #9702
- Reuse
re.Pattern
object in regex patterns to allow for regex flags by @sydney-runkle in pydantic/pydantic-core#1318
New Contributors
- @idan22moral made their first contribution in #9294
- @anesmemisevic made their first contribution in #9303
- @max-muoto made their first contribution in #9338
- @amitschang made their first contribution in #9344
- @paulmartin91 made their first contribution in #9410
- @OhioDschungel6 made their first contribution in #9405
- @AlexWaygood made their first contribution in #9426
- @kinuax made their first contribution in #9433
- @antoni-jamiolkowski made their first contribution in #9431
- @candleindark made their first contribution in #9448
- @nix010 made their first contribution in #9170
- @tomy0000000 made their first contribution in #9457
- @vbmendes made their first contribution in #9470
- @micheleAlberto made their first contribution in #9471
- @ChrisPappalardo made their first contribution in #9468
- @blueTurtz made their first contribution in #9475
- @WinterBlue16 made their first contribution in #9477
- @bittner made their first contribution in #9500
- @alexcouper made their first contribution in #9495
- @bjmc made their first contribution in #9484
- @pjvv made their first contribution in #9529
- @nedbat made their first contribution in #9530
- @gunnellEvan made their first contribution in #9469
- @jaymbans made their first contribution in #9531
- @MarcBresson made their first contribution in #9534
- @anhpham1509 made their first contribution in #9584
- @K-dash made their first contribution in #9595
- @s-t-e-v-e-n-k made their first contribution in #9527
- @airwoodix made their first contribution in #9506
- @misrasaurabh1 made their first contribution in #9653
- @AlessandroMiola made their first contribution in #9740
- @mylapallilavanyaa made their first contribution in #9746
- @lazyhope made their first contribution in #9754
- @YassinNouh21 made their first contribution in #9759
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.