From ca22e332d14199786ace8422384954cb072ae4d2 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Sat, 28 Feb 2009 02:51:18 +0000 Subject: [PATCH] renamed to_list function to arg_to_list, added docstring and one more test --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40939 --- scrapy/trunk/scrapy/tests/test_utils_misc.py | 11 ++++++----- scrapy/trunk/scrapy/utils/misc.py | 16 +++++++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/scrapy/trunk/scrapy/tests/test_utils_misc.py b/scrapy/trunk/scrapy/tests/test_utils_misc.py index a4513997f..3e12c27cf 100644 --- a/scrapy/trunk/scrapy/tests/test_utils_misc.py +++ b/scrapy/trunk/scrapy/tests/test_utils_misc.py @@ -1,7 +1,7 @@ import unittest from cStringIO import StringIO -from scrapy.utils.misc import hash_values, items_to_csv, load_object, to_list +from scrapy.utils.misc import hash_values, items_to_csv, load_object, arg_to_list from scrapy.item import ScrapedItem class UtilsMiscTestCase(unittest.TestCase): @@ -61,10 +61,11 @@ class UtilsMiscTestCase(unittest.TestCase): self.assertRaises(ImportError, load_object, 'nomodule999.mod.function') self.assertRaises(NameError, load_object, 'scrapy.utils.misc.load_object999') - def test_to_list(self): - self.assertEqual(to_list(None), []) - self.assertEqual(to_list('lala'), ['lala']) - self.assertEqual(to_list(('lala', 'poo')), ['lala', 'poo']) + def test_arg_to_list(self): + self.assertEqual(arg_to_list(None), []) + self.assertEqual(arg_to_list('lala'), ['lala']) + self.assertEqual(arg_to_list(100), [100]) + self.assertEqual(arg_to_list(('lala', 'poo')), ['lala', 'poo']) if __name__ == "__main__": unittest.main() diff --git a/scrapy/trunk/scrapy/utils/misc.py b/scrapy/trunk/scrapy/utils/misc.py index f6b20888b..ef21bf900 100644 --- a/scrapy/trunk/scrapy/utils/misc.py +++ b/scrapy/trunk/scrapy/utils/misc.py @@ -14,13 +14,19 @@ from scrapy.utils.python import flatten, unicode_to_str from scrapy.utils.markup import remove_entities from scrapy.utils.defer import defer_succeed -def to_list(obj): - if obj is None: +def arg_to_list(arg): + """Convert an argument to list, so that it can be iterated. The argument + can be a None, single value, or an iterable. + + This is meant to be used in functions for arguments which can be either + None, single valued or multi-valued. + """ + if arg is None: return [] - elif hasattr(obj, '__iter__'): - return list(obj) + elif hasattr(arg, '__iter__'): + return list(arg) else: - return [obj] + return [arg] def dict_updatedefault(D, E, **F): """