Changelog
v2.12.0a1 (2025-07-26)¶
This is the first alpha release of the upcoming 2.12 release, which adds initial support for Python 3.14.
What's Changed¶
New Features¶
- Add 
__pydantic_on_complete__()hook that is called once model is fully ready to be used by @DouweM in #11762 - Add initial support for Python 3.14 by @Viicos in #11991
 - Add regex patterns to JSON schema for 
Decimaltype by @Dima-Bulavenko in #11987 - Add support for 
docattribute on dataclass fields by @Viicos in #12077 - Add experimental 
MISSINGsentinel by @Viicos in #11883 
Changes¶
- Allow config and bases to be specified together in 
create_model()by @Viicos in #11714 - Move some field logic out of the 
GenerateSchemaclass by @Viicos in #11733 - Always make use of 
inspect.getsourcelines()for docstring extraction on Python 3.13 and greater by @Viicos in #11829 - Only support the latest Mypy version by @Viicos in #11832
 - Do not implicitly convert after model validators to class methods by @Viicos in #11957
 - Refactor 
FieldInfocreation implementation by @Viicos in #11898 - Make 
Secretcovariant by @bluenote10 in #12008 - Emit warning when field-specific metadata is used in invalid contexts by @Viicos in #12028
 
Fixes¶
- Properly fetch plain serializer function when serializing default value in JSON Schema by @Viicos in #11721
 - Remove generics cache workaround by @Viicos in #11755
 - Remove coercion of decimal constraints by @Viicos in #11772
 - Fix crash when expanding root type in the mypy plugin by @Viicos in #11735
 - Only mark model as complete once all fields are complete by @DouweM in #11759
 - Do not provide 
field_namein validator core schemas by @DouweM in #11761 - Fix issue with recursive generic models by @Viicos in #11775
 - Fix qualified name comparison of private attributes during namespace inspection by @karta9821 in #11803
 - Make sure Pydantic dataclasses with slots and 
validate_assignmentcan be unpickled by @Viicos in #11769 - Traverse 
function-beforeschemas during schema gathering by @Viicos in #11801 - Fix check for stdlib dataclasses by @Viicos in #11822
 - Check if 
FieldInfois complete after applying type variable map by @Viicos in #11855 - Do not delete mock validator/serializer in 
model_rebuild()by @Viicos in #11890 - Rebuild dataclass fields before schema generation by @Viicos in #11949
 - Always store the original field assignment on 
FieldInfoby @Viicos in #11946 - Do not use deprecated methods as default field values by @Viicos in #11914
 - Allow callable discriminator to be applied on PEP 695 type aliases by @Viicos in #11941
 - Suppress core schema generation warning when using 
SkipValidationby @ygsh0816 in #12002 - Do not emit typechecking error for invalid 
Field()default withvalidate_defaultset toTrueby @Viicos in #11988 - Refactor logic to support Pydantic's 
Field()function in dataclasses by @Viicos in #12051 
Packaging¶
- Update project metadata to use PEP 639 by @Viicos in #11694
 - Bump 
mkdocs-llmstxtto v0.2.0 by @Viicos in #11725 - Bump 
pydantic-coreto v2.35.1 by @Viicos in #11963 - Bump dawidd6/action-download-artifact from 10 to 11 by @dependabot[bot] in #12033
 - Bump astral-sh/setup-uv from 5 to 6 by @dependabot[bot] in #11826
 - Update mypy to 1.17.0 by @Viicos in #12076
 
New Contributors¶
- @parth-paradkar made their first contribution in #11695
 - @dqkqd made their first contribution in #11739
 - @fhightower made their first contribution in #11722
 - @gbaian10 made their first contribution in #11766
 - @DouweM made their first contribution in #11759
 - @bowenliang123 made their first contribution in #11719
 - @rawwar made their first contribution in #11799
 - @karta9821 made their first contribution in #11803
 - @jinnovation made their first contribution in #11834
 - @zmievsa made their first contribution in #11861
 - @Otto-AA made their first contribution in #11860
 - @ygsh0816 made their first contribution in #12002
 - @lukland made their first contribution in #12015
 - @Dima-Bulavenko made their first contribution in #11987
 - @GSemikozov made their first contribution in #12050
 - @hannah-heywa made their first contribution in #12082
 
v2.11.7 (2025-06-14)¶
What's Changed¶
Fixes¶
v2.11.6 (2025-06-13)¶
What's Changed¶
Fixes¶
- Rebuild dataclass fields before schema generation by @Viicos in #11949
 - Always store the original field assignment on 
FieldInfoby @Viicos in #11946 
v2.11.5 (2025-05-22)¶
What's Changed¶
Fixes¶
- Check if 
FieldInfois complete after applying type variable map by @Viicos in #11855 - Do not delete mock validator/serializer in 
model_rebuild()by @Viicos in #11890 - Do not duplicate metadata on model rebuild by @Viicos in #11902
 
v2.11.4 (2025-04-29)¶
What's Changed¶
Packaging¶
Changes¶
- Allow config and bases to be specified together in 
create_model()by @Viicos in #11714. This change was backported as it was previously possible (although not meant to be supported) to providemodel_configas a field, which would make it possible to provide both configuration and bases. 
Fixes¶
- Remove generics cache workaround by @Viicos in #11755
 - Remove coercion of decimal constraints by @Viicos in #11772
 - Fix crash when expanding root type in the mypy plugin by @Viicos in #11735
 - Fix issue with recursive generic models by @Viicos in #11775
 - Traverse 
function-beforeschemas during schema gathering by @Viicos in #11801 
v2.11.3 (2025-04-08)¶
What's Changed¶
Packaging¶
Fixes¶
v2.11.2 (2025-04-03)¶
What's Changed¶
Fixes¶
- Bump 
pydantic-coreto v2.33.1 by @Viicos in #11678 - Make sure 
__pydantic_private__exists before setting private attributes by @Viicos in #11666 - Do not override 
FieldInfo._completewhen using field from parent class by @Viicos in #11668 - Provide the available definitions when applying discriminated unions by @Viicos in #11670
 - Do not expand root type in the mypy plugin for variables by @Viicos in #11676
 - Mention the attribute name in model fields deprecation message by @Viicos in #11674
 - Properly validate parameterized mappings by @Viicos in #11658
 
v2.11.1 (2025-03-28)¶
What's Changed¶
Fixes¶
- Do not override 
'definitions-ref'schemas containing serialization schemas or metadata by @Viicos in #11644 
v2.11.0 (2025-03-27)¶
What's Changed¶
Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). See the blog post for more details.
Packaging¶
New Features¶
- Add 
encoded_string()method to the URL types by @YassinNouh21 in #11580 - Add support for 
defer_buildwith@validate_calldecorator by @Viicos in #11584 - Allow 
@with_configdecorator to be used with keyword arguments by @Viicos in #11608 - Simplify customization of default value inclusion in JSON Schema generation by @Viicos in #11634
 - Add 
generate_arguments_schema()function by @Viicos in #11572 
Fixes¶
- Allow generic typed dictionaries to be used for unpacked variadic keyword parameters by @Viicos in #11571
 - Fix runtime error when computing model string representation involving cached properties and self-referenced models by @Viicos in #11579
 - Preserve other steps when using the ellipsis in the pipeline API by @Viicos in #11626
 - Fix deferred discriminator application logic by @Viicos in #11591
 
New Contributors¶
v2.11.0b2 (2025-03-17)¶
What's Changed¶
Packaging¶
New Features¶
Fixes¶
New Contributors¶
v2.11.0b1 (2025-03-06)¶
What's Changed¶
Packaging¶
- Add a 
check_pydantic_core_version()function by @Viicos in https://github.com/pydantic/pydantic/pull/11324 - Remove 
greenletdevelopment dependency by @Viicos in https://github.com/pydantic/pydantic/pull/11351 - Use the 
typing-inspectionlibrary by @Viicos in https://github.com/pydantic/pydantic/pull/11479 - Bump 
pydantic-coretov2.31.1by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11526 
New Features¶
- Support unsubstituted type variables with both a default and a bound or constraints by @FyZzyss in https://github.com/pydantic/pydantic/pull/10789
 - Add a 
default_factory_takes_validated_dataproperty toFieldInfoby @Viicos in https://github.com/pydantic/pydantic/pull/11034 - Raise a better error when a generic alias is used inside 
type[]by @Viicos in https://github.com/pydantic/pydantic/pull/11088 - Properly support PEP 695 generics syntax by @Viicos in https://github.com/pydantic/pydantic/pull/11189
 - Properly support type variable defaults by @Viicos in https://github.com/pydantic/pydantic/pull/11332
 - Add support for validating v6, v7, v8 UUIDs by @astei in https://github.com/pydantic/pydantic/pull/11436
 - Improve alias configuration APIs by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11468
 
Changes¶
- Rework 
create_modelfield definitions format by @Viicos in https://github.com/pydantic/pydantic/pull/11032 - Raise a deprecation warning when a field is annotated as final with a default value by @Viicos in https://github.com/pydantic/pydantic/pull/11168
 - Deprecate accessing 
model_fieldsandmodel_computed_fieldson instances by @Viicos in https://github.com/pydantic/pydantic/pull/11169 - Breaking Change: Move core schema generation logic for path types inside the 
GenerateSchemaclass by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10846 - Remove Python 3.8 Support by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11258
 - Optimize calls to 
get_type_refby @Viicos in https://github.com/pydantic/pydantic/pull/10863 - Disable 
pydantic-corecore schema validation by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11271 
Performance¶
- Only evaluate 
FieldInfoannotations if required during schema building by @Viicos in https://github.com/pydantic/pydantic/pull/10769 - Improve 
__setattr__performance of Pydantic models by caching setter functions by @MarkusSintonen in https://github.com/pydantic/pydantic/pull/10868 - Improve annotation application performance by @Viicos in https://github.com/pydantic/pydantic/pull/11186
 - Improve performance of 
_typing_extramodule by @Viicos in https://github.com/pydantic/pydantic/pull/11255 - Refactor and optimize schema cleaning logic by @Viicos in https://github.com/pydantic/pydantic/pull/11244
 - Create a single dictionary when creating a 
CoreConfiginstance by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11384 - Bump 
pydantic-coreand thus useSchemaValidatorandSchemaSerializercaching by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11402 - Reuse cached core schemas for parametrized generic Pydantic models by @MarkusSintonen in https://github.com/pydantic/pydantic/pull/11434
 
Fixes¶
- Improve 
TypeAdapterinstance repr by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10872 - Use the correct frame when instantiating a parametrized 
TypeAdapterby @Viicos in https://github.com/pydantic/pydantic/pull/10893 - Infer final fields with a default value as class variables in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11121
 - Recursively unpack 
Literalvalues if using PEP 695 type aliases by @Viicos in https://github.com/pydantic/pydantic/pull/11114 - Override 
__subclasscheck__onModelMetaclassto avoid memory leak and performance issues by @Viicos in https://github.com/pydantic/pydantic/pull/11116 - Remove unused 
_extract_get_pydantic_json_schema()parameter by @Viicos in https://github.com/pydantic/pydantic/pull/11155 - Improve discriminated union error message for invalid union variants by @Viicos in https://github.com/pydantic/pydantic/pull/11161
 - Unpack PEP 695 type aliases if using the 
Annotatedform by @Viicos in https://github.com/pydantic/pydantic/pull/11109 - Add missing stacklevel in 
deprecated_instance_propertywarning by @Viicos in https://github.com/pydantic/pydantic/pull/11200 - Copy 
WithJsonSchemaschema to avoid sharing mutated data by @thejcannon in https://github.com/pydantic/pydantic/pull/11014 - Do not cache parametrized models when in the process of parametrizing another model by @Viicos in https://github.com/pydantic/pydantic/pull/10704
 - Add discriminated union related metadata entries to the 
CoreMetadatadefinition by @Viicos in https://github.com/pydantic/pydantic/pull/11216 - Consolidate schema definitions logic in the 
_Definitionsclass by @Viicos in https://github.com/pydantic/pydantic/pull/11208 - Support initializing root model fields with values of the 
roottype in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11212 - Fix various issues with dataclasses and 
use_attribute_docstringsby @Viicos in https://github.com/pydantic/pydantic/pull/11246 - Only compute normalized decimal places if necessary in 
decimal_places_validatorby @misrasaurabh1 in https://github.com/pydantic/pydantic/pull/11281 - Add support for 
validation_aliasin the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11295 - Fix JSON Schema reference collection with 
"examples"keys by @Viicos in https://github.com/pydantic/pydantic/pull/11305 - Do not transform model serializer functions as class methods in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11298
 - Simplify 
GenerateJsonSchema.literal_schema()implementation by @misrasaurabh1 in https://github.com/pydantic/pydantic/pull/11321 - Add additional allowed schemes for 
ClickHouseDsnby @Maze21127 in https://github.com/pydantic/pydantic/pull/11319 - Coerce decimal constraints to 
Decimalinstances by @Viicos in https://github.com/pydantic/pydantic/pull/11350 - Use the correct JSON Schema mode when handling function schemas by @Viicos in https://github.com/pydantic/pydantic/pull/11367
 - Improve exception message when encountering recursion errors during type evaluation by @Viicos in https://github.com/pydantic/pydantic/pull/11356
 - Always include 
additionalProperties: Truefor arbitrary dictionary schemas by @austinyu in https://github.com/pydantic/pydantic/pull/11392 - Expose 
fallbackparameter in serialization methods by @Viicos in https://github.com/pydantic/pydantic/pull/11398 - Fix path serialization behavior by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11416
 - Do not reuse validators and serializers during model rebuild by @Viicos in https://github.com/pydantic/pydantic/pull/11429
 - Collect model fields when rebuilding a model by @Viicos in https://github.com/pydantic/pydantic/pull/11388
 - Allow cached properties to be altered on frozen models by @Viicos in https://github.com/pydantic/pydantic/pull/11432
 - Fix tuple serialization for 
Sequencetypes by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11435 - Fix: do not check for 
__get_validators__on classes where__get_pydantic_core_schema__is also defined by @tlambert03 in https://github.com/pydantic/pydantic/pull/11444 - Allow callable instances to be used as serializers by @Viicos in https://github.com/pydantic/pydantic/pull/11451
 - Improve error thrown when overriding field with a property by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11459
 - Fix JSON Schema generation with referenceable core schemas holding JSON metadata by @Viicos in https://github.com/pydantic/pydantic/pull/11475
 - Support strict specification on union member types by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11481
 - Implicitly set 
validate_by_nametoTruewhenvalidate_by_aliasisFalseby @sydney-runkle in https://github.com/pydantic/pydantic/pull/11503 - Change type of 
Anywhen synthesizingBaseSettings.__init__signature in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11497 - Support type variable defaults referencing other type variables by @Viicos in https://github.com/pydantic/pydantic/pull/11520
 - Fix 
ValueErroron year zero by @davidhewitt in https://github.com/pydantic/pydantic-core/pull/1583 dataclassInitVarshouldn't be required on serialization by @sydney-runkle in https://github.com/pydantic/pydantic-core/pull/1602
New Contributors¶
- @FyZzyss made their first contribution in https://github.com/pydantic/pydantic/pull/10789
 - @tamird made their first contribution in https://github.com/pydantic/pydantic/pull/10948
 - @felixxm made their first contribution in https://github.com/pydantic/pydantic/pull/11077
 - @alexprabhat99 made their first contribution in https://github.com/pydantic/pydantic/pull/11082
 - @Kharianne made their first contribution in https://github.com/pydantic/pydantic/pull/11111
 - @mdaffad made their first contribution in https://github.com/pydantic/pydantic/pull/11177
 - @thejcannon made their first contribution in https://github.com/pydantic/pydantic/pull/11014
 - @thomasfrimannkoren made their first contribution in https://github.com/pydantic/pydantic/pull/11251
 - @usernameMAI made their first contribution in https://github.com/pydantic/pydantic/pull/11275
 - @ananiavito made their first contribution in https://github.com/pydantic/pydantic/pull/11302
 - @pawamoy made their first contribution in https://github.com/pydantic/pydantic/pull/11311
 - @Maze21127 made their first contribution in https://github.com/pydantic/pydantic/pull/11319
 - @kauabh made their first contribution in https://github.com/pydantic/pydantic/pull/11369
 - @jaceklaskowski made their first contribution in https://github.com/pydantic/pydantic/pull/11353
 - @tmpbeing made their first contribution in https://github.com/pydantic/pydantic/pull/11375
 - @petyosi made their first contribution in https://github.com/pydantic/pydantic/pull/11405
 - @austinyu made their first contribution in https://github.com/pydantic/pydantic/pull/11392
 - @mikeedjones made their first contribution in https://github.com/pydantic/pydantic/pull/11402
 - @astei made their first contribution in https://github.com/pydantic/pydantic/pull/11436
 - @dsayling made their first contribution in https://github.com/pydantic/pydantic/pull/11522
 - @sobolevn made their first contribution in https://github.com/pydantic/pydantic-core/pull/1645
 
v2.11.0a2 (2025-02-10)¶
What's Changed¶
Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). This is another early alpha release, meant to collect early feedback from users having issues with core schema builds.
Packaging¶
- Bump 
rufffrom 0.9.2 to 0.9.5 by @Viicos in #11407 - Bump 
pydantic-coreto v2.29.0 by @mikeedjones in #11402 - Use locally-built rust with symbols & pgo by @davidhewitt in #11403
 
Performance¶
- Create a single dictionary when creating a 
CoreConfiginstance by @sydney-runkle in #11384 
Fixes¶
- Use the correct JSON Schema mode when handling function schemas by @Viicos in #11367
 - Fix JSON Schema reference logic with 
exampleskeys by @Viicos in #11366 - Improve exception message when encountering recursion errors during type evaluation by @Viicos in #11356
 - Always include 
additionalProperties: Truefor arbitrary dictionary schemas by @austinyu in #11392 - Expose 
fallbackparameter in serialization methods by @Viicos in #11398 - Fix path serialization behavior by @sydney-runkle in #11416
 
New Contributors¶
- @kauabh made their first contribution in #11369
 - @jaceklaskowski made their first contribution in #11353
 - @tmpbeing made their first contribution in #11375
 - @petyosi made their first contribution in #11405
 - @austinyu made their first contribution in #11392
 - @mikeedjones made their first contribution in #11402
 
v2.11.0a1 (2025-01-30)¶
What's Changed¶
Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). This is an early alpha release, meant to collect early feedback from users having issues with core schema builds.
Packaging¶
- Bump dawidd6/action-download-artifact from 6 to 7 by @dependabot in #11018
 - Re-enable memray related tests on Python 3.12+ by @Viicos in #11191
 - Bump astral-sh/setup-uv to 5 by @dependabot in #11205
 - Bump 
ruffto v0.9.0 by @sydney-runkle in #11254 - Regular 
uv.lockdeps update by @sydney-runkle in #11333 - Add a 
check_pydantic_core_version()function by @Viicos in #11324 - Remove 
greenletdevelopment dependency by @Viicos in #11351 - Bump 
pydantic-coreto v2.28.0 by @Viicos in #11364 
New Features¶
- Support unsubstituted type variables with both a default and a bound or constraints by @FyZzyss in #10789
 - Add a 
