Show More
@@ -648,6 +648,22 b' def _re_pattern_pprint(obj, p, cycle):' | |||
|
648 | 648 | p.text(')') |
|
649 | 649 | |
|
650 | 650 | |
|
651 | def _types_simplenamespace_pprint(obj, p, cycle): | |
|
652 | """The pprint function for types.SimpleNamespace.""" | |
|
653 | name = 'namespace' | |
|
654 | with p.group(len(name) + 1, name + '(', ')'): | |
|
655 | if cycle: | |
|
656 | p.text('...') | |
|
657 | else: | |
|
658 | for idx, (attr, value) in enumerate(obj.__dict__.items()): | |
|
659 | if idx: | |
|
660 | p.text(',') | |
|
661 | p.breakable() | |
|
662 | attr_kwarg = '{}='.format(attr) | |
|
663 | with p.group(len(attr_kwarg), attr_kwarg): | |
|
664 | p.pretty(value) | |
|
665 | ||
|
666 | ||
|
651 | 667 | def _type_pprint(obj, p, cycle): |
|
652 | 668 | """The pprint for classes and types.""" |
|
653 | 669 | # Heap allocated types might not have the module attribute, |
@@ -741,6 +757,7 b' _type_pprinters = {' | |||
|
741 | 757 | types.FunctionType: _function_pprint, |
|
742 | 758 | types.BuiltinFunctionType: _function_pprint, |
|
743 | 759 | types.MethodType: _repr_pprint, |
|
760 | types.SimpleNamespace: _types_simplenamespace_pprint, | |
|
744 | 761 | datetime.datetime: _repr_pprint, |
|
745 | 762 | datetime.timedelta: _repr_pprint, |
|
746 | 763 | _exception_base: _exception_pprint |
@@ -407,6 +407,26 b' def test_mappingproxy():' | |||
|
407 | 407 | nt.assert_equal(pretty.pretty(obj), expected) |
|
408 | 408 | |
|
409 | 409 | |
|
410 | def test_simplenamespace(): | |
|
411 | SN = types.SimpleNamespace | |
|
412 | ||
|
413 | sn_recursive = SN() | |
|
414 | sn_recursive.first = sn_recursive | |
|
415 | sn_recursive.second = sn_recursive | |
|
416 | cases = [ | |
|
417 | (SN(), "namespace()"), | |
|
418 | (SN(x=SN()), "namespace(x=namespace())"), | |
|
419 | (SN(a_long_name=[SN(s=string.ascii_lowercase)]*3, a_short_name=None), | |
|
420 | "namespace(a_long_name=[namespace(s='abcdefghijklmnopqrstuvwxyz'),\n" | |
|
421 | " namespace(s='abcdefghijklmnopqrstuvwxyz'),\n" | |
|
422 | " namespace(s='abcdefghijklmnopqrstuvwxyz')],\n" | |
|
423 | " a_short_name=None)"), | |
|
424 | (sn_recursive, "namespace(first=namespace(...), second=namespace(...))"), | |
|
425 | ] | |
|
426 | for obj, expected in cases: | |
|
427 | nt.assert_equal(pretty.pretty(obj), expected) | |
|
428 | ||
|
429 | ||
|
410 | 430 | def test_pretty_environ(): |
|
411 | 431 | dict_repr = pretty.pretty(dict(os.environ)) |
|
412 | 432 | # reindent to align with 'environ' prefix |
General Comments 0
You need to be logged in to leave comments.
Login now