Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-itemadapter for openSUSE:Factory checked in at 2026-04-11 22:26:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-itemadapter (Old) and /work/SRC/openSUSE:Factory/.python-itemadapter.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-itemadapter" Sat Apr 11 22:26:32 2026 rev:9 rq:1346060 version:0.13.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-itemadapter/python-itemadapter.changes 2026-03-30 18:38:14.948489037 +0200 +++ /work/SRC/openSUSE:Factory/.python-itemadapter.new.21863/python-itemadapter.changes 2026-04-11 22:31:45.117587561 +0200 @@ -1,0 +2,13 @@ +Sat Apr 11 11:42:14 UTC 2026 - Dirk Müller <[email protected]> + +- add fix-pydantic-tests.patch to fix pydantic tests + +------------------------------------------------------------------- +Tue Apr 7 08:42:36 UTC 2026 - Dirk Müller <[email protected]> + +- update to 0.13.1: + * Fixed `get_json_schema()` to properly format multiline field + docstrings using `inspect.cleandoc()`, ensuring consistent + indentation and whitespace handling + +------------------------------------------------------------------- Old: ---- itemadapter-0.13.0.tar.gz New: ---- fix-pydantic-tests.patch itemadapter-0.13.1.tar.gz ----------(New B)---------- New: - add fix-pydantic-tests.patch to fix pydantic tests ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-itemadapter.spec ++++++ --- /var/tmp/diff_new_pack.Mf3xFT/_old 2026-04-11 22:31:45.737612920 +0200 +++ /var/tmp/diff_new_pack.Mf3xFT/_new 2026-04-11 22:31:45.737612920 +0200 @@ -27,12 +27,14 @@ %endif %{?sle15_python_module_pythons} Name: python-itemadapter%{psuffix} -Version: 0.13.0 +Version: 0.13.1 Release: 0 Summary: Wrapper for data container objects License: BSD-3-Clause URL: https://github.com/scrapy/itemadapter Source: https://github.com/scrapy/itemadapter/archive/v%{version}.tar.gz#/itemadapter-%{version}.tar.gz +# PATCH-FIX-UPSTREAM: https://github.com/scrapy/itemadapter/commit/e2a28fcfa2b63a596cf26c0eae1a6f04235b348c +Patch1: fix-pydantic-tests.patch BuildRequires: %{python_module hatchling} BuildRequires: %{python_module pip} BuildRequires: %{python_module wheel} ++++++ fix-pydantic-tests.patch ++++++ ++++ 786 lines (skipped) ++++++ itemadapter-0.13.0.tar.gz -> itemadapter-0.13.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/itemadapter-0.13.0/Changelog.md new/itemadapter-0.13.1/Changelog.md --- old/itemadapter-0.13.0/Changelog.md 2025-12-15 16:39:54.000000000 +0100 +++ new/itemadapter-0.13.1/Changelog.md 2026-01-08 18:53:19.000000000 +0100 @@ -1,5 +1,11 @@ # Changelog +### 0.13.1 (2026-01-08) + +Fixed `get_json_schema()` to properly format multiline field docstrings using +`inspect.cleandoc()`, ensuring consistent indentation and whitespace handling +([#115](https://github.com/scrapy/itemadapter/pull/115)). + ### 0.13.0 (2025-12-15) Added support for Python 3.14 and removed support for [PyPy](https://pypy.org/) @@ -35,10 +41,10 @@ Removed functions deprecated in 0.5.0: -* `itemadapter.utils.is_attrs_instance()` -* `itemadapter.utils.is_dataclass_instance()` -* `itemadapter.utils.is_pydantic_instance()` -* `itemadapter.utils.is_scrapy_item()` +- `itemadapter.utils.is_attrs_instance()` +- `itemadapter.utils.is_dataclass_instance()` +- `itemadapter.utils.is_pydantic_instance()` +- `itemadapter.utils.is_scrapy_item()` ([#93](https://github.com/scrapy/itemadapter/pull/93)). @@ -84,7 +90,6 @@ ([#77](https://github.com/scrapy/itemadapter/pull/77), [#80](https://github.com/scrapy/itemadapter/pull/80)). - ### 0.8.0 (2023-03-30) Dropped Python 3.6 support, and made Python 3.11 support official @@ -100,43 +105,36 @@ Improved type hint support ([#67](https://github.com/scrapy/itemadapter/pull/67)). - ### 0.7.0 (2022-08-02) ItemAdapter.get_field_names_from_class ([#64](https://github.com/scrapy/itemadapter/pull/64)) - ### 0.6.0 (2022-05-12) Slight performance improvement ([#62](https://github.com/scrapy/itemadapter/pull/62)) - ### 0.5.0 (2022-03-18) Improve performance by removing imports inside functions ([#60](https://github.com/scrapy/itemadapter/pull/60)) - ### 0.4.0 (2021-08-26) Added `ItemAdapter.is_item_class` and `ItemAdapter.get_field_meta_from_class` ([#54](https://github.com/scrapy/itemadapter/pull/54)) - ### 0.3.0 (2021-07-15) Added built-in support for `pydantic` models ([#53](https://github.com/scrapy/itemadapter/pull/53)) - ### 0.2.0 (2020-11-06) Adapter interface: added the ability to support arbitrary types, by implementing a MutableMapping-based interface. By way of this change, now any type can be used as a Scrapy item. - ### 0.1.1 (2020-09-28) Dropped support for Python 3.5 (#38). @@ -150,7 +148,6 @@ Minor improvement to the release process (#37), and cleanup of test warnings (#40). - ### 0.1.0 (2020-06-10) Added `ItemAdapter.asdict`, which allows converting an item and all of its @@ -159,14 +156,12 @@ Improved `ItemAdapter` performance by reducing time complexity for lookups and traversals for dataclass and attrs items (#28). - ### 0.0.8 (2020-05-22) `ItemAdapter.field_names` now returns a `KeysView` instead of a `list`. Minor CI and test changes. - ### 0.0.7 (2020-05-22) `ItemAdapter.get_field_meta` now returns an empty `MappingProxyType` object for @@ -177,7 +172,6 @@ Provided full test coverage, and refactored CI configuration, test configuration and tests themselves. - ### 0.0.6 (2020-05-09) Added support for Scrapy’s `BaseItem`. @@ -186,22 +180,18 @@ Code style and documentation fixes. - ### 0.0.5 (2020-04-28) Removed support for `MutableMapping`. - ### 0.0.4 (2020-04-28) Removed metadata support for arbitrary mutable mappings. - ### 0.0.3 (2020-04-27) Rebuild for the Python Package Index. - ### 0.0.2 (2020-04-27) Split the implementation into several files for better code organization, and @@ -209,7 +199,6 @@ Also improved the README. - ### 0.0.1 (2020-04-25) Initial release. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/itemadapter-0.13.0/itemadapter/__init__.py new/itemadapter-0.13.1/itemadapter/__init__.py --- old/itemadapter-0.13.0/itemadapter/__init__.py 2025-12-15 16:39:54.000000000 +0100 +++ new/itemadapter-0.13.1/itemadapter/__init__.py 2026-01-08 18:53:19.000000000 +0100 @@ -1,7 +1,7 @@ from .adapter import ItemAdapter from .utils import get_field_meta_from_class, is_item -__version__ = "0.13.0" +__version__ = "0.13.1" __all__ = [ "ItemAdapter", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/itemadapter-0.13.0/itemadapter/_json_schema.py new/itemadapter-0.13.1/itemadapter/_json_schema.py --- old/itemadapter-0.13.0/itemadapter/_json_schema.py 2025-12-15 16:39:54.000000000 +0100 +++ new/itemadapter-0.13.1/itemadapter/_json_schema.py 2026-01-08 18:53:19.000000000 +0100 @@ -299,7 +299,7 @@ if "description" not in prop: doc = get_inherited_attr_docstring(item_class, attr_name) if doc: - prop["description"] = doc + prop["description"] = inspect.cleandoc(doc) def base_json_schema_from_item_class(item_class: type) -> dict[str, Any]: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/itemadapter-0.13.0/pyproject.toml new/itemadapter-0.13.1/pyproject.toml --- old/itemadapter-0.13.0/pyproject.toml 2025-12-15 16:39:54.000000000 +0100 +++ new/itemadapter-0.13.1/pyproject.toml 2026-01-08 18:53:19.000000000 +0100 @@ -61,7 +61,7 @@ ] [tool.bumpversion] -current_version = "0.13.0" +current_version = "0.13.1" commit = true tag = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/itemadapter-0.13.0/tests/test_json_schema.py new/itemadapter-0.13.1/tests/test_json_schema.py --- old/itemadapter-0.13.0/tests/test_json_schema.py 2025-12-15 16:39:54.000000000 +0100 +++ new/itemadapter-0.13.1/tests/test_json_schema.py 2026-01-08 18:53:19.000000000 +0100 @@ -516,6 +516,37 @@ } check_schemas(actual, expected) + def test_field_docstring_cleandoc(self): + """Test that field docstrings are properly dedented and trimmed.""" + + @dataclass + class TestItem: + foo: str + """ + This is a multiline docstring. + + It has multiple paragraphs and indentation + that should be cleaned up. + """ + + actual = ItemAdapter.get_json_schema(TestItem) + expected = { + "type": "object", + "additionalProperties": False, + "properties": { + "foo": { + "type": "string", + "description": ( + "This is a multiline docstring.\n\n" + "It has multiple paragraphs and indentation\n" + "that should be cleaned up." + ), + }, + }, + "required": ["foo"], + } + check_schemas(actual, expected) + class CrossNestingTestCase(unittest.TestCase): """Test item nesting across different item types, with all supported types
