v2.8.0 (2024-07-01)
The code released in v2.8.0 is functionally identical to that of v2.8.0b1.
Check out our blog post to learn more about the release highlights!
What's Changed
Packaging
- Update citation version automatically with new releases by @sydney-runkle in #9673
- Bump pyright to
v1.1.367and add type checking tests for pipeline API by @adriangb in #9674 - Update
pydantic.v1stub tov1.10.17by @sydney-runkle in #9707 - General package updates to prep for
v2.8.0b1by @sydney-runkle in #9741 - Bump
pydantic-coretov2.20.0by @sydney-runkle in #9745 - Add support for Python 3.13 by @sydney-runkle in #9743
- Update
pdmversion used forpdm.locktov2.16.1by @sydney-runkle in #9761 - Update to
ruffv0.4.8by @Viicos in #9585
New Features
- Experimental: support
defer_buildforTypeAdapterby @MarkusSintonen in #8939 - Implement
deprecatedfield 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_fastfeature 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
Annotatedfield 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_modelby @sydney-runkle in #9697 - Breaking Change: Improve
smartunion matching logic by @sydney-runkle in pydantic/pydantic-core#1322
You can read more about oursmartunion matching logic here. In some cases, if the old behavior
is desired, you can switch toleft-to-rightmode and change the order of yourUnionmembers.
Performance
Internal Improvements
- β‘οΈ Speed up
_display_error_loc()by 25% inpydantic/v1/error_wrappers.pyby @misrasaurabh1 in #9653 - β‘οΈ Speed up
_get_all_json_refs()by 34% inpydantic/json_schema.pyby @misrasaurabh1 in #9650 - β‘οΈ Speed up
is_pydantic_dataclass()by 41% inpydantic/dataclasses.pyby @misrasaurabh1 in #9652 - β‘οΈ Speed up
to_snake()by 27% inpydantic/alias_generators.pyby @misrasaurabh1 in #9747 - β‘οΈ Speed up
unwrap_wrapped_function()by 93% inpydantic/_internal/_decorators.pyby @misrasaurabh1 in #9727
Fixes
- Replace
__spec__.parentwith__package__by @hramezani in #9331 - Fix Outputted Model JSON Schema for
Sequencetype by @anesmemisevic in #9303 - Fix typing of
_frame_depthby @Viicos in #9353 - Make
ImportStringjson schema compatible by @amitschang in #9344 - Hide private attributes (
PrivateAttr) from__init__signature in type checkers by @idan22moral in #9293 - Make detection of
TypeVardefaults robust to the CPythonPEP-696implementation by @AlexWaygood in #9426 - Fix usage of
PlainSerializerwith builtin types by @Viicos in #9450 - Add more robust custom validation examples by @ChrisPappalardo in #9468
- Fix ignored
strictspecification forStringConstraint(strict=False)by @vbmendes in #9476 - Use
Selfwhere possible by @Viicos in #9479 - Do not alter
RootModel.model_constructsignature in themypyplugin by @Viicos in #9480 - Fixed type hint of
validation_contextby @OhioDschungel6 in #9508 - Support context being passed to TypeAdapter's
dump_json/dump_pythonby @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
TypeAdapterby @Viicos in #9570 - Add fallback default value for private fields in
__setstate__of BaseModel by @anhpham1509 in #9584 - Support
PEP 746by @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
TypeVarfields by @dmontagu in #9606 - Fix multiple annotation / constraint application logic by @sydney-runkle in #9623
- Respect
regexflags in validation and json schema by @sydney-runkle in #9591 - Fix type hint on
IpvAnyAddressby @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_calltype 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.Patternobject 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
Full Changelog: v2.7.4...v2.8.0/