13
0

Compare commits

17 Commits

Author SHA256 Message Date
be26625444 Accepting request 1244260 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1244260
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=7
2025-02-09 19:01:32 +00:00
7496140406 Accepting request 1173911 from devel:languages:python
- update to 0.9.0:
  * Dropped Python 3.7 support, added official Python 3.12
    support
  * Updated the documentation and the type hint about
    `ItemAdapter.ADAPTER_CLASSES` to say that subclasses can
    use any iterable, not just `collections.deque`
  * Documented that `Pydantic >= 2` is not supported yet
  * Updated CI configuration

OBS-URL: https://build.opensuse.org/request/show/1173911
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=6
2024-05-14 11:39:03 +00:00
b9142bb89f OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=14 2024-05-14 08:11:22 +00:00
b7de23503a OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=13 2024-05-14 08:10:30 +00:00
6cf118340b - update to 0.9.0:
* Dropped Python 3.7 support, added official Python 3.12
    support
  * Updated the documentation and the type hint about
    `ItemAdapter.ADAPTER_CLASSES` to say that subclasses can
    use any iterable, not just `collections.deque`
  * Documented that `Pydantic >= 2` is not supported yet
  * Updated CI configuration

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=12
2024-05-14 07:57:52 +00:00
aa9b97591f Accepting request 1159849 from devel:languages:python
- Add pydantic2.patch to make tests compatible with pydantic2
  gh#scrapy/itemadapter#76

