From bfe5a554c269c5703315cdab36ceeec81a28ea11 Mon Sep 17 00:00:00 2001 From: Daniel Grana Date: Fri, 27 Feb 2009 18:48:09 +0000 Subject: [PATCH] newitem: clenaup ItemAdaptor inheritance search --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40935 --- scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py b/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py index c79ea0e04..6589ba503 100644 --- a/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py +++ b/scrapy/trunk/scrapy/contrib_exp/newitem/adaptors.py @@ -3,6 +3,7 @@ from scrapy.utils.python import get_func_args def is_adaptor(func): return callable(func) and 'adaptor_args' in get_func_args(func) + class ItemAdaptorMetaClass(type): def __new__(meta, name, bases, dct): # defines adaptor fields as static methods @@ -22,12 +23,11 @@ class ItemAdaptor(object): def _get_field_adaptors(self): def get_field_adaptor(field, cls): - func = getattr(cls, field, None) - if func: - return func - - for class_ in cls.__bases__: - return get_field_adaptor(field, class_) + try: + return getattr(cls, field) + except AttributeError: + for class_ in cls.__bases__: + return get_field_adaptor(field, class_) fa = {} for field in self.item_instance._fields.keys():