arg_to_iter: return [arg] if arg is a dict

Signed-off-by: Ping Yin <pkufranky@gmail.com>
This commit is contained in:
Ping Yin 2010-04-24 21:20:23 +08:00
parent bd844f690b
commit 8497301784
2 changed files with 4 additions and 1 deletions

View File

@ -23,6 +23,7 @@ class UtilsMiscTestCase(unittest.TestCase):
self.assertEqual(list(arg_to_iter(100)), [100])
self.assertEqual(list(arg_to_iter(l for l in 'abc')), ['a', 'b', 'c'])
self.assertEqual(list(arg_to_iter([1,2,3])), [1,2,3])
self.assertEqual(list(arg_to_iter({'a':1})), [{'a': 1}])
if __name__ == "__main__":
unittest.main()

View File

@ -9,10 +9,12 @@ from scrapy.utils.markup import remove_entities
def arg_to_iter(arg):
"""Convert an argument to an iterable. The argument can be a None, single
value, or an iterable.
Exception: if arg is a dict, [arg] will be returned
"""
if arg is None:
return []
elif hasattr(arg, '__iter__'):
elif not isinstance(arg, dict) and hasattr(arg, '__iter__'):
return arg
else:
return [arg]