v2.6.0b1 2024-01-19
Pre-release
Pre-release
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 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
- @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
Full Changelog: v2.5.3...v2.6.0b1