From 849730178403d331e7ba8f62ffbdf78727568388 Mon Sep 17 00:00:00 2001 From: Ping Yin Date: Sat, 24 Apr 2010 21:20:23 +0800 Subject: [PATCH] arg_to_iter: return [arg] if arg is a dict Signed-off-by: Ping Yin --- scrapy/tests/test_utils_misc.py | 1 + scrapy/utils/misc.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scrapy/tests/test_utils_misc.py b/scrapy/tests/test_utils_misc.py index abad3f3a9..806225c7c 100644 --- a/scrapy/tests/test_utils_misc.py +++ b/scrapy/tests/test_utils_misc.py @@ -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() diff --git a/scrapy/utils/misc.py b/scrapy/utils/misc.py index 098bfdfa6..ac24591c2 100644 --- a/scrapy/utils/misc.py +++ b/scrapy/utils/misc.py @@ -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]