Pydantic Versions Save

Data validation using Python type hints

v2.7.1

1 week ago

What's Changed

Packaging

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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.7.0...v2.7.1/

v2.7.0

3 weeks ago

The code released in v2.7.0 is practically identical to that of v2.7.0b1.

What's Changed

Packaging

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
  • 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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.4...v2.7.0/

v2.7.0b1

1 month ago

What's Changed

Packaging

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

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
  • 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

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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.4...v2.7.0b1/

v1.10.15

1 month ago

What's Changed

Full Changelog: https://github.com/pydantic/pydantic/compare/v1.10.14...v1.10.15

v2.6.4

1 month ago

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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.3...v2.6.4/

v2.6.3

2 months ago

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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.2...v2.6.3/

v2.6.2

2 months ago

What's Changed

Packaging

  • Upgrade to pydantic-core 2.16.3 by @sydney-runkle in #8879

Fixes

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.1...v2.6.2/

v2.6.1

2 months ago

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

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.0...v2.6.1/

v2.6.0

3 months ago

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

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

v2.6.0b1

3 months ago

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

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

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

pydantic-core

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.5.3...v2.6.0b1