default_factory_takes_validated_dataproperty toFieldInfoby @Viicos in #11034 - Raise a better error when a generic alias is used inside 
type[]by @Viicos in #11088 - Properly support PEP 695 generics syntax by @Viicos in #11189
 - Properly support type variable defaults by @Viicos in #11332
 
Changes¶
- Rework 
create_modelfield definitions format by @Viicos in #11032 - Raise a deprecation warning when a field is annotated as final with a default value by @Viicos in #11168
 - Deprecate accessing 
model_fieldsandmodel_computed_fieldson instances by @Viicos in #11169 - Move core schema generation logic for path types inside the 
GenerateSchemaclass by @sydney-runkle in #10846 - Move 
dequeschema gen toGenerateSchemaclass by @sydney-runkle in #11239 - Move 
Mappingschema gen toGenerateSchemato complete removal ofprepare_annotations_for_known_typeworkaround by @sydney-runkle in #11247 - Remove Python 3.8 Support by @sydney-runkle in #11258
 - Disable 
pydantic-corecore schema validation by @sydney-runkle in #11271 
Performance¶
- Only evaluate 
FieldInfoannotations if required during schema building by @Viicos in #10769 - Optimize calls to 
get_type_refby @Viicos in #10863 - Improve 
__setattr__performance of Pydantic models by caching setter functions by @MarkusSintonen in #10868 - Improve annotation application performance by @Viicos in #11186
 - Improve performance of 
_typing_extramodule by @Viicos in #11255 - Refactor and optimize schema cleaning logic by @Viicos and @MarkusSintonen in #11244
 
Fixes¶
- Add validation tests for 
_internal/_validators.pyby @tkasuz in #10763 - Improve 
TypeAdapterinstance repr by @sydney-runkle in #10872 - Revert "ci: use locally built pydantic-core with debug symbols by @sydney-runkle in #10942
 - Re-enable all FastAPI tests by @tamird in #10948
 - Fix typo in HISTORY.md. by @felixxm in #11077
 - Infer final fields with a default value as class variables in the mypy plugin by @Viicos in #11121
 - Recursively unpack 
Literalvalues if using PEP 695 type aliases by @Viicos in #11114 - Override 
__subclasscheck__onModelMetaclassto avoid memory leak and performance issues by @Viicos in #11116 - Remove unused 
_extract_get_pydantic_json_schema()parameter by @Viicos in #11155 - Add FastAPI and SQLModel to third-party tests by @sydney-runkle in #11044
 - Fix conditional expressions syntax for third-party tests by @Viicos in #11162
 - Move FastAPI tests to third-party workflow by @Viicos in #11164
 - Improve discriminated union error message for invalid union variants by @Viicos in #11161
 - Unpack PEP 695 type aliases if using the 
Annotatedform by @Viicos in #11109 - Include 
openapi-python-clientcheck in issue creation for third-party failures, usemainbranch by @sydney-runkle in #11182 - Add pandera third-party tests by @Viicos in #11193
 - Add ODMantic third-party tests by @sydney-runkle in #11197
 - Add missing stacklevel in 
deprecated_instance_propertywarning by @Viicos in #11200 - Copy 
WithJsonSchemaschema to avoid sharing mutated data by @thejcannon in #11014 - Do not cache parametrized models when in the process of parametrizing another model by @Viicos in #10704
 - Re-enable Beanie third-party tests by @Viicos in #11214
 - Add discriminated union related metadata entries to the 
CoreMetadatadefinition by @Viicos in #11216 - Consolidate schema definitions logic in the 
_Definitionsclass by @Viicos in #11208 - Support initializing root model fields with values of the 
roottype in the mypy plugin by @Viicos in #11212 - Fix various issues with dataclasses and 
use_attribute_docstringsby @Viicos in #11246 - Only compute normalized decimal places if necessary in 
decimal_places_validatorby @misrasaurabh1 in #11281 - Fix two misplaced sentences in validation errors documentation by @ananiavito in #11302
 - Fix mkdocstrings inventory example in documentation by @pawamoy in #11311
 - Add support for 
validation_aliasin the mypy plugin by @Viicos in #11295 - Do not transform model serializer functions as class methods in the mypy plugin by @Viicos in #11298
 - Simplify 
GenerateJsonSchema.literal_schema()implementation by @misrasaurabh1 in #11321 - Add additional allowed schemes for 
ClickHouseDsnby @Maze21127 in #11319 - Coerce decimal constraints to 
Decimalinstances by @Viicos in #11350 - Fix 
ValueErroron year zero by @davidhewitt in pydantic-core#1583 
New Contributors¶
- @FyZzyss made their first contribution in #10789
 - @tamird made their first contribution in #10948
 - @felixxm made their first contribution in #11077
 - @alexprabhat99 made their first contribution in #11082
 - @Kharianne made their first contribution in #11111
 - @mdaffad made their first contribution in #11177
 - @thejcannon made their first contribution in #11014
 - @thomasfrimannkoren made their first contribution in #11251
 - @usernameMAI made their first contribution in #11275
 - @ananiavito made their first contribution in #11302
 - @pawamoy made their first contribution in #11311
 - @Maze21127 made their first contribution in #11319
 
v2.10.6 (2025-01-23)¶
What's Changed¶
Fixes¶
- Fix JSON Schema reference collection with 
'examples'keys by @Viicos in #11325 - Fix url python serialization by @sydney-runkle in #11331
 
v2.10.5 (2025-01-08)¶
What's Changed¶
Fixes¶
- Remove custom MRO implementation of Pydantic models by @Viicos in #11184
 - Fix URL serialization for unions by @sydney-runkle in #11233
 
v2.10.4 (2024-12-18)¶
What's Changed¶
Packaging¶
- Bump 
pydantic-coreto v2.27.2 by @davidhewitt in #11138 
Fixes¶
- Fix for comparison of 
AnyUrlobjects by @alexprabhat99 in #11082 - Properly fetch PEP 695 type params for functions, do not fetch annotations from signature by @Viicos in #11093
 - Include JSON Schema input core schema in function schemas by @Viicos in #11085
 - Add 
lento_BaseUrlto avoid TypeError by @Kharianne in #11111 - Make sure the type reference is removed from the seen references by @Viicos in #11143
 
New Contributors¶
- @FyZzyss made their first contribution in #10789
 - @tamird made their first contribution in #10948
 - @felixxm made their first contribution in #11077
 - @alexprabhat99 made their first contribution in #11082
 - @Kharianne made their first contribution in #11111
 
v2.10.3 (2024-12-03)¶
What's Changed¶
Fixes¶
- Set fields when 
defer_buildis set on Pydantic dataclasses by @Viicos in #10984 - Do not resolve the JSON Schema reference for 
dictcore schema keys by @Viicos in #10989 - Use the globals of the function when evaluating the return type for 
PlainSerializerandWrapSerializerfunctions by @Viicos in #11008 - Fix host required enforcement for urls to be compatible with v2.9 behavior by @sydney-runkle in #11027
 - Add a 
default_factory_takes_validated_dataproperty toFieldInfoby @Viicos in #11034 - Fix url json schema in 
serializationmode by @sydney-runkle in #11035 
v2.10.2 (2024-11-25)¶
What's Changed¶
Fixes¶
- Only evaluate FieldInfo annotations if required during schema building by @Viicos in #10769
 - Do not evaluate annotations for private fields by @Viicos in #10962
 - Support serialization as any for 
Secrettypes andUrltypes by @sydney-runkle in #10947 - Fix type hint of 
Field.defaultto be compatible with Python 3.8 and 3.9 by @Viicos in #10972 - Add hashing support for URL types by @sydney-runkle in #10975
 - Hide 
BaseModel.__replace__definition from type checkers by @Viicos in #10979 
v2.10.1 (2024-11-21)¶
What's Changed¶
Packaging¶
- Bump 
pydantic-coreversion tov2.27.1by @sydney-runkle in #10938 
Fixes¶
- Use the correct frame when instantiating a parametrized 
TypeAdapterby @Viicos in #10893 - Relax check for validated data in 
default_factoryutils by @sydney-runkle in #10909 - Fix type checking issue with 
model_fieldsandmodel_computed_fieldsby @sydney-runkle in #10911 - Use the parent configuration during schema generation for stdlib 
dataclasses by @sydney-runkle in #10928 - Use the 
globalsof the function when evaluating the return type of serializers andcomputed_fields by @Viicos in #10929 - Fix URL constraint application by @sydney-runkle in #10922
 - Fix URL equality with different validation methods by @sydney-runkle in #10934
 - Fix JSON schema title when specified as 
''by @sydney-runkle in #10936 - Fix 
pythonmode serialization forcomplexinference by @sydney-runkle in pydantic-core#1549 
New Contributors¶
v2.10.0 (2024-11-20)¶
The code released in v2.10.0 is practically identical to that of v2.10.0b2.
See the v2.10 release blog post for the highlights!
What's Changed¶
Packaging¶
- Bump 
pydantic-coretov2.27.0by @sydney-runkle in #10825 - Replaced pdm with uv by @frfahim in #10727
 
New Features¶
- Support 
fractions.Fractionby @sydney-runkle in #10318 - Support 
Hashablefor json validation by @sydney-runkle in #10324 - Add a 
SocketPathtype forlinuxsystems by @theunkn0wn1 in #10378 - Allow arbitrary refs in JSON schema 
examplesby @sydney-runkle in #10417 - Support 
defer_buildfor Pydantic dataclasses by @Viicos in #10313 - Adding v1 / v2 incompatibility warning for nested v1 model by @sydney-runkle in #10431
 - Add support for unpacked 
TypedDictto type hint variadic keyword arguments with@validate_callby @Viicos in #10416 - Support compiled patterns in 
protected_namespacesby @sydney-runkle in #10522 - Add support for 
propertyNamesin JSON schema by @FlorianSW in #10478 - Adding 
__replace__protocol for Python 3.13+ support by @sydney-runkle in #10596 - Expose public 
sortmethod for JSON schema generation by @sydney-runkle in #10595 - Add runtime validation of 
@validate_callcallable argument by @kc0506 in #10627 - Add 
experimental_allow_partialsupport by @samuelcolvin in #10748 - Support default factories taking validated data as an argument by @Viicos in #10678
 - Allow subclassing 
ValidationErrorandPydanticCustomErrorby @Youssefares in pydantic/pydantic-core#1413 - Add 
trailing-stringssupport toexperimental_allow_partialby @sydney-runkle in #10825 - Add 
rebuild()method forTypeAdapterand simplifydefer_buildpatterns by @sydney-runkle in #10537 - Improve 
TypeAdapterinstance repr by @sydney-runkle in #10872 
Changes¶
- Don't allow customization of 
SchemaGeneratoruntil interface is more stable by @sydney-runkle in #10303 - Cleanly 
defer_buildonTypeAdapters, removing experimental flag by @sydney-runkle in #10329 - Fix 
mroof generic subclass by @kc0506 in #10100 - Strip whitespaces on JSON Schema title generation by @sydney-runkle in #10404
 - Use 
b64decodeandb64encodeforBase64Bytestype by @sydney-runkle in #10486 - Relax protected namespace config default by @sydney-runkle in #10441
 - Revalidate parametrized generics if instance's origin is subclass of OG class by @sydney-runkle in #10666
 - Warn if configuration is specified on the 
@dataclassdecorator and with the__pydantic_config__attribute by @sydney-runkle in #10406 - Recommend against using 
Ellipsis(...) withFieldby @Viicos in #10661 - Migrate to subclassing instead of annotated approach for pydantic url types by @sydney-runkle in #10662
 - Change JSON schema generation of 
Literals andEnumsby @Viicos in #10692 - Simplify unions involving 
AnyorNeverwhen replacing type variables by @Viicos in #10338 - Do not require padding when decoding 
base64bytes by @bschoenmaeckers in pydantic/pydantic-core#1448 - Support dates all the way to 1BC by @changhc in pydantic/speedate#77
 
Performance¶
- Schema cleaning: skip unnecessary copies during schema walking by @Viicos in #10286
 - Refactor namespace logic for annotations evaluation by @Viicos in #10530
 - Improve email regexp on edge cases by @AlekseyLobanov in #10601
 CoreMetadatarefactor with an emphasis on documentation, schema build time performance, and reducing complexity by @sydney-runkle in #10675
Fixes¶
- Remove guarding check on 
computed_fieldwithfield_serializerby @nix010 in #10390 - Fix 
Predicateissue inv2.9.0by @sydney-runkle in #10321 - Fixing 
annotated-typesbound by @sydney-runkle in #10327 - Turn 
tzdatainstall requirement into optionaltimezonedependency by @jakob-keller in #10331 - Use correct types namespace when building 
namedtuplecore schemas by @Viicos in #10337 - Fix evaluation of stringified annotations during namespace inspection by @Viicos in #10347
 - Fix 
IncExtype alias definition by @Viicos in #10339 - Do not error when trying to evaluate annotations of private attributes by @Viicos in #10358
 - Fix nested type statement by @kc0506 in #10369
 - Improve typing of 
ModelMetaclass.mroby @Viicos in #10372 - Fix class access of deprecated 
computed_fields by @Viicos in #10391 - Make sure 
inspect.iscoroutinefunctionworks on coroutines decorated with@validate_callby @MovisLi in #10374 - Fix 
NameErrorwhen usingvalidate_callwith PEP 695 on a class by @kc0506 in #10380 - Fix 
ZoneInfowith various invalid types by @sydney-runkle in #10408 - Fix 
PydanticUserErroron emptymodel_configwith annotations by @cdwilson in #10412 - Fix variance issue in 
_IncExtype alias, only allowTrueby @Viicos in #10414 - Fix serialization schema generation when using 
PlainValidatorby @Viicos in #10427 - Fix schema generation error when serialization schema holds references by @Viicos in #10444
 - Inline references if possible when generating schema for 
json_schema_input_typeby @Viicos in #10439 - Fix recursive arguments in 
Representationby @Viicos in #10480 - Fix representation for builtin function types by @kschwab in #10479
 - Add python validators for decimal constraints (
max_digitsanddecimal_places) by @sydney-runkle in #10506 - Only fetch 
__pydantic_core_schema__from the current class during schema generation by @Viicos in #10518 - Fix 
stacklevelon deprecation warnings forBaseModelby @sydney-runkle in #10520 - Fix warning 
stacklevelinBaseModel.__init__by @Viicos in #10526 - Improve error handling for in-evaluable refs for discriminator application by @sydney-runkle in #10440
 - Change the signature of 
ConfigWrapper.core_configto take the title directly by @Viicos in #10562 - Do not use the previous config from the stack for dataclasses without config by @Viicos in #10576
 - Fix serialization for IP types with 
mode='python'by @sydney-runkle in #10594 - Support constraint application for 
Base64Etctypes by @sydney-runkle in #10584 - Fix 
validate_callignoringFieldinAnnotatedby @kc0506 in #10610 - Raise an error when 
Selfis invalid by @kc0506 in #10609 - Using 
core_schema.InvalidSchemainstead of metadata injection + checks by @sydney-runkle in #10523 - Tweak type alias logic by @kc0506 in #10643
 - Support usage of 
typewithtyping.Selfand type aliases by @kc0506 in #10621 - Use overloads for 
FieldandPrivateAttrfunctions by @Viicos in #10651 - Clean up the 
mypyplugin implementation by @Viicos in #10669 - Properly check for 
typing_extensionsvariant ofTypeAliasTypeby @Daraan in #10713 - Allow any mapping in 
BaseModel.model_copy()by @Viicos in #10751 - Fix 
isinstancebehavior for urls by @sydney-runkle in #10766 - Ensure 
cached_propertycan be set on Pydantic models by @Viicos in #10774 - Fix equality checks for primitives in literals by @sydney-runkle in pydantic/pydantic-core#1459
 - Properly enforce 
host_requiredfor URLs by @Viicos in pydantic/pydantic-core#1488 - Fix when 
coerce_numbers_to_strenabled and string has invalid Unicode character by @andrey-berenda in pydantic/pydantic-core#1515 - Fix serializing 
complexvalues inEnums by @changhc in pydantic/pydantic-core#1524 - Refactor 
_typing_extramodule by @Viicos in #10725 - Support intuitive equality for urls by @sydney-runkle in #10798
 - Add 
bytearraytoTypeAdapter.validate_jsonsignature by @samuelcolvin in #10802 - Ensure class access of method descriptors is performed when used as a default with 
Fieldby @Viicos in #10816 - Fix circular import with 
validate_callby @sydney-runkle in #10807 - Fix error when using type aliases referencing other type aliases by @Viicos in #10809
 - Fix 
IncExtype alias to be compatible with mypy by @Viicos in #10813 - Make 
__signature__a lazy property, do not deepcopy defaults by @Viicos in #10818 - Make 
__signature__lazy for dataclasses, too by @sydney-runkle in #10832 - Subclass all single host url classes from 
AnyUrlto preserve behavior from v2.9 by @sydney-runkle in #10856 
New Contributors¶
- @jakob-keller made their first contribution in #10331
 - @MovisLi made their first contribution in #10374
 - @joaopalmeiro made their first contribution in #10405
 - @theunkn0wn1 made their first contribution in #10378
 - @cdwilson made their first contribution in #10412
 - @dlax made their first contribution in #10421
 - @kschwab made their first contribution in #10479
 - @santibreo made their first contribution in #10453
 - @FlorianSW made their first contribution in #10478
 - @tkasuz made their first contribution in #10555
 - @AlekseyLobanov made their first contribution in #10601
 - @NiclasvanEyk made their first contribution in #10667
 - @mschoettle made their first contribution in #10677
 - @Daraan made their first contribution in #10713
 - @k4nar made their first contribution in #10736
 - @UriyaHarpeness made their first contribution in #10740
 - @frfahim made their first contribution in #10727
 
v2.10.0b2 (2024-11-13)¶
Pre-release, see the GitHub release for details.
v2.10.0b1 (2024-11-06)¶
Pre-release, see the GitHub release for details.
v2.9.2 (2024-09-17)¶
What's Changed¶
Fixes¶
- Do not error when trying to evaluate annotations of private attributes by @Viicos in #10358
 - Adding notes on designing sound 
Callablediscriminators by @sydney-runkle in #10400 - Fix serialization schema generation when using 
PlainValidatorby @Viicos in #10427 - Fix 
Unionserialization warnings by @sydney-runkle in pydantic/pydantic-core#1449 - Fix variance issue in 
_IncExtype alias, only allowTrueby @Viicos in #10414 - Fix 
ZoneInfovalidation with various invalid types by @sydney-runkle in #10408 
v2.9.1 (2024-09-09)¶
What's Changed¶
Fixes¶
- Fix Predicate issue in v2.9.0 by @sydney-runkle in #10321
 - Fixing 
annotated-typesbound to>=0.6.0by @sydney-runkle in #10327 - Turn 
tzdatainstall requirement into optionaltimezonedependency by @jakob-keller in #10331 - Fix 
IncExctype alias definition by @Viicos in #10339 - Use correct types namespace when building namedtuple core schemas by @Viicos in #10337
 - Fix evaluation of stringified annotations during namespace inspection by @Viicos in #10347
 - Fix tagged union serialization with alias generators by @sydney-runkle in pydantic/pydantic-core#1442
 
