v2.9.0b1 (2024-08-26)
Pre-release
Pre-release
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
pydantic-coreto v2.23.0 by @sydney-runkle in #10180 - Bump
v1version stub tov1.10.18by @sydney-runkle in #10214
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
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
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
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
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
Full Changelog: v2.8.1...v2.8.2