Releases: pydantic/pydantic
Releases Β· pydantic/pydantic
v2.7.1 (2024-04-23)
What's Changed
Packaging
- Bump
pydantic-core
tov2.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 withmodel_construct
forAliasChoices
andAliasPath
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 tofunction-after
withuse_enum_values
by @sydney-runkle in #9279 - Address case where
model_construct
on a class which definesmodel_post_init
fails withAttributeError
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
int
s with leading unary plus by @cknv in pydantic/pydantic-core#1272 - Fix interaction between
extra != 'ignore'
andfrom_attributes=True
by @davidhewitt in pydantic/pydantic-core#1276 - Handle error from
Enum
'smissing
function asValidationError
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: v2.7.0...v2.7.1/
v2.7.0 (2024-04-11)
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
tov2.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 supporttyping.Annotated
as input by @wannieman98 in #8947 - Add
ClickhouseDsn
support by @solidguy7 in #9062 - Add support for
re.Pattern[str]
topattern
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 withextra
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
andtype
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>
fromjiter
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
Sequence
s 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 andno_strict_optional = True
by @dmontagu in #8666 - Fix
ByteSize
errortype
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 topytest.warns()
starting to work insidepytest.raises()
by @mgorny in #8678 - Use
is_valid_field
from 1.x formypy
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 bytyping.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
enum
s 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](https://github.com/pydantic/pydantic...
v2.7.0b1 (2024-04-03)
What's Changed
Packaging
- Reorganize
pyproject.toml
sections by @Viicos in #8899 - Bump
pydantic-core
tov2.18.0
by @sydney-runkle in #9153 - 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 supporttyping.Annotated
as input by @wannieman98 in #8947 - Add
ClickhouseDsn
support by @solidguy7 in #9062 - Add support for
re.Pattern[str]
topattern
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 withextra
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
andtype
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>
fromjiter
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
Sequence
s 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 andno_strict_optional = True
by @dmontagu in #8666 - Fix
ByteSize
errortype
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 topytest.warns()
starting to work insidepytest.raises()
by @mgorny in #8678 - Use
is_valid_field
from 1.x formypy
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 bytyping.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
enum
s 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
...
v1.10.15
What's Changed
- Add pydantic.v1 namespace to Pydantic v1 by @exs-dmiketa in #9042
- Relax version of typing-extensions for V1 by @SonOfLilit in #8819
- patch fix for mypy by @sydney-runkle in #8765
Full Changelog: v1.10.14...v1.10.15
v2.6.4 (2024-03-12)
What's Changed
Fixes
- Fix usage of
AliasGenerator
withcomputed_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: v2.6.3...v2.6.4/
v2.6.3 2024-02-27
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: v2.6.2...v2.6.3/
v2.6.2 2024-02-23
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
Full Changelog: v2.6.1...v2.6.2/
v2.6.1 2024-02-05
What's Changed
Packaging
- Upgrade to
pydantic-core
2.16.2 by @sydney-runkle in #8717
Fixes
- Fix bug with
mypy
plugin andno_strict_optional = True
by @dmontagu in #8666 - Fix
ByteSize
errortype
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 serializerexclude_none
behavior by @sydney-runkle in pydantic/pydantic-core#1187
Full Changelog: v2.6.0...v2.6.1/
v2.6.0 2024-01-29
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
fieldsinit
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
inBaseModel
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 addsself/cls
argument to validation errors by @alexmojaki in #8268 - Exclude
BaseModel
docstring from JSON schema description by @sydney-runkle in #8352 - Introducing
classproperty
decorator formodel_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 inLazyIndexMaps
by @samuelcolvin in pydantic/jiter#55 - use hashbrown to speedup python string caching by @davidhewitt in pydantic/jiter#51
- Replace
Peak
with more efficientPeek
by @davidhewitt in pydantic/jiter#48
Fixes
- Move
getattr
warning in deprecatedBaseConfig
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 untypedClassVar
by @vincent-hachin-wmx in #8138 - Only compare pydantic fields in
BaseModel.__eq__
instead of whole__dict__
by @QuentinSoubeyranAqemia in #7825 - Update
strict
docstring inmodel_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 aTypeAdapter
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
indataclass
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__
withmodel_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 forRootModel
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 ofcomputed_field
s 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 contribut...
v2.6.0b1 2024-01-19
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
fieldsinit
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
inBaseModel
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 addsself/cls
argument to validation errors by @alexmojaki in #8268 - Exclude
BaseModel
docstring from JSON schema description by @sydney-runkle in #8352 - Introducing
classproperty
decorator formodel_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 inLazyIndexMaps
by @samuelcolvin in pydantic/jiter#55 - use hashbrown to speedup python string caching by @davidhewitt in pydantic/jiter#51
- Replace
Peak
with more efficientPeek
by @davidhewitt in pydantic/jiter#48
Fixes
- Move
getattr
warning in deprecatedBaseConfig
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 untypedClassVar
by @vincent-hachin-wmx in #8138 - Only compare pydantic fields in
BaseModel.__eq__
instead of whole__dict__
by @QuentinSoubeyranAqemia in #7825 - Update
strict
docstring inmodel_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 aTypeAdapter
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
indataclass
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__
withmodel_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 forRootModel
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 ofcomputed_field
s 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 ...