Skip to content

v2.11.0 2025-03-27

Compare
Choose a tag to compare
@Viicos Viicos released this 27 Mar 18:01
· 113 commits to main since this release
58e61fa

What's Changed

Packaging

New Features

  • Support unsubstituted type variables with both a default and a bound or constraints by @FyZzyss in #10789
  • Add a default_factory_takes_validated_data property to FieldInfo by @Viicos in #11034
  • Raise a better error when a generic alias is used inside type[] by @Viicos in #11088
  • Properly support PEP 695 generics syntax by @Viicos in #11189
  • Properly support type variable defaults by @Viicos in #11332
  • Add support for validating v6, v7, v8 UUIDs by @astei in #11436
  • Improve alias configuration APIs by @sydney-runkle in #11468
  • Add experimental support for free threading by @Viicos in #11516
  • Add encoded_string() method to the URL types by @YassinNouh21 in #11580
  • Add support for defer_build with @validate_call decorator by @Viicos in #11584
  • Allow @with_config decorator 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

Changes

  • Rework create_model field definitions format by @Viicos in #11032
  • Raise a deprecation warning when a field is annotated as final with a default value by @Viicos in #11168
  • Deprecate accessing model_fields and model_computed_fields on instances by @Viicos in #11169
  • Move core schema generation logic for path types inside the GenerateSchema class by @sydney-runkle in #10846
  • Move Mapping schema gen to GenerateSchema to complete removal of prepare_annotations_for_known_type workaround by @sydney-runkle in #11247
  • Remove Python 3.8 Support by @sydney-runkle in #11258
  • Optimize calls to get_type_ref by @Viicos in #10863
  • Disable pydantic-core core schema validation by @sydney-runkle in #11271

Performance

  • Only evaluate FieldInfo annotations if required during schema building by @Viicos in #10769
  • Improve __setattr__ performance of Pydantic models by caching setter functions by @MarkusSintonen in #10868
  • Improve annotation application performance by @Viicos in #11186
  • Improve performance of _typing_extra module by @Viicos in #11255
  • Refactor and optimize schema cleaning logic by @Viicos in #11244
  • Create a single dictionary when creating a CoreConfig instance by @sydney-runkle in #11384
  • Reuse cached core schemas for parametrized generic Pydantic models by @MarkusSintonen in #11434

