##// END OF EJS Templates
BUG: Fix the set and frozenset pretty printer to handle the empty case correctly.
Robert Kern -
Show More
@@ -512,7 +512,7 b' def _default_pprint(obj, p, cycle):'
512 512 def _seq_pprinter_factory(start, end, basetype):
513 513 """
514 514 Factory that returns a pprint function useful for sequences. Used by
515 the default pprint for tuples, dicts, lists, sets and frozensets.
515 the default pprint for tuples, dicts, and lists.
516 516 """
517 517 def inner(obj, p, cycle):
518 518 typ = type(obj)
@@ -536,6 +536,33 b' def _seq_pprinter_factory(start, end, basetype):'
536 536 return inner
537 537
538 538
539 def _set_pprinter_factory(start, end, basetype):
540 """
541 Factory that returns a pprint function useful for sets and frozensets.
542 """
543 def inner(obj, p, cycle):
544 typ = type(obj)
545 if basetype is not None and typ is not basetype and typ.__repr__ != basetype.__repr__:
546 # If the subclass provides its own repr, use it instead.
547 return p.text(typ.__repr__(obj))
548
549 if cycle:
550 return p.text(start + '...' + end)
551 if len(obj) == 0:
552 # Special case.
553 p.text(basetype.__name__ + '()')
554 else:
555 step = len(start)
556 p.begin_group(step, start)
557 for idx, x in enumerate(obj):
558 if idx:
559 p.text(',')
560 p.breakable()
561 p.pretty(x)
562 p.end_group(step, end)
563 return inner
564
565
539 566 def _dict_pprinter_factory(start, end, basetype=None):
540 567 """
541 568 Factory that returns a pprint function used by the default pprint of
@@ -668,8 +695,8 b' _type_pprinters = {'
668 695 list: _seq_pprinter_factory('[', ']', list),
669 696 dict: _dict_pprinter_factory('{', '}', dict),
670 697
671 set: _seq_pprinter_factory('{', '}', set),
672 frozenset: _seq_pprinter_factory('frozenset([', '])', frozenset),
698 set: _set_pprinter_factory('{', '}', set),
699 frozenset: _set_pprinter_factory('frozenset({', '})', frozenset),
673 700 super: _super_pprint,
674 701 _re_pattern_type: _re_pattern_pprint,
675 702 type: _type_pprint,
General Comments 0
You need to be logged in to leave comments. Login now