17
0

20 Commits

Author SHA256 Message Date
47ae5f04b7 Accepting request 1299498 from devel:languages:python
- Add patch support-pydantic-core-2.39.0.patch:
  * Support pydantic-core 2.39.0.

OBS-URL: https://build.opensuse.org/request/show/1299498
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=34
2025-08-17 12:50:02 +00:00
6ff2e7b297 - Add patch support-pydantic-core-2.39.0.patch:
* Support pydantic-core 2.39.0.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=75
2025-08-15 04:23:45 +00:00
8fa841d96f Accepting request 1287850 from devel:languages:python
To stage with the python-pydantic-core 2.35.1 update in sr#1287849

- Add patch bump-pydantic-core-2.35.1.patch to support latest
  pydantic-core, gh#pydantic/pydantic#11963
- Add patch field-name-validator-core-schemas.patch to remove
  deprecation warning, gh#pydantic/pydantic#11761
- Update to 2.11.7
  * Copy FieldInfo instance if necessary during FieldInfo build by @Viicos in #11980
2.11.6
  * Rebuild dataclass fields before schema generation by @Viicos in #11949
  * Always store the original field assignment on FieldInfo by @Viicos in #11946
2.11.5
  * Check if FieldInfo is 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

- Update to 2.11.4
  * Bump mkdocs-llmstxt to v0.2.0
  * Allow config and bases to be specified together in create_model()
  * This change was backported as it was previously possible
    (although not meant to be supported)
  * To provide model_config as a field, which would make it
    possible to provide both configuration and bases.
  * Remove generics cache workaround
  * Remove coercion of decimal constraints
  * Fix crash when expanding root type in the mypy plugin
  * Fix issue with recursive generic models
  * Traverse function-before schemas during schema gathering
- Drop field_name.patch, merged upstream
- Update BuildRequires and Requires from pyproject.toml

OBS-URL: https://build.opensuse.org/request/show/1287850
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=33
2025-06-24 18:46:02 +00:00
f07b39b7ee - Add patch bump-pydantic-core-2.35.1.patch to support latest
pydantic-core, gh#pydantic/pydantic#11963
- Add patch field-name-validator-core-schemas.patch to remove
  deprecation warning, gh#pydantic/pydantic#11761
- Update to 2.11.7
  * Copy FieldInfo instance if necessary during FieldInfo build by @Viicos in #11980
2.11.6
  * Rebuild dataclass fields before schema generation by @Viicos in #11949
  * Always store the original field assignment on FieldInfo by @Viicos in #11946
2.11.5
  * Check if FieldInfo is 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

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=73
2025-06-23 06:57:01 +00:00
da23bc9bcd Accepting request 1274365 from home:glaubitz:branches:devel:languages:python
- Update to 2.11.4
  * Bump mkdocs-llmstxt to v0.2.0
  * Allow config and bases to be specified together in create_model()
  * This change was backported as it was previously possible
    (although not meant to be supported)
  * To provide model_config as a field, which would make it
    possible to provide both configuration and bases.
  * Remove generics cache workaround
  * Remove coercion of decimal constraints
  * Fix crash when expanding root type in the mypy plugin
  * Fix issue with recursive generic models
  * Traverse function-before schemas during schema gathering
- Drop field_name.patch, merged upstream
- Update BuildRequires and Requires from pyproject.toml

OBS-URL: https://build.opensuse.org/request/show/1274365
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=72
2025-05-05 14:56:49 +00:00
471770ba28 Accepting request 1272629 from devel:languages:python
- Add upstream field_name.patch for compatibility with recent pydantic-core
- Add missing Requires on typing-inspection.
- update to 2.11.3:
  * Preserve field description when rebuilding model fields
- update to 2.11.2:
  * Make sure __pydantic_private__ exists before setting private attributes
  * Do not override FieldInfo._complete when using field from parent class
  * Provide the available definitions when applying discriminated unions
  * Do not expand root type in the mypy plugin for variables
  * Mention the attribute name in model fields deprecation message
  * Properly validate parameterized mappings
- update to 2.11.1:
  * Do not override 'definitions-ref' schemas containing serialization schemas or metadata
- update to 2.11.0:
  * Re-enable memray related tests on Python 3.12+
  * Add a check_pydantic_core_version() function
  * Remove greenlet development dependency
  * Support unsubstituted type variables with both a default and a bound or constraints
  * Add a default_factory_takes_validated_data property to FieldInfo
  * Raise a better error when a generic alias is used inside type[]
  * Properly support PEP 695 generics syntax
  * Properly support type variable defaults
  * Add support for validating v6, v7, v8 UUIDs
  * Improve alias configuration APIs
  * Add experimental support for free threading
  * Add encoded_string() method to the URL types
  * Add support for defer_build with @validate_call decorator
  * Allow @with_config decorator to be used with keyword arguments
  * Simplify customization of default value inclusion in JSON Schema generation
  * Add generate_arguments_schema() function
  * Rework create_model field definitions format
  * Raise a deprecation warning when a field is annotated as final with a default value
  * Deprecate accessing model_fields and model_computed_fields on instances
  * Move core schema generation logic for path types inside the GenerateSchema class
  * Move Mapping schema gen to GenerateSchema to complete removal of prepare_annotations_for_known_type workaround
  * Remove Python 3.8 Support
  * Optimize calls to get_type_ref
  * Disable pydantic-core core schema validation
  * Only evaluate FieldInfo annotations if required during schema building
  * Improve __setattr__ performance of Pydantic models by caching setter functions
  * Improve annotation application performance
  * Improve performance of _typing_extra module
  * Refactor and optimize schema cleaning logic
  * Create a single dictionary when creating a CoreConfig instance
  * Reuse cached core schemas for parametrized generic Pydantic models
  * Add validation tests for _internal/_validators.py
  * Subclass all single host url classes from AnyUrl to preserve behavior from v2.9
  * Improve TypeAdapter instance repr
  * Use the correct frame when instantiating a parametrized TypeAdapter
  * Relax check for validated data in default factory utils
  * Fix type checking issue with model_fields and model_computed_fields
  * Use the parent configuration during schema generation for stdlib dataclasses
  * Use the globals of the function when evaluating the return type of serializers and computed_fields
  * Fix url constraint application
  * Fix URL equality with different validation methods
  * Fix JSON schema title when specified as ''
  * Do not evaluate annotations for private fields
  * Support serialization as any for Secret types and Url types
  * Fix type hint of Field.default to be compatible with Python 3.8 and 3.9
  * hashing support for urls
  * Hide BaseModel.__replace__ definition from type checkers
  * Set fields when defer_build is set on Pydantic dataclasses
  * Do not resolve the JSON Schema reference for dict core schema keys
  * Use the globals of the function when evaluating the return type for PlainSerializer and WrapSerializer functions
  * Fix host required enforcement for urls to be compatible with v2.9 behavior
  * Fix url json schema in serialization mode
  * Fix for comparison of AnyUrl objects
  * Properly fetch PEP 695 type params for functions, do not fetch annotations from signature
  * Infer final fields with a default value as class variables in the mypy plugin
  * Recursively unpack Literal values if using PEP 695 type aliases
  * Override __subclasscheck__ on ModelMetaclass to avoid memory leak and performance issues
  * Include JSON Schema input core schema in function schemas
  * Add len to _BaseUrl to avoid TypeError
  * Make sure the type reference is removed from the seen references
  * Add FastAPI and SQLModel to third-party tests
  * Improve discriminated union error message for invalid union variants
  * Unpack PEP 695 type aliases if using the Annotated form
  * Remove custom MRO implementation of Pydantic models
  * Add pandera third-party tests
  * Add ODMantic third-party tests
  * Copy WithJsonSchema schema to avoid sharing mutated data
  * Do not cache parametrized models when in the process of parametrizing another model
  * Add discriminated union related metadata entries to the CoreMetadata definition
  * Consolidate schema definitions logic in the _Definitions class
  * Fix url serialization for unions
  * Support initializing root model fields with values of the root type in the mypy plugin
  * Move deque schema gen to GenerateSchema class

