| 1040 | self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list) |
| 1041 | |
| 1042 | def test_sort_unorderable_values(self): |
| 1043 | # Issue 3976: sorted pprints fail for unorderable values. |
| 1044 | n = 20 |
| 1045 | keys = [Unorderable() for i in range(n)] |
| 1046 | random.shuffle(keys) |
| 1047 | skeys = sorted(keys, key=id) |
| 1048 | clean = lambda s: s.replace(' ', '').replace('\n','') |
| 1049 | |
| 1050 | self.assertEqual(clean(pprint.pformat(set(keys))), |
| 1051 | '{' + ','.join(map(repr, skeys)) + '}') |
| 1052 | self.assertEqual(clean(pprint.pformat(frozenset(keys))), |
| 1053 | 'frozenset({' + ','.join(map(repr, skeys)) + '})') |
| 1054 | self.assertEqual(clean(pprint.pformat(dict.fromkeys(keys))), |
| 1055 | '{' + ','.join('%r:None' % k for k in skeys) + '}') |
| 1056 | self.assertEqual(clean(pprint.pformat(dict.fromkeys(keys).keys())), |
| 1057 | 'dict_keys([' + ','.join('%r' % k for k in skeys) + '])') |
| 1058 | self.assertEqual(clean(pprint.pformat(dict.fromkeys(keys).items())), |
| 1059 | 'dict_items([' + ','.join('(%r,None)' % k for k in skeys) + '])') |
| 1060 | |
| 1061 | # Issue 10017: TypeError on user-defined types as dict keys. |
| 1062 | self.assertEqual(pprint.pformat({Unorderable: 0, 1: 0}), |
| 1063 | '{1: 0, ' + repr(Unorderable) +': 0}') |
| 1064 | |
| 1065 | # Issue 14998: TypeError on tuples with NoneTypes as dict keys. |
| 1066 | keys = [(1,), (None,)] |
| 1067 | self.assertEqual(pprint.pformat(dict.fromkeys(keys, 0)), |
| 1068 | '{%r: 0, %r: 0}' % tuple(sorted(keys, key=id))) |
| 1069 | |
| 1070 | def test_sort_orderable_and_unorderable_values(self): |
| 1071 | # Issue 22721: sorted pprints is not stable |