diff options
Diffstat (limited to 'coverage/debug.py')
-rw-r--r-- | coverage/debug.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/coverage/debug.py b/coverage/debug.py index 3a6b1fdc..c11c927a 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -8,6 +8,7 @@ import functools import inspect import itertools import os +import pprint import sys try: import _thread @@ -193,6 +194,23 @@ class SimpleReprMixin(object): ) +def simplify(v): + """Turn things which are nearly dict/list/etc into dict/list/etc.""" + if isinstance(v, dict): + return {k:simplify(vv) for k, vv in v.items()} + elif isinstance(v, (list, tuple)): + return type(v)(simplify(vv) for vv in v) + elif hasattr(v, "__dict__"): + return simplify({'.'+k: v for k, v in v.__dict__.items()}) + else: + return v + + +def pp(v): + """Debug helper to pretty-print data, including SimpleNamespace objects.""" + pprint.pprint(simplify(v)) + + def filter_text(text, filters): """Run `text` through a series of filters. |