Remove unneeded pprint interfaces
There are parts of the original pprint module that we won't need, let's limit the surface and remove the unnecessary code
This commit is contained in:
parent
eb6ad08e5d
commit
2322668344
|
@ -6,9 +6,8 @@
|
||||||
# flake8: noqa
|
# flake8: noqa
|
||||||
# type: ignore
|
# type: ignore
|
||||||
|
|
||||||
#
|
# Original Author: Fred L. Drake, Jr.
|
||||||
# Author: Fred L. Drake, Jr.
|
# fdrake@acm.org
|
||||||
# fdrake@acm.org
|
|
||||||
#
|
#
|
||||||
# This is a simple little module I wrote to make life easier. I didn't
|
# This is a simple little module I wrote to make life easier. I didn't
|
||||||
# see anything quite like it in the library, though I may have overlooked
|
# see anything quite like it in the library, though I may have overlooked
|
||||||
|
@ -16,33 +15,6 @@
|
||||||
# tuples with fairly non-descriptive content. This is modeled very much
|
# tuples with fairly non-descriptive content. This is modeled very much
|
||||||
# after Lisp/Scheme - style pretty-printing of lists. If you find it
|
# after Lisp/Scheme - style pretty-printing of lists. If you find it
|
||||||
# useful, thank small children who sleep at night.
|
# useful, thank small children who sleep at night.
|
||||||
|
|
||||||
"""Support to pretty-print lists, tuples, & dictionaries recursively.
|
|
||||||
|
|
||||||
Very simple, but useful, especially in debugging data structures.
|
|
||||||
|
|
||||||
Classes
|
|
||||||
-------
|
|
||||||
|
|
||||||
PrettyPrinter()
|
|
||||||
Handle pretty-printing operations onto a stream using a configured
|
|
||||||
set of formatting parameters.htop
|
|
||||||
|
|
||||||
Functions
|
|
||||||
---------
|
|
||||||
|
|
||||||
pformat()
|
|
||||||
Format a Python object into a pretty-printed representation.
|
|
||||||
|
|
||||||
pprint()
|
|
||||||
Pretty-print a Python object to a stream [default is sys.stdout].
|
|
||||||
|
|
||||||
saferepr()
|
|
||||||
Generate a 'standard' repr()-like value, but protect against recursive
|
|
||||||
data structures.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
import collections as _collections
|
import collections as _collections
|
||||||
import dataclasses as _dataclasses
|
import dataclasses as _dataclasses
|
||||||
import re
|
import re
|
||||||
|
@ -50,41 +22,6 @@ import sys as _sys
|
||||||
import types as _types
|
import types as _types
|
||||||
from io import StringIO as _StringIO
|
from io import StringIO as _StringIO
|
||||||
|
|
||||||
__all__ = ["pprint","pformat","isreadable","isrecursive","saferepr",
|
|
||||||
"PrettyPrinter", "pp"]
|
|
||||||
|
|
||||||
|
|
||||||
def pprint(object, stream=None, indent=1, width=80, depth=None, *,
|
|
||||||
compact=False, sort_dicts=True, underscore_numbers=False):
|
|
||||||
"""Pretty-print a Python object to a stream [default is sys.stdout]."""
|
|
||||||
printer = PrettyPrinter(
|
|
||||||
stream=stream, indent=indent, width=width, depth=depth,
|
|
||||||
compact=compact, sort_dicts=sort_dicts,
|
|
||||||
underscore_numbers=underscore_numbers)
|
|
||||||
printer.pprint(object)
|
|
||||||
|
|
||||||
def pformat(object, indent=1, width=80, depth=None, *,
|
|
||||||
compact=False, sort_dicts=True, underscore_numbers=False):
|
|
||||||
"""Format a Python object into a pretty-printed representation."""
|
|
||||||
return PrettyPrinter(indent=indent, width=width, depth=depth,
|
|
||||||
compact=compact, sort_dicts=sort_dicts,
|
|
||||||
underscore_numbers=underscore_numbers).pformat(object)
|
|
||||||
|
|
||||||
def pp(object, *args, sort_dicts=False, **kwargs):
|
|
||||||
"""Pretty-print a Python object"""
|
|
||||||
pprint(object, *args, sort_dicts=sort_dicts, **kwargs)
|
|
||||||
|
|
||||||
def saferepr(object):
|
|
||||||
"""Version of repr() which can handle recursive data structures."""
|
|
||||||
return PrettyPrinter()._safe_repr(object, {}, None, 0)[0]
|
|
||||||
|
|
||||||
def isreadable(object):
|
|
||||||
"""Determine if saferepr(object) is readable by eval()."""
|
|
||||||
return PrettyPrinter()._safe_repr(object, {}, None, 0)[1]
|
|
||||||
|
|
||||||
def isrecursive(object):
|
|
||||||
"""Determine if object requires a recursive representation."""
|
|
||||||
return PrettyPrinter()._safe_repr(object, {}, None, 0)[2]
|
|
||||||
|
|
||||||
class _safe_key:
|
class _safe_key:
|
||||||
"""Helper function for key functions when sorting unorderable objects.
|
"""Helper function for key functions when sorting unorderable objects.
|
||||||
|
@ -157,23 +94,11 @@ class PrettyPrinter:
|
||||||
self._sort_dicts = sort_dicts
|
self._sort_dicts = sort_dicts
|
||||||
self._underscore_numbers = underscore_numbers
|
self._underscore_numbers = underscore_numbers
|
||||||
|
|
||||||
def pprint(self, object):
|
|
||||||
if self._stream is not None:
|
|
||||||
self._format(object, self._stream, 0, 0, {}, 0)
|
|
||||||
self._stream.write("\n")
|
|
||||||
|
|
||||||
def pformat(self, object):
|
def pformat(self, object):
|
||||||
sio = _StringIO()
|
sio = _StringIO()
|
||||||
self._format(object, sio, 0, 0, {}, 0)
|
self._format(object, sio, 0, 0, {}, 0)
|
||||||
return sio.getvalue()
|
return sio.getvalue()
|
||||||
|
|
||||||
def isrecursive(self, object):
|
|
||||||
return self.format(object, {}, 0, 0)[2]
|
|
||||||
|
|
||||||
def isreadable(self, object):
|
|
||||||
s, readable, recursive = self.format(object, {}, 0, 0)
|
|
||||||
return readable and not recursive
|
|
||||||
|
|
||||||
def _format(self, object, stream, indent, allowance, context, level):
|
def _format(self, object, stream, indent, allowance, context, level):
|
||||||
objid = id(object)
|
objid = id(object)
|
||||||
if objid in context:
|
if objid in context:
|
||||||
|
|
Loading…
Reference in New Issue