From 6d215a1b34b16e758e3a72a3181014f3c4ff00b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gra=C3=B1a?= Date: Thu, 24 Jul 2014 15:37:10 -0300 Subject: [PATCH] items: Use BaseItem.__hash__ and six.add_metaclass decorator --- scrapy/item.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/scrapy/item.py b/scrapy/item.py index ec41b212d..9998010b2 100644 --- a/scrapy/item.py +++ b/scrapy/item.py @@ -76,14 +76,9 @@ class DictItem(MutableMapping, BaseItem): return len(self._values) def __iter__(self): - for i in getattr(self, "_values", ()): - yield i + return iter(self._values) - def __hash__(self): - if hasattr(self, "_values"): - return hash(frozenset(self._values.items())) - else: - return 1 + __hash__ = BaseItem.__hash__ def keys(self): return self._values.keys() @@ -95,5 +90,6 @@ class DictItem(MutableMapping, BaseItem): return self.__class__(self) -class Item(six.with_metaclass(ItemMeta, DictItem)): +@six.add_metaclass(ItemMeta) +class Item(DictItem): pass