OBS-URL: https://build.opensuse.org/request/show/1272629
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=32
2025-04-25 20:17:56 +00:00
8c78ba441f Accepting request 1272628 from home:mcalabkova:branches:devel:languages:python
- Add upstream field_name.patch for compatibility with recent pydantic-core

OBS-URL: https://build.opensuse.org/request/show/1272628
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=70
2025-04-25 09:37:37 +00:00
792c6d9221 - Add missing Requires on typing-inspection.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=69
2025-04-24 04:47:31 +00:00
51e012857a Accepting request 1271997 from home:rrahl0
need pytest-run-parallel

OBS-URL: https://build.opensuse.org/request/show/1271997
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=68
2025-04-23 09:35:07 +00:00
6e5b9a0d5f Accepting request 1240305 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1240305
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=31
2025-01-29 15:09:40 +00:00
da00c576a5 Accepting request 1240258 from home:ecsos:python
- Update to 2.10.6
  * Fixes
    - Fix JSON Schema reference collection with 'examples' keys by @Viicos in #11325
    - Fix url python serialization by @sydney-runkle in #11331
- Changes from 2.10.5
  * Fixes
    - Remove custom MRO implementation of Pydantic models by @Viicos in #11184
    - Fix URL serialization for unions by @sydney-runkle in #11233
- Changes from 2.10.4
  * Packaging
    - Bump pydantic-core to v2.27.2 by @davidhewitt in #11138
  * Fixes
    - 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
    - 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
- Changes from 2.10.3
  * Fixes
    - 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
    - Add a default_factory_takes_validated_data property to FieldInfo by @Viicos in #11034
    - Fix url json schema in serialization mode by @sydney-runkle in #11035
- Changes from 2.10.2
  * 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 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
    - Add hashing support for URL types by @sydney-runkle in #10975
    - Hide BaseModel.__replace__ definition from type checkers by @Viicos in 10979
- Changes from 2.10.1
  * Packaging
    - Bump pydantic-core version to v2.27.1 by @sydney-runkle in #10938
  * Fixes
    - 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
    - Fix python mode serialization for complex inference by @sydney-runkle in pydantic-core#1549
