moved default_adaptor logic fully to the metaclass in ItemAdaptor

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40975
This commit is contained in:
Ismael Carnales 2009-03-10 16:34:48 +00:00
parent 06e049e551
commit 698e6e73ea
1 changed files with 7 additions and 7 deletions

View File

@ -12,14 +12,15 @@ def adaptize(func):
return _adaptor
_IDENTITY = lambda v: v
class ItemAdaptorMeta(type):
def __new__(meta, class_name, bases, attrs):
cls = type.__new__(meta, class_name, bases, attrs)
da = attrs.get('default_adaptor') or _IDENTITY
attrs['default_adaptor'] = staticmethod(adaptize(da))
if 'default_adaptor' in attrs:
default_adaptor = adaptize(attrs['default_adaptor'])
cls.default_adaptor = staticmethod(default_adaptor)
cls = type.__new__(meta, class_name, bases, attrs)
cls.field_adaptors = cls.field_adaptors.copy()
@ -42,10 +43,9 @@ class ItemAdaptorMeta(type):
class ItemAdaptor(object):
__metaclass__ = ItemAdaptorMeta
IDENTITY = lambda v: v
IDENTITY = _IDENTITY
item_class = None
default_adaptor = IDENTITY
field_adaptors = {}
def __init__(self, response=None, item=None):