v2.9.0 (2024-09-05)¶
The code released in v2.9.0 is practically identical to that of v2.9.0b2.
What's Changed¶
Packaging¶
- Bump 
rufftov0.5.0andpyrighttov1.1.369by @sydney-runkle in #9801 - Bump 
pydantic-extra-typestov2.9.0by @sydney-runkle in #9832 - Support compatibility with 
pdm v2.18.1by @Viicos in #10138 - Bump 
v1version stub tov1.10.18by @sydney-runkle in #10214 - Bump 
pydantic-coretov2.23.2by @sydney-runkle in #10311 
New Features¶
- Add support for 
ZoneInfoby @Youssefares in #9896 - Add 
Config.val_json_bytesby @josh-newman in #9770 - Add DSN for Snowflake by @aditkumar72 in #10128
 - Support 
complexnumber by @changhc in #9654 - Add support for 
annotated_types.Notby @aditkumar72 in #10210 - Allow 
WithJsonSchemato inject$refs w/httporhttpslinks by @dAIsySHEng1 in #9863 - Allow validators to customize validation JSON schema by @Viicos in #10094
 - Support parametrized 
PathLiketypes by @nix010 in #9764 - Add tagged union serializer that attempts to use 
strorcallablediscriminators to select the correct serializer by @sydney-runkle in in pydantic/pydantic-core#1397 
Changes¶
- Breaking Change: Merge 
dicttypejson_schema_extraby @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 
patternfor incompatible types by @sydney-runkle in #10158 - Remove 
'allOf'JSON schema workarounds by @dpeachey in #10029 - Remove 
typed_dict_clsdata fromCoreMetadataby @sydney-runkle in #10180 - Deprecate passing a dict to the 
Examplesclass by @Viicos in #10181 - Remove 
initial_metadatafrom internal metadata construct by @sydney-runkle in #10194 - Use 
re.Pattern.searchinstead ofre.Pattern.matchfor consistency withrustbehavior by @tinez in pydantic/pydantic-core#1368 - Show value of wrongly typed data in 
pydantic-coreserialization warning by @BoxyUwU in pydantic/pydantic-core#1377 - Breaking Change: in 
pydantic-core, changemetadatatype hint in core schemas fromAny->Dict[str, Any] | Noneby @sydney-runkle in pydantic/pydantic-core#1411 - Raise helpful warning when 
selfisn'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 
BaseModelby @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% inpydantic/_internal/_validators.pyby @misrasaurabh1 in #9839 - ⚡️ Speed up 
ModelPrivateAttr.__set_name__()by 18% inpydantic/fields.pyby @misrasaurabh1 in #9841 - ⚡️ Speed up 
dataclass()by 7% inpydantic/dataclasses.pyby @misrasaurabh1 in #9843 - ⚡️ Speed up function 
_field_name_for_signatureby 37% inpydantic/_internal/_signature.pyby @misrasaurabh1 in #9951 - ⚡️ Speed up method 
GenerateSchema._unpack_refs_defsby 26% inpydantic/_internal/_generate_schema.pyby @misrasaurabh1 in #9949 - ⚡️ Speed up function 
apply_each_item_validatorsby 100% inpydantic/_internal/_generate_schema.pyby @misrasaurabh1 in #9950 - ⚡️ Speed up method 
ConfigWrapper.core_configby 28% inpydantic/_internal/_config.pyby @misrasaurabh1 in #9953 
Fixes¶
- Respect 
use_enum_valuesonLiteraltypes by @kwint in #9787 - Prevent type error for exotic 
BaseModel/RootModelinheritance by @dmontagu in #9913 - Fix typing issue with field_validator-decorated methods by @dmontagu in #9914
 - Replace 
strtype annotation withAnyin validator factories in documentation on validators by @maximilianfellhuber in #9885 - Fix 
ComputedFieldInfo.wrapped_propertypointer when a property setter is assigned by @tlambert03 in #9892 - Fix recursive typing of 
main.IncEnxby @tlambert03 in #9924 - Allow usage of 
type[Annotated[...]]by @Viicos in #9932 mypyplugin: handle frozen fields on a per-field basis by @dmontagu in #9935- Fix typo in 
invalid-annotated-typeerror code by @sydney-runkle in #9948 - Simplify schema generation for 
uuid,url, andiptypes by @sydney-runkle in #9975 - Move 
dateschemas to_generate_schema.pyby @sydney-runkle in #9976 - Move 
decimal.Decimalvalidation to_generate_schema.pyby @sydney-runkle in #9977 - Simplify IP address schema in 
_std_types_schema.pyby @sydney-runkle in #9959 - Fix type annotations for some potentially generic 
GenerateSchema.match_typeoptions by @sydney-runkle in #9961 - Add class name to "has conflict" warnings by @msabramo in #9964
 - Fix 
dataclassignoringdefault_factorypassed in Annotated by @kc0506 in #9971 - Fix 
Sequenceignoringdiscriminatorby @kc0506 in #9980 - Fix typing for 
IPvAnyAddressandIPvAnyInterfaceby @haoyun in #9990 - Fix false positives on v1 models in 
mypyplugin forfrom_ormcheck requiring from_attributes=True config by @radekwlsk in #9938 - Apply 
strict=Trueto__init__inmypyplugin by @kc0506 in #9998 - Refactor application of 
dequeannotations 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 
frozenenforcement fordataclassesby @sydney-runkle in #10066 - Remove logic to handle unused 
__get_pydantic_core_schema__signature by @Viicos in #10075 - Use 
is_annotatedconsistently by @Viicos in #10095 - Fix 
PydanticDeprecatedSince26typo by @kc0506 in #10101 - Improve 
pyrighttests, refactor model decorators signatures by @Viicos in #10092 - Fix 
ipserialization logic by @sydney-runkle in #10112 - Warn when frozen defined twice for 
dataclassesby @mochi22 in #10082 - Do not compute JSON Schema default when plain serializers are used with 
when_usedset to'json-unless-none'and the default value isNoneby @Viicos in #10121 - Fix 
ImportStringspecial cases by @sydney-runkle in #10137 - Blacklist default globals to support exotic user code with 
__prefixed annotations by @sydney-runkle in #10136 - Handle 
nullableschemas withserializationschema available during JSON Schema generation by @Viicos in #10132 - Reorganize 
BaseModelannotations 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 
PrivateAttrwithAnnotatedby @Viicos in #10157 - Fix JSON Schema 
numbertype 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 
MappingandMutableMappingannotations 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_serializerwith computed field when using*by @nix010 in pydantic/pydantic-core#1349 - Try each option in 
Unionserializer before inference by @sydney-runkle in pydantic/pydantic-core#1398 - Fix 
floatserialization behavior instrictmode by @sydney-runkle in pydantic/pydantic-core#1400 - Introduce 
exactnessinto 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 
ModelMetaclassby @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 
BigIntserialization forintsubclasses by @kxx317 in pydantic/pydantic-core#1417 - Support signature for wrap validators without 
infoby @sydney-runkle in #10277 - Ensure 
__pydantic_complete__is set when rebuildingdataclassesby @Viicos in #10291 - Respect 
schema_generatorconfig value inTypeAdapterby @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)¶
What's Changed¶
Fixes¶
v2.8.1 (2024-07-03)¶
What's Changed¶
Packaging¶
- Bump 
rufftov0.5.0andpyrighttov1.1.369by @sydney-runkle in #9801 - Bump 
pydantic-coretov2.20.1,pydantic-extra-typestov2.9.0by @sydney-runkle in #9832 
Fixes¶
- Fix breaking change in 
to_snakefrom 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)¶
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.367and add type checking tests for pipeline API by @adriangb in #9674 - Update 
pydantic.v1stub tov1.10.17by @sydney-runkle in #9707 - General package updates to prep for 
v2.8.0b1by @sydney-runkle in #9741 - Bump 
pydantic-coretov2.20.0by @sydney-runkle in #9745 - Add support for Python 3.13 by @sydney-runkle in #9743
 - Update 
pdmversion used forpdm.lockto v2.16.1 by @sydney-runkle in #9761 - Update to 
ruffv0.4.8by @Viicos in #9585 
New Features¶
- Experimental: support 
defer_buildforTypeAdapterby @MarkusSintonen in #8939 - Implement 
deprecatedfield 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_fastfeature 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 
Annotatedfield by @nix010 in #9170 - Support serialization of some serializable defaults in JSON schema by @sydney-runkle in #9624
 - Relax type specification for 
__validators__values increate_modelby @sydney-runkle in #9697 - Breaking Change: Improve 
smartunion matching logic by @sydney-runkle in pydantic/pydantic-core#1322 You can read more about oursmartunion matching logic here. In some cases, if the old behavior is desired, you can switch toleft-to-rightmode and change the order of yourUnionmembers. 
Performance¶
Internal Improvements¶
- ⚡️ Speed up 
_display_error_loc()by 25% inpydantic/v1/error_wrappers.pyby @misrasaurabh1 in #9653 - ⚡️ Speed up 
_get_all_json_refs()by 34% inpydantic/json_schema.pyby @misrasaurabh1 in #9650 - ⚡️ Speed up 
is_pydantic_dataclass()by 41% inpydantic/dataclasses.pyby @misrasaurabh1 in #9652 - ⚡️ Speed up 
to_snake()by 27% inpydantic/alias_generators.pyby @misrasaurabh1 in #9747 - ⚡️ Speed up 
unwrap_wrapped_function()by 93% inpydantic/_internal/_decorators.pyby @misrasaurabh1 in #9727 
Fixes¶
- Replace 
__spec__.parentwith__package__by @hramezani in #9331 - Fix Outputted Model JSON Schema for 
Sequencetype by @anesmemisevic in #9303 - Fix typing of 
_frame_depthby @Viicos in #9353 - Make 
ImportStringjson schema compatible by @amitschang in #9344 - Hide private attributes (
PrivateAttr) from__init__signature in type checkers by @idan22moral in #9293 - Make detection of 
TypeVardefaults robust to the CPythonPEP-696implementation by @AlexWaygood in #9426 - Fix usage of 
PlainSerializerwith builtin types by @Viicos in #9450 - Add more robust custom validation examples by @ChrisPappalardo in #9468
 - Fix ignored 
strictspecification forStringConstraint(strict=False)by @vbmendes in #9476 - Breaking Change: Use PEP 570 syntax by @Viicos in #9479
 - Use 
Selfwhere possible by @Viicos in #9479 - Do not alter 
RootModel.model_constructsignature in themypyplugin by @Viicos in #9480 - Fixed type hint of 
validation_contextby @OhioDschungel6 in #9508 - Support context being passed to TypeAdapter's 
dump_json/dump_pythonby @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 
TypeAdapterby @Viicos in #9570 - Add fallback default value for private fields in 
__setstate__of BaseModel by @anhpham1509 in #9584 - Support 
PEP 746by @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 
TypeVarfields by @dmontagu in #9606 - Fix multiple annotation / constraint application logic by @sydney-runkle in #9623
 - Respect 
regexflags in validation and json schema by @sydney-runkle in #9591 - Fix type hint on 
IpvAnyAddressby @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_calltype 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.Patternobject 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)¶
What's Changed¶
Packaging¶
- Bump 
pydantic.v1tov1.10.16reference by @sydney-runkle in #9639 
Fixes¶
v2.7.3 (2024-06-03)¶
What's Changed¶
Packaging¶
- Bump 
pydantic-coretov2.18.4by @sydney-runkle in #9550 
Fixes¶
- Fix u style unicode strings in python @samuelcolvin in pydantic/jiter#110
 
v2.7.2 (2024-05-28)¶
What's Changed¶
Packaging¶
- Bump 
pydantic-coretov2.18.3by @sydney-runkle in #9515 
Fixes¶
- Replace 
__spec__.parentwith__package__by @hramezani in #9331 - Fix validation of 
ints with leading unary minus by @RajatRajdeep in pydantic/pydantic-core#1291 - Fix 
strsubclass validation for enums by @sydney-runkle in pydantic/pydantic-core#1273 - Support 
BigInts inLiterals andEnums by @samuelcolvin in pydantic/pydantic-core#1297 - Fix: uuid - allow 
strsubclass as input by @davidhewitt in pydantic/pydantic-core#1296 
v2.7.1 (2024-04-23)¶
What's Changed¶
Packaging¶
- Bump 
pydantic-coretov2.18.2by @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_aliasbehavior withmodel_constructforAliasChoicesandAliasPathby @sydney-runkle in #9223 - Revert 
typing.Literaland import it outside the TYPE_CHECKING block by @frost-nzcr4 in #9232 - Fix 
Secretserialization schema, applicable for unions by @sydney-runkle in #9240 - Fix 
strictapplication tofunction-afterwithuse_enum_valuesby @sydney-runkle in #9279 - Address case where 
model_constructon a class which definesmodel_post_initfails withAttributeErrorby @babygrimes in #9168 - Fix 
model_json_schemawith config types by @NeevCohen in #9287 - Support multiple zeros as an 
intby @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'andfrom_attributes=Trueby @davidhewitt in pydantic/pydantic-core#1276 - Handle error from 
Enum'smissingfunction asValidationErrorby @sydney-runkle in pydantic/pydantic-core#1274 - Fix memory leak with 
Iterablevalidation 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)¶
The code released in v2.7.0 is practically identical to that of v2.7.0b1.
What's Changed¶
Packaging¶
- Reorganize 
pyproject.tomlsections by @Viicos in #8899 - Bump 
pydantic-coretov2.18.1by @sydney-runkle in #9211 - Adopt 
jiterv0.2.0by @samuelcolvin in pydantic/pydantic-core#1250 
New Features¶
- Extract attribute docstrings from 
FieldInfo.descriptionby @Viicos in #6563 - Add a 
with_configdecorator to comply with typing spec by @Viicos in #8611 - Allow an optional separator splitting the value and unit of the result of 
ByteSize.human_readableby @jks15satoshi in #8706 - Add generic 
Secretbase type by @conradogarciaberrotaran in #8519 - Make use of 
Sphinxinventories for cross references in docs by @Viicos in #8682 - Add environment variable to disable plugins by @geospackle in #8767
 - Add support for 
deprecatedfields by @Viicos in #8237 - Allow 
field_serializer('*')by @ornariece in #9001 - Handle a case when 
model_configis defined as a model property by @alexeyt101 in #9004 - Update 
create_model()to supporttyping.Annotatedas input by @wannieman98 in #8947 - Add 
ClickhouseDsnsupport by @solidguy7 in #9062 - Add support for 
re.Pattern[str]topatternfield by @jag-k in #9053 - Support for 
serialize_as_anyruntime setting by @sydney-runkle in #8830 - Add support for 
typing.Selfby @Youssefares in #9023 - Ability to pass 
contextto 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 
warningsparameter for serialization utilities to allow raising a warning by @Lance-Drane in #9166 
Changes¶
- Correct docs, logic for 
model_constructbehavior withextraby @sydney-runkle in #8807 - Improve error message for improper 
RootModelsubclasses by @sydney-runkle in #8857 - Breaking Change: Use 
PEP570syntax by @Viicos in #8940 - Add 
enumandtypeto the JSON schema for single item literals by @dmontagu in #8944 - Deprecate 
update_json_schemainternal 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¶
enumvalidator improvements by @samuelcolvin in #9045- Move 
enumvalidation 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>fromjiterby @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 
NameEmailby @Holi0317 in #8650 - Fix type-safety of attribute access in 
BaseModelby @bluenote10 in #8651 - Fix bug with 
mypyplugin andno_strict_optional = Trueby @dmontagu in #8666 - Fix 
ByteSizeerrortypechange 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.0due topytest.warns()starting to work insidepytest.raises()by @mgorny in #8678 - Use 
is_valid_fieldfrom 1.x formypyplugin by @DanielNoord in #8738 - Better-support 
mypystrict 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 
BaseModeltype annotations to be resolvable bytyping.get_type_hintsby @devmonkey22 in #7680 - Fix: allow empty string aliases with 
AliasGeneratorby @sydney-runkle in #8810 - Fix test along with 
date->datetimetimezone assumption fix by @sydney-runkle in #8823 - Fix deprecation warning with usage of 
ast.Strby @Viicos in #8837 - Add missing 
deprecateddecorators by @Viicos in #8877 - Fix serialization of 
NameEmailif 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_schemausage 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 
mypyplugin by @dmontagu in #9008 - Fix 
PlainSerializerusage 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 
ClassVarforward ref inherited from parent class by @alexmojaki in #9097 - fix sequence like validator with strict 
Trueby @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 
dequewhen passed toSequence[blah blah blah]by @sydney-runkle in #9128 - Init private attributes from super-types in 
model_post_initby @Viicos in #9134 - fix 
model_constructwithvalidation_aliasby @ornariece in #9144 - Ensure json-schema generator handles 
Literalnulltypes 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)¶
What's Changed¶
Fixes¶
- Fix usage of 
AliasGeneratorwithcomputed_fielddecorator 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)¶
What's Changed¶
Packaging¶
- Update 
pydantic-settingsversion 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)¶
What's Changed¶
Packaging¶
- Upgrade to 
pydantic-core2.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)¶
What's Changed¶
Packaging¶
- Upgrade to 
pydantic-core2.16.2 by @sydney-runkle in #8717 
Fixes¶
- Fix bug with 
mypyplugin andno_strict_optional = Trueby @dmontagu in #8666 - Fix 
ByteSizeerrortypechange by @sydney-runkle in #8681 - Fix inheriting 
Fieldannotations 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 
PlainValidatorby @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 
Unionby @davidhewitt in pydantic/pydantic-core#1174 - Fix 
computed_fieldJSON serializerexclude_nonebehavior by @sydney-runkle in pydantic/pydantic-core#1187 
v2.6.0 (2024-01-23)¶
The code released in v2.6.0 is practically identical to that of v2.6.0b1.
What's Changed¶
Packaging¶
- Check for 
email-validatorversion >= 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.1by @yezz123 in #8478 - Update to 
pyright==1.1.345by @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 
NatsDsnby @ekeew in #6874 - Add 
ConfigDict.ser_json_inf_nanby @davidhewitt in #8159 - Add 
types.OnErrorOmitby @adriangb in #8222 - Support 
AliasGeneratorusage by @sydney-runkle in #8282 - Add Pydantic People Page to docs by @sydney-runkle in #8345
 - Support 
yyyy-MM-DDdatetime parsing by @sydney-runkle in #8404 - Added bits conversions to the 
ByteSizeclass #8415 by @luca-matei in #8507 - Enable json schema creation with type 
ByteSizeby @geospackle in #8537 - Add 
eval_type_backportto handle union operator and builtin generic subscripting in older Pythons by @alexmojaki in #8209 - Add support for 
dataclassfieldsinitby @dmontagu in #8552 - Implement pickling for 
ValidationErrorby @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 
selfinBaseModelconstructor, so no field name can ever conflict with it by @ariebovenberg in #8072 - Make 
@validate_callreturn a function instead of a custom descriptor - fixes binding issue with inheritance and addsself/clsargument to validation errors by @alexmojaki in #8268 - Exclude 
BaseModeldocstring from JSON schema description by @sydney-runkle in #8352 - Introducing 
classpropertydecorator formodel_computed_fieldsby @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 
intextraction by @samuelcolvin in pydantic/pydantic-core#1155 - Improve performance of recursion guard by @samuelcolvin in pydantic/pydantic-core#1156
 dataclassserialization speedups by @samuelcolvin in pydantic/pydantic-core#1162- Avoid 
