diff --git a/pydantic-2.7.3.tar.gz b/pydantic-2.7.3.tar.gz deleted file mode 100644 index 7578e01..0000000 --- a/pydantic-2.7.3.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c2706033be7d026c2a2d7ccf512d67c41e32d17d1d40cbc4a5bd57578d3d70cc -size 2749431 diff --git a/pydantic-2.9.2.tar.gz b/pydantic-2.9.2.tar.gz new file mode 100644 index 0000000..37013f2 --- /dev/null +++ b/pydantic-2.9.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d1eb7fe5fb8a55a6aea793b8c946c84c70ca084f22672f0fa2558932ec812dd +size 2826540 diff --git a/python-pydantic.changes b/python-pydantic.changes index 305ee40..b4b654f 100644 --- a/python-pydantic.changes +++ b/python-pydantic.changes @@ -1,3 +1,258 @@ +------------------------------------------------------------------- +Wed Oct 2 22:06:18 UTC 2024 - Meera Belur + +- 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 + * 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 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 + * 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 + * ⚡️ 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 + * ⚡️ 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 + +------------------------------------------------------------------- +Fri Sep 27 02:01:34 UTC 2024 - Yogalakshmi Arunachalam + +- update to 2.8.2. + * Fix issue with assertion caused by pluggable schema validator by @dmontagu in #9838 + +------------------------------------------------------------------- +Mon Jul 1 16:29:01 UTC 2024 - Dirk Müller + +- 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 + `mypy` plugin + * Fixed type hint of `validation_context` + * Support context being passed to TypeAdapter's + `dump_json`/`dump_python` + * Updates type signature for `Field()` constructor + * Improve builtin alias generators + * Fix typing of `TypeAdapter` + * Add fallback default value for private fields in + `__setstate__` of BaseModel + * Support `PEP 746` + * Allow validator and serializer functions to have default + values + * Fix bug with mypy plugin's handling of covariant `TypeVar` + fields + * Fix multiple annotation / constraint application logic + * Respect `regex` flags in validation and json schema + * Fix type hint on `IpvAnyAddress` + * Allow a field specifier on `__pydantic_extra__` + * Use normalized case for file path comparison + * Modify constraint application logic to allow field + constraints on `Optional[Decimal]` + * `validate_call` type params fix + * Check all warnings returned by pytest.warns() + * Reuse `re.Pattern` object in regex patterns to allow for + regex flags +- drop support-pytest-8.patch (upstream) + +------------------------------------------------------------------- +Sun Jun 30 20:44:51 UTC 2024 - Dirk Müller + +- drop optional email-validator dependency + +------------------------------------------------------------------- +Mon Jun 24 15:45:05 UTC 2024 - Dirk Müller + +- update to 2.7.4: + * Bump `pydantic.v1` to `v1.10.16` reference + * Specify `recursive_guard` as kwarg in `FutureRef._evaluate` + ------------------------------------------------------------------- Thu Jun 6 14:14:46 UTC 2024 - Dirk Müller diff --git a/python-pydantic.spec b/python-pydantic.spec index 8b5c81e..3291f20 100644 --- a/python-pydantic.spec +++ b/python-pydantic.spec @@ -27,14 +27,12 @@ %endif %{?sle15_python_module_pythons} Name: python-pydantic%{psuffix} -Version: 2.7.3 +Version: 2.9.2 Release: 0 Summary: Data validation and settings management using python type hinting License: MIT URL: https://github.com/pydantic/pydantic Source: https://github.com/pydantic/pydantic/archive/v%{version}.tar.gz#/pydantic-%{version}.tar.gz -# PATCH-FIX-UPSTREAM gh#pydantic/pydantic#9527 -Patch0: support-pytest-8.patch BuildRequires: %{python_module hatch-fancy-pypi-readme} BuildRequires: %{python_module hatchling} BuildRequires: %{python_module packaging} @@ -47,20 +45,21 @@ BuildRequires: %{python_module Faker} BuildRequires: %{python_module cloudpickle} BuildRequires: %{python_module dirty-equals} BuildRequires: %{python_module email-validator >= 2.0} -BuildRequires: %{python_module pydantic == %{version}} +BuildRequires: %{python_module jsonschema >= 4.23.0 } +BuildRequires: %{python_module pydantic = %{version}} BuildRequires: %{python_module pytest-benchmark} BuildRequires: %{python_module pytest-examples} BuildRequires: %{python_module pytest-mock} BuildRequires: %{python_module pytest} BuildRequires: %{python_module python-dotenv >= 0.10.4} +BuildRequires: %{python_module rich} %endif Requires: python-annotated-types >= 0.4.0 %if 0%{?python_version_nodots} < 310 Requires: python-eval-type-backport %endif -Requires: python-pydantic-core == 2.18.4 -Requires: python-typing_extensions >= 4.6.1 -Suggests: python-email-validator >= 2.0 +Requires: python-pydantic-core = 2.23.4 +Requires: python-typing-extensions >= 4.6.1 BuildArch: noarch %python_subpackages diff --git a/support-pytest-8.patch b/support-pytest-8.patch deleted file mode 100644 index cb06b40..0000000 --- a/support-pytest-8.patch +++ /dev/null @@ -1,382 +0,0 @@ -From 7fb31529124f51cceb32d1d7b8ae9b58c0606b17 Mon Sep 17 00:00:00 2001 -From: Steve Kowalik -Date: Thu, 30 May 2024 14:14:04 +1000 -Subject: [PATCH] Ignore other warnings when checking warnings -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Building on Michał's amazing work in PR#9040, extend the pattern to also -ignore other warnings that are emitted by pytest.warns() when running -under Pytest 8.x. This also continues to support Pytest 7.x. - -Co-authored-by: Michał Górny - -Fixes: #9025 ---- - tests/conftest.py | 2 +- - tests/test_config.py | 84 +++++++++++--------- - tests/test_deprecated.py | 156 ++++++++++++++++++++++---------------- - tests/test_json_schema.py | 9 ++- - tests/test_validators.py | 1 + - 5 files changed, 146 insertions(+), 106 deletions(-) - -diff --git a/tests/conftest.py b/tests/conftest.py -index e0c0dee018..421afade2e 100644 ---- a/tests/conftest.py -+++ b/tests/conftest.py -@@ -49,7 +49,7 @@ def _create_module_file(code, tmp_path, name): - def disable_error_urls(): - # Don't add URLs during docs tests when printing - # Otherwise we'll get version numbers in the URLs that will update frequently -- os.environ['PYDANTIC_ERRORS_OMIT_URL'] = 'true' -+ os.environ['PYDANTIC_ERRORS_INCLUDE_URL'] = 'false' - - - @pytest.fixture -diff --git a/tests/test_config.py b/tests/test_config.py -index 1a5e31628a..31b2320326 100644 ---- a/tests/test_config.py -+++ b/tests/test_config.py -@@ -1,6 +1,7 @@ - import json - import re - import sys -+import warnings - from contextlib import nullcontext as does_not_raise - from decimal import Decimal - from inspect import signature -@@ -349,45 +350,54 @@ class Model(BaseModel): - assert m == m.model_copy() - - def test_config_class_is_deprecated(self): -- with pytest.warns( -- PydanticDeprecatedSince20, match='Support for class-based `config` is deprecated, use ConfigDict instead.' -- ): -- -- class Config(BaseConfig): -- pass -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ -+ class Config(BaseConfig): -+ pass - - def test_config_class_attributes_are_deprecated(self): -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='Support for class-based `config` is deprecated, use ConfigDict instead.', -- ): -- assert BaseConfig.validate_assignment is False -- -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='Support for class-based `config` is deprecated, use ConfigDict instead.', -- ): -- assert BaseConfig().validate_assignment is False -- -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='Support for class-based `config` is deprecated, use ConfigDict instead.', -- ): -- -- class Config(BaseConfig): -- pass -- -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='Support for class-based `config` is deprecated, use ConfigDict instead.', -- ): -- assert Config.validate_assignment is False -- -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='Support for class-based `config` is deprecated, use ConfigDict instead.', -- ): -- assert Config().validate_assignment is False -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ assert BaseConfig.validate_assignment is False -+ -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ assert BaseConfig().validate_assignment is False -+ -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ -+ class Config(BaseConfig): -+ pass -+ -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ assert Config.validate_assignment is False -+ -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='Support for class-based `config` is deprecated, use ConfigDict instead.', -+ ): -+ assert Config().validate_assignment is False - - @pytest.mark.filterwarnings('ignore:.* is deprecated.*:DeprecationWarning') - def test_config_class_missing_attributes(self): -diff --git a/tests/test_deprecated.py b/tests/test_deprecated.py -index fda6879597..2e58e8b433 100644 ---- a/tests/test_deprecated.py -+++ b/tests/test_deprecated.py -@@ -1,5 +1,6 @@ - import platform - import re -+import warnings - from datetime import date, timedelta - from pathlib import Path - from types import SimpleNamespace -@@ -273,8 +274,12 @@ class Model(BaseModel): - x: int - y: int - -- with pytest.warns(PydanticDeprecatedSince20, match='The `parse_raw` method is deprecated'): -- model = Model.parse_raw('{"x": 1, "y": 2}') -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns(PydanticDeprecatedSince20, match='The `parse_raw` method is deprecated'): -+ model = Model.parse_raw('{"x": 1, "y": 2}') - assert model.model_dump() == {'x': 1, 'y': 2} - - -@@ -284,9 +289,13 @@ class Model(BaseModel): - x: int - y: int - -- with pytest.warns(PydanticDeprecatedSince20, match='The `parse_raw` method is deprecated'): -- with pytest.raises(ValidationError, match='1 validation error for Model') as exc_info: -- Model.parse_raw('invalid') -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns(PydanticDeprecatedSince20, match='The `parse_raw` method is deprecated'): -+ with pytest.raises(ValidationError, match='1 validation error for Model') as exc_info: -+ Model.parse_raw('invalid') - - # insert_assert(exc_info.value.errors(include_url=False)) - assert exc_info.value.errors(include_url=False) == [ -@@ -435,10 +444,14 @@ class Model(BaseModel): - - def test_field_include_deprecation(): - m = '`include` is deprecated and does nothing. It will be removed, use `exclude` instead' -- with pytest.warns(PydanticDeprecatedSince20, match=m): -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns(PydanticDeprecatedSince20, match=m): - -- class Model(BaseModel): -- x: int = Field(include=True) -+ class Model(BaseModel): -+ x: int = Field(include=True) - - - def test_unique_items_items(): -@@ -664,10 +677,14 @@ def test_parse_obj(): - def test_parse_file(tmp_path): - path = tmp_path / 'test.json' - path.write_text('{"x": 12}') -- with pytest.warns( -- PydanticDeprecatedSince20, match='^The `parse_file` method is deprecated; load the data from file,' -- ): -- assert SimpleModel.parse_file(str(path)).model_dump() == {'x': 12} -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns( -+ PydanticDeprecatedSince20, match='^The `parse_file` method is deprecated; load the data from file,' -+ ): -+ assert SimpleModel.parse_file(str(path)).model_dump() == {'x': 12} - - - def test_construct(): -@@ -736,61 +753,68 @@ def test_deprecated_module(tmp_path: Path) -> None: - class Model(BaseModel): - x: int - -- assert hasattr(parse_obj_as, '__deprecated__') -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='`parse_obj_as` is deprecated. Use `pydantic.TypeAdapter.validate_python` instead.', -- ): -- parse_obj_as(Model, {'x': 1}) -- -- assert hasattr(schema_json_of, '__deprecated__') -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='`schema_json_of` is deprecated. Use `pydantic.TypeAdapter.json_schema` instead.', -- ): -- schema_json_of(Model) -- -- assert hasattr(schema_of, '__deprecated__') -- with pytest.warns( -- PydanticDeprecatedSince20, match='`schema_of` is deprecated. Use `pydantic.TypeAdapter.json_schema` instead.' -- ): -- schema_of(Model) -- -- assert hasattr(load_str_bytes, '__deprecated__') -- with pytest.warns(PydanticDeprecatedSince20, match='`load_str_bytes` is deprecated.'): -- load_str_bytes('{"x": 1}') -- -- assert hasattr(load_file, '__deprecated__') -- file = tmp_path / 'main.py' -- file.write_text('{"x": 1}') -- with pytest.warns(PydanticDeprecatedSince20, match='`load_file` is deprecated.'): -- load_file(file) -- -- assert hasattr(pydantic_encoder, '__deprecated__') -- with pytest.warns( -- PydanticDeprecatedSince20, -- match='`pydantic_encoder` is deprecated, use `pydantic_core.to_jsonable_python` instead.', -- ): -- pydantic_encoder(Model(x=1)) -- -- assert hasattr(custom_pydantic_encoder, '__deprecated__') -- with pytest.warns( -- PydanticDeprecatedSince20, match='`custom_pydantic_encoder` is deprecated, use `BaseModel.model_dump` instead.' -- ): -- custom_pydantic_encoder({int: lambda x: str(x)}, Model(x=1)) -- -- assert hasattr(timedelta_isoformat, '__deprecated__') -- with pytest.warns(PydanticDeprecatedSince20, match='`timedelta_isoformat` is deprecated.'): -- timedelta_isoformat(timedelta(seconds=1)) -- -- with pytest.warns( -- PydanticDeprecatedSince20, match='The `validate_arguments` method is deprecated; use `validate_call` instead.' -- ): -- -- def test(a: int, b: int): -- pass -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ assert hasattr(parse_obj_as, '__deprecated__') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='`parse_obj_as` is deprecated. Use `pydantic.TypeAdapter.validate_python` instead.', -+ ): -+ parse_obj_as(Model, {'x': 1}) -+ -+ assert hasattr(schema_json_of, '__deprecated__') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='`schema_json_of` is deprecated. Use `pydantic.TypeAdapter.json_schema` instead.', -+ ): -+ schema_json_of(Model) -+ -+ assert hasattr(schema_of, '__deprecated__') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='`schema_of` is deprecated. Use `pydantic.TypeAdapter.json_schema` instead.', -+ ): -+ schema_of(Model) -+ -+ assert hasattr(load_str_bytes, '__deprecated__') -+ with pytest.warns(PydanticDeprecatedSince20, match='`load_str_bytes` is deprecated.'): -+ load_str_bytes('{"x": 1}') -+ -+ assert hasattr(load_file, '__deprecated__') -+ file = tmp_path / 'main.py' -+ file.write_text('{"x": 1}') -+ with pytest.warns(PydanticDeprecatedSince20, match='`load_file` is deprecated.'): -+ load_file(file) -+ -+ assert hasattr(pydantic_encoder, '__deprecated__') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='`pydantic_encoder` is deprecated, use `pydantic_core.to_jsonable_python` instead.', -+ ): -+ pydantic_encoder(Model(x=1)) -+ -+ assert hasattr(custom_pydantic_encoder, '__deprecated__') -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='`custom_pydantic_encoder` is deprecated, use `BaseModel.model_dump` instead.', -+ ): -+ custom_pydantic_encoder({int: lambda x: str(x)}, Model(x=1)) -+ -+ assert hasattr(timedelta_isoformat, '__deprecated__') -+ with pytest.warns(PydanticDeprecatedSince20, match='`timedelta_isoformat` is deprecated.'): -+ timedelta_isoformat(timedelta(seconds=1)) -+ -+ with pytest.warns( -+ PydanticDeprecatedSince20, -+ match='The `validate_arguments` method is deprecated; use `validate_call` instead.', -+ ): -+ -+ def test(a: int, b: int): -+ pass - -- validate_arguments()(test) -+ validate_arguments()(test) - - - def test_deprecated_color(): -diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py -index e6c60557a5..85d833c15c 100644 ---- a/tests/test_json_schema.py -+++ b/tests/test_json_schema.py -@@ -5,6 +5,7 @@ - import re - import sys - import typing -+import warnings - from datetime import date, datetime, time, timedelta - from decimal import Decimal - from enum import Enum, IntEnum -@@ -1385,8 +1386,12 @@ class Model(BaseModel): - class MyGenerator(GenerateJsonSchema): - ignored_warning_kinds = () - -- with pytest.warns(PydanticJsonSchemaWarning, match=warning_match): -- model_schema = Model.model_json_schema(schema_generator=MyGenerator) -+ with warnings.catch_warnings(): -+ # we need to explicitly ignore the other warning in pytest-8 -+ # TODO: rewrite it to use two nested pytest.warns() when pytest-7 is no longer supported -+ warnings.simplefilter('ignore') -+ with pytest.warns(PydanticJsonSchemaWarning, match=warning_match): -+ model_schema = Model.model_json_schema(schema_generator=MyGenerator) - assert model_schema == { - 'properties': {'callback': {'title': 'Callback', 'type': 'integer'}}, - 'title': 'Model', -diff --git a/tests/test_validators.py b/tests/test_validators.py -index 52a8bda88f..b286c49b1b 100644 ---- a/tests/test_validators.py -+++ b/tests/test_validators.py -@@ -2554,6 +2554,7 @@ class Model(BaseModel): - assert Model(x=1, y=2).model_dump() == {'x': 2, 'y': 3} - - -+@pytest.mark.filterwarnings('ignore:Pydantic V1 style `@root_validator` validators are deprecated.*:pydantic.warnings.PydanticDeprecatedSince20') - def test_root_validator_allow_reuse_same_field(): - with pytest.warns(UserWarning, match='`root_val` overrides an existing Pydantic `@root_validator` decorator'): -