commit 2972094ffd9fb68fe45e35c755b2f5a126a8a916 Author: Adrian Schröter Date: Tue Dec 17 16:40:30 2024 +0100 Sync from SUSE:ALP:Source:Standard:1.0 python-pydantic revision f3db0e0cbb16309fcdce36809087ab14 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/CVE-2024-3772.patch b/CVE-2024-3772.patch new file mode 100644 index 0000000..03955a1 --- /dev/null +++ b/CVE-2024-3772.patch @@ -0,0 +1,120 @@ +Index: pydantic-1.10.7/pydantic/networks.py +=================================================================== +--- pydantic-1.10.7.orig/pydantic/networks.py ++++ pydantic-1.10.7/pydantic/networks.py +@@ -701,7 +701,19 @@ class IPvAnyNetwork(_BaseNetwork): # ty + raise errors.IPvAnyNetworkError() + + +-pretty_email_regex = re.compile(r'([\w ]*?) *<(.*)> *') ++def _build_pretty_email_regex() -> re.Pattern[str]: ++ name_chars = r'[\w!#$%&\'*+\-/=?^_`{|}~]' ++ unquoted_name_group = rf'((?:{name_chars}+\s+)*{name_chars}+)' ++ quoted_name_group = r'"((?:[^"]|\")+)"' ++ email_group = r'<(.+)>' ++ return re.compile(rf'\s*(?:{unquoted_name_group}|{quoted_name_group})?\s*{email_group}\s*') ++ ++pretty_email_regex = _build_pretty_email_regex() ++ ++MAX_EMAIL_LENGTH = 2048 ++"""Maximum length for an email. ++A somewhat arbitrary but very generous number compared to what is allowed by most implementations. ++""" + + + def validate_email(value: Union[str]) -> Tuple[str, str]: +@@ -718,10 +730,14 @@ def validate_email(value: Union[str]) -> + if email_validator is None: + import_email_validator() + ++ if len(value) > MAX_EMAIL_LENGTH: ++ raise errors.EmailError() ++ + m = pretty_email_regex.fullmatch(value) +- name: Optional[str] = None ++ name: str | None = None + if m: +- name, value = m.groups() ++ unquoted_name, quoted_name, value = m.groups() ++ name = unquoted_name or quoted_name + + email = value.strip() + +Index: pydantic-1.10.7/tests/test_networks.py +=================================================================== +--- pydantic-1.10.7.orig/tests/test_networks.py ++++ pydantic-1.10.7/tests/test_networks.py +@@ -1,3 +1,5 @@ ++from typing import Union ++ + import pytest + + from pydantic import ( +@@ -15,6 +17,7 @@ from pydantic import ( + PostgresDsn, + RedisDsn, + ValidationError, ++ EmailError, + stricturl, + ) + from pydantic.networks import validate_email +@@ -768,31 +771,37 @@ def test_address_valid(value, name, emai + + @pytest.mark.skipif(not email_validator, reason='email_validator not installed') + @pytest.mark.parametrize( +- 'value', ++ 'value,reason', + [ +- 'f oo.bar@example.com ', +- 'foo.bar@exam\nple.com ', +- 'foobar', +- 'foobar ', ++ ('@example.com', 'There must be something before the @-sign.'), ++ ('f oo.bar@example.com', 'The email address contains invalid characters before the @-sign'), ++ ('foobar', 'An email address must have an @-sign.'), ++ ('foobar@localhost', 'The part after the @-sign is not valid. It should have a period.'), ++ ('foobar@127.0.0.1', 'The part after the @-sign is not valid. It is not within a valid top-level domain.'), ++ ('foo.bar@exam\nple.com ', None), ++ ('foobar ', None), ++ ('foobar >', None), ++ ('foobar <', None), ++ ('foobar <>', None), ++ ('first.last ', None), ++ pytest.param('foobar <' + 'a' * 4096 + '@example.com>', 'Length must not exceed 2048 characters', id='long'), + ], + ) +-def test_address_invalid(value): +- with pytest.raises(ValueError): ++def test_address_invalid(value: str, reason: Union[str, None]): ++ with pytest.raises(EmailError): + validate_email(value) + + diff --git a/ignore-urllib3-pyopenssl-warning.patch b/ignore-urllib3-pyopenssl-warning.patch new file mode 100644 index 0000000..db10c2c --- /dev/null +++ b/ignore-urllib3-pyopenssl-warning.patch @@ -0,0 +1,12 @@ +Index: pydantic-1.10.2/setup.cfg +=================================================================== +--- pydantic-1.10.2.orig/setup.cfg ++++ pydantic-1.10.2/setup.cfg +@@ -11,6 +11,7 @@ filterwarnings = + # for Python 3.11 + ignore:path is deprecated.*:DeprecationWarning:certifi + ignore:module 'sre_constants' is deprecated:DeprecationWarning:pkg_resources ++ ignore:.*urllib3.contrib.pyopenssl.*:DeprecationWarning + + [flake8] + max-line-length = 120 diff --git a/pydantic-1.10.7.tar.gz b/pydantic-1.10.7.tar.gz new file mode 100644 index 0000000..dcd7237 --- /dev/null +++ b/pydantic-1.10.7.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff346da03d333b055a2d432f50e2b5c452697a2881d6ff2302162d2525c7f145 +size 903379 diff --git a/python-pydantic.changes b/python-pydantic.changes new file mode 100644 index 0000000..8b714eb --- /dev/null +++ b/python-pydantic.changes @@ -0,0 +1,394 @@ +------------------------------------------------------------------- +Thu Oct 24 08:25:07 UTC 2024 - Daniel Garcia + +- Add CVE-2024-3772.patch to fix regular expression DDOS + (bsc#1222806, CVE-2024-3772) + +------------------------------------------------------------------- +Mon Mar 27 10:00:20 UTC 2023 - Dirk Müller + +- update to 1.10.7: + * Fix creating schema from model using `ConstrainedStr` with + `regex` as dict key + * Address bug in mypy plugin caused by + explicit_package_bases=True + * Add implicit defaults in the mypy plugin for Field with no + default argument + * Fix schema generated for Enum values used as Literals in + discriminated unions + * Fix mypy failures caused by the pydantic mypy plugin when + users define `from_orm` in their own classes + * Fix `InitVar` usage with pydantic dataclasses, mypy version + `1.1.1` and the custom mypy plugin + * Implement logic to support creating validators from non + standard callables by using defaults to identify them and + unwrapping `functools.partial` and `functools.partialmethod` + when checking the signature + * Fix mypy plugin for v1.1.1, and fix `dataclass_transform` + decorator for pydantic dataclasses + * Raise `ValidationError`, not `ConfigError`, when a + discriminator value is unhashable + * Fix broken parametrized bases handling with `GenericModel`s + with complex sets of models + * Invalidate mypy cache if plugin config changes + * Fix `RecursionError` when deep-copying dataclass types + wrapped by pydantic + * Fix `X | Y` union syntax breaking `GenericModel` + +------------------------------------------------------------------- +Thu Mar 16 07:18:03 UTC 2023 - Daniel Garcia + +- Disable DeprecationWarning in tests to avoid error with the latest + setuptools and pkg_resources deprecation + +------------------------------------------------------------------- +Mon Jan 2 20:22:05 UTC 2023 - Dirk Müller + +- update to v1.10.4: + * Change dependency to typing-extensions>=4.2.0, #4885 by @samuelcolvin + * fix parsing of custom root models, #4883 by @gou177 + * fix: use dataclass proxy for frozen or empty dataclasses, #4878 by + @PrettyWood + * Fix schema and schema_json on models where a model instance is a one of + default values, #4781 by @Bobronium + * Add Jina AI to sponsors on docs index page, #4767 by @samuelcolvin + * fix: support assignment on DataclassProxy, #4695 by @PrettyWood + * Add postgresql+psycopg as allowed scheme for PostgreDsn to make it + usable with SQLAlchemy 2, #4689 by @morian + * Allow dict schemas to have both patternProperties and + additionalProperties, #4641 by @jparise + * Fixes error passing None for optional lists with unique_items, #4568 by + @mfulgo + * Fix GenericModel with Callable param raising a TypeError, #4551 by + @mfulgo + * Fix field regex with StrictStr type annotation, #4538 by @sisp + * Correct dataclass_transform keyword argument name from field_descriptors + to field_specifiers, #4500 by @samuelcolvin + * fix: avoid multiple calls of __post_init__ when dataclasses are + inherited, #4487 by @PrettyWood + * Reduce the size of binary wheels, #2276 by @samuelcolvin + +------------------------------------------------------------------- +Fri Sep 9 00:47:25 UTC 2022 - Steve Kowalik + +- Update to 1.10.2: + * Prevent long (length > 4_300) strings/bytes as input to int fields, see + python/cpython#95778 and CVE-2020-10735 + * fix: dataclass wrapper was not always called + * Use tomllib on Python 3.11 when parsing mypy configuration + * Basic fix of GenericModel cache to detect order of arguments in Union models + * Fix mypy plugin when using bare types like list and dict as default_factory + * Add __hash__ method to pydancic.color.Color class + * Refactor the whole pydantic dataclass decorator to really act like its + standard lib equivalent. It hence keeps __eq__, __hash__, ... and makes + comparison with its non-validated version possible. + * Now that Config.extra is supported, dataclass ignores by default extra + arguments (like BaseModel) + * Fix PEP487 __set_name__ protocol in BaseModel for PrivateAttrs + * Allow for custom parsing of environment variables via parse_env_var in + Config + * Fix StrictStr does not raise ValidationError when max_length is present + in Field + * Make SecretStr and SecretBytes hashable + * Fix StrictBytes does not raise ValidationError when max_length is present + in Field + * Add support for bare type + * Support Python 3.11, including binaries for 3.11 in PyPI + * Add support for re.Pattern + * Fix __post_init_post_parse__ is incorrectly passed keyword arguments when + no __post_init__ is defined + * Fix implicitly importing ForwardRef and Callable from pydantic.typing + instead of typing and also expose MappingIntStrAny + * remove Any types from the dataclass decorator so it can be used with the + disallow_any_expr mypy option + * fix "extra fields not permitted" error when dataclass with Extra.forbid + is validated multiple times + * Discriminated union models now use oneOf instead of anyOf when generating + OpenAPI schema definitions + * Allow type checkers to infer inner type of Json type. Json[list[str]] will + be now inferred as list[str] + * Allow empty string aliases by using a alias is not None check, rather + than bool(alias) + * Use parent model's Config when validating nested NamedTuple fields + * Update BaseModel.construct to work with aliased Fields + * Catch certain raised errors in smart_deepcopy and revert to deepcopy if so + * Add Config.anystr_upper and to_upper kwarg to constr and conbytes + * Fix JSON schema for set and frozenset when they include default values + * Teach the mypy plugin that methods decorated by @validator are classmethods + * Improve mypy plugin's ability to detect required fields + * Support fields of type Type[] in schema + * Adds reserved word check to signature generation logic + * Fix Json strategy failure for the complex nested field + * Add JSON-compatible float constraint allow_inf_nan + * Remove undefined behaviour when env_prefix had characters in common with + env_nested_delimiter + * Support generics model with create_model + * allow submodels to overwrite extra field info + * support overwriting dunder attributes of BaseModel instances + * Support kw_only in dataclasses + * Add comparison method for Color class + * created new function to_lower_camel() for "non pascal case" camel case + * Add checks to default and default_factory arguments in Mypy plugin + * Fix parsing of very small numeric timedelta values + * Update SecretsSettingsSource to respect config.case_sensitive + * Add support for multiple dotenv files + * Raise an explicit ConfigError when multiple fields are incorrectly set + for a single validator + * Allow ellipsis on Fields inside Annotated for TypedDicts required + * Catch overflow errors in int_validator + * validate_arguments decorator now supports alias + * Add ability to use Final in a field type annotation + * Update requirement to typing_extensions>=4.1.0 to guarantee + dataclass_transform is available +- Remove patch remove-pkg_resources.patch: + * Included upstream. +- Add patch ignore-urllib3-pyopenssl-warning.patch: + * Ignore DeprecationWarning until requests-toolbelt is fixed. +- Update {Build,}Requires to email-validator package. + +------------------------------------------------------------------- +Tue Jul 19 09:20:43 UTC 2022 - Steve Kowalik + +- Add patch remove-pkg_resources.patch: + * Use packaging, not pkg_resources for versions. + +------------------------------------------------------------------- +Sat Jun 18 13:37:28 UTC 2022 - Michael Ströder + +- Update to 1.9.1 + * Limit the size of generics._generic_types_cache and generics._assigned_parameters + to avoid unlimited increase in memory usage, #4083 by @samuelcolvin + * Add Jupyverse and FPS as Jupyter projects using pydantic, #4082 by @davidbrochart + * Speedup __isinstancecheck__ on pydantic models when the type is not a model, + may also avoid memory "leaks", #4081 by @samuelcolvin + * Fix in-place modification of FieldInfo that caused problems with + PEP 593 type aliases, #4067 by @adriangb + * Add support for autocomplete in VS Code via __dataclass_transform__ + when using pydantic.dataclasses.dataclass, #4006 by @giuliano-oliveira + * Remove benchmarks from codebase and docs, #3973 by @samuelcolvin + * Typing checking with pyright in CI, improve docs on vscode/pylance/pyright, #3972 by @samuelcolvin + * Fix nested Python dataclass schema regression, #3819 by @himbeles + * Update documentation about lazy evaluation of sources for Settings, #3806 by @garyd203 + * Prevent subclasses of bytes being converted to bytes, #3706 by @samuelcolvin + * Fixed "error checking inheritance of" when using PEP585 and PEP604 type hints, #3681 by @aleksul + * Allow self referencing ClassVars in models, #3679 by @samuelcolvin + * Fix issue with self-referencing dataclass, #3675 by @uriyyo + * Include non-standard port numbers in rendered URLs, #3652 by @dolfinus + * Config.copy_on_model_validation does a deep copy and not a shallow one, #3641 by @PrettyWood + * fix: clarify that discriminated unions do not support singletons, #3636 by @tommilligan + * Add read_text(encoding='utf-8') for setup.py, #3625 by @hswong3i + * Fix JSON Schema generation for Discriminated Unions within lists, #3608 by @samuelcolvin + +------------------------------------------------------------------- +Wed Feb 2 04:12:37 UTC 2022 - Steve Kowalik + +- Skip some truculent tests. +- Clean up non-required Python 3.6 {Build,}Requires. + +------------------------------------------------------------------- +Wed Jan 5 16:08:23 UTC 2022 - Ben Greiner + +- Update to 1.9.0 + * add python 3.10 support, #2885 by @PrettyWood + * Discriminated unions, #619 by @PrettyWood + * Config.smart_union for better union logic, #2092 by @PrettyWood + * Binaries for Macos M1 CPUs, #3498 by @samuelcolvin + * Complex types can be set via nested environment variables, e.g. + foo___bar, #3159 by @Air-Mark + * add a dark mode to pydantic documentation, #2913 by @gbdlin + * Add support for autocomplete in VS Code via + __dataclass_transform__, #2721 by @tiangolo + * Add "exclude" as a field parameter so that it can be configured + using model config, #660 by @daviskirk +- Full changelog in HISTORY.md + +------------------------------------------------------------------- +Thu May 13 11:07:30 UTC 2021 - Markéta Machová + +- Update to 1.8.2 (bsc#1186019, CVE-2021-29510) + * Security fix: Fix date and datetime parsing so passing either 'infinity' + or float('inf') (or their negative values) does not cause an infinite loop + * Allow passing json_encoders in class kwargs + * support arbitrary types with custom __eq__ + * Hypothesis plugin for testing + * support for NamedTuple and TypedDict + * Support Annotated hints on model fields + * frozen parameter on Config to allow models to be hashed + * Breaking Change, remove old deprecation aliases from v1 + * Breaking Change: always validate only first sublevel items with each_item + * many more changes, see upstream changelog + +------------------------------------------------------------------- +Fri Jan 8 13:10:40 UTC 2021 - Markéta Machová + +- Update to 1.7.3 + * python 3.9 support + * Private model attributes + * "secrets files" support in BaseSettings + * convert stdlib dataclasses to pydantic dataclasses and use stdlib dataclasses in models + * few bugfixes +- Drop validate-config.patch + +------------------------------------------------------------------- +Mon Dec 7 01:00:22 UTC 2020 - Benjamin Greiner + +- Add dataclasses requirement for Python 3.6: Fixes Leap 15.2 build + and future TW python36 flavor gh#openSUSE/python-rpm-macros#66 + +------------------------------------------------------------------- +Mon Oct 12 08:58:44 UTC 2020 - Marketa Calabkova + +- Add upstream patch validate-config.patch which fixes build with new pytest + +------------------------------------------------------------------- +Sun Aug 2 15:14:47 UTC 2020 - John Vandenberg + +- Add optional test dependencies +- Recommend optional runtime dependency python-typing_extensions +- Remove unused runtime dependency ujson +- Update to v1.6.1 + * fix validation and parsing of nested models with default_factory +- from v1.6 + * Modify validators for conlist and conset to not have always=True + * Add port check to AnyUrl (can't exceed 65536) ports are 16 insigned + bits: 0 <= port <= 2**16-1 src: rfc793 header format + * Document default regex anchoring semantics + * Use chain.from_iterable in class_validators.py. This is a faster + and more idiomatic way of using itertools.chain. Instead of computing + all the items in the iterable and storing them in memory, they are + computed one-by-one and never stored as a huge list. + This can save on both runtime and memory space + * Add conset(), analogous to conlist() + * make pydantic errors (un)pickable + * Allow custom encoding for dotenv files + * Ensure SchemaExtraCallable is always defined to get type hints on BaseConfig + * Update datetime parser to support negative timestamps + * Update mypy, remove AnyType alias for Type[Any] + * Adjust handling of root validators so that errors are aggregated + from all failing root validators, instead of reporting on only + the first root validator to fail + * Make __modify_schema__ on Enums apply to the enum schema rather + than fields that use the enum + * Fix behavior of __all__ key when used in conjunction with index + keys in advanced include/exclude of fields that are sequences + * Subclass validators do not run when referencing a List field + defined in a parent class when each_item=True + * change schema.field_class_to_schema to support frozenset in schema + * Call __modify_schema__ only for the field schema + * Move the assignment of field.validate_always in fields.py so the + always parameter of validators work on inheritance + * Added support for UUID instantiation through 16 byte strings such + as b'\x12\x34\x56\x78' * 4. + This was done to support BINARY(16) columns in sqlalchemy + * Add a test assertion that default_factory can return a singleton + * Add NameEmail.__eq__ so duplicate NameEmail instances are + evaluated as equal + * Add datamodel-code-generator link in pydantic document site + * Added a "Discussion of Pydantic" section to the documentation, + with a link to "Pydantic Introduction" video + * Avoid some side effects of default_factory by calling it only + once if possible and by not setting a default value in the schema + * Added docs about dumping dataclasses to JSON + * Make BaseModel.__signature__ class-only, so getting __signature__ + from model instance will raise AttributeError + * include 'format': 'password' in the schema for secret types + * Modify schema constraints on ConstrainedFloat so that + exclusiveMinimum and minimum are not included in the schema if + they are equal to -math.inf and exclusiveMaximum and maximum are + not included if they are equal to math.inf + * Squash internal __root__ dicts in .dict() (and, by extension, in .json()) + * Move const validator to post-validators so it validates the parsed value + * Fix model validation to handle nested literals + * Remove user_required = True from RedisDsn, neither user nor + password are required + * Remove extra allOf from schema for fields with Union and custom Field + * Updates OpenAPI schema generation to output all enums as separate + models. Instead of inlining the enum values in the model schema, + models now use a $ref property to point to the enum definition + +------------------------------------------------------------------- +Tue Jun 9 19:24:27 UTC 2020 - Dirk Mueller + +- update to 1.5.1 + * Signature generation with `extra: allow` never uses a field name, #1418 by @prettywood + * Avoid mutating `Field` default value, #1412 by @prettywood + +------------------------------------------------------------------- +Sat Apr 18 19:11:39 UTC 2020 - Martin Hauke + +- Update to version 1.5 + * Make includes/excludes arguments for .dict(), ._iter(), ..., + immutable + * Always use a field's real name with includes/excludes in + model._iter(), regardless of by_alias, #1397 by @AlexECX + * Update constr regex example to include start and end lines, + * Confirm that shallow model.copy() does make a shallow copy of + attributes + * Renaming model_name argument of main.create_model() + to __model_name to allow using model_name as a field name + * Replace raising of exception to silent passing for non-Var + attributes in mypy plugin + * Remove typing_extensions dependency for python 3.8 + * Make SecretStr and SecretBytes initialization idempotent + * document making secret types dumpable using the json method + * fix card number length check in PaymentCardNumber, + PaymentCardBrand now inherits from str + * Have BaseModel inherit from Representation to make mypy happy + when overriding __str__ + * Allow None as input to all optional list fields + * Add datetime field to default_factory example + * Allow subclasses of known types to be encoded with superclass + encoder + * Exclude exported fields from all elements of a list/tuple of + submodels/dicts with '__all__', #1286 by @masalim2 + * Add pydantic.color.Color objects as available input for Color + fields + * In examples, type nullable fields as Optional, so that these + are valid mypy annotations + * Make pattern_validator() accept pre-compiled Pattern objects. + Fix str_validator() return type to str + * Support instance methods and class methods with + @validate_arguments + * Add default_factory argument to Field to create a dynamic + default value by passing a zero-argument callable + * add support for NewType of List, Optional, etc + * fix mypy signature for root_validator + * Fixed parsing of nested 'custom root type' models + * Add validate_arguments function decorator which checks the + arguments to a function matches type annotations + * Add __signature__ to models + * Refactor ._iter() method, 10x speed boost for dict(model) + +------------------------------------------------------------------- +Thu Mar 19 13:25:26 UTC 2020 - Marketa Calabkova + +- Update to version 1.4 + * rename Schema to Field, make it a function to placate mypy + * Implement root_validator and rename root errors from __obj__ to __root__ + * Added initvars support to post_init_post_parse + * complete rewrite of URL parsing logic + * BaseSettings now uses the special env settings to define which + environment variables to read, not aliases + * add support for assert statements inside validators + * Change the precedence of aliases so child model aliases override + parent aliases, including using alias_generator + * Add a mypy plugin for type checking BaseModel.__init__ and more + * Add support for typing.Literal for Python 3.8 + * Add a ByteSize type for converting byte string (1GB) to plain bytes + * Add support for required Optional with name: Optional[AnyType] = Field(...) + and refactor ModelField creation to preserve required parameter value + * Add __eq__ to SecretStr and SecretBytes to allow "value equals" + * Add support for nested generic models + * alias precedence logic changed so aliases on a field always take + priority over an alias from alias_generator + * many more fixes and improvements + +------------------------------------------------------------------- +Fri Sep 20 09:56:55 UTC 2019 - Tomáš Chvátal + +- Format with spec-cleaner + +------------------------------------------------------------------- +Thu Sep 19 20:25:27 UTC 2019 - Martin Hauke + +- Initial package, version 0.32.2 diff --git a/python-pydantic.spec b/python-pydantic.spec new file mode 100644 index 0000000..2aa5199 --- /dev/null +++ b/python-pydantic.spec @@ -0,0 +1,72 @@ +# +# spec file for package python-pydantic +# +# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2019, Martin Hauke +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define skip_python2 1 +Name: python-pydantic +Version: 1.10.7 +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-OPENSUSE Ignore DeprecationWarning until requests-toolbelt is fixed +# (Pulled in by email-validator) +Patch0: ignore-urllib3-pyopenssl-warning.patch +# PATCH-FIX-UPSTREAM CVE-2024-3772.patch gh#pydantic/pydantic#7360 -- daniel.garcia@suse.com +Patch1: CVE-2024-3772.patch +BuildRequires: %{python_module email-validator >= 1.0.3} +BuildRequires: %{python_module packaging} +BuildRequires: %{python_module pytest-mock} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module python-dotenv >= 0.10.4} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module typing_extensions >= 4.2.0} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-typing_extensions >= 4.2.0 +Suggests: python-email-validator >= 1.0.3 +Suggests: python-python-dotenv >= 0.10.4 +BuildArch: noarch +%python_subpackages + +%description +Data validation and settings management using Python type hinting. + +%prep +%autosetup -p1 -n pydantic-%{version} + +%build +%python_build + +%install +%python_install +%python_expand %fdupes %{buildroot}%{$python_sitelib} + +%check +# Disable DeprecationWarning to avoid error with the latest setuptools +# and pkg_resources deprecation +%pytest -k 'not test_multiple_env_file' -W ignore::DeprecationWarning + +%files %{python_files} +%license LICENSE +%doc README.md HISTORY.md +%{python_sitelib}/pydantic +%{python_sitelib}/pydantic-%{version}*-info + +%changelog