HashMapcreation when looking up small JSON objects inLazyIndexMapsby @samuelcolvin in pydantic/jiter#55 - use hashbrown to speedup python string caching by @davidhewitt in pydantic/jiter#51
 - Replace 
Peakwith more efficientPeekby @davidhewitt in pydantic/jiter#48 
Fixes¶
- Move 
getattrwarning in deprecatedBaseConfigby @tlambert03 in #7183 - Only hash 
model_fields, not whole__dict__by @alexmojaki in #7786 - Fix mishandling of unions while freezing types in the 
mypyplugin by @dmontagu in #7411 - Fix 
mypyerror on untypedClassVarby @vincent-hachin-wmx in #8138 - Only compare pydantic fields in 
BaseModel.__eq__instead of whole__dict__by @QuentinSoubeyranAqemia in #7825 - Update 
strictdocstring inmodel_validatemethod. by @LukeTonin in #8223 - Fix overload position of 
computed_fieldby @Viicos in #8227 - Fix custom type type casting used in multiple attributes by @ianhfc in #8066
 - Fix issue not allowing 
validate_calldecorator to be dynamically assigned to a class method by @jusexton in #8249 - Fix issue 
unittest.mockdeprecation warnings by @ibleedicare in #8262 - Added tests for the case 
JsonValuecontains subclassed primitive values by @jusexton in #8286 - Fix 
mypyerror on free before validator (classmethod) by @sydney-runkle in #8285 - Fix 
to_snakeconversion by @jevins09 in #8316 - Fix type annotation of 
ModelMetaclass.__prepare__by @slanzmich in #8305 - Disallow 
configspecification when initializing aTypeAdapterwhen 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 
aliasindataclasssignature 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_constructcall by @sydney-runkle in #8500 - Fix module 
path_typecreation when globals does not contain__name__by @hramezani in #8470 - Fix for namespace issue with dataclasses with 
from __future__ import annotationsby @sydney-runkle in #8513 - Fix: make function validator types positional-only by @pmmmwh in #8479
 - Fix usage of 
@deprecatedby @Viicos in #8294 - Add more support for private attributes in 
model_constructcall by @sydney-runkle in #8525 - Use a stack for the types namespace by @dmontagu in #8378
 - Fix schema-building bug with 
TypeAliasTypefor types with refs by @dmontagu in #8526 - Support 
pydantic.Field(repr=False)in dataclasses by @tigeryy2 in #8511 - Override 
dataclass_transformbehavior forRootModelby @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_nonefor json serialization ofcomputed_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)¶
What's Changed¶
Packaging¶
- uprev 
pydantic-coreto 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)¶
What's Changed¶
Packaging¶
- uprev 
pydantic-coreto 2.14.5 
New Features¶
- Add 
ConfigDict.ser_json_inf_nanby @davidhewitt in #8159 
Fixes¶
- Fix validation of 
Literalfrom JSON keys when used asdictkey by @sydney-runkle in pydantic/pydantic-core#1075 - Fix bug re 
custom_initon members ofUnionby @sydney-runkle in pydantic/pydantic-core#1076 - Fix 
JsonValueboolserialization by @sydney-runkle in #8190 - Fix handling of unhashable inputs with 
LiteralinUnions by @sydney-runkle in pydantic/pydantic-core#1089 
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 
ValidateCallWrappererror when creating a model which has a @validate_call wrapped field annotation by @sydney-runkle in #8110 
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.335by @Viicos in #8075 
New Features¶
- Allow plugins to catch non 
ValidationErrorerrors by @adriangb in #7806 - Support 
__doc__argument increate_model()by @chris-spann in #7863 - Expose 
regex_engineflag - 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 
ComputedFieldInfoby @alexmojaki in #7889 - Adopting 
ruffformatter by @Luca-Blight in #7930 - Added 
validation_error_causeto config by @zakstucke in #7626 - Make path of the item to validate available in plugin by @hramezani in #7861
 - Add 
CallableDiscriminatorandTagby @dmontagu in #7983 - Make union case tags affect union error messages by @dmontagu in #8001
 - Add 
examplesandjson_schema_extrato@computed_fieldby @alexmojaki in #8013 - Add 
JsonValuetype by @dmontagu in #7998 - Allow 
stras argument toDiscriminatorby @dmontagu in #8047 - Add 
SchemaSerializer.__reduce__method to enable pickle serialization by @edoakes in pydantic/pydantic-core#1006 
Changes¶
- Significant Change: replace 
ultra_strictwith 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 
Enumtypes with no cases by @sydney-runkle in #7927 - Warn if a class inherits from 
GenericbeforeBaseModelby @alexmojaki in #7891 
Performance¶
- New custom JSON parser, 
jiterby @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 
mypyissue with subclasses ofRootModelby @sydney-runkle in #7677 - Properly rebuild the 
FieldInfowhen a forward ref gets evaluated by @dmontagu in #7698 - Fix failure to load 
SecretStrfrom JSON (regression in v2.4) by @sydney-runkle in #7729 - Fix 
defer_buildbehavior withTypeAdapterby @sydney-runkle in #7736 - Improve compatibility with legacy 
mypyversions by @dmontagu in #7742 - Fix: update 
TypeVarhandling when default is not set by @pmmmwh in #7719 - Support specification of 
strictonEnumtype fields by @sydney-runkle in #7761 - Wrap 
weakref.refinstead of subclassing to fixcloudpickleserialization by @edoakes in #7780 - Keep values of private attributes set within 
model_post_initin subclasses by @alexmojaki in #7775 - Add more specific type for non-callable 
json_schema_extraby @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 
strictspecification forUUIDtypes 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_calldecorator for methods in classes with__slots__by @sydney-runkle in #7883 - Fix pydantic dataclass problem with 
dataclasses.fielddefault by @hramezani in #7898 - Fix schema generation for generics with union type bounds by @sydney-runkle in #7899
 - Fix version for 
importlib_metadataon python 3.7 by @sydney-runkle in #7904 - Support 
|operator (Union) in PydanticRecursiveRef by @alexmojaki in #7892 - Fix 
display_as_typeforTypeAliasTypein python 3.12 by @dmontagu in #7929 - Add support for 
NotRequiredgenerics inTypedDictby @sydney-runkle in #7932 - Make generic 
TypeAliasTypespecifications 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
 PrivateAttris passed fromAnnotateddefault position by @tabassco in #8004- Don't decode bytes (which may not be UTF8) when displaying SecretBytes by @alexmojaki in #8012
 - Use 
classmethodinstead 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 
Optionalfield withvalidate_defaultonly performing one field validation by @sydney-runkle in pydantic/pydantic-core#1002 - Fix 
definition-refbug withDictkeys by @sydney-runkle in pydantic/pydantic-core#1014 - Fix bug allowing validation of 
booltypes withcoerce_numbers_to_str=Trueby @sydney-runkle in pydantic/pydantic-core#1017 - Don't accept 
NaNin float and decimal constraints by @davidhewitt in pydantic/pydantic-core#1037 - Add 
lax_strandlax_intsupport for enum values not inherited from str/int by @michaelhly in pydantic/pydantic-core#1015 - Support subclasses in lists in 
UnionofListtypes by @sydney-runkle in pydantic/pydantic-core#1039 - Allow validation against 
max_digitsanddecimalsto pass if normalized or non-normalized input is valid by @sydney-runkle in pydantic/pydantic-core#1049 - Fix: proper pluralization in 
ValidationErrormessages by @Iipin in pydantic/pydantic-core#1050 - Disallow the string 
'-'asdatetimeinput 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)¶
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_schemafor 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)¶
What's Changed¶
Packaging¶
- Update pydantic-core to 2.10.1 by @davidhewitt in #7633
 
Fixes¶
- Serialize unsubstituted type vars as 
Anyby @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)¶
What's Changed¶
Packaging¶
- Update pydantic-core to 2.10.0 by @samuelcolvin in #7542
 
New Features¶
- Add 
Base64Urltypes by @dmontagu in #7286 - Implement optional 
numbertostrcoercion by @lig in #7508 - Allow access to 
field_nameanddatain all validators if there is data and a field name by @samuelcolvin in #7542 - Add 
BaseModel.model_validate_stringsandTypeAdapter.validate_stringsby @hramezani in #7552 - Add Pydantic 
pluginsexperimental implementation by @lig @samuelcolvin and @Kludex in #6820 
Changes¶
- Do not override 
model_post_initin 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 
Extraas deprecated by @disrupted in #7299 - Make 
EncodedStra dataclass by @Kludex in #7396 - Move 
annotated_handlersto be public by @samuelcolvin in #7569 
Performance¶
- Simplify flattening and inlining of 
CoreSchemaby @adriangb in #7523 - Remove unused copies in 
CoreSchemawalking 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.getanddict.setdefaultwith more verbose versions inCoreSchemabuilding hot paths by @adriangb in #7536 - Cache invalid 
CoreSchemadiscovery by @adriangb in #7535 - Allow disabling 
CoreSchemavalidation for faster startup times by @adriangb in #7565 
Fixes¶
- Fix config detection for 
TypedDictfrom grandparent classes by @dmontagu in #7272 - Fix hash function generation for frozen models with unusual MRO by @dmontagu in #7274
 - Make 
strictconfig overridable in field for Path by @hramezani in #7281 - Use 
ser_json_<timedelta|bytes>on default inGenerateJsonSchemaby @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 
SkipValidationto 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 
TypeErroronmodel_validatorinwrapmode by @pmmmwh in #7496 - Improve enum error message by @hramezani in #7506
 - Make 
reprwork for instances that failed initialization when handlingValidationErrors by @dmontagu in #7439 - Fixed a regular expression denial of service issue by limiting whitespaces by @prodigysml in #7360
 - Fix handling of 
UUIDvalues havingUUID.version=Noneby @lig in #7566 - Fix 
__iter__returning privatecached_propertyinfo 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)¶
- 🔥 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 
Base64StrandBase64Bytesby @Kludex in #7192 - Fix 
config.defer_buildfor serialization first cases by @samuelcolvin in #7024 - clean Model docstrings in JSON Schema by @samuelcolvin in #7210
 - fix #7228 (typo): docs in 
validators.mdto correctvalidate_defaultkwarg by @lmmx in #7229 - ✅ Implement 
tzinfo.fromutcmethod forTzInfoinpydantic-coreby @lig in #7019 - Support 
__get_validators__by @hramezani in #7197 
v2.2.1 (2023-08-18)¶
- Make 
xfailing test for root model extra stopxfailing 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)¶
- Split "pipx install" setup command into two commands on the documentation site by @nomadmtb in #6869
 - Deprecate 
Field.includeby @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 
Pathfields by @samuelcolvin in #6903 support Coordinate Type by @yezz123 in #6906
- Fix 
ForwardRefwrapper 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 
mainbranch 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_bytesregarding base64 encoding by @Viicos in #7052 - Allow 
@validate_callto work on async methods by @adriangb in #7046 - Fix: mypy error with 
SettingsandSettingsConfigDictby @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_versionand use it in links by @hramezani in #7115 - 📝 Add usage link to 
RootModelby @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.excludeby @Viicos in #7086 - Do not require 
validate_assignmentto useField.frozenby @Viicos in #7103 - tweaks to 
_core_utilsby @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_tripin 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)¶
v2.1.0 (2023-07-25)¶
- Add 
StringConstraintsfor 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 
contentSchemakeyword 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 
SkipJsonSchemaannotation by @Kludex in #6653 - Error if an invalid field name is used with Field by @dmontagu in #6797
 - Add 
GenericModeltoMOVED_IN_V2by @adriangb in #6776 - Remove unused code from 
docs/usage/types/custom.mdby @hramezani in #6803 - Fix 
float->Decimalcoercion 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.MaxLenvalidator 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 
InstanceOfby @dmontagu in #6829 - Add back support for 
json_encodersby @adriangb in #6811 - Update field annotations when building the schema by @dmontagu in #6838
 - Use 
WeakValueDictionaryto fix generic memory leak by @dmontagu in #6681 - Add 
config.defer_buildto optionally make model building lazy by @samuelcolvin in #6823 - delegate 
UUIDserialization to pydantic-core by @davidhewitt in #6850 - Update 
json_encodersdocs by @adriangb in #6848 - Fix error message for 
staticmethod/classmethodorder with validate_call by @dmontagu in #6686 - Improve documentation for 
Configby @samuelcolvin in #6847 - Update serialization doc to mention 
Field.excludetakes priority over call-timeinclude/excludeby @hramezani in #6851 - Allow customizing core schema generation by making 
GenerateSchemapublic by @adriangb in #6737 
v2.0.3 (2023-07-05)¶
- 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.aliasbehavior 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_priorityby @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-coreto 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 
enumerror type docs by @lig in #6603 - 🐛 Fix 
max_lengthfor unicode strings by @lig in #6559 - Add documentation for accessing features via 
pydantic.v1by @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 
$refas an alias by @dmontagu in #6568 - add note to migration guide about changes to 
AnyUrletc by @davidhewitt in #6618 - 🐛 Support defining 
json_schema_extraonRootModelusingFieldby @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 
transformdocstring 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)¶
- Fix bug where round-trip pickling/unpickling a 
RootModelwould 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 
constrdocumentation, renamed oldregexto newpattern, #6452 by @miili - Change 
GenerateJsonSchema.generate_definitionssignature, #6436 by @dmontagu 
See the full changelog here
v2.0.1 (2023-07-04)¶
First patch release of Pydantic V2
- Extra fields added via 
setattr(i.e.m.some_extra_field = 'extra_value') are added to.model_extraifmodel_configextra='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)¶
Pydantic V2 is here! 
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.
v1.10.21 (2025-01-10)¶
- Fix compatibility with ForwardRef._evaluate and Python < 3.12.4 by @griels in https://github.com/pydantic/pydantic/pull/11232
 
v1.10.20 (2025-01-07)¶
This release provides proper support for Python 3.13, with (Cythonized) wheels published for this version.
As a consequence, Cython was updated from 0.29.x to 3.0.x.
- General maintenance of CI and build ecosystem by @Viicos in https://github.com/pydantic/pydantic/pull/10847
- Update Cython to 
3.0.x. - Properly address Python 3.13 deprecation warnings.
 - Migrate packaging to 
pyproject.toml, make use of PEP 517 build options. - Use 
buildinstead of directsetup.pyinvocations. - Update various Github Actions versions.
 
 - Update Cython to 
 - Replace outdated stpmex link in documentation by @jaredenorris in https://github.com/pydantic/pydantic/pull/10997
 
v1.10.19 (2024-11-06)¶
- Add warning when v2 model is nested in v1 model by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10432
 - Fix deprecation warning in V1 
isinstancecheck by @alicederyn in https://github.com/pydantic/pydantic/pull/10645 
v1.10.18 (2024-08-22)¶
- Eval type fix in V1 by @sydney-runkle in https://github.com/pydantic/pydantic/pull/9751
 - Add 
to_lower_camelto__all__inutils.pyby @sydney-runkle (direct commit) - Fix 
mypyv1 plugin for mypy 1.11 release by @flaeppe in https://github.com/pydantic/pydantic/pull/10139 - Fix discriminator key used when discriminator has alias and 
.schema(by_alias=False)by @exs-dwoodward in https://github.com/pydantic/pydantic/pull/10146 
v1.10.17 (2024-06-20)¶
- Advertise Python 3.12 for 1.10.x! Part Deux by @vfazio in https://github.com/pydantic/pydantic/pull/9644
 - Mirrored modules in 
v1namespace to fix typing and object resolution in python>3.11 by @exs-dwoodward in https://github.com/pydantic/pydantic/pull/9660 - setup: remove upper bound from python_requires by @vfazio in https://github.com/pydantic/pydantic/pull/9685
 
v1.10.16 (2024-06-11)¶
- Specify recursive_guard as kwarg in FutureRef._evaluate by @vfazio in https://github.com/pydantic/pydantic/pull/9612
 - Fix mypy v1 plugin for upcoming mypy release by @ cdce8p in https://github.com/pydantic/pydantic/pull/9586
 - Import modules/objects directly from v1 namespace by @exs-dwoodward in https://github.com/pydantic/pydantic/pull/9162
 
v1.10.15 (2024-04-03)¶
- Add pydantic.v1 namespace to Pydantic v1 by @exs-dmiketa in https://github.com/pydantic/pydantic/pull/9042
 - Relax version of typing-extensions for V1 by @SonOfLilit in https://github.com/pydantic/pydantic/pull/8819
 - patch fix for mypy by @sydney-runkle in https://github.com/pydantic/pydantic/pull/8765
 
v1.10.14 (2024-01-19)¶
- 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
 
v1.10.13 (2023-09-27)¶
- Fix: Add max length check to 
pydantic.validate_email, #7673 by @hramezani - Docs: Fix pip commands to install v1, #6930 by @chbndrhnns
 
v1.10.12 (2023-07-24)¶
- Fixes the 
maxlenproperty being dropped ondequevalidation. Happened only if the deque item has been typed. Changes the_validate_sequence_likefunc, #6581 by @maciekglowka 
v1.10.11 (2023-07-04)¶
- Importing create_model in tools.py through relative path instead of absolute path - so that it doesn't import V2 code when copied over to V2 branch, #6361 by @SharathHuddar
 
v1.10.10 (2023-06-30)¶
- Add Pydantic 
Jsonfield support to settings management, #6250 by @hramezani - Fixed literal validator errors for unhashable values, #6188 by @markus1978
 - Fixed bug with generics receiving forward refs, #6130 by @mark-todd
 - Update install method of FastAPI for internal tests in CI, #6117 by @Kludex
 
v1.10.9 (2023-06-07)¶
- Fix trailing zeros not ignored in Decimal validation, #5968 by @hramezani
 - Fix mypy plugin for v1.4.0, #5928 by @cdce8p
 - Add future and past date hypothesis strategies, #5850 by @bschoenmaeckers
 - Discourage usage of Cython 3 with Pydantic 1.x, #5845 by @lig
 
v1.10.8 (2023-05-23)¶
- Fix a bug in 
Literalusage withtyping-extension==4.6.0, #5826 by @hramezani - This solves the (closed) issue #3849 where aliased fields that use discriminated union fail to validate when the data contains the non-aliased field name, #5736 by @benwah
 - Update email-validator dependency to >=2.0.0post2, #5627 by @adriangb
 - update 
AnyClassMethodfor changes in python/typeshed#9771, #5505 by @ITProKyle 
v1.10.7 (2023-03-22)¶
- Fix creating schema from model using 
ConstrainedStrwithregexas dict key, #5223 by @matejetz - Address bug in mypy plugin caused by explicit_package_bases=True, #5191 by @dmontagu
 - Add implicit defaults in the mypy plugin for Field with no default argument, #5190 by @dmontagu
 - Fix schema generated for Enum values used as Literals in discriminated unions, #5188 by @javibookline
 - Fix mypy failures caused by the pydantic mypy plugin when users define 
