chore(deps): update dependency pydantic to v2 - autoclosed
This MR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| pydantic (changelog) |
>=1.9.0,<2.0 -> >=2.11.7,<2.12
|
Release Notes
pydantic/pydantic (pydantic)
v2.11.7
What's Changed
Fixes
v2.11.6
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
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
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
What's Changed
Packaging
Fixes
v2.11.2
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
What's Changed
Fixes
- Do not override
'definitions-ref'schemas containing serialization schemas or metadata by @Viicos in #11644
v2.11.0
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
- @cmenon12 made their first contribution in #11562
- @Jeukoh made their first contribution in #11611
v2.10.6
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
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
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
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
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
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
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.9.2
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
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
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 upmultiple_of_validator()by 31% inpydantic/_internal/_validators.pyby @misrasaurabh1 in #9839 -
⚡ Speed upModelPrivateAttr.__set_name__()by 18% inpydantic/fields.pyby @misrasaurabh1 in #9841 -
⚡ Speed updataclass()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 methodGenerateSchema._unpack_refs_defsby 26% inpydantic/_internal/_generate_schema.pyby @misrasaurabh1 in #9949 -
⚡ Speed up functionapply_each_item_validatorsby 100% inpydantic/_internal/_generate_schema.pyby @misrasaurabh1 in #9950 -
⚡ Speed up methodConfigWrapper.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.8.2
What's Changed
Fixes
- Fix issue with assertion caused by pluggable schema validator by @dmontagu in #9838
v2.8.1
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
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 upis_pydantic_dataclass()by 41% inpydantic/dataclasses.pyby @misrasaurabh1 in #9652 -
⚡ Speed upto_snake()by 27% inpydantic/alias_generators.pyby @misrasaurabh1 in #9747 -
⚡ Speed upunwrap_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.7.4
What's Changed
Packaging
- Bump
pydantic.v1tov1.10.16reference by @sydney-runkle in #9639
Fixes
v2.7.3
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
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
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
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.6.4
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
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
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
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
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.5.3
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
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
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
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-
CallableDiscriminatorrenamed toDiscriminatorby @dmontagu in #8047
-
- 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 MR 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.4.2
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
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
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
-
🔥 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 -
✅ Implementtzinfo.fromutcmethod forTzInfoinpydantic-coreby @lig in #7019 - Support
__get_validators__by @hramezani in #7197
v2.2.1
- 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
- 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 toRootModelby @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
- Skip FieldInfo merging when unnecessary by @dmontagu in #6862
v2.1.0
- 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
-
✨ AddSkipJsonSchemaannotation 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
- 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 -
⬆️ Upgradepydantic-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 -
🐛 Fixmax_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 definingjson_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 MR 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
- 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
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
- 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 toRootModelby @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
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.