def test_parser(self): tests = [ # string ("['eggs': 'spam', 'ham': 'spam']", OrderedDict([('eggs', 'spam'), ('ham', 'spam')])), ("""['eg"gs': 'sp\\'am']""", OrderedDict([('eg"gs', "sp'am")])), # bool ("[True: False]", OrderedDict([(True, False)])), # int, float and None ("[1: -2.2, None: -1]", OrderedDict([(1, -2.2), (None, -1)])), # set ("['eggs': set()]", OrderedDict([('eggs', set())])), ("['eggs': {'spam', 'ham'}]", OrderedDict([('eggs', {'spam', 'ham'})])), # dict ("['eggs': {}, 'ham': dict()]", OrderedDict([('eggs', dict()), ('ham', dict())])), ("['eggs': {'spam': 'ham'}]", OrderedDict([('eggs', {'spam': 'ham'})])), # listdict ("['eggs': listdict()]", OrderedDict([('eggs', OrderedDict())])), ("['eggs': ['spam': 'ham']]", OrderedDict([('eggs', OrderedDict([('spam', 'ham')]))])), # tuple ("['eggs': (), 'ham': tuple()]", OrderedDict([('eggs', tuple()), ('ham', tuple())])), ("['eggs': ('spam', 'ham')]", OrderedDict([('eggs', ('spam', 'ham'))])), # list ("['eggs': ['spam', 'ham']]", OrderedDict([('eggs', ['spam', 'ham'])])), ("['eggs': [], 'ham': list()]", OrderedDict([('eggs', list()), ('ham', list())])), # nesting ("['eggs': ('spam', {'spam': ['spam': {'spam', 'ham'}]})]", OrderedDict([('eggs', ('spam', {'spam': OrderedDict([('spam', {'spam', 'ham'})])}))])), ("[('eggs', ('ham', 'spam')): ('spam', {'spam': ['spam': {'spam', 'ham'}]})]", OrderedDict([(('eggs', ('ham', 'spam')), ('spam', {'spam': OrderedDict([('spam', {'spam', 'ham'})])}))])), ] for ld, od in tests: parsed = listdict_parser.parseString(ld)[0] self.assertEqual(parsed, od, 'Failed to parse "%s" correctly.' % ld)
def loads(listdict_repr): """ Converts "['eggs': 'spam']" to OrderedDict([('eggs': 'spam')]) >>> loads("['eggs': 'spam', 'ham': 'spam']") OrderedDict([('eggs', 'spam'), ('ham', 'spam')]) >>> loads('listdict()') OrderedDict() """ return listdict_parser.parseString(listdict_repr)[0]