from_ormin their own classes, #5187 by @dmontagu - Fix 
InitVarusage with pydantic dataclasses, mypy version1.1.1and the custom mypy plugin, #5162 by @cdce8p 
v1.10.6 (2023-03-08)¶
- Implement logic to support creating validators from non standard callables by using defaults to identify them and unwrapping 
functools.partialandfunctools.partialmethodwhen checking the signature, #5126 by @JensHeinrich - Fix mypy plugin for v1.1.1, and fix 
dataclass_transformdecorator for pydantic dataclasses, #5111 by @cdce8p - Raise 
ValidationError, notConfigError, when a discriminator value is unhashable, #4773 by @kurtmckee 
v1.10.5 (2023-02-15)¶
- Fix broken parametrized bases handling with 
GenericModels with complex sets of models, #5052 by @MarkusSintonen - Invalidate mypy cache if plugin config changes, #5007 by @cdce8p
 - Fix 
RecursionErrorwhen deep-copying dataclass types wrapped by pydantic, #4949 by @mbillingr - Fix 
X | Yunion syntax breakingGenericModel, #4146 by @thenx - Switch coverage badge to show coverage for this branch/release, #5060 by @samuelcolvin
 
v1.10.4 (2022-12-30)¶
- Change dependency to 
typing-extensions>=4.2.0, #4885 by @samuelcolvin 
v1.10.3 (2022-12-29)¶
NOTE: v1.10.3 was "yanked" from PyPI due to #4885 which is fixed in v1.10.4
- fix parsing of custom root models, #4883 by @gou177
 - fix: use dataclass proxy for frozen or empty dataclasses, #4878 by @PrettyWood
 - Fix 
schemaandschema_jsonon models where a model instance is a one of default values, #4781 by @Bobronium - Add Jina AI to sponsors on docs index page, #4767 by @samuelcolvin
 - fix: support assignment on 
DataclassProxy, #4695 by @PrettyWood - Add 
postgresql+psycopgas allowed scheme forPostgreDsnto make it usable with SQLAlchemy 2, #4689 by @morian - Allow dict schemas to have both 
patternPropertiesandadditionalProperties, #4641 by @jparise - Fixes error passing None for optional lists with 
unique_items, #4568 by @mfulgo - Fix 
GenericModelwithCallableparam raising aTypeError, #4551 by @mfulgo - Fix field regex with 
StrictStrtype annotation, #4538 by @sisp - Correct 
dataclass_transformkeyword argument name fromfield_descriptorstofield_specifiers, #4500 by @samuelcolvin - fix: avoid multiple calls of 
__post_init__when dataclasses are inherited, #4487 by @PrettyWood - Reduce the size of binary wheels, #2276 by @samuelcolvin
 
v1.10.2 (2022-09-05)¶
- Revert Change: Revert percent encoding of URL parts which was originally added in #4224, #4470 by @samuelcolvin
 - Prevent long (length > 
4_300) strings/bytes as input to int fields, see python/cpython#95778 and CVE-2020-10735, #1477 by @samuelcolvin - fix: dataclass wrapper was not always called, #4477 by @PrettyWood
 - Use 
tomllibon Python 3.11 when parsingmypyconfiguration, #4476 by @hauntsaninja - Basic fix of 
GenericModelcache to detect order of arguments inUnionmodels, #4474 by @sveinugu - Fix mypy plugin when using bare types like 
listanddictasdefault_factory, #4457 by @samuelcolvin 
v1.10.1 (2022-08-31)¶
v1.10.0 (2022-08-30)¶
- Refactor the whole pydantic 
dataclassdecorator to really act like its standard lib equivalent. It hence keeps__eq__,__hash__, ... and makes comparison with its non-validated version possible. It also fixes usage offrozendataclasses in fields and usage ofdefault_factoryin nested dataclasses. The support ofConfig.extrahas been added. Finally, config customization directly via adictis now possible, #2557 by @PrettyWood
BREAKING CHANGES:- The 
compiledboolean (whether pydantic is compiled with cython) has been moved frommain.pytoversion.py - Now that 
Config.extrais supported,dataclassignores by default extra arguments (likeBaseModel) 
 - The 
 - Fix PEP487 
__set_name__protocol inBaseModelfor PrivateAttrs, #4407 by @tlambert03 - Allow for custom parsing of environment variables via 
parse_env_varinConfig, #4406 by @acmiyaguchi - Rename 
mastertomain, #4405 by @hramezani - Fix 
StrictStrdoes not raiseValidationErrorwhenmax_lengthis present inField, #4388 by @hramezani - Make 
SecretStrandSecretByteshashable, #4387 by @chbndrhnns - Fix 
StrictBytesdoes not raiseValidationErrorwhenmax_lengthis present inField, #4380 by @JeanArhancet - Add support for bare 
type, #4375 by @hramezani - Support Python 3.11, including binaries for 3.11 in PyPI, #4374 by @samuelcolvin
 - Add support for 
re.Pattern, #4366 by @hramezani - Fix 
__post_init_post_parse__is incorrectly passed keyword arguments when no__post_init__is defined, #4361 by @hramezani - Fix implicitly importing 
ForwardRefandCallablefrompydantic.typinginstead oftypingand also exposeMappingIntStrAny, #4358 by @aminalaee - remove 
Anytypes from thedataclassdecorator so it can be used with thedisallow_any_exprmypy option, #4356 by @DetachHead - moved repo to 
pydantic/pydantic, #4348 by @yezz123 - fix "extra fields not permitted" error when dataclass with 
Extra.forbidis validated multiple times, #4343 by @detachhead - Add Python 3.9 and 3.10 examples to docs, #4339 by @Bobronium
 - Discriminated union models now use 
oneOfinstead ofanyOfwhen generating OpenAPI schema definitions, #4335 by @MaxwellPayne - Allow type checkers to infer inner type of 
Jsontype.Json[list[str]]will be now inferred aslist[str],Json[Any]should be used instead of plainJson. Runtime behaviour is not changed, #4332 by @Bobronium - Allow empty string aliases by using a 
alias is not Nonecheck, rather thanbool(alias), #4253 by @sergeytsaplin - Update 
ForwardRefs inField.outer_type_, #4249 by @JacobHayes - The use of 
__dataclass_transform__has been replaced bytyping_extensions.dataclass_transform, which is the preferred way to mark pydantic models as a dataclass under PEP 681, #4241 by @multimeric - Use parent model's 
Configwhen validating nestedNamedTuplefields, #4219 by @synek - Update 
BaseModel.constructto work with aliased Fields, #4192 by @kylebamos - Catch certain raised errors in 
smart_deepcopyand revert todeepcopyif so, #4184 by @coneybeare - Add 
Config.anystr_upperandto_upperkwarg to constr and conbytes, #4165 by @satheler - Fix JSON schema for 
setandfrozensetwhen they include default values, #4155 by @aminalaee - Teach the mypy plugin that methods decorated by 
@validatorare classmethods, #4102 by @DMRobertson - Improve mypy plugin's ability to detect required fields, #4086 by @richardxia
 - Support fields of type 
Type[]in schema, #4051 by @aminalaee - Add 
defaultvalue in JSON Schema whenconst=True, #4031 by @aminalaee - Adds reserved word check to signature generation logic, #4011 by @strue36
 - Fix Json strategy failure for the complex nested field, #4005 by @sergiosim
 - Add JSON-compatible float constraint 
allow_inf_nan, #3994 by @tiangolo - Remove undefined behaviour when 
env_prefixhad characters in common withenv_nested_delimiter, #3975 by @arsenron - Support generics model with 
create_model, #3945 by @hot123s - allow submodels to overwrite extra field info, #3934 by @PrettyWood
 - Document and test structural pattern matching (PEP 636) on 
BaseModel, #3920 by @irgolic - Fix incorrect deserialization of python timedelta object to ISO 8601 for negative time deltas. Minus was serialized in incorrect place ("P-1DT23H59M59.888735S" instead of correct "-P1DT23H59M59.888735S"), #3899 by @07pepa
 - Fix validation of discriminated union fields with an alias when passing a model instance, #3846 by @chornsby
 - Add a CockroachDsn type to validate CockroachDB connection strings. The type
  supports the following schemes: 
cockroachdb,cockroachdb+psycopg2andcockroachdb+asyncpg, #3839 by @blubber - Fix MyPy plugin to not override pre-existing 
__init__method in models, #3824 by @patrick91 - Fix mypy version checking, #3783 by @KotlinIsland
 - support overwriting dunder attributes of 
BaseModelinstances, #3777 by @PrettyWood - Added 
ConstrainedDateandcondate, #3740 by @hottwaj - Support 
kw_onlyin dataclasses, #3670 by @detachhead - Add comparison method for 
Colorclass, #3646 by @aminalaee - Drop support for python3.6, associated cleanup, #3605 by @samuelcolvin
 - created new function 
to_lower_camel()for "non pascal case" camel case, #3463 by @schlerp - Add checks to 
defaultanddefault_factoryarguments in Mypy plugin, #3430 by @klaa97 - fix mangling of 
inspect.signatureforBaseModel, #3413 by @fix-inspect-signature - Adds the 
SecretFieldabstract class so that all the current and future secret fields likeSecretStrandSecretByteswill derive from it, #3409 by @expobrain - Support multi hosts validation in 
PostgresDsn, #3337 by @rglsk - Fix parsing of very small numeric timedelta values, #3315 by @samuelcolvin
 - Update 
SecretsSettingsSourceto respectconfig.case_sensitive, #3273 by @JeanArhancet - Add MongoDB network data source name (DSN) schema, #3229 by @snosratiershad
 - Add support for multiple dotenv files, #3222 by @rekyungmin
 - Raise an explicit 
ConfigErrorwhen multiple fields are incorrectly set for a single validator, #3215 by @SunsetOrange - Allow ellipsis on 
Fields insideAnnotatedforTypedDictsrequired, #3133 by @ezegomez - Catch overflow errors in 
int_validator, #3112 by @ojii - Adds a 
__rich_repr__method toRepresentationclass which enables pretty printing with Rich, #3099 by @willmcgugan - Add percent encoding in 
AnyUrland descendent types, #3061 by @FaresAhmedb validate_argumentsdecorator now supportsalias, #3019 by @MAD-py- Avoid 
__dict__and__weakref__attributes inAnyUrland IP address fields, #2890 by @nuno-andre - Add ability to use 
Finalin a field type annotation, #2766 by @uriyyo - Update requirement to 
typing_extensions>=4.1.0to guaranteedataclass_transformis available, #4424 by @commonism - Add Explosion and AWS to main sponsors, #4413 by @samuelcolvin
 - Update documentation for 
copy_on_model_validationto reflect recent changes, #4369 by @samuelcolvin - Runtime warning if 
__slots__is passed tocreate_model,__slots__is then ignored, #4432 by @samuelcolvin - Add type hints to 
BaseSettings.Configto avoid mypy errors, also correct mypy version compatibility notice in docs, #4450 by @samuelcolvin 
v1.10.0b1 (2022-08-24)¶
Pre-release, see the GitHub release for details.
v1.10.0a2 (2022-08-24)¶
Pre-release, see the GitHub release for details.
v1.10.0a1 (2022-08-22)¶
Pre-release, see the GitHub release for details.
v1.9.2 (2022-08-11)¶
Revert Breaking Change: v1.9.1 introduced a breaking change where model fields were
deep copied by default, this release reverts the default behaviour to match v1.9.0 and before,
while also allow deep-copy behaviour via copy_on_model_validation = 'deep'. See #4092 for more information.
- Allow for shallow copies of model fields, 
Config.copy_on_model_validationis now a str which must be'none','deep', or'shallow'corresponding to not copying, deep copy & shallow copy; default'shallow', #4093 by @timkpaine 
v1.9.1 (2022-05-19)¶
Thank you to pydantic's sponsors: @tiangolo, @stellargraph, @JonasKs, @grillazz, @Mazyod, @kevinalh, @chdsbd, @povilasb, @povilasb, @jina-ai, @mainframeindustries, @robusta-dev, @SendCloud, @rszamszur, @jodal, @hardbyte, @corleyma, @daddycocoaman, @Rehket, @jokull, @reillysiemens, @westonsteimel, @primer-io, @koxudaxi, @browniebroke, @stradivari96, @adriangb, @kamalgill, @jqueguiner, @dev-zero, @datarootsio, @RedCarpetUp for their kind support.
- Limit the size of 
generics._generic_types_cacheandgenerics._assigned_parametersto avoid unlimited increase in memory usage, #4083 by @samuelcolvin - Add Jupyverse and FPS as Jupyter projects using pydantic, #4082 by @davidbrochart
 - Speedup 
__isinstancecheck__on pydantic models when the type is not a model, may also avoid memory "leaks", #4081 by @samuelcolvin - Fix in-place modification of 
FieldInfothat caused problems with PEP 593 type aliases, #4067 by @adriangb - Add support for autocomplete in VS Code via 
__dataclass_transform__when usingpydantic.dataclasses.dataclass, #4006 by @giuliano-oliveira - Remove benchmarks from codebase and docs, #3973 by @samuelcolvin
 - Typing checking with pyright in CI, improve docs on vscode/pylance/pyright, #3972 by @samuelcolvin
 - Fix nested Python dataclass schema regression, #3819 by @himbeles
 - Update documentation about lazy evaluation of sources for Settings, #3806 by @garyd203
 - Prevent subclasses of bytes being converted to bytes, #3706 by @samuelcolvin
 - Fixed "error checking inheritance of" when using PEP585 and PEP604 type hints, #3681 by @aleksul
 - Allow self referencing 
ClassVars in models, #3679 by @samuelcolvin - Breaking Change, see #4106: Fix issue with self-referencing dataclass, #3675 by @uriyyo
 - Include non-standard port numbers in rendered URLs, #3652 by @dolfinus
 Config.copy_on_model_validationdoes a deep copy and not a shallow one, #3641 by @PrettyWood- fix: clarify that discriminated unions do not support singletons, #3636 by @tommilligan
 - Add 
read_text(encoding='utf-8')forsetup.py, #3625 by @hswong3i - Fix JSON Schema generation for Discriminated Unions within lists, #3608 by @samuelcolvin
 
v1.9.0 (2021-12-31)¶
Thank you to pydantic's sponsors: @sthagen, @timdrijvers, @toinbis, @koxudaxi, @ginomempin, @primer-io, @and-semakin, @westonsteimel, @reillysiemens, @es3n1n, @jokull, @JonasKs, @Rehket, @corleyma, @daddycocoaman, @hardbyte, @datarootsio, @jodal, @aminalaee, @rafsaf, @jqueguiner, @chdsbd, @kevinalh, @Mazyod, @grillazz, @JonasKs, @simw, @leynier, @xfenix for their kind support.
Highlights¶
- add Python 3.10 support, #2885 by @PrettyWood
 - Discriminated unions, #619 by @PrettyWood
 Config.smart_unionfor better union logic, #2092 by @PrettyWood- Binaries for Macos M1 CPUs, #3498 by @samuelcolvin
 - Complex types can be set via nested environment variables, e.g. 
foo___bar, #3159 by @Air-Mark - add a dark mode to pydantic documentation, #2913 by @gbdlin
 - Add support for autocomplete in VS Code via 
__dataclass_transform__, #2721 by @tiangolo - Add "exclude" as a field parameter so that it can be configured using model config, #660 by @daviskirk
 
v1.9.0 (2021-12-31) Changes¶
- Apply 
update_forward_refstoConfig.json_encodesprevent name clashes in types defined via strings, #3583 by @samuelcolvin - Extend pydantic's mypy plugin to support mypy versions 
0.910,0.920,0.921&0.930, #3573 & #3594 by @PrettyWood, @christianbundy, @samuelcolvin 
v1.9.0a2 (2021-12-24) Changes¶
- support generic models with discriminated union, #3551 by @PrettyWood
 - keep old behaviour of 
json()by default, #3542 by @PrettyWood - Removed typing-only 
__root__attribute fromBaseModel, #3540 by @layday - Build Python 3.10 wheels, #3539 by @mbachry
 - Fix display of 
extrafields with model__repr__, #3234 by @cocolman - models copied via 
Config.copy_on_model_validationalways have all fields, #3201 by @PrettyWood - nested ORM from nested dictionaries, #3182 by @PrettyWood
 - fix link to discriminated union section by @PrettyWood
 
v1.9.0a1 (2021-12-18) Changes¶
- Add support for 
Decimal-specific validation configurations inField(), additionally to usingcondecimal(), to allow better support from editors and tooling, #3507 by @tiangolo - Add 
arm64binaries suitable for MacOS with an M1 CPU to PyPI, #3498 by @samuelcolvin - Fix issue where 
Nonewas considered invalid when using aUniontype containingAnyorobject, #3444 by @tharradine - When generating field schema, pass optional 
fieldargument (of typepydantic.fields.ModelField) to__modify_schema__()if present, #3434 by @jasujm - Fix issue when pydantic fail to parse 
typing.ClassVarstring type annotation, #3401 by @uriyyo - Mention Python >= 3.9.2 as an alternative to 
typing_extensions.TypedDict, #3374 by @BvB93 - Changed the validator method name in the Custom Errors example
  to more accurately describe what the validator is doing; changed from 
name_must_contain_spacetovalue_must_equal_bar, #3327 by @michaelrios28 - Add 
AmqpDsnclass, #3254 by @kludex - Always use 
Enumvalue as default in generated JSON schema, #3190 by @joaommartins - Add support for Mypy 0.920, #3175 by @christianbundy
 validate_argumentsnow supportsextracustomization (used to always beExtra.forbid), #3161 by @PrettyWood- Complex types can be set by nested environment variables, #3159 by @Air-Mark
 - Fix mypy plugin to collect fields based on 
pydantic.utils.is_valid_fieldso that it ignores untyped private variables, #3146 by @hi-ogawa - fix 
validate_argumentsissue withConfig.validate_all, #3135 by @PrettyWood - avoid dict coercion when using dict subclasses as field type, #3122 by @PrettyWood
 - add support for 
objecttype, #3062 by @PrettyWood - Updates pydantic dataclasses to keep 
_specialproperties on parent classes, #3043 by @zulrang - Add a 
TypedDictclass for error objects, #3038 by @matthewhughes934 - Fix support for using a subclass of an annotation as a default, #3018 by @JacobHayes
 - make 
create_model_from_typeddictmypy compliant, #3008 by @PrettyWood - Make multiple inheritance work when using 
PrivateAttr, #2989 by @hmvp - Parse environment variables as JSON, if they have a 
Uniontype with a complex subfield, #2936 by @cbartz - Prevent 
StrictStrpermittingEnumvalues where the enum inherits fromstr, #2929 by @samuelcolvin - Make 
SecretsSettingsSourceparse values being assigned to fields of complex types when sourced from a secrets file, just as when sourced from environment variables, #2917 by @davidmreed - add a dark mode to pydantic documentation, #2913 by @gbdlin
 - Make 
pydantic-mypyplugin compatible withpyproject.tomlconfiguration, consistent withmypychanges. See the doc for more information, #2908 by @jrwalk - add Python 3.10 support, #2885 by @PrettyWood
 - Correctly parse generic models with 
