From 698e6e73ea4ca8af4582a6850ebe85168bfb9f40 Mon Sep 17 00:00:00 2001 From: Ismael Carnales Date: Tue, 10 Mar 2009 16:34:48 +0000 Subject: [PATCH] moved default_adaptor logic fully to the metaclass in ItemAdaptor --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40975 --- .../trunk/scrapy/contrib_exp/newitem/adaptors.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py b/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py index 21c89cfb5..101d9a493 100644 --- a/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py +++ b/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py @@ -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):