0 purchases
pydantic 2.9.0
Pydantic
Data validation using Python type hints.
Fast and extensible, Pydantic plays nicely with your linters/IDE/brain.
Define how data should be in pure, canonical Python 3.8+; validate it with Pydantic.
Pydantic Company :rocket:
We've started a company based on the principles that I believe have led to Pydantic's success.
Learn more from the Company Announcement.
Pydantic V1.10 vs. V2
Pydantic V2 is a ground-up rewrite that offers many new features, performance improvements, and some breaking changes compared to Pydantic V1.
If you're using Pydantic V1 you may want to look at the
pydantic V1.10 Documentation or,
1.10.X-fixes git branch. Pydantic V2 also ships with the latest version of Pydantic V1 built in so that you can incrementally upgrade your code base and projects: from pydantic import v1 as pydantic_v1.
Help
See documentation for more details.
Installation
Install using pip install -U pydantic or conda install pydantic -c conda-forge.
For more installation options to make Pydantic even faster,
see the Install section in the documentation.
A Simple Example
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str = 'John Doe'
signup_ts: Optional[datetime] = None
friends: List[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123
Contributing
For guidance on setting up a development environment and how to make a
contribution to Pydantic, see
Contributing to Pydantic.
Reporting a Security Vulnerability
See our security policy.
Changelog
v2.9.0 (2024-09-05)
GitHub release
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 in #9801
Bump pydantic-extra-types to v2.9.0 by @sydney-runkle in #9832
Support compatibility with pdm v2.18.1 by @Viicos in #10138
Bump v1 version stub to v1.10.18 by @sydney-runkle in #10214
Bump pydantic-core to v2.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 $refs w/ http or https 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 or callable discriminators to select the correct serializer by @sydney-runkle in in pydantic/pydantic-core#1397
Changes
Breaking Change: Merge dict type json_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 from CoreMetadata 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 of re.Pattern.match for consistency with rust 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, change metadata type hint in core schemas from Any -> 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 up multiple_of_validator() by 31% in pydantic/_internal/_validators.py by @misrasaurabh1 in #9839
⚡️ Speed up ModelPrivateAttr.__set_name__() by 18% in pydantic/fields.py by @misrasaurabh1 in #9841
⚡️ Speed up dataclass() by 7% in pydantic/dataclasses.py by @misrasaurabh1 in #9843
⚡️ Speed up function _field_name_for_signature by 37% in pydantic/_internal/_signature.py by @misrasaurabh1 in #9951
⚡️ Speed up method GenerateSchema._unpack_refs_defs by 26% in pydantic/_internal/_generate_schema.py by @misrasaurabh1 in #9949
⚡️ Speed up function apply_each_item_validators by 100% in pydantic/_internal/_generate_schema.py by @misrasaurabh1 in #9950
⚡️ Speed up method ConfigWrapper.core_config by 28% in pydantic/_internal/_config.py by @misrasaurabh1 in #9953
Fixes
Respect use_enum_values on Literal 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 with Any 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, and ip 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 ignoring default_factory passed in Annotated by @kc0506 in #9971
Fix Sequence ignoring discriminator by @kc0506 in #9980
Fix typing for IPvAnyAddress and IPvAnyInterface by @haoyun in #9990
Fix false positives on v1 models in mypy plugin for from_orm check requiring from_attributes=True config by @radekwlsk in #9938
Apply strict=True to __init__ in mypy 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 for dataclasses 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 is None 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 with serialization 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 with Annotated 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 and MutableMapping 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 in strict 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 for int 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 rebuilding dataclasses by @Viicos in #10291
Respect schema_generator config value in TypeAdapter 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.9.0b2 (2024-08-30)
Pre-release, see the GitHub release for details.
v2.9.0b1 (2024-08-26)
Pre-release, see the GitHub release for details.
v2.8.2 (2024-07-03)
GitHub release
What's Changed
Fixes
Fix issue with assertion caused by pluggable schema validator by @dmontagu in #9838
v2.8.1 (2024-07-03)
GitHub release
What's Changed
Packaging
Bump ruff to v0.5.0 and pyright to v1.1.369 by @sydney-runkle in #9801
Bump pydantic-core to v2.20.1, pydantic-extra-types to v2.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 (2024-07-01)
GitHub release
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 to v1.10.17 by @sydney-runkle in #9707
General package updates to prep for v2.8.0b1 by @sydney-runkle in #9741
Bump pydantic-core to v2.20.0 by @sydney-runkle in #9745
Add support for Python 3.13 by @sydney-runkle in #9743
Update pdm version used for pdm.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 for TypeAdapter 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 in create_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 our smart union matching logic here. 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 in #9653
⚡️ Speed up _get_all_json_refs() by 34% in pydantic/json_schema.py by @misrasaurabh1 in #9650
⚡️ Speed up is_pydantic_dataclass() by 41% in pydantic/dataclasses.py by @misrasaurabh1 in #9652
⚡️ Speed up to_snake() by 27% in pydantic/alias_generators.py by @misrasaurabh1 in #9747
⚡️ Speed up unwrap_wrapped_function() by 93% in pydantic/_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 CPython PEP-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 for StringConstraint(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 the mypy 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
v2.8.0b1 (2024-06-27)
Pre-release, see the GitHub release for details.
v2.7.4 (2024-06-12)
Github release
What's Changed
Packaging
Bump pydantic.v1 to v1.10.16 reference by @sydney-runkle in #9639
Fixes
Specify recursive_guard as kwarg in FutureRef._evaluate by @vfazio in #9612
v2.7.3 (2024-06-03)
GitHub release
What's Changed
Packaging
Bump pydantic-core to v2.18.4 by @sydney-runkle in #9550
Fixes
Fix u style unicode strings in python @samuelcolvin in pydantic/jiter#110
v2.7.2 (2024-05-28)
GitHub release
What's Changed
Packaging
Bump pydantic-core to v2.18.3 by @sydney-runkle in #9515
Fixes
Replace __spec__.parent with __package__ by @hramezani in #9331
Fix validation of ints with leading unary minus by @RajatRajdeep in pydantic/pydantic-core#1291
Fix str subclass validation for enums by @sydney-runkle in pydantic/pydantic-core#1273
Support BigInts in Literals and Enums by @samuelcolvin in pydantic/pydantic-core#1297
Fix: uuid - allow str subclass as input by @davidhewitt in pydantic/pydantic-core#1296
v2.7.1 (2024-04-23)
GitHub release
What's Changed
Packaging
Bump pydantic-core to v2.18.2 by @sydney-runkle in #9307
New Features
Ftp and Websocket connection strings support by @CherrySuryp in #9205
Changes
Use field description for RootModel schema description when there is … by @LouisGobert in #9214
Fixes
Fix validation_alias behavior with model_construct for AliasChoices and AliasPath by @sydney-runkle in #9223
Revert typing.Literal and import it outside the TYPE_CHECKING block by @frost-nzcr4 in #9232
Fix Secret serialization schema, applicable for unions by @sydney-runkle in #9240
Fix strict application to function-after with use_enum_values by @sydney-runkle in #9279
Address case where model_construct on a class which defines model_post_init fails with AttributeError by @babygrimes in #9168
Fix model_json_schema with config types by @NeevCohen in #9287
Support multiple zeros as an int by @samuelcolvin in pydantic/pydantic-core#1269
Fix validation of ints with leading unary plus by @cknv in pydantic/pydantic-core#1272
Fix interaction between extra != 'ignore' and from_attributes=True by @davidhewitt in pydantic/pydantic-core#1276
Handle error from Enum's missing function as ValidationError by @sydney-runkle in pydantic/pydantic-core#1274
Fix memory leak with Iterable validation by @davidhewitt in pydantic/pydantic-core#1271
New Contributors
@zzstoatzz made their first contribution in #9219
@frost-nzcr4 made their first contribution in #9232
@CherrySuryp made their first contribution in #9205
@vagenas made their first contribution in #9268
@ollz272 made their first contribution in #9262
@babygrimes made their first contribution in #9168
@swelborn made their first contribution in #9296
@kf-novi made their first contribution in #9236
@lgeiger made their first contribution in #9288
v2.7.0 (2024-04-11)
GitHub release
The code released in v2.7.0 is practically identical to that of v2.7.0b1.
What's Changed
Packaging
Reorganize pyproject.toml sections by @Viicos in #8899
Bump pydantic-core to v2.18.1 by @sydney-runkle in #9211
Adopt jiter v0.2.0 by @samuelcolvin in pydantic/pydantic-core#1250
New Features
Extract attribute docstrings from FieldInfo.description by @Viicos in #6563
Add a with_config decorator to comply with typing spec by @Viicos in #8611
Allow an optional separator splitting the value and unit of the result of ByteSize.human_readable by @jks15satoshi in #8706
Add generic Secret base type by @conradogarciaberrotaran in #8519
Make use of Sphinx inventories for cross references in docs by @Viicos in #8682
Add environment variable to disable plugins by @geospackle in #8767
Add support for deprecated fields by @Viicos in #8237
Allow field_serializer('*') by @ornariece in #9001
Handle a case when model_config is defined as a model property by @alexeyt101 in #9004
Update create_model() to support typing.Annotated as input by @wannieman98 in #8947
Add ClickhouseDsn support by @solidguy7 in #9062
Add support for re.Pattern[str] to pattern field by @jag-k in #9053
Support for serialize_as_any runtime setting by @sydney-runkle in #8830
Add support for typing.Self by @Youssefares in #9023
Ability to pass context to serialization by @ornariece in #8965
Add feedback widget to docs with flarelytics integration by @sydney-runkle in #9129
Support for parsing partial JSON strings in Python by @samuelcolvin in pydantic/jiter#66
Finalized in v2.7.0, rather than v2.7.0b1:
Add support for field level number to str coercion option by @NeevCohen in #9137
Update warnings parameter for serialization utilities to allow raising a warning by @Lance-Drane in #9166
Changes
Correct docs, logic for model_construct behavior with extra by @sydney-runkle in #8807
Improve error message for improper RootModel subclasses by @sydney-runkle in #8857
Breaking Change: Use PEP570 syntax by @Viicos in #8940
Add enum and type to the JSON schema for single item literals by @dmontagu in #8944
Deprecate update_json_schema internal function by @sydney-runkle in #9125
Serialize duration to hour minute second, instead of just seconds by @kakilangit in pydantic/speedate#50
Trimming str before parsing to int and float by @hungtsetse in pydantic/pydantic-core#1203
Performance
enum validator improvements by @samuelcolvin in #9045
Move enum validation and serialization to Rust by @samuelcolvin in #9064
Improve schema generation for nested dataclasses by @sydney-runkle in #9114
Fast path for ASCII python string creation in JSON by @samuelcolvin in in pydantic/jiter#72
SIMD integer and string JSON parsing on aarch64(Note: SIMD on x86 will be implemented in a future release) by @samuelcolvin in in pydantic/jiter#65
Support JSON Cow<str> from jiter by @davidhewitt in pydantic/pydantic-core#1231
MAJOR performance improvement: update to PyO3 0.21 final by @davidhewitt in pydantic/pydantic-core#1248
cache Python strings by @samuelcolvin in pydantic/pydantic-core#1240
Fixes
Fix strict parsing for some Sequences by @sydney-runkle in #8614
Add a check on the existence of __qualname__ by @anci3ntr0ck in #8642
Handle __pydantic_extra__ annotation being a string or inherited by @alexmojaki in #8659
Fix json validation for NameEmail by @Holi0317 in #8650
Fix type-safety of attribute access in BaseModel by @bluenote10 in #8651
Fix bug with mypy plugin and no_strict_optional = True by @dmontagu in #8666
Fix ByteSize error type change by @sydney-runkle in #8681
Fix inheriting annotations in dataclasses by @sydney-runkle in #8679
Fix regression in core schema generation for indirect definition references by @dmontagu in #8702
Fix unsupported types bug with plain validator by @sydney-runkle in #8710
Reverting problematic fix from 2.6 release, fixing schema building bug by @sydney-runkle in #8718
fixes __pydantic_config__ ignored for TypeDict by @13sin in #8734
Fix test failures with pytest v8.0.0 due to pytest.warns() starting to work inside pytest.raises() by @mgorny in #8678
Use is_valid_field from 1.x for mypy plugin by @DanielNoord in #8738
Better-support mypy strict equality flag by @dmontagu in #8799
model_json_schema export with Annotated types misses 'required' parameters by @LouisGobert in #8793
Fix default inclusion in FieldInfo.__repr_args__ by @sydney-runkle in #8801
Fix resolution of forward refs in dataclass base classes that are not present in the subclass module namespace by @matsjoyce-refeyn in #8751
Fix BaseModel type annotations to be resolvable by typing.get_type_hints by @devmonkey22 in #7680
Fix: allow empty string aliases with AliasGenerator by @sydney-runkle in #8810
Fix test along with date -> datetime timezone assumption fix by @sydney-runkle in #8823
Fix deprecation warning with usage of ast.Str by @Viicos in #8837
Add missing deprecated decorators by @Viicos in #8877
Fix serialization of NameEmail if name includes an email address by @NeevCohen in #8860
Add information about class in error message of schema generation by @Czaki in #8917
Make TypeAdapter's typing compatible with special forms by @adriangb in #8923
Fix issue with config behavior being baked into the ref schema for enums by @dmontagu in #8920
More helpful error re wrong model_json_schema usage by @sydney-runkle in #8928
Fix nested discriminated union schema gen, pt 2 by @sydney-runkle in #8932
Fix schema build for nested dataclasses / TypedDicts with discriminators by @sydney-runkle in #8950
Remove unnecessary logic for definitions schema gen with discriminated unions by @sydney-runkle in #8951
Fix handling of optionals in mypy plugin by @dmontagu in #9008
Fix PlainSerializer usage with std type constructor by @sydney-runkle in #9031
Remove unnecessary warning for config in plugin by @dmontagu in #9039
Fix default value serializing by @NeevCohen in #9066
Fix extra fields check in Model.__getattr__() by @NeevCohen in #9082
Fix ClassVar forward ref inherited from parent class by @alexmojaki in #9097
fix sequence like validator with strict True by @andresliszt in #8977
Improve warning message when a field name shadows a field in a parent model by @chan-vince in #9105
Do not warn about shadowed fields if they are not redefined in a child class by @chan-vince in #9111
Fix discriminated union bug with unsubstituted type var by @sydney-runkle in #9124
Support serialization of deque when passed to Sequence[blah blah blah] by @sydney-runkle in #9128
Init private attributes from super-types in model_post_init by @Viicos in #9134
fix model_construct with validation_alias by @ornariece in #9144
Ensure json-schema generator handles Literal null types by @bruno-f-cruz in #9135
Fixed in v2.7.0: Fix allow extra generic by @dmontagu in #9193
New Contributors
@hungtsetse made their first contribution in #8546
@StrawHatDrag0n made their first contribution in #8583
@anci3ntr0ck made their first contribution in #8642
@Holi0317 made their first contribution in #8650
@bluenote10 made their first contribution in #8651
@ADSteele916 made their first contribution in #8703
@musicinmybrain made their first contribution in #8731
@jks15satoshi made their first contribution in #8706
@13sin made their first contribution in #8734
@DanielNoord made their first contribution in #8738
@conradogarciaberrotaran made their first contribution in #8519
@chris-griffin made their first contribution in #8775
@LouisGobert made their first contribution in #8793
@matsjoyce-refeyn made their first contribution in #8751
@devmonkey22 made their first contribution in #7680
@adamency made their first contribution in #8847
@MamfTheKramf made their first contribution in #8851
@ornariece made their first contribution in #9001
@alexeyt101 made their first contribution in #9004
@wannieman98 made their first contribution in #8947
@solidguy7 made their first contribution in #9062
@kloczek made their first contribution in #9047
@jag-k made their first contribution in #9053
@priya-gitTest made their first contribution in #9088
@Youssefares made their first contribution in #9023
@chan-vince made their first contribution in #9105
@bruno-f-cruz made their first contribution in #9135
@Lance-Drane made their first contribution in #9166
v2.7.0b1 (2024-04-03)
Pre-release, see the GitHub release for details.
v2.6.4 (2024-03-12)
GitHub release
What's Changed
Fixes
Fix usage of AliasGenerator with computed_field decorator by @sydney-runkle in #8806
Fix nested discriminated union schema gen, pt 2 by @sydney-runkle in #8932
Fix bug with no_strict_optional=True caused by API deferral by @dmontagu in #8826
v2.6.3 (2024-02-27)
GitHub release
What's Changed
Packaging
Update pydantic-settings version in the docs by @hramezani in #8906
Fixes
Fix discriminated union schema gen bug by @sydney-runkle in #8904
v2.6.2 (2024-02-23)
GitHub release
What's Changed
Packaging
Upgrade to pydantic-core 2.16.3 by @sydney-runkle in #8879
Fixes
'YYYY-MM-DD' date string coerced to datetime shouldn't infer timezone by @sydney-runkle in pydantic/pydantic-core#1193
v2.6.1 (2024-02-05)
GitHub release
What's Changed
Packaging
Upgrade to pydantic-core 2.16.2 by @sydney-runkle in #8717
Fixes
Fix bug with mypy plugin and no_strict_optional = True by @dmontagu in #8666
Fix ByteSize error type change by @sydney-runkle in #8681
Fix inheriting Field annotations in dataclasses by @sydney-runkle in #8679
Fix regression in core schema generation for indirect definition references by @dmontagu in #8702
Fix unsupported types bug with PlainValidator by @sydney-runkle in #8710
Reverting problematic fix from 2.6 release, fixing schema building bug by @sydney-runkle in #8718
Fix warning for tuple of wrong size in Union by @davidhewitt in pydantic/pydantic-core#1174
Fix computed_field JSON serializer exclude_none behavior by @sydney-runkle in pydantic/pydantic-core#1187
v2.6.0 (2024-01-23)
GitHub release
The code released in v2.6.0 is practically identical to that of v2.6.0b1.
What's Changed
Packaging
Check for email-validator version >= 2.0 by @commonism in #6033
Upgrade `ruff`` target version to Python 3.8 by @Elkiwa in #8341
Update to pydantic-extra-types==2.4.1 by @yezz123 in #8478
Update to pyright==1.1.345 by @Viicos in #8453
Update pydantic-core from 2.14.6 to 2.16.1, significant changes from these updates are described below, full changelog here
New Features
Add NatsDsn by @ekeew in #6874
Add ConfigDict.ser_json_inf_nan by @davidhewitt in #8159
Add types.OnErrorOmit by @adriangb in #8222
Support AliasGenerator usage by @sydney-runkle in #8282
Add Pydantic People Page to docs by @sydney-runkle in #8345
Support yyyy-MM-DD datetime parsing by @sydney-runkle in #8404
Added bits conversions to the ByteSize class #8415 by @luca-matei in #8507
Enable json schema creation with type ByteSize by @geospackle in #8537
Add eval_type_backport to handle union operator and builtin generic subscripting in older Pythons by @alexmojaki in #8209
Add support for dataclass fields init by @dmontagu in #8552
Implement pickling for ValidationError by @davidhewitt in pydantic/pydantic-core#1119
Add unified tuple validator that can handle "variadic" tuples via PEP-646 by @dmontagu in pydantic/pydantic-core#865
Changes
Drop Python3.7 support by @hramezani in #7188
Drop Python 3.7, and PyPy 3.7 and 3.8 by @davidhewitt in pydantic/pydantic-core#1129
Use positional-only self in BaseModel constructor, so no field name can ever conflict with it by @ariebovenberg in #8072
Make @validate_call return a function instead of a custom descriptor - fixes binding issue with inheritance and adds self/cls argument to validation errors by @alexmojaki in #8268
Exclude BaseModel docstring from JSON schema description by @sydney-runkle in #8352
Introducing classproperty decorator for model_computed_fields by @Jocelyn-Gas in #8437
Explicitly raise an error if field names clashes with types by @Viicos in #8243
Use stricter serializer for unions of simple types by @alexdrydew pydantic/pydantic-core#1132
Performance
Add Codspeed profiling Actions workflow by @lambertsbennett in #8054
Improve int extraction by @samuelcolvin in pydantic/pydantic-core#1155
Improve performance of recursion guard by @samuelcolvin in pydantic/pydantic-core#1156
dataclass serialization speedups by @samuelcolvin in pydantic/pydantic-core#1162
Avoid HashMap creation when looking up small JSON objects in LazyIndexMaps by @samuelcolvin in pydantic/jiter#55
use hashbrown to speedup python string caching by @davidhewitt in pydantic/jiter#51
Replace Peak with more efficient Peek by @davidhewitt in pydantic/jiter#48
Fixes
Move getattr warning in deprecated BaseConfig by @tlambert03 in #7183
Only hash model_fields, not whole __dict__ by @alexmojaki in #7786
Fix mishandling of unions while freezing types in the mypy plugin by @dmontagu in #7411
Fix mypy error on untyped ClassVar by @vincent-hachin-wmx in #8138
Only compare pydantic fields in BaseModel.__eq__ instead of whole __dict__ by @QuentinSoubeyranAqemia in #7825
Update strict docstring in model_validate method. by @LukeTonin in #8223
Fix overload position of computed_field by @Viicos in #8227
Fix custom type type casting used in multiple attributes by @ianhfc in #8066
Fix issue not allowing validate_call decorator to be dynamically assigned to a class method by @jusexton in #8249
Fix issue unittest.mock deprecation warnings by @ibleedicare in #8262
Added tests for the case JsonValue contains subclassed primitive values by @jusexton in #8286
Fix mypy error on free before validator (classmethod) by @sydney-runkle in #8285
Fix to_snake conversion by @jevins09 in #8316
Fix type annotation of ModelMetaclass.__prepare__ by @slanzmich in #8305
Disallow config specification when initializing a TypeAdapter when the annotated type has config already by @sydney-runkle in #8365
Fix a naming issue with JSON schema for generics parametrized by recursive type aliases by @dmontagu in #8389
Fix type annotation in pydantic people script by @shenxiangzhuang in #8402
Add support for field alias in dataclass signature by @NeevCohen in #8387
Fix bug with schema generation with Field(...) in a forward ref by @dmontagu in #8494
Fix ordering of keys in __dict__ with model_construct call by @sydney-runkle in #8500
Fix module path_type creation when globals does not contain __name__ by @hramezani in #8470
Fix for namespace issue with dataclasses with from __future__ import annotations by @sydney-runkle in #8513
Fix: make function validator types positional-only by @pmmmwh in #8479
Fix usage of @deprecated by @Viicos in #8294
Add more support for private attributes in model_construct call by @sydney-runkle in #8525
Use a stack for the types namespace by @dmontagu in #8378
Fix schema-building bug with TypeAliasType for types with refs by @dmontagu in #8526
Support pydantic.Field(repr=False) in dataclasses by @tigeryy2 in #8511
Override dataclass_transform behavior for RootModel by @Viicos in #8163
Refactor signature generation for simplicity by @sydney-runkle in #8572
Fix ordering bug of PlainValidator annotation by @Anvil in #8567
Fix exclude_none for json serialization of computed_fields by @sydney-runkle in pydantic/pydantic-core#1098
Support yyyy-MM-DD string for datetimes by @sydney-runkle in pydantic/pydantic-core#1124
Tweak ordering of definitions in generated schemas by @StrawHatDrag0n in #8583
New Contributors
pydantic
@ekeew made their first contribution in #6874
@lambertsbennett made their first contribution in #8054
@vincent-hachin-wmx made their first contribution in #8138
@QuentinSoubeyranAqemia made their first contribution in #7825
@ariebovenberg made their first contribution in #8072
@LukeTonin made their first contribution in #8223
@denisart made their first contribution in #8231
@ianhfc made their first contribution in #8066
@eonu made their first contribution in #8255
@amandahla made their first contribution in #8263
@ibleedicare made their first contribution in #8262
@jevins09 made their first contribution in #8316
@cuu508 made their first contribution in #8322
@slanzmich made their first contribution in #8305
@jensenbox made their first contribution in #8331
@szepeviktor made their first contribution in #8356
@Elkiwa made their first contribution in #8341
@parhamfh made their first contribution in #8395
@shenxiangzhuang made their first contribution in #8402
@NeevCohen made their first contribution in #8387
@zby made their first contribution in #8497
@patelnets made their first contribution in #8491
@edwardwli made their first contribution in #8503
@luca-matei made their first contribution in #8507
@Jocelyn-Gas made their first contribution in #8437
@bL34cHig0 made their first contribution in #8501
@tigeryy2 made their first contribution in #8511
@geospackle made their first contribution in #8537
@Anvil made their first contribution in #8567
@hungtsetse made their first contribution in #8546
@StrawHatDrag0n made their first contribution in #8583
pydantic-core
@mariuswinger made their first contribution in pydantic/pydantic-core#1087
@adamchainz made their first contribution in pydantic/pydantic-core#1090
@akx made their first contribution in pydantic/pydantic-core#1123
v2.6.0b1 (2024-01-19)
Pre-release, see the GitHub release for details.
v2.5.3 (2023-12-22)
GitHub release
What's Changed
Packaging
uprev pydantic-core to 2.14.6
Fixes
Fix memory leak with recursive definitions creating reference cycles by @davidhewitt in pydantic/pydantic-core#1125
v2.5.2 (2023-11-22)
GitHub release
What's Changed
Packaging
uprev pydantic-core to 2.14.5
New Features
Add ConfigDict.ser_json_inf_nan by @davidhewitt in #8159
Fixes
Fix validation of Literal from JSON keys when used as dict key by @sydney-runkle in pydantic/pydantic-core#1075
Fix bug re custom_init on members of Union by @sydney-runkle in pydantic/pydantic-core#1076
Fix JsonValue bool serialization by @sydney-runkle in #8190
Fix handling of unhashable inputs with Literal in Unions by @sydney-runkle in pydantic/pydantic-core#1089
v2.5.1 (2023-11-15)
GitHub release
What's Changed
Packaging
uprev pydantic-core to 2.14.3 by @samuelcolvin in #8120
Fixes
Fix package description limit by @dmontagu in #8097
Fix ValidateCallWrapper error when creating a model which has a @validate_call wrapped field annotation by @sydney-runkle in #8110
v2.5.0 (2023-11-13)
GitHub release
The code released in v2.5.0 is functionally identical to that of v2.5.0b1.
What's Changed
Packaging
Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog here
Update to pyright==1.1.335 by @Viicos in #8075
New Features
Allow plugins to catch non ValidationError errors by @adriangb in #7806
Support __doc__ argument in create_model() by @chris-spann in #7863
Expose regex_engine flag - meaning you can use with the Rust or Python regex libraries in constraints by @utkini in #7768
Save return type generated from type annotation in ComputedFieldInfo by @alexmojaki in #7889
Adopting ruff formatter by @Luca-Blight in #7930
Added validation_error_cause to config by @zakstucke in #7626
Make path of the item to validate available in plugin by @hramezani in #7861
Add CallableDiscriminator and Tag by @dmontagu in #7983
CallableDiscriminator renamed to Discriminator by @dmontagu in #8047
Make union case tags affect union error messages by @dmontagu in #8001
Add examples and json_schema_extra to @computed_field by @alexmojaki in #8013
Add JsonValue type by @dmontagu in #7998
Allow str as argument to Discriminator by @dmontagu in #8047
Add SchemaSerializer.__reduce__ method to enable pickle serialization by @edoakes in pydantic/pydantic-core#1006
Changes
Significant Change: replace ultra_strict with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by @davidhewitt in pydantic/pydantic-core#867
Add support for instance method reassignment when extra='allow' by @sydney-runkle in #7683
Support JSON schema generation for Enum types with no cases by @sydney-runkle in #7927
Warn if a class inherits from Generic before BaseModel by @alexmojaki in #7891
Performance
New custom JSON parser, jiter by @samuelcolvin in pydantic/pydantic-core#974
PGO build for MacOS M1 by @samuelcolvin in pydantic/pydantic-core#1063
Use __getattr__ for all package imports, improve import time by @samuelcolvin in #7947
Fixes
Fix mypy issue with subclasses of RootModel by @sydney-runkle in #7677
Properly rebuild the FieldInfo when a forward ref gets evaluated by @dmontagu in #7698
Fix failure to load SecretStr from JSON (regression in v2.4) by @sydney-runkle in #7729
Fix defer_build behavior with TypeAdapter by @sydney-runkle in #7736
Improve compatibility with legacy mypy versions by @dmontagu in #7742
Fix: update TypeVar handling when default is not set by @pmmmwh in #7719
Support specification of strict on Enum type fields by @sydney-runkle in #7761
Wrap weakref.ref instead of subclassing to fix cloudpickle serialization by @edoakes in #7780
Keep values of private attributes set within model_post_init in subclasses by @alexmojaki in #7775
Add more specific type for non-callable json_schema_extra by @alexmojaki in #7803
Raise an error when deleting frozen (model) fields by @alexmojaki in #7800
Fix schema sorting bug with default values by @sydney-runkle in #7817
Use generated alias for aliases that are not specified otherwise by @alexmojaki in #7802
Support strict specification for UUID types by @sydney-runkle in #7865
JSON schema: fix extra parameter handling by @me-and in #7810
Fix: support pydantic.Field(kw_only=True) with inherited dataclasses by @PrettyWood in #7827
Support validate_call decorator for methods in classes with __slots__ by @sydney-runkle in #7883
Fix pydantic dataclass problem with dataclasses.field default by @hramezani in #7898
Fix schema generation for generics with union type bounds by @sydney-runkle in #7899
Fix version for importlib_metadata on python 3.7 by @sydney-runkle in #7904
Support | operator (Union) in PydanticRecursiveRef by @alexmojaki in #7892
Fix display_as_type for TypeAliasType in python 3.12 by @dmontagu in #7929
Add support for NotRequired generics in TypedDict by @sydney-runkle in #7932
Make generic TypeAliasType specifications produce different schema definitions by @alexdrydew in #7893
Added fix for signature of inherited dataclass by @howsunjow in #7925
Make the model name generation more robust in JSON schema by @joakimnordling in #7881
Fix plurals in validation error messages (in tests) by @Iipin in #7972
PrivateAttr is passed from Annotated default position by @tabassco in #8004
Don't decode bytes (which may not be UTF8) when displaying SecretBytes by @alexmojaki in #8012
Use classmethod instead of classmethod[Any, Any, Any] by @Mr-Pepe in #7979
Clearer error on invalid Plugin by @samuelcolvin in #8023
Correct pydantic dataclasses import by @samuelcolvin in #8027
Fix misbehavior for models referencing redefined type aliases by @dmontagu in #8050
Fix Optional field with validate_default only performing one field validation by @sydney-runkle in pydantic/pydantic-core#1002
Fix definition-ref bug with Dict keys by @sydney-runkle in pydantic/pydantic-core#1014
Fix bug allowing validation of bool types with coerce_numbers_to_str=True by @sydney-runkle in pydantic/pydantic-core#1017
Don't accept NaN in float and decimal constraints by @davidhewitt in pydantic/pydantic-core#1037
Add lax_str and lax_int support for enum values not inherited from str/int by @michaelhly in pydantic/pydantic-core#1015
Support subclasses in lists in Union of List types by @sydney-runkle in pydantic/pydantic-core#1039
Allow validation against max_digits and decimals to pass if normalized or non-normalized input is valid by @sydney-runkle in pydantic/pydantic-core#1049
Fix: proper pluralization in ValidationError messages by @Iipin in pydantic/pydantic-core#1050
Disallow the string '-' as datetime input by @davidhewitt in pydantic/speedate#52 & pydantic/pydantic-core#1060
Fix: NaN and Inf float serialization by @davidhewitt in pydantic/pydantic-core#1062
Restore manylinux-compatible PGO builds by @davidhewitt in pydantic/pydantic-core#1068
New Contributors
pydantic
@schneebuzz made their first contribution in #7699
@edoakes made their first contribution in #7780
@alexmojaki made their first contribution in #7775
@NickG123 made their first contribution in #7751
@gowthamgts made their first contribution in #7830
@jamesbraza made their first contribution in #7848
@laundmo made their first contribution in #7850
@rahmatnazali made their first contribution in #7870
@waterfountain1996 made their first contribution in #7878
@chris-spann made their first contribution in #7863
@me-and made their first contribution in #7810
@utkini made their first contribution in #7768
@bn-l made their first contribution in #7744
@alexdrydew made their first contribution in #7893
@Luca-Blight made their first contribution in #7930
@howsunjow made their first contribution in #7925
@joakimnordling made their first contribution in #7881
@icfly2 made their first contribution in #7976
@Yummy-Yums made their first contribution in #8003
@Iipin made their first contribution in #7972
@tabassco made their first contribution in #8004
@Mr-Pepe made their first contribution in #7979
@0x00cl made their first contribution in #8010
@barraponto made their first contribution in #8032
pydantic-core
@sisp made their first contribution in pydantic/pydantic-core#995
@michaelhly made their first contribution in pydantic/pydantic-core#1015
v2.5.0b1 (2023-11-09)
Pre-release, see the GitHub release for details.
v2.4.2 (2023-09-27)
GitHub release
What's Changed
Fixes
Fix bug with JSON schema for sequence of discriminated union by @dmontagu in #7647
Fix schema references in discriminated unions by @adriangb in #7646
Fix json schema generation for recursive models by @adriangb in #7653
Fix models_json_schema for generic models by @adriangb in #7654
Fix xfailed test for generic model signatures by @adriangb in #7658
New Contributors
@austinorr made their first contribution in #7657
@peterHoburg made their first contribution in #7670
v2.4.1 (2023-09-26)
GitHub release
What's Changed
Packaging
Update pydantic-core to 2.10.1 by @davidhewitt in #7633
Fixes
Serialize unsubstituted type vars as Any by @adriangb in #7606
Remove schema building caches by @adriangb in #7624
Fix an issue where JSON schema extras weren't JSON encoded by @dmontagu in #7625
v2.4.0 (2023-09-22)
GitHub release
What's Changed
Packaging
Update pydantic-core to 2.10.0 by @samuelcolvin in #7542
New Features
Add Base64Url types by @dmontagu in #7286
Implement optional number to str coercion by @lig in #7508
Allow access to field_name and data in all validators if there is data and a field name by @samuelcolvin in #7542
Add BaseModel.model_validate_strings and TypeAdapter.validate_strings by @hramezani in #7552
Add Pydantic plugins experimental implementation by @lig @samuelcolvin and @Kludex in #6820
Changes
Do not override model_post_init in subclass with private attrs by @Viicos in #7302
Make fields with defaults not required in the serialization schema by default by @dmontagu in #7275
Mark Extra as deprecated by @disrupted in #7299
Make EncodedStr a dataclass by @Kludex in #7396
Move annotated_handlers to be public by @samuelcolvin in #7569
Performance
Simplify flattening and inlining of CoreSchema by @adriangb in #7523
Remove unused copies in CoreSchema walking by @adriangb in #7528
Add caches for collecting definitions and invalid schemas from a CoreSchema by @adriangb in #7527
Eagerly resolve discriminated unions and cache cases where we can't by @adriangb in #7529
Replace dict.get and dict.setdefault with more verbose versions in CoreSchema building hot paths by @adriangb in #7536
Cache invalid CoreSchema discovery by @adriangb in #7535
Allow disabling CoreSchema validation for faster startup times by @adriangb in #7565
Fixes
Fix config detection for TypedDict from grandparent classes by @dmontagu in #7272
Fix hash function generation for frozen models with unusual MRO by @dmontagu in #7274
Make strict config overridable in field for Path by @hramezani in #7281
Use ser_json_<timedelta|bytes> on default in GenerateJsonSchema by @Kludex in #7269
Adding a check that alias is validated as an identifier for Python by @andree0 in #7319
Raise an error when computed field overrides field by @sydney-runkle in #7346
Fix applying SkipValidation to referenced schemas by @adriangb in #7381
Enforce behavior of private attributes having double leading underscore by @lig in #7265
Standardize __get_pydantic_core_schema__ signature by @hramezani in #7415
Fix generic dataclass fields mutation bug (when using TypeAdapter) by @sydney-runkle in #7435
Fix TypeError on model_validator in wrap mode by @pmmmwh in #7496
Improve enum error message by @hramezani in #7506
Make repr work for instances that failed initialization when handling ValidationErrors by @dmontagu in #7439
Fixed a regular expression denial of service issue by limiting whitespaces by @prodigysml in #7360
Fix handling of UUID values having UUID.version=None by @lig in #7566
Fix __iter__ returning private cached_property info by @sydney-runkle in #7570
Improvements to version info message by @samuelcolvin in #7594
New Contributors
@15498th made their first contribution in #7238
@GabrielCappelli made their first contribution in #7213
@tobni made their first contribution in #7184
@redruin1 made their first contribution in #7282
@FacerAin made their first contribution in #7288
@acdha made their first contribution in #7297
@andree0 made their first contribution in #7319
@gordonhart made their first contribution in #7375
@pmmmwh made their first contribution in #7496
@disrupted made their first contribution in #7299
@prodigysml made their first contribution in #7360
v2.3.0 (2023-08-23)
GitHub release
🔥 Remove orphaned changes file from repo by @lig in #7168
Add copy button on documentation by @Kludex in #7190
Fix docs on JSON type by @Kludex in #7189
Update mypy 1.5.0 to 1.5.1 in CI by @hramezani in #7191
fix download links badge by @samuelcolvin in #7200
add 2.2.1 to changelog by @samuelcolvin in #7212
Make ModelWrapValidator protocols generic by @dmontagu in #7154
Correct Field(..., exclude: bool) docs by @samuelcolvin in #7214
Make shadowing attributes a warning instead of an error by @adriangb in #7193
Document Base64Str and Base64Bytes by @Kludex in #7192
Fix config.defer_build for serialization first cases by @samuelcolvin in #7024
clean Model docstrings in JSON Schema by @samuelcolvin in #7210
fix #7228 (typo): docs in validators.md to correct validate_default kwarg by @lmmx in #7229
✅ Implement tzinfo.fromutc method for TzInfo in pydantic-core by @lig in #7019
Support __get_validators__ by @hramezani in #7197
v2.2.1 (2023-08-18)
GitHub release
Make xfailing test for root model extra stop xfailing by @dmontagu in #6937
Optimize recursion detection by stopping on the second visit for the same object by @mciucu in #7160
fix link in docs by @tlambert03 in #7166
Replace MiMalloc w/ default allocator by @adriangb in pydantic/pydantic-core#900
Bump pydantic-core to 2.6.1 and prepare 2.2.1 release by @adriangb in #7176
v2.2.0 (2023-08-17)
GitHub release
Split "pipx install" setup command into two commands on the documentation site by @nomadmtb in #6869
Deprecate Field.include by @hramezani in #6852
Fix typo in default factory error msg by @hramezani in #6880
Simplify handling of typing.Annotated in GenerateSchema by @dmontagu in #6887
Re-enable fastapi tests in CI by @dmontagu in #6883
Make it harder to hit collisions with json schema defrefs by @dmontagu in #6566
Cleaner error for invalid input to Path fields by @samuelcolvin in #6903
:memo: support Coordinate Type by @yezz123 in #6906
Fix ForwardRef wrapper for py 3.10.0 (shim until bpo-45166) by @randomir in #6919
Fix misbehavior related to copying of RootModel by @dmontagu in #6918
Fix issue with recursion error caused by ParamSpec by @dmontagu in #6923
Add section about Constrained classes to the Migration Guide by @Kludex in #6924
Use main branch for badge links by @Viicos in #6925
Add test for v1/v2 Annotated discrepancy by @carlbordum in #6926
Make the v1 mypy plugin work with both v1 and v2 by @dmontagu in #6921
Fix issue where generic models couldn't be parametrized with BaseModel by @dmontagu in #6933
Remove xfail for discriminated union with alias by @dmontagu in #6938
add field_serializer to computed_field by @andresliszt in #6965
Use union_schema with Type[Union[...]] by @JeanArhancet in #6952
Fix inherited typeddict attributes / config by @adriangb in #6981
fix dataclass annotated before validator called twice by @davidhewitt in #6998
Update test-fastapi deselected tests by @hramezani in #7014
Fix validator doc format by @hramezani in #7015
Fix typo in docstring of model_json_schema by @AdamVinch-Federated in #7032
remove unused "type ignores" with pyright by @samuelcolvin in #7026
Add benchmark representing FastAPI startup time by @adriangb in #7030
Fix json_encoders for Enum subclasses by @adriangb in #7029
Update docstring of ser_json_bytes regarding base64 encoding by @Viicos in #7052
Allow @validate_call to work on async methods by @adriangb in #7046
Fix: mypy error with Settings and SettingsConfigDict by @JeanArhancet in #7002
Fix some typos (repeated words and it's/its) by @eumiro in #7063
Fix the typo in docstring by @harunyasar in #7062
Docs: Fix broken URL in the pydantic-settings package recommendation by @swetjen in #6995
Handle constraints being applied to schemas that don't accept it by @adriangb in #6951
Replace almost_equal_floats with math.isclose by @eumiro in #7082
bump pydantic-core to 2.5.0 by @davidhewitt in #7077
Add short_version and use it in links by @hramezani in #7115
📝 Add usage link to RootModel by @Kludex in #7113
Revert "Fix default port for mongosrv DSNs (#6827)" by @Kludex in #7116
Clarify validate_default and _Unset handling in usage docs and migration guide by @benbenbang in #6950
Tweak documentation of Field.exclude by @Viicos in #7086
Do not require validate_assignment to use Field.frozen by @Viicos in #7103
tweaks to _core_utils by @samuelcolvin in #7040
Make DefaultDict working with set by @hramezani in #7126
Don't always require typing.Generic as a base for partially parametrized models by @dmontagu in #7119
Fix issue with JSON schema incorrectly using parent class core schema by @dmontagu in #7020
Fix xfailed test related to TypedDict and alias_generator by @dmontagu in #6940
Improve error message for NameEmail by @dmontagu in #6939
Fix generic computed fields by @dmontagu in #6988
Reflect namedtuple default values during validation by @dmontagu in #7144
Update dependencies, fix pydantic-core usage, fix CI issues by @dmontagu in #7150
Add mypy 1.5.0 by @hramezani in #7118
Handle non-json native enum values by @adriangb in #7056
document round_trip in Json type documentation by @jc-louis in #7137
Relax signature checks to better support builtins and C extension functions as validators by @adriangb in #7101
add union_mode='left_to_right' by @davidhewitt in #7151
Include an error message hint for inherited ordering by @yvalencia91 in #7124
Fix one docs link and resolve some warnings for two others by @dmontagu in #7153
Include Field extra keys name in warning by @hramezani in #7136
v2.1.1 (2023-07-25)
GitHub release
Skip FieldInfo merging when unnecessary by @dmontagu in #6862
v2.1.0 (2023-07-25)
GitHub release
Add StringConstraints for use as Annotated metadata by @adriangb in #6605
Try to fix intermittently failing CI by @adriangb in #6683
Remove redundant example of optional vs default. by @ehiggs-deliverect in #6676
Docs update by @samuelcolvin in #6692
Remove the Validate always section in validator docs by @adriangb in #6679
Fix recursion error in json schema generation by @adriangb in #6720
Fix incorrect subclass check for secretstr by @AlexVndnblcke in #6730
update pdm / pdm lockfile to 2.8.0 by @davidhewitt in #6714
unpin pdm on more CI jobs by @davidhewitt in #6755
improve source locations for auxiliary packages in docs by @davidhewitt in #6749
Assume builtins don't accept an info argument by @adriangb in #6754
Fix bug where calling help(BaseModelSubclass) raises errors by @hramezani in #6758
Fix mypy plugin handling of @model_validator(mode="after") by @ljodal in #6753
update pydantic-core to 2.3.1 by @davidhewitt in #6756
Mypy plugin for settings by @hramezani in #6760
Use contentSchema keyword for JSON schema by @dmontagu in #6715
fast-path checking finite decimals by @davidhewitt in #6769
Docs update by @samuelcolvin in #6771
Improve json schema doc by @hramezani in #6772
Update validator docs by @adriangb in #6695
Fix typehint for wrap validator by @dmontagu in #6788
🐛 Fix validation warning for unions of Literal and other type by @lig in #6628
Update documentation for generics support in V2 by @tpdorsey in #6685
add pydantic-core build info to version_info() by @samuelcolvin in #6785
Fix pydantic dataclasses that use slots with default values by @dmontagu in #6796
Fix inheritance of hash function for frozen models by @dmontagu in #6789
✨ Add SkipJsonSchema annotation by @Kludex in #6653
Error if an invalid field name is used with Field by @dmontagu in #6797
Add GenericModel to MOVED_IN_V2 by @adriangb in #6776
Remove unused code from docs/usage/types/custom.md by @hramezani in #6803
Fix float -> Decimal coercion precision loss by @adriangb in #6810
remove email validation from the north star benchmark by @davidhewitt in #6816
Fix link to mypy by @progsmile in #6824
Improve initialization hooks example by @hramezani in #6822
Fix default port for mongosrv DSNs by @dmontagu in #6827
Improve API documentation, in particular more links between usage and API docs by @samuelcolvin in #6780
update pydantic-core to 2.4.0 by @davidhewitt in #6831
Fix annotated_types.MaxLen validator for custom sequence types by @ImogenBits in #6809
Update V1 by @hramezani in #6833
Make it so callable JSON schema extra works by @dmontagu in #6798
Fix serialization issue with InstanceOf by @dmontagu in #6829
Add back support for json_encoders by @adriangb in #6811
Update field annotations when building the schema by @dmontagu in #6838
Use WeakValueDictionary to fix generic memory leak by @dmontagu in #6681
Add config.defer_build to optionally make model building lazy by @samuelcolvin in #6823
delegate UUID serialization to pydantic-core by @davidhewitt in #6850
Update json_encoders docs by @adriangb in #6848
Fix error message for staticmethod/classmethod order with validate_call by @dmontagu in #6686
Improve documentation for Config by @samuelcolvin in #6847
Update serialization doc to mention Field.exclude takes priority over call-time include/exclude by @hramezani in #6851
Allow customizing core schema generation by making GenerateSchema public by @adriangb in #6737
v2.0.3 (2023-07-05)
GitHub release
Mention PyObject (v1) moving to ImportString (v2) in migration doc by @slafs in #6456
Fix release-tweet CI by @Kludex in #6461
Revise the section on required / optional / nullable fields. by @ybressler in #6468
Warn if a type hint is not in fact a type by @adriangb in #6479
Replace TransformSchema with GetPydanticSchema by @dmontagu in #6484
Fix the un-hashability of various annotation types, for use in caching generic containers by @dmontagu in #6480
PYD-164: Rework custom types docs by @adriangb in #6490
Fix ci by @adriangb in #6507
Fix forward ref in generic by @adriangb in #6511
Fix generation of serialization JSON schemas for core_schema.ChainSchema by @dmontagu in #6515
Document the change in Field.alias behavior in Pydantic V2 by @hramezani in #6508
Give better error message attempting to compute the json schema of a model with undefined fields by @dmontagu in #6519
Document alias_priority by @tpdorsey in #6520
Add redirect for types documentation by @tpdorsey in #6513
Allow updating docs without release by @samuelcolvin in #6551
Ensure docs tests always run in the right folder by @dmontagu in #6487
Defer evaluation of return type hints for serializer functions by @dmontagu in #6516
Disable E501 from Ruff and rely on just Black by @adriangb in #6552
Update JSON Schema documentation for V2 by @tpdorsey in #6492
Add documentation of cyclic reference handling by @dmontagu in #6493
Remove the need for change files by @samuelcolvin in #6556
add "north star" benchmark by @davidhewitt in #6547
Update Dataclasses docs by @tpdorsey in #6470
♻️ Use different error message on v1 redirects by @Kludex in #6595
⬆ Upgrade pydantic-core to v2.2.0 by @lig in #6589
Fix serialization for IPvAny by @dmontagu in #6572
Improve CI by using PDM instead of pip to install typing-extensions by @adriangb in #6602
Add enum error type docs by @lig in #6603
🐛 Fix max_length for unicode strings by @lig in #6559
Add documentation for accessing features via pydantic.v1 by @tpdorsey in #6604
Include extra when iterating over a model by @adriangb in #6562
Fix typing of model_validator by @adriangb in #6514
Touch up Decimal validator by @adriangb in #6327
Fix various docstrings using fixed pytest-examples by @dmontagu in #6607
Handle function validators in a discriminated union by @dmontagu in #6570
Review json_schema.md by @tpdorsey in #6608
Make validate_call work on basemodel methods by @dmontagu in #6569
add test for big int json serde by @davidhewitt in #6614
Fix pydantic dataclass problem with dataclasses.field default_factory by @hramezani in #6616
Fixed mypy type inference for TypeAdapter by @zakstucke in #6617
Make it work to use None as a generic parameter by @dmontagu in #6609
Make it work to use $ref as an alias by @dmontagu in #6568
add note to migration guide about changes to AnyUrl etc by @davidhewitt in #6618
🐛 Support defining json_schema_extra on RootModel using Field by @lig in #6622
Update pre-commit to prevent commits to main branch on accident by @dmontagu in #6636
Fix PDM CI for python 3.7 on MacOS/windows by @dmontagu in #6627
Produce more accurate signatures for pydantic dataclasses by @dmontagu in #6633
Updates to Url types for Pydantic V2 by @tpdorsey in #6638
Fix list markdown in transform docstring by @StefanBRas in #6649
simplify slots_dataclass construction to appease mypy by @davidhewitt in #6639
Update TypedDict schema generation docstring by @adriangb in #6651
Detect and lint-error for prints by @dmontagu in #6655
Add xfailing test for pydantic-core PR 766 by @dmontagu in #6641
Ignore unrecognized fields from dataclasses metadata by @dmontagu in #6634
Make non-existent class getattr a mypy error by @dmontagu in #6658
Update pydantic-core to 2.3.0 by @hramezani in #6648
Use OrderedDict from typing_extensions by @dmontagu in #6664
Fix typehint for JSON schema extra callable by @dmontagu in #6659
v2.0.2 (2023-07-05)
GitHub release
Fix bug where round-trip pickling/unpickling a RootModel would change the value of __dict__, #6457 by @dmontagu
Allow single-item discriminated unions, #6405 by @dmontagu
Fix issue with union parsing of enums, #6440 by @dmontagu
Docs: Fixed constr documentation, renamed old regex to new pattern, #6452 by @miili
Change GenerateJsonSchema.generate_definitions signature, #6436 by @dmontagu
See the full changelog here
v2.0.1 (2023-07-04)
GitHub release
First patch release of Pydantic V2
Extra fields added via setattr (i.e. m.some_extra_field = 'extra_value')
are added to .model_extra if model_config extra='allowed'. Fixed #6333, #6365 by @aaraney
Automatically unpack JSON schema '$ref' for custom types, #6343 by @adriangb
Fix tagged unions multiple processing in submodels, #6340 by @suharnikov
See the full changelog here
v2.0 (2023-06-30)
GitHub release
Pydantic V2 is here! :tada:
See this post for more details.
v2.0b3 (2023-06-16)
Third beta pre-release of Pydantic V2
See the full changelog here
v2.0b2 (2023-06-03)
Add from_attributes runtime flag to TypeAdapter.validate_python and BaseModel.model_validate.
See the full changelog here
v2.0b1 (2023-06-01)
First beta pre-release of Pydantic V2
See the full changelog here
v2.0a4 (2023-05-05)
Fourth pre-release of Pydantic V2
See the full changelog here
v2.0a3 (2023-04-20)
Third pre-release of Pydantic V2
See the full changelog here
v2.0a2 (2023-04-12)
Second pre-release of Pydantic V2
See the full changelog here
v2.0a1 (2023-04-03)
First pre-release of Pydantic V2!
See this post for more details.
... see here for earlier changes.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.