mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-25 23:04:16 +00:00
moved item.fields to item._fields in newitem
This commit is contained in:
parent
92b746d866
commit
cc33ac4f86
@ -1,4 +1,3 @@
|
||||
|
||||
from scrapy.utils.misc import arg_to_iter
|
||||
from scrapy.utils.python import get_func_args
|
||||
|
||||
@ -28,7 +27,7 @@ class ItemAdaptorMeta(type):
|
||||
cls._field_adaptors = cls._field_adaptors.copy()
|
||||
|
||||
if cls.item_class:
|
||||
for item_field in cls.item_class.fields.keys():
|
||||
for item_field in cls.item_class.get_fields():
|
||||
if item_field in attrs:
|
||||
adaptor = adaptize(attrs[item_field])
|
||||
cls._field_adaptors[item_field] = adaptor
|
||||
@ -36,7 +35,7 @@ class ItemAdaptorMeta(type):
|
||||
return cls
|
||||
|
||||
def __getattr__(cls, name):
|
||||
if name in cls.item_class.fields:
|
||||
if name in cls.item_class.get_fields():
|
||||
return cls.default_adaptor
|
||||
raise AttributeError(name)
|
||||
|
||||
|
@ -6,10 +6,10 @@ class _ItemMeta(type):
|
||||
|
||||
def __new__(meta, class_name, bases, attrs):
|
||||
cls = type.__new__(meta, class_name, bases, attrs)
|
||||
cls.fields = cls.fields.copy()
|
||||
cls._fields = cls._fields.copy()
|
||||
for n, v in attrs.iteritems():
|
||||
if isinstance(v, BaseField):
|
||||
cls.fields[n] = v
|
||||
cls._fields[n] = v
|
||||
delattr(cls, n)
|
||||
return cls
|
||||
|
||||
@ -19,7 +19,7 @@ class Item(ScrapedItem):
|
||||
|
||||
__metaclass__ = _ItemMeta
|
||||
|
||||
fields = {}
|
||||
_fields = {}
|
||||
|
||||
def __init__(self, values=None):
|
||||
self._values = {}
|
||||
@ -34,8 +34,8 @@ class Item(ScrapedItem):
|
||||
if name.startswith('_'):
|
||||
return ScrapedItem.__setattr__(self, name, value)
|
||||
|
||||
if name in self.fields.keys():
|
||||
self._values[name] = self.fields[name].to_python(value)
|
||||
if name in self._fields:
|
||||
self._values[name] = self._fields[name].to_python(value)
|
||||
else:
|
||||
raise AttributeError(name)
|
||||
|
||||
@ -44,7 +44,7 @@ class Item(ScrapedItem):
|
||||
return self._values[name]
|
||||
except KeyError:
|
||||
try:
|
||||
return self.fields[name].get_default()
|
||||
return self._fields[name].get_default()
|
||||
except KeyError:
|
||||
raise AttributeError(name)
|
||||
|
||||
@ -52,6 +52,11 @@ class Item(ScrapedItem):
|
||||
"""Generate a representation of this item that can be used to
|
||||
reconstruct the item by evaluating it
|
||||
"""
|
||||
values = dict((field, getattr(self, field)) for field in self.fields)
|
||||
values = dict((field, getattr(self, field)) for field in self._fields)
|
||||
return "%s(%s)" % (self.__class__.__name__, repr(values))
|
||||
|
||||
@classmethod
|
||||
def get_fields(cls):
|
||||
"""Returns the item fields"""
|
||||
return cls._fields
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user