- Changes from 2.10.0
  * Packaging
    - Bump pydantic-core to v2.27.0 by @sydney-runkle in #10825
    - Replaced pdm with uv by @frfahim in #10727
  * New Features
    - Support fractions.Fraction by @sydney-runkle in #10318
    - Support Hashable for json validation by @sydney-runkle in #10324
    - Add a SocketPath type for linux systems by @theunkn0wn1 in #10378
    - Allow arbitrary refs in JSON schema examples by @sydney-runkle in #10417
    - Support defer_build for Pydantic dataclasses by @Viicos in #10313
    - Adding v1 / v2 incompatibility warning for nested v1 model by @sydney-runkle in #10431
    - Add support for unpacked TypedDict to type hint variadic keyword arguments with @validate_call by @Viicos in #10416
    - Support compiled patterns in protected_namespaces by @sydney-runkle in #10522
    - Add support for propertyNames in JSON schema by @FlorianSW in #10478
    - Adding __replace__ protocol for Python 3.13+ support by @sydney-runkle in #10596
    - Expose public sort method for JSON schema generation by @sydney-runkle in #10595
    - Add runtime validation of @validate_call callable argument by @kc0506 in #10627
    - Add experimental_allow_partial support by @samuelcolvin in #10748
    - Support default factories taking validated data as an argument by @Viicos in #10678
    - Allow subclassing ValidationError and PydanticCustomError by @Youssefares in pydantic/pydantic-core#1413
    - Add trailing-strings support to experimental_allow_partial by @sydney-runkle in #10825
    - Add rebuild() method for TypeAdapter and simplify defer_build patterns by @sydney-runkle in #10537
    - Improve TypeAdapter instance repr by @sydney-runkle in #10872
  * Changes
    - Don't allow customization of SchemaGenerator until interface is more stable by @sydney-runkle in #10303
    - Cleanly defer_build on TypeAdapters, removing experimental flag by @sydney-runkle in #10329
    - Fix mro of generic subclass by @kc0506 in #10100
    - Strip whitespaces on JSON Schema title generation by @sydney-runkle in #10404
    - Use b64decode and b64encode for Base64Bytes type 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 @dataclass decorator and with the __pydantic_config__ attribute by @sydney-runkle in #10406
    - Recommend against using Ellipsis (...) with Field by @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 and Enums by @Viicos in #10692
    - Simplify unions involving Any or Never when replacing type variables by @Viicos in #10338
    - Do not require padding when decoding base64 bytes 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
    - CoreMetadata refactor with an emphasis on documentation, schema build time performance, and reducing complexity by @sydney-runkle in #10675
  * Fixes
    - Remove guarding check on computed_field with field_serializer by @nix010 in #10390
    - Fix Predicate issue in v2.9.0 by @sydney-runkle in #10321
    - Fixing annotated-types bound by @sydney-runkle in #10327
    - Turn tzdata install requirement into optional timezone dependency by @jakob-keller in #10331
    - 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 IncEx type 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.mro by @Viicos in #10372
    - Fix class access of deprecated computed_fields by @Viicos in #10391
    - Make sure inspect.iscoroutinefunction works on coroutines decorated with @validate_call by @MovisLi in #10374
    - Fix NameError when using validate_call with PEP 695 on a class by @kc0506 in #10380
    - Fix ZoneInfo with various invalid types by @sydney-runkle in #10408
    - Fix PydanticUserError on empty model_config with annotations by @cdwilson in #10412
    - Fix variance issue in _IncEx type alias, only allow True by @Viicos in #10414
    - Fix serialization schema generation when using PlainValidator by @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_type by @Viicos in #10439
    - Fix recursive arguments in Representation by @Viicos in #10480
    - Fix representation for builtin function types by @kschwab in #10479
    - Add python validators for decimal constraints (max_digits and decimal_places) by @sydney-runkle in #10506
    - Only fetch __pydantic_core_schema__ from the current class during schema generation by @Viicos in #10518
    - Fix stacklevel on deprecation warnings for BaseModel by @sydney-runkle in #10520
    - Fix warning stacklevel in BaseModel.__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_config to 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 Base64Etc types by @sydney-runkle in #10584
    - Fix validate_call ignoring Field in Annotated by @kc0506 in #10610
    - Raise an error when Self is invalid by @kc0506 in #10609
    - Using core_schema.InvalidSchema instead of metadata injection + checks by @sydney-runkle in [#1...

OBS-URL: https://build.opensuse.org/request/show/1240258
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=66
2025-01-25 21:10:38 +00:00
ece5a4cbec Accepting request 1218159 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1218159
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=30
2024-10-25 17:19:09 +00:00
81554033f9 Accepting request 1218139 from home:yeey:OpenWebUI
SUSE AI needs a more recent version

OBS-URL: https://build.opensuse.org/request/show/1218139
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=64
2024-10-25 05:27:29 +00:00
ed34bd7f24 Accepting request 1184776 from devel:languages:python
- update to 2.8.0:
  * Update citation version automatically with new releases
  * Bump pyright to `v1.1.367` and add type checking tests for
    pipeline API
  * Update `pydantic.v1` stub to `v1.10.17`
  * General package updates to prep for `v2.8.0b1`
  * Bump `pydantic-core` to `v2.20.0`
  * Add support for Python 3.13
  * Update `pdm` version used for `pdm.lock` to v2.16.1
  * Update to `ruff` `v0.4.8`
  * Experimental: support `defer_build` for `TypeAdapter`
  * Implement `deprecated` field in json schema
  * Experimental: Add pipeline API
  * Add support for programmatic title generation
  * Implement `fail_fast` feature
  * Add `ser_json_inf_nan='strings'` mode to produce valid JSON
  * Replace `__spec__.parent` with `__package__`
  * Fix Outputted Model JSON Schema for `Sequence` type
  * Fix typing of `_frame_depth`
  * Make `ImportString` json schema compatible
  * Hide private attributes (`PrivateAttr`) from `__init__`
    signature in type checkers
  * Make detection of `TypeVar` defaults robust to the CPython
    `PEP-696` implementation
  * Fix usage of `PlainSerializer` with builtin types
  * Add more robust custom validation examples
  * Fix ignored `strict` specification for
    `StringConstraint(strict=False)`
  * Use `Self` where possible
  * Do not alter `RootModel.model_construct` signature in the

OBS-URL: https://build.opensuse.org/request/show/1184776
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-pydantic?expand=0&rev=29
2024-07-02 16:14:50 +00:00
7010590fbd OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=62 2024-07-02 06:07:32 +00:00
516f52d744 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=61 2024-07-01 17:25:27 +00:00
3ed8cb7b37 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=60 2024-07-01 17:06:54 +00:00
03aec1e9b4 - update to 2.8.0:
* Update citation version automatically with new releases
  * Bump pyright to `v1.1.367` and add type checking tests for
    pipeline API
  * Update `pydantic.v1` stub to `v1.10.17`
  * General package updates to prep for `v2.8.0b1`
  * Bump `pydantic-core` to `v2.20.0`
  * Add support for Python 3.13
  * Update `pdm` version used for `pdm.lock` to v2.16.1
  * Update to `ruff` `v0.4.8`
  * Experimental: support `defer_build` for `TypeAdapter`
  * Implement `deprecated` field in json schema
  * Experimental: Add pipeline API
  * Add support for programmatic title generation
  * Implement `fail_fast` feature
  * Add `ser_json_inf_nan='strings'` mode to produce valid JSON
  * Replace `__spec__.parent` with `__package__`
  * Fix Outputted Model JSON Schema for `Sequence` type
  * Fix typing of `_frame_depth`
  * Make `ImportString` json schema compatible
  * Hide private attributes (`PrivateAttr`) from `__init__`
    signature in type checkers
  * Make detection of `TypeVar` defaults robust to the CPython
    `PEP-696` implementation
  * Fix usage of `PlainSerializer` with builtin types
  * Add more robust custom validation examples
  * Fix ignored `strict` specification for
    `StringConstraint(strict=False)`
  * Use `Self` where possible
  * Do not alter `RootModel.model_construct` signature in the

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=59
2024-07-01 16:30:27 +00:00
f93ee20198 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=58 2024-06-30 20:52:08 +00:00
37a899ef23 - drop optional email-validator dependency
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pydantic?expand=0&rev=57
2024-06-30 20:45:03 +00:00
5 changed files with 168 additions and 748 deletions

View File

@@ -1,566 +0,0 @@
From 9452e13c571db7d31051768c3b4d47a6e2ceea7d Mon Sep 17 00:00:00 2001
From: Victorien <65306057+Viicos@users.noreply.github.com>
Date: Thu, 10 Jul 2025 11:31:03 +0200
Subject: [PATCH] Add initial support for Python 3.14 (#11991)
Adds basic support for Python 3.14. Deferred annotations work for simple cases, but will need to be improved in the future.
---
.github/workflows/ci.yml | 11 +-
.github/workflows/integration.yml | 4 +-
docs/migration.md | 4 +-
pydantic/_internal/_config.py | 10 +-
pydantic/_internal/_fields.py | 7 +-
pydantic/_internal/_generics.py | 7 +-
pydantic/_internal/_model_construction.py | 24 +-
pydantic/_internal/_typing_extra.py | 36 +-
pydantic/dataclasses.py | 13 +-
pyproject.toml | 3 +
tests/test_dataclasses.py | 11 +-
tests/test_deferred_annotations.py | 81 ++++
tests/test_forward_ref.py | 15 -
tests/test_model_signature.py | 2 +-
tests/test_pickle.py | 12 +-
tests/test_v1.py | 2 +
uv.lock | 512 ++++++++++++----------
17 files changed, 469 insertions(+), 285 deletions(-)
create mode 100644 tests/test_deferred_annotations.py
Index: pydantic-2.11.9/docs/migration.md
===================================================================
--- pydantic-2.11.9.orig/docs/migration.md
+++ pydantic-2.11.9/docs/migration.md
@@ -188,7 +188,7 @@ to help ease migration, but calling them
If you'd still like to use said arguments, you can use [this workaround](https://github.com/pydantic/pydantic/issues/8825#issuecomment-1946206415).
* JSON serialization of non-string key values is generally done with `str(key)`, leading to some changes in behavior such as the following:
-```python
+```python {test="skip"}
from typing import Optional
from pydantic import BaseModel as V2BaseModel
@@ -218,7 +218,7 @@ print(v2_model.model_dump_json())
* `model_dump_json()` results are compacted in order to save space, and don't always exactly match that of `json.dumps()` output.
That being said, you can easily modify the separators used in `json.dumps()` results in order to align the two outputs:
-```python
+```python {test="skip"}
import json
from pydantic import BaseModel as V2BaseModel
Index: pydantic-2.11.9/pydantic/_internal/_config.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/_internal/_config.py
+++ pydantic-2.11.9/pydantic/_internal/_config.py
@@ -98,7 +98,13 @@ class ConfigWrapper:
self.config_dict = cast(ConfigDict, config)
@classmethod
- def for_model(cls, bases: tuple[type[Any], ...], namespace: dict[str, Any], kwargs: dict[str, Any]) -> Self:
+ def for_model(
+ cls,
+ bases: tuple[type[Any], ...],
+ namespace: dict[str, Any],
+ raw_annotations: dict[str, Any],
+ kwargs: dict[str, Any],
+ ) -> Self:
"""Build a new `ConfigWrapper` instance for a `BaseModel`.
The config wrapper built based on (in descending order of priority):
@@ -109,6 +115,7 @@ class ConfigWrapper:
Args:
bases: A tuple of base classes.
namespace: The namespace of the class being created.
+ raw_annotations: The (non-evaluated) annotations of the model.
kwargs: The kwargs passed to the class being created.
Returns:
@@ -123,7 +130,6 @@ class ConfigWrapper:
config_class_from_namespace = namespace.get('Config')
config_dict_from_namespace = namespace.get('model_config')
- raw_annotations = namespace.get('__annotations__', {})
if raw_annotations.get('model_config') and config_dict_from_namespace is None:
raise PydanticUserError(
'`model_config` cannot be used as a model field name. Use `model_config` for model configuration.',
Index: pydantic-2.11.9/pydantic/_internal/_fields.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/_internal/_fields.py
+++ pydantic-2.11.9/pydantic/_internal/_fields.py
@@ -119,7 +119,8 @@ def collect_model_fields( # noqa: C901
# https://docs.python.org/3/howto/annotations.html#accessing-the-annotations-dict-of-an-object-in-python-3-9-and-older
# annotations is only used for finding fields in parent classes
- annotations = cls.__dict__.get('__annotations__', {})
+ annotations = _typing_extra.safe_get_annotations(cls)
+
fields: dict[str, FieldInfo] = {}
class_vars: set[str] = set()
@@ -375,7 +376,9 @@ def collect_dataclass_fields(
with ns_resolver.push(base):
for ann_name, dataclass_field in dataclass_fields.items():
- if ann_name not in base.__dict__.get('__annotations__', {}):
+ base_anns = _typing_extra.safe_get_annotations(base)
+
+ if ann_name not in base_anns:
# `__dataclass_fields__`contains every field, even the ones from base classes.
# Only collect the ones defined on `base`.
continue
Index: pydantic-2.11.9/pydantic/_internal/_generics.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/_internal/_generics.py
+++ pydantic-2.11.9/pydantic/_internal/_generics.py
@@ -1,5 +1,6 @@
from __future__ import annotations
+import operator
import sys
import types
import typing
@@ -7,6 +8,7 @@ from collections import ChainMap
from collections.abc import Iterator, Mapping
from contextlib import contextmanager
from contextvars import ContextVar
+from functools import reduce
from itertools import zip_longest
from types import prepare_class
from typing import TYPE_CHECKING, Annotated, Any, TypeVar
@@ -21,9 +23,6 @@ from ._core_utils import get_type_ref
from ._forward_ref import PydanticRecursiveRef
from ._utils import all_identical, is_model_class
-if sys.version_info >= (3, 10):
- from typing import _UnionGenericAlias # type: ignore[attr-defined]
-
if TYPE_CHECKING:
from ..main import BaseModel
@@ -311,7 +310,7 @@ def replace_types(type_: Any, type_map:
# PEP-604 syntax (Ex.: list | str) is represented with a types.UnionType object that does not have __getitem__.
# We also cannot use isinstance() since we have to compare types.
if sys.version_info >= (3, 10) and origin_type is types.UnionType:
- return _UnionGenericAlias(origin_type, resolved_type_args)
+ return reduce(operator.or_, resolved_type_args)
# NotRequired[T] and Required[T] don't support tuple type resolved_type_args, hence the condition below
return origin_type[resolved_type_args[0] if len(resolved_type_args) == 1 else resolved_type_args]
Index: pydantic-2.11.9/pydantic/_internal/_model_construction.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/_internal/_model_construction.py
+++ pydantic-2.11.9/pydantic/_internal/_model_construction.py
@@ -105,12 +105,29 @@ class ModelMetaclass(ABCMeta):
# that `BaseModel` itself won't have any bases, but any subclass of it will, to determine whether the `__new__`
# call we're in the middle of is for the `BaseModel` class.
if bases:
+ raw_annotations: dict[str, Any]
+ if sys.version_info >= (3, 14):
+ if (
+ '__annotations__' in namespace
+ ): # `from __future__ import annotations` was used in the model's module
+ raw_annotations = namespace['__annotations__']
+ else:
+ # See https://docs.python.org/3.14/library/annotationlib.html#using-annotations-in-a-metaclass:
+ from annotationlib import Format, call_annotate_function, get_annotate_from_class_namespace
+
+ if annotate := get_annotate_from_class_namespace(namespace):
+ raw_annotations = call_annotate_function(annotate, format=Format.FORWARDREF)
+ else:
+ raw_annotations = {}
+ else:
+ raw_annotations = namespace.get('__annotations__', {})
+
base_field_names, class_vars, base_private_attributes = mcs._collect_bases_data(bases)
- config_wrapper = ConfigWrapper.for_model(bases, namespace, kwargs)
+ config_wrapper = ConfigWrapper.for_model(bases, namespace, raw_annotations, kwargs)
namespace['model_config'] = config_wrapper.config_dict
private_attributes = inspect_namespace(
- namespace, config_wrapper.ignored_types, class_vars, base_field_names
+ namespace, raw_annotations, config_wrapper.ignored_types, class_vars, base_field_names
)
if private_attributes or base_private_attributes:
original_model_post_init = get_model_post_init(namespace, bases)
@@ -365,6 +382,7 @@ def get_model_post_init(namespace: dict[
def inspect_namespace( # noqa C901
namespace: dict[str, Any],
+ raw_annotations: dict[str, Any],
ignored_types: tuple[type[Any], ...],
base_class_vars: set[str],
base_class_fields: set[str],
@@ -375,6 +393,7 @@ def inspect_namespace( # noqa C901
Args:
namespace: The attribute dictionary of the class to be created.
+ raw_annotations: The (non-evaluated) annotations of the model.
ignored_types: A tuple of ignore types.
base_class_vars: A set of base class class variables.
base_class_fields: A set of base class fields.
@@ -396,7 +415,6 @@ def inspect_namespace( # noqa C901
all_ignored_types = ignored_types + default_ignored_types()
private_attributes: dict[str, ModelPrivateAttr] = {}
- raw_annotations = namespace.get('__annotations__', {})
if '__root__' in raw_annotations or '__root__' in namespace:
raise TypeError("To define root models, use `pydantic.RootModel` rather than a field called '__root__'")
Index: pydantic-2.11.9/pydantic/_internal/_typing_extra.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/_internal/_typing_extra.py
+++ pydantic-2.11.9/pydantic/_internal/_typing_extra.py
@@ -26,6 +26,9 @@ else:
from types import EllipsisType as EllipsisType
from types import NoneType as NoneType
+if sys.version_info >= (3, 14):
+ import annotationlib
+
if TYPE_CHECKING:
from pydantic import BaseModel
@@ -289,6 +292,19 @@ def _type_convert(arg: Any) -> Any:
return arg
+def safe_get_annotations(cls: type[Any]) -> dict[str, Any]:
+ """Get the annotations for the provided class, accounting for potential deferred forward references.
+
+ Starting with Python 3.14, accessing the `__annotations__` attribute might raise a `NameError` if
+ a referenced symbol isn't defined yet. In this case, we return the annotation in the *forward ref*
+ format.
+ """
+ if sys.version_info >= (3, 14):
+ return annotationlib.get_annotations(cls, format=annotationlib.Format.FORWARDREF)
+ else:
+ return cls.__dict__.get('__annotations__', {})
+
+
def get_model_type_hints(
obj: type[BaseModel],
*,
@@ -309,9 +325,14 @@ def get_model_type_hints(
ns_resolver = ns_resolver or NsResolver()
for base in reversed(obj.__mro__):
- ann: dict[str, Any] | None = base.__dict__.get('__annotations__')
- if not ann or isinstance(ann, types.GetSetDescriptorType):
+ # For Python 3.14, we could also use `Format.VALUE` and pass the globals/locals
+ # from the ns_resolver, but we want to be able to know which specific field failed
+ # to evaluate:
+ ann = safe_get_annotations(base)
+
+ if not ann:
continue
+
with ns_resolver.push(base):
globalns, localns = ns_resolver.types_namespace
for name, value in ann.items():
@@ -341,13 +362,18 @@ def get_cls_type_hints(
obj: The class to inspect.
ns_resolver: A namespace resolver instance to use. Defaults to an empty instance.
"""
- hints: dict[str, Any] | dict[str, tuple[Any, bool]] = {}
+ hints: dict[str, Any] = {}
ns_resolver = ns_resolver or NsResolver()
for base in reversed(obj.__mro__):
- ann: dict[str, Any] | None = base.__dict__.get('__annotations__')
- if not ann or isinstance(ann, types.GetSetDescriptorType):
+ # For Python 3.14, we could also use `Format.VALUE` and pass the globals/locals
+ # from the ns_resolver, but we want to be able to know which specific field failed
+ # to evaluate:
+ ann = safe_get_annotations(base)
+
+ if not ann:
continue
+
with ns_resolver.push(base):
globalns, localns = ns_resolver.types_namespace
for name, value in ann.items():
Index: pydantic-2.11.9/pydantic/dataclasses.py
===================================================================
--- pydantic-2.11.9.orig/pydantic/dataclasses.py
+++ pydantic-2.11.9/pydantic/dataclasses.py
@@ -157,7 +157,12 @@ def dataclass(
`x: int = dataclasses.field(default=pydantic.Field(..., kw_only=True), kw_only=True)`
"""
for annotation_cls in cls.__mro__:
- annotations: dict[str, Any] = getattr(annotation_cls, '__annotations__', {})
+ if sys.version_info >= (3, 14):
+ from annotationlib import Format, get_annotations
+
+ annotations = get_annotations(annotation_cls, format=Format.FORWARDREF)
+ else:
+ annotations: dict[str, Any] = getattr(annotation_cls, '__annotations__', {})
for field_name in annotations:
field_value = getattr(cls, field_name, None)
# Process only if this is an instance of `FieldInfo`.
@@ -176,9 +181,9 @@ def dataclass(
field_args['repr'] = field_value.repr
setattr(cls, field_name, dataclasses.field(**field_args))
- # In Python 3.9, when subclassing, information is pulled from cls.__dict__['__annotations__']
- # for annotations, so we must make sure it's initialized before we add to it.
- if cls.__dict__.get('__annotations__') is None:
+ if sys.version_info < (3, 10) and cls.__dict__.get('__annotations__') is None:
+ # In Python 3.9, when a class doesn't have any annotations, accessing `__annotations__`
+ # raises an `AttributeError`.
cls.__annotations__ = {}
cls.__annotations__[field_name] = annotations[field_name]
Index: pydantic-2.11.9/pyproject.toml
===================================================================
--- pydantic-2.11.9.orig/pyproject.toml
+++ pydantic-2.11.9/pyproject.toml
@@ -32,6 +32,7 @@ classifiers = [
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
'Programming Language :: Python :: 3.13',
+ 'Programming Language :: Python :: 3.14',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'License :: OSI Approved :: MIT License',
@@ -220,6 +221,8 @@ pydocstyle = { convention = 'google' }
'docs/*' = ['D']
'pydantic/__init__.py' = ['F405', 'F403', 'D']
'tests/test_forward_ref.py' = ['F821']
+# We can't configure a specific Python version per file (this one only supports 3.14+):
+'tests/test_deferred_annotations.py' = ['F821', 'F841']
'tests/*' = ['D', 'B', 'C4']
'pydantic/deprecated/*' = ['D', 'PYI']
'pydantic/color.py' = ['PYI']
Index: pydantic-2.11.9/tests/test_dataclasses.py
===================================================================
--- pydantic-2.11.9.orig/tests/test_dataclasses.py
+++ pydantic-2.11.9/tests/test_dataclasses.py
@@ -30,6 +30,7 @@ from pydantic import (
BaseModel,
BeforeValidator,
ConfigDict,
+ Field,
PydanticDeprecatedSince20,
PydanticUndefinedAnnotation,
PydanticUserError,
@@ -45,7 +46,6 @@ from pydantic import (
)
from pydantic._internal._mock_val_ser import MockValSer
from pydantic.dataclasses import is_pydantic_dataclass, rebuild_dataclass
-from pydantic.fields import Field, FieldInfo
from pydantic.json_schema import model_json_schema
@@ -2072,15 +2072,14 @@ def test_inheritance_replace(decorator1:
def test_dataclasses_inheritance_default_value_is_not_deleted(
decorator1: Callable[[Any], Any], default: Literal[1]
) -> None:
- if decorator1 is dataclasses.dataclass and isinstance(default, FieldInfo):
- pytest.skip(reason="stdlib dataclasses don't support Pydantic fields")
-
@decorator1
class Parent:
a: int = default
- assert Parent.a == 1
- assert Parent().a == 1
+ # stdlib dataclasses don't support Pydantic's `Field()`:
+ if decorator1 is pydantic.dataclasses.dataclass:
+ assert Parent.a == 1
+ assert Parent().a == 1
@pydantic.dataclasses.dataclass
class Child(Parent):
Index: pydantic-2.11.9/tests/test_deferred_annotations.py
===================================================================
--- /dev/null
+++ pydantic-2.11.9/tests/test_deferred_annotations.py
@@ -0,0 +1,81 @@
+"""Tests related to deferred evaluation of annotations introduced in Python 3.14 by PEP 649 and 749."""
+
+import sys
+from dataclasses import field
+from typing import Annotated
+
+import pytest
+from annotated_types import MaxLen
+
+from pydantic import BaseModel, Field, ValidationError
+from pydantic.dataclasses import dataclass
+
+pytestmark = pytest.mark.skipif(
+ sys.version_info < (3, 14), reason='Requires deferred evaluation of annotations introduced in Python 3.14'
+)
+
+
+def test_deferred_annotations_model() -> None:
+ class Model(BaseModel):
+ a: Int
+ b: Str = 'a'
+
+ Int = int
+ Str = str
+
+ inst = Model(a='1', b=b'test')
+ assert inst.a == 1
+ assert inst.b == 'test'
+
+
+@pytest.mark.xfail(
+ reason=(
+ 'When rebuilding model fields, we individually re-evaluate all fields (using `_eval_type()`) '
+ "and as such we don't benefit from PEP 649's capabilities."
+ ),
+)
+def test_deferred_annotations_nested_model() -> None:
+ def outer():
+ def inner():
+ class Model(BaseModel):
+ ann: Annotated[List[Dict[str, str]], MaxLen(1)]
+
+ Dict = dict
+
+ return Model
+
+ List = list
+
+ Model = inner()
+
+ return Model
+
+ Model = outer()
+
+ with pytest.raises(ValidationError) as exc_info:
+ Model(ann=[{'a': 'b'}, {'c': 'd'}])
+
+ assert exc_info.value.errors()[0]['type'] == 'too_long'
+
+
+def test_deferred_annotations_pydantic_dataclass() -> None:
+ @dataclass
+ class A:
+ a: Int = field(default=1)
+
+ Int = int
+
+ assert A(a='1').a == 1
+
+
+@pytest.mark.xfail(
+ reason="To support Pydantic's `Field()` function in dataclasses, we directly write to `__annotations__`"
+)
+def test_deferred_annotations_pydantic_dataclass_pydantic_field() -> None:
+ @dataclass
+ class A:
+ a: Int = Field(default=1)
+
+ Int = int
+
+ assert A(a='1').a == 1
Index: pydantic-2.11.9/tests/test_forward_ref.py
===================================================================
--- pydantic-2.11.9.orig/tests/test_forward_ref.py
+++ pydantic-2.11.9/tests/test_forward_ref.py
@@ -74,21 +74,6 @@ def test_forward_ref_auto_update_no_mode
assert f.model_dump() == {'a': {'b': {'a': {'b': {'a': None}}}}}
-def test_forward_ref_one_of_fields_not_defined(create_module):
- @create_module
- def module():
- from pydantic import BaseModel
-
- class Foo(BaseModel):
- foo: 'Foo'
- bar: 'Bar'
-
- assert {k: repr(v) for k, v in module.Foo.model_fields.items()} == {
- 'foo': 'FieldInfo(annotation=Foo, required=True)',
- 'bar': "FieldInfo(annotation=ForwardRef('Bar'), required=True)",
- }
-
-
def test_basic_forward_ref(create_module):
@create_module
def module():
Index: pydantic-2.11.9/tests/test_model_signature.py
===================================================================
--- pydantic-2.11.9.orig/tests/test_model_signature.py
+++ pydantic-2.11.9/tests/test_model_signature.py
@@ -184,7 +184,7 @@ def test_annotated_field():
assert typing_objects.is_annotated(get_origin(sig.parameters['foo'].annotation))
-@pytest.mark.skipif(sys.version_info < (3, 10), reason='repr different on older versions')
+@pytest.mark.skipif(sys.version_info < (3, 10), sys.version_info >= (3, 14), reason='repr different on older versions')
def test_annotated_optional_field():
from annotated_types import Gt
Index: pydantic-2.11.9/tests/test_pickle.py
===================================================================
--- pydantic-2.11.9.orig/tests/test_pickle.py
+++ pydantic-2.11.9/tests/test_pickle.py
@@ -1,6 +1,7 @@
import dataclasses
import gc
import pickle
+import sys
from typing import Optional
import pytest
@@ -17,6 +18,11 @@ except ImportError:
pytestmark = pytest.mark.skipif(cloudpickle is None, reason='cloudpickle is not installed')
+cloudpickle_xfail = pytest.mark.xfail(
+ condition=sys.version_info >= (3, 14),
+ reason='Cloudpickle issue: https://github.com/cloudpipe/cloudpickle/issues/572',
+)
+
class IntWrapper:
def __init__(self, v: int):
@@ -88,7 +94,7 @@ def model_factory() -> type:
(ImportableModel, False),
(ImportableModel, True),
# Locally-defined model can only be pickled with cloudpickle.
- (model_factory(), True),
+ pytest.param(model_factory(), True, marks=cloudpickle_xfail),
],
)
def test_pickle_model(model_type: type, use_cloudpickle: bool):
@@ -133,7 +139,7 @@ def nested_model_factory() -> type:
(ImportableNestedModel, False),
(ImportableNestedModel, True),
# Locally-defined model can only be pickled with cloudpickle.
- (nested_model_factory(), True),
+ pytest.param(nested_model_factory(), True, marks=cloudpickle_xfail),
],
)
def test_pickle_nested_model(model_type: type, use_cloudpickle: bool):
@@ -264,7 +270,7 @@ def nested_dataclass_model_factory() ->
(ImportableNestedDataclassModel, False),
(ImportableNestedDataclassModel, True),
# Locally-defined model can only be pickled with cloudpickle.
- (nested_dataclass_model_factory(), True),
+ pytest.param(nested_dataclass_model_factory(), True, marks=cloudpickle_xfail),
],
)
def test_pickle_dataclass_nested_in_model(model_type: type, use_cloudpickle: bool):
Index: pydantic-2.11.9/tests/test_v1.py
===================================================================
--- pydantic-2.11.9.orig/tests/test_v1.py
+++ pydantic-2.11.9/tests/test_v1.py
@@ -1,3 +1,4 @@
+import sys
import warnings
import pytest
@@ -14,6 +15,7 @@ def test_version():
assert V1_VERSION != VERSION
+@pytest.mark.skipif(sys.version_info >= (3, 14), reason='Python 3.14+ not supported')
@pytest.mark.thread_unsafe(reason='Mutates the value')
def test_root_validator():
class Model(V1BaseModel):

BIN
pydantic-2.11.7.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e14caadd65cf15f778c90cd9f4878942b44aeaeaf3a6b595fbc88b0555df0dc1
size 3090332

View File

@@ -1,15 +1,3 @@
-------------------------------------------------------------------
Mon Sep 29 12:28:15 UTC 2025 - Markéta Machová <mmachova@suse.com>
- Add upstream py314.patch to fix compatibility with Python 3.14
-------------------------------------------------------------------
Sat Sep 13 16:02:48 UTC 2025 - Dirk Müller <dmueller@suse.com>
- update to 2.11.9:
* Backport v1.10.23 changes
* Fix mypy plugin for mypy 1.18
-------------------------------------------------------------------
Fri Aug 15 04:23:15 UTC 2025 - Steve Kowalik <steven.kowalik@suse.com>
@@ -283,181 +271,181 @@ Wed Oct 2 22:06:18 UTC 2024 - Meera Belur <mbelur@suse.com>
- update to 2.9.2.
* history updates
* v bump
* Fix `ZoneInfo` with various invalid types
* Fix variance issue in `_IncEx` type alias, only allow `True`
* Fix serialization schema generation when using `PlainValidator`
* Adding notes on designing callable discriminators
* Do not error when trying to evaluate annotations of private attributes
* Fix `ZoneInfo` with various invalid types
* Fix variance issue in `_IncEx` type alias, only allow `True`
* Fix serialization schema generation when using `PlainValidator`
* Adding notes on designing callable discriminators
* Do not error when trying to evaluate annotations of private attributes
* bump
* Fix evaluation of stringified annotations during namespace inspection
* Use correct types namespace when building namedtuple core schemas
* Fix `IncEx` type alias definition
* Turn `tzdata` install requirement into optional `timezone` dependency
* Fixing `annotated-types` bound
* Fix `Predicate` issue in `v2.9.0`
* Prep for v2.9 release
* Fix lifecycle docs formatting
* Add schema generation benchmarks for models with custom serializers
* Add link for complex docs
* Respect `schema_generator` config value in `TypeAdapter`
* Ensure `__pydantic_complete__` is set when rebuilding dataclasses
* Try fix for `coverage` with hidden files
* Ensure coverage data artifact is correctly uploaded
* Support signature for wrap validators without `info`
* Reformat + add some benchmarks for annotated validators
* 👥 Update Pydantic People
* Fix typo in `orgs.toml`
* Add benchmarks for schema generation with custom validators
* Bump to `v2.9.0b2`
* Reorganize types ns functions
* Add in Hyperlint Base Style Guide + Spellcheck Configurations
* Bump `pydantic-core` to `v2.23.1` and other minor v bumps
* Use identity instead of equality after validating model in `__init__`
* Update ns stack with already copied ns
* Remove defaults filter for namespace
* Improve concepts documentation related to models
* Add benchmarks for direct model instantiation
* Fix parent namespace issue with model rebuilds
* Raise helpful warning when `self` isn't returned from model validator
* Fix history.md typos
* Minor reorganization of benchmarks
* Add comment reflecting unexpected union cache behavior that affects validation order
* Update release tweet to encourage usage for beta versions
* Add benchmarks for categories: serialization, validation and schema generation
* Fix a crash when cleaning the namespace in `ModelMetaclass`
* Fix evaluation of stringified annotations during namespace inspection
* Use correct types namespace when building namedtuple core schemas
* Fix `IncEx` type alias definition
* Turn `tzdata` install requirement into optional `timezone` dependency
* Fixing `annotated-types` bound
* Fix `Predicate` issue in `v2.9.0`
* Prep for v2.9 release
* Fix lifecycle docs formatting
* Add schema generation benchmarks for models with custom serializers
* Add link for complex docs
* Respect `schema_generator` config value in `TypeAdapter`
* Ensure `__pydantic_complete__` is set when rebuilding dataclasses
* Try fix for `coverage` with hidden files
* Ensure coverage data artifact is correctly uploaded
* Support signature for wrap validators without `info`
* Reformat + add some benchmarks for annotated validators
* 👥 Update Pydantic People
* Fix typo in `orgs.toml`
* Add benchmarks for schema generation with custom validators
* Bump to `v2.9.0b2`
* Reorganize types ns functions
* Add in Hyperlint Base Style Guide + Spellcheck Configurations
* Bump `pydantic-core` to `v2.23.1` and other minor v bumps
* Use identity instead of equality after validating model in `__init__`
* Update ns stack with already copied ns
* Remove defaults filter for namespace
* Improve concepts documentation related to models
* Add benchmarks for direct model instantiation
* Fix parent namespace issue with model rebuilds
* Raise helpful warning when `self` isn't returned from model validator
* Fix history.md typos
* Minor reorganization of benchmarks
* Add comment reflecting unexpected union cache behavior that affects validation order
* Update release tweet to encourage usage for beta versions
* Add benchmarks for categories: serialization, validation and schema generation
* Fix a crash when cleaning the namespace in `ModelMetaclass`
* Fix warnings assertions to use `pytest.warns
* Prep for v2.9.0b1 release
* Add support for annotated_types.Not
* Add 'wss' for allowed schemes in NatsDsn
* Add missing imports in documentation example
* Bump `v1` version stub to `v1.10.18`
* Use `pppr` for insiders install
* Apply misc. improvements to "Get started" documentation
* Allow validators to customize validation JSON schema
* Update `mkdocs-material` to `9.5.31`
* Update and clean up several aspects of documentation tooling
* Fix key error with custom serializer
* Remove `initial_metadata` from internal metadata construct
* Remove unused environment variables in CI
* Make sure generated JSON Schemas are valid in tests
* Fix invalid JSON Schemas being generated for functions in certain scenarios
* Breaking Change: Fix JSON Schema generation for constrained dates
* Deprecate passing a dict to the `Examples` class
* Remove `typed_dict_cls` data from `CoreMetadata`
* Fix JSON Schema generation of fields with plain validators in serialization mode
* Fix JSON Schema `number` type for literal and enum schemas
* Remove docs about pydantic plugins
* Allow `WithJsonSchema` to inject `$ref`s w/ `http` or `https` links
* Improve runtime errors for string constraints like `pattern` for incompatible types
* Add support for stringified annotations when using `PrivateAttr` with `Annotated`
* Fix core schema simplification when serialization schemas are involved in specific scenarios
* Reorganize `BaseModel` annotations
* Support PDM `v2.18.1`
* Support complex number
* Add initial architeture documentation
* Handle `nullable` schemas with `serialization` schema available during JSON Schema generation
* Blacklist default globals to support exotic user code with `__` prefixed annotations
* Fix `ImportString` special cases
* Add dsn for Snowflake
* Temporary: cap `pdm` version for `mypy` tests
* Temporary: use `pdm` v2.17.3 to unblock CI failures
* Performance boost: skip caching parent namespaces in most cases
* Do not compute JSON Schema default when plain serializers are used with `when_used` set to `'json-unless-none'` and the default value is `None`
* Add warning for double `frozen` config setting on dataclass
* Revert "Experimental feature: opt-in fast build
* Remove default module globals from types namespace
* Docs update and warning frozen defined both
* Fix ip schema serialization logic
* Improve documentation of the `@computed_field` decorator
* Improve `pyright` tests, refactor model decorators signatures
* Update tests for changes to core
* Fix `PydanticDeprecatedSince26.since` argument
* Use `is_annotated` consistently
* Adding tests for TODO union serialization fixes
* Update `griffe_doclinks` plugin and misc. docs improvements
* Remove allOf JSON schema workarounds
* Remove logic to handle unused `__get_pydantic_core_schema__` signature
* Fix `frozen` enforcement for dataclasses
* Experimental feature: opt-in fast build
* Docs update for `types.py`
* Fix evaluation of `__pydantic_extra__` annotation in specific circumstances
* Removing old typing function
* Simplify internal generics logic - remove generator overhead
* Minor speedup / cleanup for internal `FieldInfo` functions
* Bump `pydantic-core` to v2.21.0
* Raise a better user error when failing to evaluate a forward reference
* Add `Config.val_json_bytes`
* Enable more lint rules
* Prep for v2.9.0b1 release
* Add support for annotated_types.Not
* Add 'wss' for allowed schemes in NatsDsn
* Add missing imports in documentation example
* Bump `v1` version stub to `v1.10.18`
* Use `pppr` for insiders install
* Apply misc. improvements to "Get started" documentation
* Allow validators to customize validation JSON schema
* Update `mkdocs-material` to `9.5.31`
* Update and clean up several aspects of documentation tooling
* Fix key error with custom serializer
* Remove `initial_metadata` from internal metadata construct
* Remove unused environment variables in CI
* Make sure generated JSON Schemas are valid in tests
* Fix invalid JSON Schemas being generated for functions in certain scenarios
* Breaking Change: Fix JSON Schema generation for constrained dates
* Deprecate passing a dict to the `Examples` class
* Remove `typed_dict_cls` data from `CoreMetadata`
* Fix JSON Schema generation of fields with plain validators in serialization mode
* Fix JSON Schema `number` type for literal and enum schemas
* Remove docs about pydantic plugins
* Allow `WithJsonSchema` to inject `$ref`s w/ `http` or `https` links
* Improve runtime errors for string constraints like `pattern` for incompatible types
* Add support for stringified annotations when using `PrivateAttr` with `Annotated`
* Fix core schema simplification when serialization schemas are involved in specific scenarios
* Reorganize `BaseModel` annotations
* Support PDM `v2.18.1`
* Support complex number
* Add initial architeture documentation
* Handle `nullable` schemas with `serialization` schema available during JSON Schema generation
* Blacklist default globals to support exotic user code with `__` prefixed annotations
* Fix `ImportString` special cases
* Add dsn for Snowflake
* Temporary: cap `pdm` version for `mypy` tests
* Temporary: use `pdm` v2.17.3 to unblock CI failures
* Performance boost: skip caching parent namespaces in most cases
* Do not compute JSON Schema default when plain serializers are used with `when_used` set to `'json-unless-none'` and the default value is `None`
* Add warning for double `frozen` config setting on dataclass
* Revert "Experimental feature: opt-in fast build
* Remove default module globals from types namespace
* Docs update and warning frozen defined both
* Fix ip schema serialization logic
* Improve documentation of the `@computed_field` decorator
* Improve `pyright` tests, refactor model decorators signatures
* Update tests for changes to core
* Fix `PydanticDeprecatedSince26.since` argument
* Use `is_annotated` consistently
* Adding tests for TODO union serialization fixes
* Update `griffe_doclinks` plugin and misc. docs improvements
* Remove allOf JSON schema workarounds
* Remove logic to handle unused `__get_pydantic_core_schema__` signature
* Fix `frozen` enforcement for dataclasses
* Experimental feature: opt-in fast build
* Docs update for `types.py`
* Fix evaluation of `__pydantic_extra__` annotation in specific circumstances
* Removing old typing function
* Simplify internal generics logic - remove generator overhead
* Minor speedup / cleanup for internal `FieldInfo` functions
* Bump `pydantic-core` to v2.21.0
* Raise a better user error when failing to evaluate a forward reference
* Add `Config.val_json_bytes`
* Enable more lint rules
* Clarify `model_serializer
* Fix `Mapping` and `MutableMapping` annotations to use mapping schema instead of dict schema
* Bump CodSpeedHQ/action from 2 to 3
* Bump dawidd6/action-download-artifact from 3 to 6
* Move `import_module` import in `__getattr__`
* Refactor application of deque annotations
* Using cached internal import for `BaseModel`
* 👥 Update Pydantic People
* Initial start at improving import times for modules, using caching primarily
* Add import / isinstance benchmarks
* Move annotation compatibility errors to validation phase
* Support compatibility with `pdm v2.17.0`
* Apply `strict=True` to `__init__` in mypy plugin
* Fix false positives on v1 models in mypy plugin for from_orm check requiring from_attributes=True config
* Fix typing for `IPvAnyAddress` and `IPvAnyInterface`
* ⚡️ Speed up method `ConfigWrapper.core_config` by 28% in `pydantic/_internal/_config.py`
* ⚡️ Speed up function `apply_each_item_validators` by 100% in `pydantic/_internal/_generate_schema.py`
* Refactor annotation injection for known
* Fix Sequence ignoring discriminator
* chore: fix entry in `.gitignore` to let `make format` work correctly
* Move `decimal.Decimal` validation to `_generate_schema.py`
* Move date schemas to `_generate_schema.py`
* Simplify schema generation for uuid, url, and ip types
* Fix dataclass ignoring default_factory passed in Annotated
* Changed `BaseModel.model_validate_json` raises docstring to mention `ValidationError` instead of `ValueError`
* ⚡️ Speed up method `GenerateSchema._unpack_refs_defs` by 26% in `pydantic/_internal/_generate_schema.py`
* Move enum schema gen to `_generate_schema.py` for consistency
* Add class name to "has conflict" warnings
* `Counter` is handled as a mapping, not a sequence, fix `SequenceValidator` accordingly
* Fix type annotations for some potentially generic `GenerateSchema.match_type` options
* Simplify IP address schema in `_std_types_schema.py`
* Fix typo in `invalid-annotated-type` error code
* Fix _field_name_for_signature docstring
* ⚡️ Speed up function `_field_name_for_signature` by 37% in `pydantic/_internal/_signature.py`
* Add support for `ZoneInfo`
* Fix a typo on Validators doc page
* Adding new schema building benchmark
* Handle frozen fields on a per-field basis
* Allow usage of `type[Annotated[...]]`
* typing: fix recursive typing of `main.IncEnx`
* Fix `ComputedFieldInfo.wrapped_property` pointer when a property setter is assigned
* Fix `Mapping` and `MutableMapping` annotations to use mapping schema instead of dict schema
* Bump CodSpeedHQ/action from 2 to 3
* Bump dawidd6/action-download-artifact from 3 to 6
* Move `import_module` import in `__getattr__`
* Refactor application of deque annotations
* Using cached internal import for `BaseModel`
* 👥 Update Pydantic People
* Initial start at improving import times for modules, using caching primarily
* Add import / isinstance benchmarks
* Move annotation compatibility errors to validation phase
* Support compatibility with `pdm v2.17.0`
* Apply `strict=True` to `__init__` in mypy plugin
* Fix false positives on v1 models in mypy plugin for from_orm check requiring from_attributes=True config
* Fix typing for `IPvAnyAddress` and `IPvAnyInterface`
* ⚡️ Speed up method `ConfigWrapper.core_config` by 28% in `pydantic/_internal/_config.py`
* ⚡️ Speed up function `apply_each_item_validators` by 100% in `pydantic/_internal/_generate_schema.py`
* Refactor annotation injection for known
* Fix Sequence ignoring discriminator
* chore: fix entry in `.gitignore` to let `make format` work correctly
* Move `decimal.Decimal` validation to `_generate_schema.py`
* Move date schemas to `_generate_schema.py`
* Simplify schema generation for uuid, url, and ip types
* Fix dataclass ignoring default_factory passed in Annotated
* Changed `BaseModel.model_validate_json` raises docstring to mention `ValidationError` instead of `ValueError`
* ⚡️ Speed up method `GenerateSchema._unpack_refs_defs` by 26% in `pydantic/_internal/_generate_schema.py`
* Move enum schema gen to `_generate_schema.py` for consistency
* Add class name to "has conflict" warnings
* `Counter` is handled as a mapping, not a sequence, fix `SequenceValidator` accordingly
* Fix type annotations for some potentially generic `GenerateSchema.match_type` options
* Simplify IP address schema in `_std_types_schema.py`
* Fix typo in `invalid-annotated-type` error code
* Fix _field_name_for_signature docstring
* ⚡️ Speed up function `_field_name_for_signature` by 37% in `pydantic/_internal/_signature.py`
* Add support for `ZoneInfo`
* Fix a typo on Validators doc page
* Adding new schema building benchmark
* Handle frozen fields on a per-field basis
* Allow usage of `type[Annotated[...]]`
* typing: fix recursive typing of `main.IncEnx`
* Fix `ComputedFieldInfo.wrapped_property` pointer when a property setter is assigned
* ⚡️ Speed up `dataclass
* Replace str type annotation with Any in validator factories in documentation on validators
* Fix typing issue with field_validator-decorated methods
* Prevent type error for exotic BaseModel/RootModel inheritance
* Replace str type annotation with Any in validator factories in documentation on validators
* Fix typing issue with field_validator-decorated methods
* Prevent type error for exotic BaseModel/RootModel inheritance
* ⚡️ Speed up `ModelPrivateAttr.__set_name__
* chore
* ⚡️ Speed up `multiple_of_validator
* Update functional_serializers.py Typo in Docs Example Simple Fix
* Update changelog to reflect breaking changes regarding PEP 570
* Update history, bump version to alpha on `main`
* Fix issue with assertion caused by pluggable schema validator
* Fix #9706 PathLike with subtype
* Adding coverage comment
* docs: Add documentation for Semantic Version and Timezone Name
* Bump `pydantic-core` to `v2.20.1`, `pydantic-extra-types` to `v2.9.0`
* Remove spooky meetings file
* Pedantic typo correction within explanation of Pydantic's root in 'pedantic' in index.md
* Breaking Change: Merge `dict` type `json_schema_extra`
* Fix list constraint json schema application
* Respect use_enum_values on Literal types
* Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369`
* Fix breaking change in `to_snake` from v2.7 -> v2.8
* Fix labeler, again
* Hooky - switch to reviewers, labeler, fix ci bug
* Update functional_serializers.py Typo in Docs Example Simple Fix
* Update changelog to reflect breaking changes regarding PEP 570
* Update history, bump version to alpha on `main`
* Fix issue with assertion caused by pluggable schema validator
* Fix #9706 PathLike with subtype
* Adding coverage comment
* docs: Add documentation for Semantic Version and Timezone Name
* Bump `pydantic-core` to `v2.20.1`, `pydantic-extra-types` to `v2.9.0`
* Remove spooky meetings file
* Pedantic typo correction within explanation of Pydantic's root in 'pedantic' in index.md
* Breaking Change: Merge `dict` type `json_schema_extra`
* Fix list constraint json schema application
* Respect use_enum_values on Literal types
* Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369`
* Fix breaking change in `to_snake` from v2.7 -> v2.8
* Fix labeler, again
* Hooky - switch to reviewers, labeler, fix ci bug
-------------------------------------------------------------------
Fri Sep 27 02:01:34 UTC 2024 - Yogalakshmi Arunachalam <yarunachalam@suse.com>
- update to 2.8.2.
- update to 2.8.2.
* Fix issue with assertion caused by pluggable schema validator by @dmontagu in #9838
-------------------------------------------------------------------

View File

@@ -27,7 +27,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-pydantic%{psuffix}
Version: 2.11.9
Version: 2.11.7
Release: 0
Summary: Data validation and settings management using python type hinting
License: MIT
@@ -39,8 +39,6 @@ Patch0: bump-pydantic-core-2.35.1.patch
Patch1: field-name-validator-core-schemas.patch
# PATCH-FIX-UPSTREAM Based on gh#pydantic/pydantic#11883
Patch2: support-pydantic-core-2.39.0.patch
# PATCH-FIX-UPSTREAM https://github.com/pydantic/pydantic/pull/11991 Add initial support for Python 3.14
Patch3: py314.patch
BuildRequires: %{python_module hatch-fancy-pypi-readme}
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module packaging}