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
This commit is contained in:
Pablo Hoffman 2009-02-28 02:51:18 +00:00
parent 10be9b695d
commit ca22e332d1
2 changed files with 17 additions and 10 deletions

View File

@ -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()

View File

@ -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):
"""