OBS-URL: https://build.opensuse.org/request/show/1159849
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=5
2024-03-20 20:18:40 +00:00
74c550ea6b - Add pydantic2.patch to make tests compatible with pydantic2
gh#scrapy/itemadapter#76

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=10
2024-03-20 13:32:14 +00:00
f0de24eddf Accepting request 1131744 from devel:languages:python
- update to 0.8.0:
  * Dropped Python 3.6 support, and made Python 3.11 support
    official
  * It is now possible to declare custom `ItemAdapter` subclasses
    with their own `ADAPTER_CLASSES` attribute, allowing to
    support different item types in different parts of the same
    code base
  * Improved type hint support

  Improve performance by removing imports inside functions (#60)
- Disable python36 build due to Scrapy

OBS-URL: https://build.opensuse.org/request/show/1131744
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=4
2023-12-08 21:32:13 +00:00
cc6a628660 - update to 0.8.0:
* Dropped Python 3.6 support, and made Python 3.11 support
    official
  * It is now possible to declare custom `ItemAdapter` subclasses
    with their own `ADAPTER_CLASSES` attribute, allowing to
    support different item types in different parts of the same
    code base
  * Improved type hint support
  Improve performance by removing imports inside functions (#60)
- Disable python36 build due to Scrapy

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=8
2023-12-07 22:48:55 +00:00
385baf75af Accepting request 1006920 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1006920
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=3
2022-09-29 16:14:32 +00:00
e57a310afe Accepting request 1006813 from home:yarunachalam:branches:devel:languages:python
- Update to 0.7.0 (2022-08-02)
  ItemAdapter.get_field_names_from_class (#64)
- Update to 0.6.0 (2022-05-12)
  Slight performance improvement (#62)
- Update to 0.5.0 (2022-03-18)
  Improve performance by removing imports inside functions (#60)

OBS-URL: https://build.opensuse.org/request/show/1006813
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=6
2022-09-29 10:51:04 +00:00
f6cc67f4b7 Accepting request 928285 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/928285
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=2
2021-10-30 21:14:01 +00:00
e0b0f768f7 Accepting request 928266 from home:bnavigator:branches:devel:languages:python
- Update to v0.4.0
  * Added ItemAdapter.is_item_class and
    ItemAdapter.get_field_meta_from_class (#54)
  * Added built-in support for pydantic models (#53)
  * 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.
  * Dropped support for Python 3.5 (#38).
  * The new get_field_meta_from_class function offers the same
    functionality as ItemAdapter.get_field_meta but for an item
    class, as opposed to an item object (#34, #35).
  * ItemAdapter.__repr__ no longer raises exceptions caused by the
    underlying item (#31, #41).
- Disable python36 build due to Scrapy

OBS-URL: https://build.opensuse.org/request/show/928266
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=5
2021-10-30 16:08:24 +00:00
8d7a8efc24 Accepting request 819360 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/819360
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-itemadapter?expand=0&rev=1
2020-07-08 17:13:56 +00:00
Tomáš Chvátal
14bd353e97 - Switch to multibuild
- Fix the sitelib/sitearch and all the dependencies

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=3
2020-07-08 06:54:46 +00:00
Tomáš Chvátal
47f03804ec OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=2 2020-07-08 06:38:55 +00:00
Tomáš Chvátal
97d91bb9d9 Accepting request 819305 from home:winski:python
itemadapter is a wrapper for data container objects & required for updating python-Scrapy (already in repos) because it is not a dependency. itemadapter is made by the Scrapy team. I have also updated python-Scrapy (with this package as a dep) and have submitted that as another request.
UPDATED: added tests to package as requested by d:l:p maintainer.

OBS-URL: https://build.opensuse.org/request/show/819305
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-itemadapter?expand=0&rev=1
2020-07-08 06:38:04 +00:00
2 changed files with 0 additions and 151 deletions

View File

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

View File

@@ -1,148 +0,0 @@
Index: itemadapter-0.8.0/README.md
===================================================================
--- itemadapter-0.8.0.orig/README.md
+++ itemadapter-0.8.0/README.md
@@ -193,7 +193,7 @@ The returned value is taken from the fol
for `dataclass`-based items
* [`attr.Attribute.metadata`](https://www.attrs.org/en/stable/examples.html#metadata)
for `attrs`-based items
- * [`pydantic.fields.FieldInfo`](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation)
+ * [`pydantic.fields.FieldInfo`](https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo)
for `pydantic`-based items
#### class method `get_field_names_from_class(item_class: type) -> Optional[list[str]]`
Index: itemadapter-0.8.0/itemadapter/adapter.py
===================================================================
--- itemadapter-0.8.0.orig/itemadapter/adapter.py
+++ itemadapter-0.8.0/itemadapter/adapter.py
@@ -179,24 +179,24 @@ class PydanticAdapter(AdapterInterface):
@classmethod
def get_field_names_from_class(cls, item_class: type) -> Optional[List[str]]:
- return list(item_class.__fields__.keys()) # type: ignore[attr-defined]
+ return list(item_class.model_fields.keys()) # type: ignore[attr-defined]
def field_names(self) -> KeysView:
- return KeysView(self.item.__fields__)
+ return KeysView(self.item.model_fields)
def __getitem__(self, field_name: str) -> Any:
- if field_name in self.item.__fields__:
+ if field_name in self.item.model_fields:
return getattr(self.item, field_name)
raise KeyError(field_name)
def __setitem__(self, field_name: str, value: Any) -> None:
- if field_name in self.item.__fields__:
+ if field_name in self.item.model_fields:
setattr(self.item, field_name, value)
else:
raise KeyError(f"{self.item.__class__.__name__} does not support field: {field_name}")
def __delitem__(self, field_name: str) -> None:
- if field_name in self.item.__fields__:
+ if field_name in self.item.model_fields:
try:
delattr(self.item, field_name)
except AttributeError:
@@ -205,7 +205,7 @@ class PydanticAdapter(AdapterInterface):
raise KeyError(f"{self.item.__class__.__name__} does not support field: {field_name}")
def __iter__(self) -> Iterator:
- return iter(attr for attr in self.item.__fields__ if hasattr(self.item, attr))
+ return iter(attr for attr in self.item.model_fields if hasattr(self.item, attr))
def __len__(self) -> int:
return len(list(iter(self)))
Index: itemadapter-0.8.0/itemadapter/utils.py
===================================================================
--- itemadapter-0.8.0.orig/itemadapter/utils.py
+++ itemadapter-0.8.0/itemadapter/utils.py
@@ -23,30 +23,21 @@ def _is_pydantic_model(obj: Any) -> bool
def _get_pydantic_model_metadata(item_model: Any, field_name: str) -> MappingProxyType:
metadata = {}
- field = item_model.__fields__[field_name].field_info
+ field = item_model.model_fields[field_name]
for attribute in [
"alias",
"title",
"description",
- "const",
- "gt",
- "ge",
- "lt",
- "le",
- "multiple_of",
- "min_items",
- "max_items",
- "min_length",
- "max_length",
- "regex",
]:
value = getattr(field, attribute)
if value is not None:
metadata[attribute] = value
- if not field.allow_mutation:
- metadata["allow_mutation"] = field.allow_mutation
- metadata.update(field.extra)
+ if field.frozen is not None:
+ metadata["frozen"] = field.frozen
+
+ if field.json_schema_extra is not None:
+ metadata.update(field.json_schema_extra)
return MappingProxyType(metadata)
Index: itemadapter-0.8.0/tests/__init__.py
===================================================================
--- itemadapter-0.8.0.orig/tests/__init__.py
+++ itemadapter-0.8.0/tests/__init__.py
@@ -102,7 +102,7 @@ else:
try:
- from pydantic import BaseModel, Field as PydanticField
+ from pydantic import ConfigDict, BaseModel, Field as PydanticField
except ImportError:
PydanticModel = None
PydanticSpecialCasesModel = None
@@ -125,11 +125,9 @@ else:
special_cases: Optional[int] = PydanticField(
default_factory=lambda: None,
alias="special_cases",
- allow_mutation=False,
+ frozen=False,
)
-
- class Config:
- validate_assignment = True
+ model_config = ConfigDict(validate_assignment=True)
class PydanticModelNested(BaseModel):
nested: PydanticModel
@@ -139,9 +137,7 @@ else:
set_: set
tuple_: tuple
int_: int
-
- class Config:
- arbitrary_types_allowed = True
+ model_config = ConfigDict(arbitrary_types_allowed=True)
class PydanticModelSubclassed(PydanticModel):
subclassed: bool = PydanticField(
Index: itemadapter-0.8.0/tests/test_adapter_pydantic.py
===================================================================
--- itemadapter-0.8.0.orig/tests/test_adapter_pydantic.py
+++ itemadapter-0.8.0/tests/test_adapter_pydantic.py
@@ -73,7 +73,7 @@ class DataclassTestCase(unittest.TestCas
)
self.assertEqual(
get_field_meta_from_class(PydanticSpecialCasesModel, "special_cases"),
- MappingProxyType({"alias": "special_cases", "allow_mutation": False}),
+ MappingProxyType({"alias": "special_cases", "frozen": False}),
)
with self.assertRaises(KeyError, msg="PydanticModel does not support field: non_existent"):
get_field_meta_from_class(PydanticModel, "non_existent")