Show More
@@ -605,7 +605,8 b' def _dict_pprinter_factory(start, end, basetype=None):' | |||||
605 |
|
605 | |||
606 | if cycle: |
|
606 | if cycle: | |
607 | return p.text('{...}') |
|
607 | return p.text('{...}') | |
608 |
|
|
608 | step = len(start) | |
|
609 | p.begin_group(step, start) | |||
609 | keys = obj.keys() |
|
610 | keys = obj.keys() | |
610 | # if dict isn't large enough to be truncated, sort keys before displaying |
|
611 | # if dict isn't large enough to be truncated, sort keys before displaying | |
611 | if not (p.max_seq_length and len(obj) >= p.max_seq_length): |
|
612 | if not (p.max_seq_length and len(obj) >= p.max_seq_length): | |
@@ -621,7 +622,7 b' def _dict_pprinter_factory(start, end, basetype=None):' | |||||
621 | p.pretty(key) |
|
622 | p.pretty(key) | |
622 | p.text(': ') |
|
623 | p.text(': ') | |
623 | p.pretty(obj[key]) |
|
624 | p.pretty(obj[key]) | |
624 |
p.end_group( |
|
625 | p.end_group(step, end) | |
625 | return inner |
|
626 | return inner | |
626 |
|
627 | |||
627 |
|
628 | |||
@@ -760,6 +761,8 b' try:' | |||||
760 | _type_pprinters[types.ClassType] = _type_pprint |
|
761 | _type_pprinters[types.ClassType] = _type_pprint | |
761 | _type_pprinters[types.SliceType] = _repr_pprint |
|
762 | _type_pprinters[types.SliceType] = _repr_pprint | |
762 | except AttributeError: # Python 3 |
|
763 | except AttributeError: # Python 3 | |
|
764 | _type_pprinters[types.MappingProxyType] = \ | |||
|
765 | _dict_pprinter_factory('mappingproxy({', '})') | |||
763 | _type_pprinters[slice] = _repr_pprint |
|
766 | _type_pprinters[slice] = _repr_pprint | |
764 |
|
767 | |||
765 | try: |
|
768 | try: |
@@ -7,11 +7,12 b'' | |||||
7 | from __future__ import print_function |
|
7 | from __future__ import print_function | |
8 |
|
8 | |||
9 | from collections import Counter, defaultdict, deque, OrderedDict |
|
9 | from collections import Counter, defaultdict, deque, OrderedDict | |
|
10 | import types, string | |||
10 |
|
11 | |||
11 | import nose.tools as nt |
|
12 | import nose.tools as nt | |
12 |
|
13 | |||
13 | from IPython.lib import pretty |
|
14 | from IPython.lib import pretty | |
14 | from IPython.testing.decorators import skip_without, py2_only |
|
15 | from IPython.testing.decorators import skip_without, py2_only, py3_only | |
15 | from IPython.utils.py3compat import PY3, unicode_to_str |
|
16 | from IPython.utils.py3compat import PY3, unicode_to_str | |
16 |
|
17 | |||
17 | if PY3: |
|
18 | if PY3: | |
@@ -436,3 +437,48 b' def test_collections_counter():' | |||||
436 | ] |
|
437 | ] | |
437 | for obj, expected in cases: |
|
438 | for obj, expected in cases: | |
438 | nt.assert_equal(pretty.pretty(obj), expected) |
|
439 | nt.assert_equal(pretty.pretty(obj), expected) | |
|
440 | ||||
|
441 | @py3_only | |||
|
442 | def test_mappingproxy(): | |||
|
443 | MP = types.MappingProxyType | |||
|
444 | underlying_dict = {} | |||
|
445 | mp_recursive = MP(underlying_dict) | |||
|
446 | underlying_dict[2] = mp_recursive | |||
|
447 | underlying_dict[3] = underlying_dict | |||
|
448 | ||||
|
449 | cases = [ | |||
|
450 | (MP({}), "mappingproxy({})"), | |||
|
451 | (MP({None: MP({})}), "mappingproxy({None: mappingproxy({})})"), | |||
|
452 | (MP({k: k.upper() for k in string.ascii_lowercase}), | |||
|
453 | "mappingproxy({'a': 'A',\n" | |||
|
454 | " 'b': 'B',\n" | |||
|
455 | " 'c': 'C',\n" | |||
|
456 | " 'd': 'D',\n" | |||
|
457 | " 'e': 'E',\n" | |||
|
458 | " 'f': 'F',\n" | |||
|
459 | " 'g': 'G',\n" | |||
|
460 | " 'h': 'H',\n" | |||
|
461 | " 'i': 'I',\n" | |||
|
462 | " 'j': 'J',\n" | |||
|
463 | " 'k': 'K',\n" | |||
|
464 | " 'l': 'L',\n" | |||
|
465 | " 'm': 'M',\n" | |||
|
466 | " 'n': 'N',\n" | |||
|
467 | " 'o': 'O',\n" | |||
|
468 | " 'p': 'P',\n" | |||
|
469 | " 'q': 'Q',\n" | |||
|
470 | " 'r': 'R',\n" | |||
|
471 | " 's': 'S',\n" | |||
|
472 | " 't': 'T',\n" | |||
|
473 | " 'u': 'U',\n" | |||
|
474 | " 'v': 'V',\n" | |||
|
475 | " 'w': 'W',\n" | |||
|
476 | " 'x': 'X',\n" | |||
|
477 | " 'y': 'Y',\n" | |||
|
478 | " 'z': 'Z'})"), | |||
|
479 | (mp_recursive, "mappingproxy({2: {...}, 3: {2: {...}, 3: {...}}})"), | |||
|
480 | (underlying_dict, | |||
|
481 | "{2: mappingproxy({2: {...}, 3: {...}}), 3: {...}}"), | |||
|
482 | ] | |||
|
483 | for obj, expected in cases: | |||
|
484 | nt.assert_equal(pretty.pretty(obj), expected) |
General Comments 0
You need to be logged in to leave comments.
Login now