Releases: pydantic/pydantic
Releases Β· pydantic/pydantic
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 ...
v1.10.14 2024-01-19
What's Changed
- Update install.md by @dmontagu in #7690
- Fix ci to only deploy docs on release by @sydney-runkle in #7740
- Ubuntu fixes for V1 by @sydney-runkle in #8540 and #8587
- Fix
cached_property
handling in dataclasses when copied by @rdbisme in #8407
New Contributors
Full Changelog: v1.10.13...v1.10.14
v2.5.3 2023-12-22
v2.5.3 (2023-12-22)
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
Full Changelog: v2.5.2...v2.5.3/
v2.5.2 2023-11-22
v2.5.2 (2023-11-22)
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 asdict
key by @sydney-runkle in pydantic/pydantic-core#1075 - Fix bug re
custom_init
on members ofUnion
by @sydney-runkle in pydantic/pydantic-core#1076 - Fix
JsonValue
bool
serialization by @sydney-runkle in #8190 - Fix handling of unhashable inputs with
Literal
inUnion
s by @sydney-runkle in pydantic/pydantic-core#1089
v2.5.1 2023-11-15
v2.5.1 (2023-11-15)
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
Full Changelog: v2.5.0...v2.5.1/
v2.5.0 2023-11-13
v2.5.0 (2023-11-13)
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 increate_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
andTag
by @dmontagu in #7983 - Make union case tags affect union error messages by @dmontagu in #8001
- Add
examples
andjson_schema_extra
to@computed_field
by @alexmojaki in #8013 - Add
JsonValue
type by @dmontagu in #7998 - Allow
str
as argument toDiscriminator
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
beforeBaseModel
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 ofRootModel
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 withTypeAdapter
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
onEnum
type fields by @sydney-runkle in #7761 - Wrap
weakref.ref
instead of subclassing to fixcloudpickle
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 forUUID
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
forTypeAliasType
in python 3.12 by @dmontagu in #7929 - Add support for
NotRequired
generics inTypedDict
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 fromAnnotated
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 ofclassmethod[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 withvalidate_default
only performing one field validation by @sydney-runkle in pydantic/pydantic-core#1002 - Fix
definition-ref
bug withDict
keys by @sydney-runkle in pydantic/pydantic-core#1014 - Fix bug allowing validation of
bool
types withcoerce_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
andlax_int
support for enum values not inherited from str/int by @michaelhly in pydantic/pydantic-core#1015 - Support subclasses in lists in
Union
ofList
types by @sydney-runkle in pydantic/pydantic-core#1039 - Allow validation against
max_digits
anddecimals
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
'-'
asdatetime
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