Fixes

  • Add validation tests for _internal/_validators.py by @tkasuz in #10763
  • Subclass all single host url classes from AnyUrl to preserve behavior from v2.9 by @sydney-runkle in #10856
  • Improve TypeAdapter instance repr by @sydney-runkle in #10872
  • Use the correct frame when instantiating a parametrized TypeAdapter by @Viicos in #10893
  • Relax check for validated data in default factory utils by @sydney-runkle in #10909
  • Fix type checking issue with model_fields and model_computed_fields by @sydney-runkle in #10911
  • Use the parent configuration during schema generation for stdlib dataclasses by @sydney-runkle in #10928
  • Use the globals of the function when evaluating the return type of serializers and computed_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
  • Do not evaluate annotations for private fields by @Viicos in #10962
  • Support serialization as any for Secret types and Url types by @sydney-runkle in #10947
  • Fix type hint of Field.default to be compatible with Python 3.8 and 3.9 by @Viicos in #10972
  • hashing support for urls by @sydney-runkle in #10975
  • Hide BaseModel.__replace__ definition from type checkers by @Viicos in #10979
  • Set fields when defer_build is set on Pydantic dataclasses by @Viicos in #10984
  • Do not resolve the JSON Schema reference for dict core schema keys by @Viicos in #10989
  • Use the globals of the function when evaluating the return type for PlainSerializer and WrapSerializer functions by @Viicos in #11008
  • Fix host required enforcement for urls to be compatible with v2.9 behavior by @sydney-runkle in #11027
  • Fix url json schema in serialization mode by @sydney-runkle in #11035
  • Fix for comparison of AnyUrl objects by @alexprabhat99 in #11082
  • Properly fetch PEP 695 type params for functions, do not fetch annotations from signature by @Viicos in #11093
  • Infer final fields with a default value as class variables in the mypy plugin by @Viicos in #11121
  • Recursively unpack Literal values if using PEP 695 type aliases by @Viicos in #11114
  • Override __subclasscheck__ on ModelMetaclass to avoid memory leak and performance issues by @Viicos in #11116
  • Include JSON Schema input core schema in function schemas by @Viicos in #11085
  • Add len to _BaseUrl to avoid TypeError by @Kharianne in #11111
  • Make sure the type reference is removed from the seen references by @Viicos in #11143
  • Add FastAPI and SQLModel to third-party tests by @sydney-runkle in #11044
  • Improve discriminated union error message for invalid union variants by @Viicos in #11161
  • Unpack PEP 695 type aliases if using the Annotated form by @Viicos in #11109
  • Remove custom MRO implementation of Pydantic models by @Viicos in #11184
  • Add pandera third-party tests by @Viicos in #11193
  • Add ODMantic third-party tests by @sydney-runkle in #11197
  • Copy WithJsonSchema schema to avoid sharing mutated data by @thejcannon in #11014
  • Do not cache parametrized models when in the process of parametrizing another model by @Viicos in #10704
  • Add discriminated union related metadata entries to the CoreMetadata definition by @Viicos in #11216
  • Consolidate schema definitions logic in the _Definitions class by @Viicos in #11208
  • Fix url serialization for unions by @sydney-runkle in #11227
  • Support initializing root model fields with values of the root type in the mypy plugin by @Viicos in #11212
  • Move deque schema gen to GenerateSchema class by @sydney-runkle in #11239
  • Fix various issues with dataclasses and use_attribute_docstrings by @Viicos in #11246
  • Only compute normalized decimal places if necessary in decimal_places_validator by @misrasaurabh1 in #11281
  • Add support for validation_alias in the mypy plugin by @Viicos in #11295
  • Fix JSON Schema reference collection with "examples" keys by @Viicos in #11305
  • Do not transform model serializer functions as class methods in the mypy plugin by @Viicos in #11298
  • Fix url python serialization by @sydney-runkle in #11330
  • Add additional allowed schemes for ClickHouseDsn by @Maze21127 in #11319
  • Coerce decimal constraints to Decimal instances by @Viicos in #11350
  • Use the correct JSON Schema mode when handling function schemas by @Viicos in #11367
  • Fix JSON Schema reference logic with examples keys by @Viicos in #11366
  • Improve exception message when encountering recursion errors during type evaluation by @Viicos in #11356
  • Always include additionalProperties: True for arbitrary dictionary schemas by @austinyu in #11392
  • Expose fallback parameter in serialization methods by @Viicos in #11398
  • Fix path serialization behavior by @sydney-runkle in #11416
  • Do not reuse validators and serializers during model rebuild by @Viicos in #11429
  • Collect model fields when rebuilding a model by @Viicos in #11388
  • Allow cached properties to be altered on frozen models by @Viicos in #11432
  • Fix tuple serialization for Sequence types by @sydney-runkle in #11435
  • Fix: do not check for __get_validators__ on classes where __get_pydantic_core_schema__ is also defined by @tlambert03 in #11444
  • Allow callable instances to be used as serializers by @Viicos in #11451
  • Improve error thrown when overriding field with a property by @sydney-runkle in #11459
  • Add BentoML and Semantic Kernel third-party tests by @Viicos in #11469
  • Adding langchain third party tests by @sydney-runkle in #11474
  • Fix JSON Schema generation with referenceable core schemas holding JSON metadata by @Viicos in #11475
  • Support strict specification on union member types by @sydney-runkle in #11481
  • Run Beanie third-party tests on a single Python version by @Viicos in #11502
  • Implicitly set validate_by_name to True when validate_by_alias is False by @sydney-runkle in #11503
  • Change type of Any when synthesizing BaseSettings.__init__ signature in the mypy plugin by @Viicos in #11497
  • Use the typing-inspection library by @Viicos in #11479
  • Support type variable defaults referencing other type variables by @Viicos in #11520
  • Fix NotRequired qualifier not taken into account in stringified annotation by @Viicos in #11559
  • 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

Full Changelog: v2.10.6...v2.11.0