Json[T], #2860 by @geekingfrog - Update contrib docs re: Python version to use for building docs, #2856 by @paxcodes
 - Clarify documentation about pydantic's support for custom validation and strict type checking, despite pydantic being primarily a parsing library, #2855 by @paxcodes
 - Fix schema generation for 
Dequefields, #2810 by @sergejkozin - fix an edge case when mixing constraints and 
Literal, #2794 by @PrettyWood - Fix postponed annotation resolution for 
NamedTupleandTypedDictwhen they're used directly as the type of fields within Pydantic models, #2760 by @jameysharp - Fix bug when 
mypyplugin fails onconstructmethod call forBaseSettingsderived classes, #2753 by @uriyyo - Add function overloading for a 
pydantic.create_modelfunction, #2748 by @uriyyo - Fix mypy plugin issue with self field declaration, #2743 by @uriyyo
 - The colon at the end of the line "The fields which were supplied when user was initialised:" suggests that the code following it is related. Changed it to a period, #2733 by @krisaoe
 - Renamed variable 
schematoschema_to avoid shadowing of global variable name, #2724 by @shahriyarr - Add support for autocomplete in VS Code via 
__dataclass_transform__, #2721 by @tiangolo - add missing type annotations in 
BaseConfigand handlemax_length = 0, #2719 by @PrettyWood - Change 
orm_modechecking to allow recursive ORM mode parsing with dicts, #2718 by @nuno-andre - Add episode 313 of the Talk Python To Me podcast, where Michael Kennedy and Samuel Colvin discuss Pydantic, to the docs, #2712 by @RatulMaharaj
 - fix JSON schema generation when a field is of type 
NamedTupleand has a default value, #2707 by @PrettyWood Enumfields now properly support extra kwargs in schema generation, #2697 by @sammchardy- Breaking Change, see #3780: Make serialization of referenced pydantic models possible, #2650 by @PrettyWood
 - Add 
uniqueItemsoption toConstrainedList, #2618 by @nuno-andre - Try to evaluate forward refs automatically at model creation, #2588 by @uriyyo
 - Switch docs preview and coverage display to use smokeshow, #2580 by @samuelcolvin
 - Add 
__version__attribute to pydantic module, #2572 by @paxcodes - Add 
postgresql+asyncpg,postgresql+pg8000,postgresql+psycopg2,postgresql+psycopg2cffi,postgresql+py-postgresqlandpostgresql+pygresqlschemes forPostgresDsn, #2567 by @postgres-asyncpg - Enable the Hypothesis plugin to generate a constrained decimal when the 
decimal_placesargument is specified, #2524 by @cwe5590 - Allow 
collections.abc.Callableto be used as type in Python 3.9, #2519 by @daviskirk - Documentation update how to custom compile pydantic when using pip install, small change in 
setup.pyto allow for custom CFLAGS when compiling, #2517 by @peterroelants - remove side effect of 
default_factoryto run it only once even ifConfig.validate_allis set, #2515 by @PrettyWood - Add lookahead to ip regexes for 
AnyUrlhosts. This allows urls with DNS labels looking like IPs to validate as they are perfectly valid host names, #2512 by @sbv-csis - Set 
minItemsandmaxItemsin generated JSON schema for fixed-length tuples, #2497 by @PrettyWood - Add 
strictargument toconbytes, #2489 by @koxudaxi - Support user defined generic field types in generic models, #2465 by @daviskirk
 - Add an example and a short explanation of subclassing 
GetterDictto docs, #2463 by @nuno-andre - add 
KafkaDsntype,HttpUrlnow has default port 80 for http and 443 for https, #2447 by @MihanixA - Add 
PastDateandFutureDatetypes, #2425 by @Kludex - Support generating schema for 
Genericfields with subtypes, #2375 by @maximberg - fix(encoder): serialize 
NameEmailto str, #2341 by @alecgerona - add 
Config.smart_unionto prevent coercion inUnionif possible, see the doc for more information, #2092 by @PrettyWood - Add ability to use 
typing.Counteras a model field type, #2060 by @uriyyo - Add parameterised subclasses to 
__bases__when constructing new parameterised classes, so thatA <: B => A[int] <: B[int], #2007 by @diabolo-dan - Create 
FileUrltype that allows URLs that conform to RFC 8089. Addhost_requiredparameter, which isTrueby default (AnyUrland subclasses),FalseinRedisDsn,FileUrl, #1983 by @vgerak - add 
confrozenset(), analogous toconset()andconlist(), #1897 by @PrettyWood - stop calling parent class 
root_validatorif overridden, #1895 by @PrettyWood - Add 
repr(defaults toTrue) parameter toField, to hide it from the default representation of theBaseModel, #1831 by @fnep - Accept empty query/fragment URL parts, #1807 by @xavier
 
v1.8.2 (2021-05-11)¶
Warning
A security vulnerability, level "moderate" is fixed in v1.8.2. Please upgrade ASAP. See security advisory CVE-2021-29510
- Security fix: Fix 
dateanddatetimeparsing so passing either'infinity'orfloat('inf')(or their negative values) does not cause an infinite loop, see security advisory CVE-2021-29510 - fix schema generation with Enum by generating a valid name, #2575 by @PrettyWood
 - fix JSON schema generation with a 
Literalof an enum member, #2536 by @PrettyWood - Fix bug with configurations declarations that are passed as keyword arguments during class creation, #2532 by @uriyyo
 - Allow passing 
json_encodersin class kwargs, #2521 by @layday - support arbitrary types with custom 
__eq__, #2483 by @PrettyWood - support 
Annotatedinvalidate_argumentsand in generic models with Python 3.9, #2483 by @PrettyWood 
v1.8.1 (2021-03-03)¶
Bug fixes for regressions and new features from v1.8
- allow elements of 
Config.fieldto update elements of aField, #2461 by @samuelcolvin - fix validation with a 
BaseModelfield and a custom root type, #2449 by @PrettyWood - expose 
Patternencoder tofastapi, #2444 by @PrettyWood - enable the Hypothesis plugin to generate a constrained float when the 
multiple_ofargument is specified, #2442 by @tobi-lipede-oodle - Avoid 
RecursionErrorwhen using some types likeEnumorLiteralwith generic models, #2436 by @PrettyWood - do not overwrite declared 
__hash__in subclasses of a model, #2422 by @PrettyWood - fix 
mypycomplaints onPathandUUIDrelated custom types, #2418 by @PrettyWood - Support properly variable length tuples of compound types, #2416 by @PrettyWood
 
v1.8 (2021-02-26)¶
Thank you to pydantic's sponsors: @jorgecarleitao, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @koxudaxi, @timdrijvers, @mkeen, @meadsteve, @ginomempin, @primer-io, @and-semakin, @tomthorogood, @AjitZK, @westonsteimel, @Mazyod, @christippett, @CarlosDomingues, @Kludex, @r-m-n for their kind support.
Highlights¶
- Hypothesis plugin for testing, #2097 by @Zac-HD
 - support for 
NamedTupleandTypedDict, #2216 by @PrettyWood - Support 
Annotatedhints on model fields, #2147 by @JacobHayes frozenparameter onConfigto allow models to be hashed, #1880 by @rhuille
Changes¶
- Breaking Change, remove old deprecation aliases from v1, #2415 by @samuelcolvin:
- remove notes on migrating to v1 in docs
 - remove 
Schemawhich was replaced byField - remove 
Config.case_insensitivewhich was replaced byConfig.case_sensitive(defaultFalse) - remove 
Config.allow_population_by_aliaswhich was replaced byConfig.allow_population_by_field_name - remove 
model.fieldswhich was replaced bymodel.__fields__ - remove 
model.to_string()which was replaced bystr(model) - remove 
model.__values__which was replaced bymodel.__dict__ 
 - Breaking Change: always validate only first sublevel items with 
each_item. There were indeed some edge cases with some compound types where the validated items were the last sublevel ones, #1933 by @PrettyWood - Update docs extensions to fix local syntax highlighting, #2400 by @daviskirk
 - fix: allow 
utils.lenient_issubclassto handletyping.GenericAliasobjects likelist[str]in Python >= 3.9, #2399 by @daviskirk - Improve field declaration for pydantic 
dataclassby allowing the usage of pydanticFieldor'metadata'kwarg ofdataclasses.field, #2384 by @PrettyWood - Making 
typing-extensionsa required dependency, #2368 by @samuelcolvin - Make 
resolve_annotationsmore lenient, allowing for missing modules, #2363 by @samuelcolvin - Allow configuring models through class kwargs, #2356 by @Bobronium
 - Prevent 
Mappingsubclasses from always being coerced todict, #2325 by @ofek - fix: allow 
Nonefor typeOptional[conset / conlist], #2320 by @PrettyWood - Support empty tuple type, #2318 by @PrettyWood
 - fix: 
python_requiresmetadata to require >=3.6.1, #2306 by @hukkinj1 - Properly encode 
Decimalwith, or without any decimal places, #2293 by @hultner - fix: update 
__fields_set__inBaseModel.copy(update=…), #2290 by @PrettyWood - fix: keep order of fields with 
BaseModel.construct(), #2281 by @PrettyWood - Support generating schema for Generic fields, #2262 by @maximberg
 - Fix 
validate_decoratorso**kwargsdoesn't exclude values when the keyword has the same name as the*argsor**kwargsnames, #2251 by @cybojenix - Prevent overriding positional arguments with keyword arguments in
  
validate_arguments, as per behaviour with native functions, #2249 by @cybojenix - add documentation for 
con*type functions, #2242 by @tayoogunbiyi - Support custom root type (aka 
__root__) when usingparse_obj()with nested models, #2238 by @PrettyWood - Support custom root type (aka 
__root__) withfrom_orm(), #2237 by @PrettyWood - ensure cythonized functions are left untouched when creating models, based on #1944 by @kollmats, #2228 by @samuelcolvin
 - Resolve forward refs for stdlib dataclasses converted into pydantic ones, #2220 by @PrettyWood
 - Add support for 
NamedTupleandTypedDicttypes. Those two types are now handled and validated when used insideBaseModelor pydanticdataclass. Two utils are also addedcreate_model_from_namedtupleandcreate_model_from_typeddict, #2216 by @PrettyWood - Do not ignore annotated fields when type is 
Union[Type[...], ...], #2213 by @PrettyWood - Raise a user-friendly 
TypeErrorwhen aroot_validatordoes not return adict(e.g.None), #2209 by @masalim2 - Add a 
FrozenSet[str]type annotation to theallowed_schemesargument on thestrict_urlfield type, #2198 by @Midnighter - add 
allow_mutationconstraint toField, #2195 by @sblack-usu - Allow 
Fieldwith adefault_factoryto be used as an argument to a function decorated withvalidate_arguments, #2176 by @thomascobb - Allow non-existent secrets directory by only issuing a warning, #2175 by @davidolrik
 - fix URL regex to parse fragment without query string, #2168 by @andrewmwhite
 - fix: ensure to always return one of the values in 
