Sync from SUSE:SLFO:Main python-pydantic revision 79d5ca3e8f9bd0291017638ad911eee9
This commit is contained in:
parent
2e1415973e
commit
698e4cf4b8
BIN
pydantic-2.7.3.tar.gz
(Stored with Git LFS)
BIN
pydantic-2.7.3.tar.gz
(Stored with Git LFS)
Binary file not shown.
BIN
pydantic-2.9.2.tar.gz
(Stored with Git LFS)
Normal file
BIN
pydantic-2.9.2.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,3 +1,258 @@
|
||||
-------------------------------------------------------------------
|
||||
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
|
||||
* 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 <yarunachalam@suse.com>
|
||||
|
||||
- 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 <dmueller@suse.com>
|
||||
|
||||
- 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 <dmueller@suse.com>
|
||||
|
||||
- drop optional email-validator dependency
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jun 24 15:45:05 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- 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 <dmueller@suse.com>
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,382 +0,0 @@
|
||||
From 7fb31529124f51cceb32d1d7b8ae9b58c0606b17 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Kowalik <steven@wedontsleep.org>
|
||||
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 <mgorny@gentoo.org>
|
||||
|
||||
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'):
|
||||
|
Loading…
Reference in New Issue
Block a user