Literalfield type, #2166 by @PrettyWood - Support 
typing.Annotatedhints on model fields. AFieldmay now be set in the type hint withAnnotated[..., Field(...); all other annotations are ignored but still visible withget_type_hints(..., include_extras=True), #2147 by @JacobHayes - Added 
StrictBytestype as well asstrict=Falseoption toConstrainedBytes, #2136 by @rlizzo - added 
Config.anystr_lowerandto_lowerkwarg toconstrandconbytes, #2134 by @tayoogunbiyi - Support plain 
typing.Tupletype, #2132 by @PrettyWood - Add a bound method 
validateto functions decorated withvalidate_argumentsto validate parameters without actually calling the function, #2127 by @PrettyWood - Add the ability to customize settings sources (add / disable / change priority order), #2107 by @kozlek
 - Fix mypy complaints about most custom pydantic types, #2098 by @PrettyWood
 - Add a Hypothesis plugin for easier property-based testing with Pydantic's custom types - usage details here, #2097 by @Zac-HD
 - add validator for 
None,NoneTypeorLiteral[None], #2095 by @PrettyWood - Handle properly fields of type 
Callablewith a default value, #2094 by @PrettyWood - Updated 
create_modelreturn type annotation to return type which inherits from__base__argument, #2071 by @uriyyo - Add merged 
json_encodersinheritance, #2064 by @art049 - allow overwriting 
ClassVars in sub-models without having to re-annotate them, #2061 by @layday - add default encoder for 
Patterntype, #2045 by @PrettyWood - Add 
NonNegativeInt,NonPositiveInt,NonNegativeFloat,NonPositiveFloat, #1975 by @mdavis-xyz - Use % for percentage in string format of colors, #1960 by @EdwardBetts
 - Fixed issue causing 
KeyErrorto be raised when building schema from multipleBaseModelwith the same names declared in separate classes, #1912 by @JSextonn - Add 
rediss(Redis over SSL) protocol toRedisDsnAllow URLs withoutuserpart (e.g.,rediss://:pass@localhost), #1911 by @TrDex - Add a new 
frozenboolean parameter toConfig(default:False). Settingfrozen=Truedoes everything thatallow_mutation=Falsedoes, and also generates a__hash__()method for the model. This makes instances of the model potentially hashable if all the attributes are hashable, #1880 by @rhuille - fix schema generation with multiple Enums having the same name, #1857 by @PrettyWood
 - Added support for 13/19 digits VISA credit cards in 
PaymentCardNumbertype, #1416 by @AlexanderSov - fix: prevent 
RecursionErrorwhile using recursiveGenericModels, #1370 by @xppt - use 
enumfortyping.Literalin JSON schema, #1350 by @PrettyWood - Fix: some recursive models did not require 
update_forward_refsand silently behaved incorrectly, #1201 by @PrettyWood - Fix bug where generic models with fields where the typevar is nested in another type 
a: List[T]are considered to be concrete. This allows these models to be subclassed and composed as expected, #947 by @daviskirk - Add 
Config.copy_on_model_validationflag. When set toFalse, pydantic will keep models used as fields untouched on validation instead of reconstructing (copying) them, #265 by @PrettyWood 
v1.7.4 (2021-05-11)¶
- Security fix: Fix 
dateanddatetimeparsing so passing either'infinity'orfloat('inf')(or their negative values) does not cause an infinite loop, See security advisory CVE-2021-29510 
v1.7.3 (2020-11-30)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen, @meadsteve for their kind support.
- fix: set right default value for required (optional) fields, #2142 by @PrettyWood
 - fix: support 
underscore_attrs_are_privatewith generic models, #2138 by @PrettyWood - fix: update all modified field values in 
root_validatorwhenvalidate_assignmentis on, #2116 by @PrettyWood - Allow pickling of 
pydantic.dataclasses.dataclassdynamically created from a built-indataclasses.dataclass, #2111 by @aimestereo - Fix a regression where Enum fields would not propagate keyword arguments to the schema, #2109 by @bm424
 - Ignore 
__doc__as private attribute whenConfig.underscore_attrs_are_privateis set, #2090 by @PrettyWood 
v1.7.2 (2020-11-01)¶
- fix slow 
GenericModelconcrete model creation, allowGenericModelconcrete name reusing in module, #2078 by @Bobronium - keep the order of the fields when 
validate_assignmentis set, #2073 by @PrettyWood - forward all the params of the stdlib 
dataclasswhen converted into pydanticdataclass, #2065 by @PrettyWood 
v1.7.1 (2020-10-28)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api, @mkeen for their kind support.
- fix annotation of 
validate_argumentswhen passing configuration as argument, #2055 by @layday - Fix mypy assignment error when using 
PrivateAttr, #2048 by @aphedges - fix 
underscore_attrs_are_privatecausingTypeErrorwhen overriding__init__, #2047 by @samuelcolvin - Fixed regression introduced in v1.7 involving exception handling in field validators when 
validate_assignment=True, #2044 by @johnsabath - fix: pydantic 
dataclasscan inherit from stdlibdataclassandConfig.arbitrary_types_allowedis supported, #2042 by @PrettyWood 
v1.7 (2020-10-26)¶
Thank you to pydantic's sponsors: @timdrijvers, @BCarley, @chdsbd, @tiangolo, @matin, @linusg, @kevinalh, @jorgecarleitao, @koxudaxi, @primer-api for their kind support.
Highlights¶
- Python 3.9 support, thanks @PrettyWood
 - Private model attributes, thanks @Bobronium
 - "secrets files" support in 
BaseSettings, thanks @mdgilene - convert stdlib dataclasses to pydantic dataclasses and use stdlib dataclasses in models, thanks @PrettyWood
 
Changes¶
- Breaking Change: remove 
__field_defaults__, adddefault_factorysupport withBaseModel.construct. Use.get_default()method on fields in__fields__attribute instead, #1732 by @PrettyWood - Rearrange CI to run linting as a separate job, split install recipes for different tasks, #2020 by @samuelcolvin
 - Allows subclasses of generic models to make some, or all, of the superclass's type parameters concrete, while also defining new type parameters in the subclass, #2005 by @choogeboom
 - Call validator with the correct 
valuesparameter type inBaseModel.__setattr__, whenvalidate_assignment = Truein model config, #1999 by @me-ransh - Force 
fields.Undefinedto be a singleton object, fixing inherited generic model schemas, #1981 by @daviskirk - Include tests in source distributions, #1976 by @sbraz
 - Add ability to use 
min_length/max_lengthconstraints with secret types, #1974 by @uriyyo - Also check 
root_validatorswhenvalidate_assignmentis on, #1971 by @PrettyWood - Fix const validators not running when custom validators are present, #1957 by @hmvp
 - add 
dequeto field types, #1935 by @wozniakty - add basic support for Python 3.9, #1832 by @PrettyWood
 - Fix typo in the anchor of exporting_models.md#modelcopy and incorrect description, #1821 by @KimMachineGun
 - Added ability for 
BaseSettingsto read "secret files", #1820 by @mdgilene - add 
parse_raw_asutility function, #1812 by @PrettyWood - Support home directory relative paths for 
dotenvfiles (e.g.~/.env), #1803 by @PrettyWood - Clarify documentation for 
parse_fileto show that the argument should be a file path not a file-like object, #1794 by @mdavis-xyz - Fix false positive from mypy plugin when a class nested within a 
BaseModelis namedModel, #1770 by @selimb - add basic support of Pattern type in schema generation, #1767 by @PrettyWood
 - Support custom title, description and default in schema of enums, #1748 by @PrettyWood
 - Properly represent 
LiteralEnums whenuse_enum_valuesis True, #1747 by @noelevans - Allows timezone information to be added to strings to be formatted as time objects. Permitted formats are 
Zfor UTC or an offset for absolute positive or negative time shifts. Or the timezone data can be omitted, #1744 by @noelevans - Add stub 
__init__with Python 3.6 signature forForwardRef, #1738 by @sirtelemak - Fix behaviour with forward refs and optional fields in nested models, #1736 by @PrettyWood
 - add 
EnumandIntEnumas valid types for fields, #1735 by @PrettyWood - Change default value of 
__module__argument ofcreate_modelfromNoneto'pydantic.main'. Set reference of created concrete model to it's module to allow pickling (not applied to models created in functions), #1686 by @Bobronium - Add private attributes support, #1679 by @Bobronium
 - add 
configto@validate_arguments, #1663 by @samuelcolvin - Allow descendant Settings models to override env variable names for the fields defined in parent Settings models with
  
envin theirConfig. Previously onlyenv_prefixconfiguration option was applicable, #1561 by @ojomio - Support 
ref_templatewhen creating schema$refs, #1479 by @kilo59 - Add a 
__call__stub toPyObjectso that mypy will know that it is callable, #1352 by @brianmaissy pydantic.dataclasses.dataclassdecorator now supports built-indataclasses.dataclass. It is hence possible to convert an existingdataclasseasily to add Pydantic validation. Moreover nested dataclasses are also supported, #744 by @PrettyWood
v1.6.2 (2021-05-11)¶
- Security fix: Fix 
dateanddatetimeparsing so passing either'infinity'orfloat('inf')(or their negative values) does not cause an infinite loop, See security advisory CVE-2021-29510 
v1.6.1 (2020-07-15)¶
- fix validation and parsing of nested models with 
default_factory, #1710 by @PrettyWood 
v1.6 (2020-07-11)¶
Thank you to pydantic's sponsors: @matin, @tiangolo, @chdsbd, @jorgecarleitao, and 1 anonymous sponsor for their kind support.
- Modify validators for 
conlistandconsetto not havealways=True, #1682 by @samuelcolvin - add port check to 
AnyUrl(can't exceed 65536) ports are 16 unsigned bits:0 <= port <= 2**16-1src: rfc793 header format, #1654 by @flapili - Document default 
regexanchoring semantics, #1648 by @yurikhan - Use 
chain.from_iterablein class_validators.py. This is a faster and more idiomatic way of usingitertools.chain. Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never stored as a huge list. This can save on both runtime and memory space, #1642 by @cool-RR - Add 
conset(), analogous toconlist(), #1623 by @patrickkwang - make Pydantic errors (un)pickable, #1616 by @PrettyWood
 - Allow custom encoding for 
dotenvfiles, #1615 by @PrettyWood - Ensure 
SchemaExtraCallableis always defined to get type hints on BaseConfig, #1614 by @PrettyWood - Update datetime parser to support negative timestamps, #1600 by @mlbiche
 - Update mypy, remove 
AnyTypealias forType[Any], #1598 by @samuelcolvin - Adjust handling of root validators so that errors are aggregated from all failing root validators, instead of reporting on only the first root validator to fail, #1586 by @beezee
 - Make 
__modify_schema__on Enums apply to the enum schema rather than fields that use the enum, #1581 by @therefromhere - Fix behavior of 
__all__key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, #1579 by @xspirus - Subclass validators do not run when referencing a 
Listfield defined in a parent class wheneach_item=True. Added an example to the docs illustrating this, #1566 by @samueldeklund - change 
schema.field_class_to_schemato supportfrozensetin schema, #1557 by @wangpeibao - Call 
__modify_schema__only for the field schema, #1552 by @PrettyWood - Move the assignment of 
field.validate_alwaysinfields.pyso thealwaysparameter of validators work on inheritance, #1545 by @dcHHH - Added support for UUID instantiation through 16 byte strings such as 
b'\x12\x34\x56\x78' * 4. This was done to supportBINARY(16)columns in sqlalchemy, #1541 by @shawnwall - Add a test assertion that 
default_factorycan return a singleton, #1523 by @therefromhere - Add 
NameEmail.__eq__so duplicateNameEmailinstances are evaluated as equal, #1514 by @stephen-bunn - Add datamodel-code-generator link in pydantic document site, #1500 by @koxudaxi
 - Added a "Discussion of Pydantic" section to the documentation, with a link to "Pydantic Introduction" video by Alexander Hultnér, #1499 by @hultner
 - Avoid some side effects of 
default_factoryby calling it only once if possible and by not setting a default value in the schema, #1491 by @PrettyWood - Added docs about dumping dataclasses to JSON, #1487 by @mikegrima
 - Make 
BaseModel.__signature__class-only, so getting__signature__from model instance will raiseAttributeError, #1466 by @Bobronium - include 
'format': 'password'in the schema for secret types, #1424 by @atheuz - Modify schema constraints on 
ConstrainedFloatso thatexclusiveMinimumand minimum are not included in the schema if they are equal to-math.infandexclusiveMaximumandmaximumare not included if they are equal tomath.inf, #1417 by @vdwees - Squash internal 
__root__dicts in.dict()(and, by extension, in.json()), #1414 by @patrickkwang - Move 
constvalidator to post-validators so it validates the parsed value, #1410 by @selimb - Fix model validation to handle nested literals, e.g. 
Literal['foo', Literal['bar']], #1364 by @DBCerigo - Remove 
user_required = TruefromRedisDsn, neither user nor password are required, #1275 by @samuelcolvin - Remove extra 
allOffrom schema for fields withUnionand customField, #1209 by @mostaphaRoudsari - Updates OpenAPI schema generation to output all enums as separate models.
  Instead of inlining the enum values in the model schema, models now use a 
$refproperty to point to the enum definition, #1173 by @calvinwyoung 
v1.5.1 (2020-04-23)¶
- Signature generation with 
extra: allownever uses a field name, #1418 by @prettywood - Avoid mutating 
Fielddefault value, #1412 by @prettywood 
v1.5 (2020-04-18)¶
- Make includes/excludes arguments for 
.dict(),._iter(), ..., immutable, #1404 by @AlexECX - Always use a field's real name with includes/excludes in 
model._iter(), regardless ofby_alias, #1397 by @AlexECX - Update constr regex example to include start and end lines, #1396 by @lmcnearney
 - Confirm that shallow 
model.copy()does make a shallow copy of attributes, #1383 by @samuelcolvin - Renaming 
model_nameargument ofmain.create_model()to__model_nameto allow usingmodel_nameas a field name, #1367 by @kittipatv - Replace raising of exception to silent passing for non-Var attributes in mypy plugin, #1345 by @b0g3r
 - Remove 
typing_extensionsdependency for Python 3.8, #1342 by @prettywood - Make 
SecretStrandSecretBytesinitialization idempotent, #1330 by @atheuz - document making secret types dumpable using the json method, #1328 by @atheuz
 - Move all testing and build to github actions, add windows and macos binaries, thank you @StephenBrown2 for much help, #1326 by @samuelcolvin
 - fix card number length check in 
PaymentCardNumber,PaymentCardBrandnow inherits fromstr, #1317 by @samuelcolvin - Have 
BaseModelinherit fromRepresentationto make mypy happy when overriding__str__, #1310 by @FuegoFro - Allow 
Noneas input to all optional list fields, #1307 by @prettywood - Add 
datetimefield todefault_factoryexample, #1301 by @StephenBrown2 - Allow subclasses of known types to be encoded with superclass encoder, #1291 by @StephenBrown2
 - Exclude exported fields from all elements of a list/tuple of submodels/dicts with 
'__all__', #1286 by @masalim2 - Add pydantic.color.Color objects as available input for Color fields, #1258 by @leosussan
 - In examples, type nullable fields as 
Optional, so that these are valid mypy annotations, #1248 by @kokes - Make 
pattern_validator()accept pre-compiledPatternobjects. Fixstr_validator()return type tostr, #1237 by @adamgreg - Document how to manage Generics and inheritance, #1229 by @esadruhn
 update_forward_refs()method of BaseModel now copies__dict__of class module instead of modifying it, #1228 by @paul-ilyin- Support instance methods and class methods with 
@validate_arguments, #1222 by @samuelcolvin - Add 
default_factoryargument toFieldto create a dynamic default value by passing a zero-argument callable, #1210 by @prettywood - add support for 
NewTypeofList,Optional, etc, #1207 by @Kazy - fix mypy signature for 
root_validator, #1192 by @samuelcolvin - Fixed parsing of nested 'custom root type' models, #1190 by @Shados
 - Add 
validate_argumentsfunction decorator which checks the arguments to a function matches type annotations, #1179 by @samuelcolvin - Add 
__signature__to models, #1034 by @Bobronium - Refactor 
._iter()method, 10x speed boost fordict(model), #1017 by @Bobronium 
v1.4 (2020-01-24)¶
- Breaking Change: alias precedence logic changed so aliases on a field always take priority over
  an alias from 
alias_generatorto avoid buggy/unexpected behaviour, see here for details, #1178 by @samuelcolvin - Add support for unicode and punycode in TLDs, #1182 by @jamescurtin
 - Fix 
clsargument in validators during assignment, #1172 by @samuelcolvin - completing Luhn algorithm for 
PaymentCardNumber, #1166 by @cuencandres - add support for generics that implement 
__get_validators__like a custom data type, #1159 by @tiangolo - add support for infinite generators with 
Iterable, #1152 by @tiangolo - fix 
url_regexto accept schemas with+,-and.after the first character, #1142 by @samuelcolvin - move 
version_info()toversion.py, suggest its use in issues, #1138 by @samuelcolvin - Improve pydantic import time by roughly 50% by deferring some module loading and regex compilation, #1127 by @samuelcolvin
 - Fix 
EmailStrandNameEmailto accept instances of themselves in cython, #1126 by @koxudaxi - Pass model class to the 
Config.schema_extracallable, #1125 by @therefromhere - Fix regex for username and password in URLs, #1115 by @samuelcolvin
 - Add support for nested generic models, #1104 by @dmontagu
 - add 
__all__to__init__.pyto prevent "implicit reexport" errors from mypy, #1072 by @samuelcolvin - Add support for using "dotenv" files with 
BaseSettings, #1011 by @acnebs 
v1.3 (2019-12-21)¶
- Change 
schemaandschema_modelto handle dataclasses by using their__pydantic_model__feature, #792 by @aviramha - Added option for 
root_validatorto be skipped if values validation fails using keywordskip_on_failure=True, #1049 by @aviramha - Allow 
Config.schema_extrato be a callable so that the generated schema can be post-processed, #1054 by @selimb - Update mypy to version 0.750, #1057 by @dmontagu
 - Trick Cython into allowing str subclassing, #1061 by @skewty
 - Prevent type attributes being added to schema unless the attribute 
__schema_attributes__isTrue, #1064 by @samuelcolvin - Change 
BaseModel.parse_fileto useConfig.json_loads, #1067 by @kierandarcy - Fix for optional 
Jsonfields, #1073 by @volker48 - Change the default number of threads used when compiling with cython to one,
  allow override via the 
CYTHON_NTHREADSenvironment variable, #1074 by @samuelcolvin - Run FastAPI tests during Pydantic's CI tests, #1075 by @tiangolo
 - My mypy strictness constraints, and associated tweaks to type annotations, #1077 by @samuelcolvin
 - Add 
__eq__to SecretStr and SecretBytes to allow "value equals", #1079 by @sbv-trueenergy - Fix schema generation for nested None case, #1088 by @lutostag
 - Consistent checks for sequence like objects, #1090 by @samuelcolvin
 - Fix 
Configinheritance onBaseSettingswhen used withenv_prefix, #1091 by @samuelcolvin - Fix for 
__modify_schema__when it conflicted withfield_class_to_schema*, #1102 by @samuelcolvin - docs: Fix explanation of case sensitive environment variable names when populating 
BaseSettingssubclass attributes, #1105 by @tribals - Rename django-rest-framework benchmark in documentation, #1119 by @frankie567
 
v1.2 (2019-11-28)¶
- Possible Breaking Change: Add support for required 
Optionalwithname: Optional[AnyType] = Field(...)and refactorModelFieldcreation to preserverequiredparameter value, #1031 by @tiangolo; see here for details - Add benchmarks for 
cattrs, #513 by @sebastianmika - Add 
exclude_noneoption todict()and friends, #587 by @niknetniko - Add benchmarks for 
valideer, #670 by @gsakkis - Add 
parse_obj_asandparse_file_asfunctions for ad-hoc parsing of data into arbitrary pydantic-compatible types, #934 by @dmontagu - Add 
allow_reuseargument to validators, thus allowing validator reuse, #940 by @dmontagu - Add support for mapping types for custom root models, #958 by @dmontagu
 - Mypy plugin support for dataclasses, #966 by @koxudaxi
 - Add support for dataclasses default factory, #968 by @ahirner
 - Add a 
ByteSizetype for converting byte string (1GB) to plain bytes, #977 by @dgasmith - Fix mypy complaint about 
@root_validator(pre=True), #984 by @samuelcolvin - Add manylinux binaries for Python 3.8 to pypi, also support manylinux2010, #994 by @samuelcolvin
 - Adds ByteSize conversion to another unit, #995 by @dgasmith
 - Fix 
__str__and__repr__inheritance for models, #1022 by @samuelcolvin - add testimonials section to docs, #1025 by @sullivancolin
 - Add support for 
typing.Literalfor Python 3.8, #1026 by @dmontagu 
v1.1.1 (2019-11-20)¶
- Fix bug where use of complex fields on sub-models could cause fields to be incorrectly configured, #1015 by @samuelcolvin
 
v1.1 (2019-11-07)¶
- Add a mypy plugin for type checking 
BaseModel.__init__and more, #722 by @dmontagu - Change return type typehint for 
GenericModel.__class_getitem__to prevent PyCharm warnings, #936 by @dmontagu - Fix usage of 
Anyto allowNone, also supportTypeVarthus allowing use of un-parameterised collection types e.g.DictandList, #962 by @samuelcolvin - Set 
FieldInfoon subfields to fix schema generation for complex nested types, #965 by @samuelcolvin 
v1.0 (2019-10-23)¶
- Breaking Change: deprecate the 
Model.fieldsproperty, useModel.__fields__instead, #883 by @samuelcolvin - Breaking Change: Change the precedence of aliases so child model aliases override parent aliases,
  including using 
alias_generator, #904 by @samuelcolvin - Breaking change: Rename 
skip_defaultstoexclude_unset, and add ability to exclude actual defaults, #915 by @dmontagu - Add 
**kwargstopydantic.main.ModelMetaclass.__new__so__init_subclass__can take custom parameters on extendedBaseModelclasses, #867 by @retnikt - Fix field of a type that has a default value, #880 by @koxudaxi
 - Use 
FutureWarninginstead ofDeprecationWarningwhenaliasinstead ofenvis used for settings models, #881 by @samuelcolvin - Fix issue with 
BaseSettingsinheritance andaliasgetting set toNone, #882 by @samuelcolvin - Modify 
__repr__and__str__methods to be consistent across all public classes, add__pretty__to support python-devtools, #884 by @samuelcolvin - deprecation warning for 
case_insensitiveonBaseSettingsconfig, #885 by @samuelcolvin - For 
BaseSettingsmerge environment variables and in-code values recursively, as long as they create a valid object when merged together, to allow splitting init arguments, #888 by @idmitrievsky - change secret types example, #890 by @ashears
 - Change the signature of 
Model.construct()to be more user-friendly, documentconstruct()usage, #898 by @samuelcolvin - Add example for the 
construct()method, #907 by @ashears - Improve use of 
Fieldconstraints on complex types, raise an error if constraints are not enforceable, also support tuples with an ellipsisTuple[X, ...],SequenceandFrozenSetin schema, #909 by @samuelcolvin - update docs for bool missing valid value, #911 by @trim21
 - Better 
str/reprlogic forModelField, #912 by @samuelcolvin - Fix 
ConstrainedList, update schema generation to reflectmin_itemsandmax_itemsField()arguments, #917 by @samuelcolvin - Allow abstracts sets (eg. dict keys) in the 
includeandexcludearguments ofdict(), #921 by @samuelcolvin - Fix JSON serialization errors on 
ValidationError.json()by usingpydantic_encoder, #922 by @samuelcolvin - Clarify usage of 
remove_untouched, improve error message for types with no validators, #926 by @retnikt 
v1.0b2 (2019-10-07)¶
- Mark 
StrictBooltypecheck asboolto allow for default values without mypy errors, #690 by @dmontagu - Transfer the documentation build from sphinx to mkdocs, re-write much of the documentation, #856 by @samuelcolvin
 - Add support for custom naming schemes for 
GenericModelsubclasses, #859 by @dmontagu - Add 
if TYPE_CHECKING:to the excluded lines for test coverage, #874 by @dmontagu - Rename 
allow_population_by_aliastoallow_population_by_field_name, remove unnecessary warning about it, #875 by @samuelcolvin 
v1.0b1 (2019-10-01)¶
- Breaking Change: rename 
SchematoField, make it a function to placate mypy, #577 by @samuelcolvin - Breaking Change: modify parsing behavior for 
bool, #617 by @dmontagu - Breaking Change: 
get_validatorsis no longer recognised, use__get_validators__.Config.ignore_extraandConfig.allow_extraare no longer recognised, useConfig.extra, #720 by @samuelcolvin - Breaking Change: modify default config settings for 
BaseSettings;case_insensitiverenamed tocase_sensitive, default changed tocase_sensitive = False,env_prefixdefault changed to''- e.g. no prefix, #721 by @dmontagu - Breaking change: Implement 
root_validatorand rename root errors from__obj__to__root__, #729 by @samuelcolvin - Breaking Change: alter the behaviour of 
dict(model)so that sub-models are nolonger converted to dictionaries, #733 by @samuelcolvin - Breaking change: Added 
initvarssupport topost_init_post_parse, #748 by @Raphael-C-Almeida - Breaking Change: Make 
BaseModel.json()only serialize the__root__key for models with custom root, #752 by @dmontagu - Breaking Change: complete rewrite of 
URLparsing logic, #755 by @samuelcolvin - Breaking Change: preserve superclass annotations for field-determination when not provided in subclass, #757 by @dmontagu
 - Breaking Change: 
BaseSettingsnow uses the specialenvsettings to define which environment variables to read, not aliases, #847 by @samuelcolvin - add support for 
assertstatements inside validators, #653 by @abdusco - Update documentation to specify the use of 
pydantic.dataclasses.dataclassand subclassingpydantic.BaseModel, #710 by @maddosaurus - Allow custom JSON decoding and encoding via 
json_loadsandjson_dumpsConfigproperties, #714 by @samuelcolvin - make all annotated fields occur in the order declared, #715 by @dmontagu
 - use pytest to test 
mypyintegration, #735 by @dmontagu - add 
__repr__method toErrorWrapper, #738 by @samuelcolvin - Added support for 
FrozenSetmembers in dataclasses, and a better error when attempting to use types from thetypingmodule that are not supported by Pydantic, #745 by @djpetti - add documentation for Pycharm Plugin, #750 by @koxudaxi
 - fix broken examples in the docs, #753 by @dmontagu
 - moving typing related objects into 
pydantic.typing, #761 by @samuelcolvin - Minor performance improvements to 
ErrorWrapper,ValidationErrorand datetime parsing, #763 by @samuelcolvin - Improvements to 
datetime/date/time/timedeltatypes: more descriptive errors, change errors tovalue_errornottype_error, support bytes, #766 by @samuelcolvin - fix error messages for 
Literaltypes with multiple allowed values, #770 by @dmontagu - Improved auto-generated 
titlefield in JSON schema by converting underscore to space, #772 by @skewty - support 
mypy --no-implicit-reexportfor dataclasses, also respect--no-implicit-reexportin pydantic itself, #783 by @samuelcolvin - add the 
PaymentCardNumbertype, #790 by @matin - Fix const validations for lists, #794 by @hmvp
 - Set 
additionalPropertiesto false in schema for models with extra fields disallowed, #796 by @Code0x58 EmailStrvalidation method now returns local part case-sensitive per RFC 5321, #798 by @henriklindgren- Added ability to validate strictness to 
ConstrainedFloat,ConstrainedIntandConstrainedStrand addedStrictFloatandStrictIntclasses, #799 by @DerRidda - Improve handling of 
NoneandOptional, replacewholewitheach_item(inverse meaning, defaultFalse) on validators, #803 by @samuelcolvin - add support for 
Type[T]type hints, #807 by @timonbimon - Performance improvements from removing 
change_exceptions, change how pydantic error are constructed, #819 by @samuelcolvin - Fix the error message arising when a 
BaseModel-type model field causes aValidationErrorduring parsing, #820 by @dmontagu - allow 
getter_dictonConfig, modifyGetterDictto be more like aMappingobject and thus easier to work with, #821 by @samuelcolvin - Only check 
TypeVarparam on baseGenericModelclass, #842 by @zpencerq - rename 
Model._schema_cache->Model.__schema_cache__,Model._json_encoder->Model.__json_encoder__,Model._custom_root_type->Model.__custom_root_type__, #851 by @samuelcolvin 
v0.32.2 (2019-08-17)¶
(Docs are available here)
- fix 
__post_init__usage with dataclass inheritance, fix #739 by @samuelcolvin - fix required fields validation on GenericModels classes, #742 by @amitbl
 - fix defining custom 
SchemaonGenericModelfields, #754 by @amitbl 
v0.32.1 (2019-08-08)¶
- do not validate extra fields when 
validate_assignmentis on, #724 by @YaraslauZhylko 
v0.32 (2019-08-06)¶
- add model name to 
ValidationErrorerror message, #676 by @dmontagu - breaking change: remove 
__getattr__and rename__values__to__dict__onBaseModel, deprecation warning on use__values__attr, attributes access speed increased up to 14 times, #712 by @Bobronium - support 
ForwardRef(without self-referencing annotations) in Python 3.6, #706 by @koxudaxi - implement 
schema_extrainConfigsub-class, #663 by @tiangolo 
v0.31.1 (2019-07-31)¶
v0.31 (2019-07-24)¶
- better support for floating point 
multiple_ofvalues, #652 by @justindujardin - fix schema generation for 
NewTypeandLiteral, #649 by @dmontagu - fix 
alias_generatorand field config conflict, #645 by @gmetzker and #658 by @Bobronium - more detailed message for 
EnumError, #673 by @dmontagu - add advanced exclude support for 
dict,jsonandcopy, #648 by @Bobronium - fix bug in 
GenericModelfor models with concrete parameterized fields, #672 by @dmontagu - add documentation for 
Literaltype, #651 by @dmontagu - add 
Config.keep_untouchedfor custom descriptors support, #679 by @Bobronium - use 
inspect.cleandocinternally to get model description, #657 by @tiangolo - add 
Colorto schema generation, by @euri10 - add documentation for Literal type, #651 by @dmontagu
 
v0.30.1 (2019-07-15)¶
- fix so nested classes which inherit and change 
__init__are correctly processed while still allowingselfas a parameter, #644 by @lnaden and @dgasmith 
v0.30 (2019-07-07)¶
- enforce single quotes in code, #612 by @samuelcolvin
 - fix infinite recursion with dataclass inheritance and 
__post_init__, #606 by @Hanaasagi - fix default values for 
GenericModel, #610 by @dmontagu - clarify that self-referencing models require Python 3.7+, #616 by @vlcinsky
 - fix truncate for types, #611 by @dmontagu
 - add 
alias_generatorsupport, #622 by @Bobronium - fix unparameterized generic type schema generation, #625 by @dmontagu
 - fix schema generation with multiple/circular references to the same model, #621 by @tiangolo and @wongpat
 - support custom root types, #628 by @koxudaxi
 - support 
selfas a field name inparse_obj, #632 by @samuelcolvin 
v0.29 (2019-06-19)¶
- support dataclasses.InitVar, #592 by @pfrederiks
 - Updated documentation to elucidate the usage of 
Unionwhen defining multiple types under an attribute's annotation and showcase how the type-order can affect marshalling of provided values, #594 by @somada141 - add 
conlisttype, #583 by @hmvp - add support for generics, #595 by @dmontagu
 
v0.28 (2019-06-06)¶
- fix support for JSON Schema generation when using models with circular references in Python 3.7, #572 by @tiangolo
 - support 
__post_init_post_parse__on dataclasses, #567 by @sevaho - allow dumping dataclasses to JSON, #575 by @samuelcolvin and @DanielOberg
 - ORM mode, #562 by @samuelcolvin
 - fix 
pydantic.compiledon ipython, #573 by @dmontagu and @samuelcolvin - add 
StrictBooltype, #579 by @cazgp 
v0.27 (2019-05-30)¶
- breaking change  
_pydantic_post_initto execute dataclass' original__post_init__before validation, #560 by @HeavenVolkoff - fix handling of generic types without specified parameters, #550 by @dmontagu
 - breaking change (maybe): this is the first release compiled with cython, see the docs and please submit an issue if you run into problems
 
v0.27.0a1 (2019-05-26)¶
- fix JSON Schema for 
list,tuple, andset, #540 by @tiangolo - compiling with cython, 
manylinuxbinaries, some other performance improvements, #548 by @samuelcolvin 
v0.26 (2019-05-22)¶
- fix to schema generation for 
IPvAnyAddress,IPvAnyInterface,IPvAnyNetwork#498 by @pilosus - fix variable length tuples support, #495 by @pilosus
 - fix return type hint for 
create_model, #526 by @dmontagu - Breaking Change: fix 
.dict(skip_keys=True)skipping values set via alias (this involves changingvalidate_model()to always returnsTuple[Dict[str, Any], Set[str], Optional[ValidationError]]), #517 by @sommd - fix to schema generation for 
IPv4Address,IPv6Address,IPv4Interface,IPv6Interface,IPv4Network,IPv6Network#532 by @euri10 - add 
Colortype, #504 by @pilosus and @samuelcolvin 
v0.25 (2019-05-05)¶
- Improve documentation on self-referencing models and annotations, #487 by @theenglishway
 - fix 
.dict()with extra keys, #490 by @JaewonKim - support 
constkeyword inSchema, #434 by @Sean1708 
v0.24 (2019-04-23)¶
- fix handling 
ForwardRefin sub-types, likeUnion, #464 by @tiangolo - fix secret serialization, #465 by @atheuz
 - Support custom validators for dataclasses, #454 by @primal100
 - fix 
parse_objto cope with dict-like objects, #472 by @samuelcolvin - fix to schema generation in nested dataclass-based models, #474 by @NoAnyLove
 - fix 
jsonforPath,FilePath, andDirectoryPathobjects, #473 by @mikegoodspeed 
v0.23 (2019-04-04)¶
- improve documentation for contributing section, #441 by @pilosus
 - improve README.rst to include essential information about the package, #446 by @pilosus
 IntEnumsupport, #444 by @potykion- fix PyObject callable value, #409 by @pilosus
 - fix 
blackdeprecation warnings after update, #451 by @pilosus - fix 
ForwardRefcollection bug, #450 by @tigerwings - Support specialized 
ClassVars, #455 by @tyrylu - fix JSON serialization for 
ipaddresstypes, #333 by @pilosus - add 
SecretStrandSecretBytestypes, #452 by @atheuz 
v0.22 (2019-03-29)¶
- add 
IPv{4,6,Any}NetworkandIPv{4,6,Any}Interfacetypes fromipaddressstdlib, #333 by @pilosus - add docs for 
datetimetypes, #386 by @pilosus - fix to schema generation in dataclass-based models, #408 by @pilosus
 - fix path in nested models, #437 by @kataev
 - add 
Sequencesupport, #304 by @pilosus 
v0.21.0 (2019-03-15)¶
- fix typo in 
NoneIsNotAllowedErrormessage, #414 by @YaraslauZhylko - add 
IPvAnyAddress,IPv4AddressandIPv6Addresstypes, #333 by @pilosus 
v0.20.1 (2019-02-26)¶
- fix type hints of 
parse_objand similar methods, #405 by @erosennin - fix submodel validation, #403 by @samuelcolvin
 - correct type hints for 
ValidationError.json, #406 by @layday 
v0.20.0 (2019-02-18)¶
- fix tests for Python 3.8, #396 by @samuelcolvin
 - Adds fields to the 
dirmethod for autocompletion in interactive sessions, #398 by @dgasmith - support 
ForwardRef(and thereforefrom __future__ import annotations) with dataclasses, #397 by @samuelcolvin 
v0.20.0a1 (2019-02-13)¶
- breaking change (maybe): more sophisticated argument parsing for validators, any subset of
  
values,configandfieldis now permitted, eg.(cls, value, field), however the variadic key word argument ("**kwargs") must be calledkwargs, #388 by @samuelcolvin - breaking change: Adds 
skip_defaultsargument toBaseModel.dict()to allow skipping of fields that were not explicitly set, signature ofModel.construct()changed, #389 by @dgasmith - add 
py.typedmarker file for PEP-561 support, #391 by @je-l - Fix 
extrabehaviour for multiple inheritance/mix-ins, #394 by @YaraslauZhylko 
v0.19.0 (2019-02-04)¶
- Support 
Callabletype hint, fix #279 by @proofit404 - Fix schema for fields with 
validatordecorator, fix #375 by @tiangolo - Add 
multiple_ofconstraint toConstrainedDecimal,ConstrainedFloat,ConstrainedIntand their related typescondecimal,confloat, andconint#371, thanks @StephenBrown2 - Deprecated 
ignore_extraandallow_extraConfig fields in favor ofextra, #352 by @liiight - Add type annotations to all functions, test fully with mypy, #373 by @samuelcolvin
 - fix for 'missing' error with 
validate_allorvalidate_always, #381 by @samuelcolvin - Change the second/millisecond watershed for date/datetime parsing to 
2e10, #385 by @samuelcolvin 
v0.18.2 (2019-01-22)¶
- Fix to schema generation with 
Optionalfields, fix #361 by @samuelcolvin 
v0.18.1 (2019-01-17)¶
- add 
ConstrainedBytesandconbytestypes, #315 @Gr1N - adding 
MANIFEST.into include license in package.tar.gz, #358 by @samuelcolvin 
v0.18.0 (2019-01-13)¶
- breaking change: don't call validators on keys of dictionaries, #254 by @samuelcolvin
 - Fix validators with 
always=Truewhen the default isNoneor the type is optional, also preventwholevalidators being called for sub-fields, fix #132 by @samuelcolvin - improve documentation for settings priority and allow it to be easily changed, #343 by @samuelcolvin
 - fix 
ignore_extra=Falseandallow_population_by_alias=True, fix #257 by @samuelcolvin - breaking change: Set 
BaseConfigattributesmin_anystr_lengthandmax_anystr_lengthtoNoneby default, fix #349 in #350 by @tiangolo - add support for postponed annotations, #348 by @samuelcolvin
 
v0.17.0 (2018-12-27)¶
- fix schema for 
timedeltaas number, #325 by @tiangolo - prevent validators being called repeatedly after inheritance, #327 by @samuelcolvin
 - prevent duplicate validator check in ipython, fix #312 by @samuelcolvin
 - add "Using Pydantic" section to docs, #323 by @tiangolo & #326 by @samuelcolvin
 - fix schema generation for fields annotated as 
: dict,: list,: tupleand: set, #330 & #335 by @nkonin - add support for constrained strings as dict keys in schema, #332 by @tiangolo
 - support for passing Config class in dataclasses decorator, #276 by @jarekkar
  (breaking change: this supersedes the 
validate_assignmentargument withconfig) - support for nested dataclasses, #334 by @samuelcolvin
 - better errors when getting an 
ImportErrorwithPyObject, #309 by @samuelcolvin - rename 
get_validatorsto__get_validators__, deprecation warning on use of old name, #338 by @samuelcolvin - support 
ClassVarby excluding such attributes from fields, #184 by @samuelcolvin 
v0.16.1 (2018-12-10)¶
- fix 
create_modelto correctly use the passed__config__, #320 by @hugoduncan 
v0.16.0 (2018-12-03)¶
- breaking change: refactor schema generation to be compatible with JSON Schema and OpenAPI specs, #308 by @tiangolo
 - add 
schematoschemamodule to generate top-level schemas from base models, #308 by @tiangolo - add additional fields to 
Schemaclass to declare validation forstrand numeric values, #311 by @tiangolo - rename 
_schematoschemaon fields, #318 by @samuelcolvin - add 
case_insensitiveoption toBaseSettingsConfig, #277 by @jasonkuhrt 
v0.15.0 (2018-11-18)¶
- move codebase to use black, #287 by @samuelcolvin
 - fix alias use in settings, #286 by @jasonkuhrt and @samuelcolvin
 - fix datetime parsing in 
parse_date, #298 by @samuelcolvin - allow dataclass inheritance, fix #293 by @samuelcolvin
 - fix 
PyObject = None, fix #305 by @samuelcolvin - allow 
Patterntype, fix #303 by @samuelcolvin 
v0.14.0 (2018-10-02)¶
- dataclasses decorator, #269 by @Gaunt and @samuelcolvin
 
v0.13.1 (2018-09-21)¶
- fix issue where int_validator doesn't cast a 
boolto anint#264 by @nphyatt - add deep copy support for 
BaseModel.copy()#249, @gangefors 
v0.13.0 (2018-08-25)¶
- raise an exception if a field's name shadows an existing 
BaseModelattribute #242 - add 
UrlStrandurlstrtypes #236 - timedelta json encoding ISO8601 and total seconds, custom json encoders #247, by @cfkanesan and @samuelcolvin
 - allow 
timedeltaobjects as values for properties of typetimedelta(matchesdatetimeetc. behavior) #247 
v0.12.1 (2018-07-31)¶
- fix schema generation for fields defined using 
typing.Any#237 
v0.12.0 (2018-07-31)¶
- add 
by_aliasargument in.dict()and.json()model methods #205 - add Json type support #214
 - support tuples #227
 - major improvements and changes to schema #213
 
v0.11.2 (2018-07-05)¶
- add 
NewTypesupport #115 - fix 
list,set&tuplevalidation #225 - separate out 
validate_modelmethod, allow errors to be returned along with valid values #221 
v0.11.1 (2018-07-02)¶
- support Python 3.7 #216, thanks @layday
 - Allow arbitrary types in model #209, thanks @oldPadavan
 
v0.11.0 (2018-06-28)¶
- make 
list,tupleandsettypes stricter #86 - breaking change: remove msgpack parsing #201
 - add 
FilePathandDirectoryPathtypes #10 - model schema generation #190
 - JSON serialization of models and schemas #133
 
v0.10.0 (2018-06-11)¶
- add 
Config.allow_population_by_alias#160, thanks @bendemaree - breaking change: new errors format #179, thanks @Gr1N
 - breaking change: removed 
Config.min_number_sizeandConfig.max_number_size#183, thanks @Gr1N - breaking change: correct behaviour of 
ltandgtarguments toconintetc. #188 for the old behaviour useleandge#194, thanks @jaheba - added error context and ability to redefine error message templates using 
Config.error_msg_templates#183, thanks @Gr1N - fix typo in validator exception #150
 - copy defaults to model values, so different models don't share objects #154
 
v0.9.1 (2018-05-10)¶
- allow custom 
get_field_configon config classes #159 - add 
UUID1,UUID3,UUID4andUUID5types #167, thanks @Gr1N - modify some inconsistent docstrings and annotations #173, thanks @YannLuo
 - fix type annotations for exotic types #171, thanks @Gr1N
 - Reuse type validators in exotic types #171
 - scheduled monthly requirements updates #168
 - add 
Decimal,ConstrainedDecimalandcondecimaltypes #170, thanks @Gr1N 
v0.9.0 (2018-04-28)¶
- tweak email-validator import error message #145
 - fix parse error of 
parse_date()andparse_datetime()when input is 0 #144, thanks @YannLuo - add 
Config.anystr_strip_whitespaceandstrip_whitespacekwarg toconstr, by default values isFalse#163, thanks @Gr1N - add 
ConstrainedFloat,confloat,PositiveFloatandNegativeFloattypes #166, thanks @Gr1N 
v0.8.0 (2018-03-25)¶
- fix type annotation for 
inherit_config#139 - breaking change: check for invalid field names in validators #140
 - validate attributes of parent models #141
 - breaking change: email validation now uses email-validator #142
 
v0.7.1 (2018-02-07)¶
- fix bug with 
create_modelmodifying the base class 
v0.7.0 (2018-02-06)¶
- added compatibility with abstract base classes (ABCs) #123
 - add 
create_modelmethod #113 #125 - breaking change: rename 
.configto.__config__on a model - breaking change: remove deprecated 
.values()on a model, use.dict()instead - remove use of 
OrderedDictand use simple dict #126 - add 
Config.use_enum_values#127 - add wildcard validators of the form 
@validate('*')#128 
v0.6.4 (2018-02-01)¶
- allow Python date and times objects #122
 
v0.6.3 (2017-11-26)¶
- fix direct install without 
README.rstpresent 
v0.6.2 (2017-11-13)¶
- errors for invalid validator use
 - safer check for complex models in 
Settings 
v0.6.1 (2017-11-08)¶
v0.6.0 (2017-11-07)¶
- assignment validation #94, thanks petroswork!
 - JSON in environment variables for complex types, #96
 - add 
validatordecorators for complex validation, #97 - depreciate 
values(...)and replace with.dict(...), #99 
v0.5.0 (2017-10-23)¶
- add 
UUIDvalidation #89 - remove 
indexandtrackfrom error object (json) if they're null #90 - improve the error text when a list is provided rather than a dict #90
 - add benchmarks table to docs #91
 
v0.4.0 (2017-07-08)¶
- show length in string validation error
 - fix aliases in config during inheritance #55
 - simplify error display
 - use unicode ellipsis in 
truncate - add 
parse_obj,parse_rawandparse_filehelper functions #58 - switch annotation only fields to come first in fields list not last
 
v0.3.0 (2017-06-21)¶
- immutable models via 
config.allow_mutation = False, associated cleanup and performance improvement #44 - immutable helper methods 
construct()andcopy()#53 - allow pickling of models #53
 setattris removed as__setattr__is now intelligent #44raise_exceptionremoved, Models now always raise exceptions #44- instance method validators removed
 - django-restful-framework benchmarks added #47
 - fix inheritance bug #49
 - make str type stricter so list, dict etc are not coerced to strings. #52
 - add 
StrictStrwhich only always strings as input #52 
v0.2.1 (2017-06-07)¶
- pypi and travis together messed up the deploy of 
v0.2this should fix it 
v0.2.0 (2017-06-07)¶
- breaking change: 
values()on a model is now a method not a property, takesincludeandexcludearguments - allow annotation only fields to support mypy
 - add pretty 
to_string(pretty=True)method for models 
v0.1.0 (2017-06-03)¶
- add docs
 - add history