minor: move internal _pformat_dispatch function
This commit is contained in:
parent
5b3867fd65
commit
c0b1a39192
|
@ -80,3 +80,24 @@ def saferepr(obj: Any, maxsize: int = 240) -> str:
|
||||||
around the Repr/reprlib functionality of the standard 2.6 lib.
|
around the Repr/reprlib functionality of the standard 2.6 lib.
|
||||||
"""
|
"""
|
||||||
return SafeRepr(maxsize).repr(obj)
|
return SafeRepr(maxsize).repr(obj)
|
||||||
|
|
||||||
|
|
||||||
|
class AlwaysDispatchingPrettyPrinter(pprint.PrettyPrinter):
|
||||||
|
"""PrettyPrinter that always dispatches (regardless of width)."""
|
||||||
|
|
||||||
|
def _format(self, object, stream, indent, allowance, context, level):
|
||||||
|
p = self._dispatch.get(type(object).__repr__, None)
|
||||||
|
|
||||||
|
objid = id(object)
|
||||||
|
if objid in context or p is None:
|
||||||
|
return super()._format(object, stream, indent, allowance, context, level)
|
||||||
|
|
||||||
|
context[objid] = 1
|
||||||
|
p(self, object, stream, indent, allowance, context, level + 1)
|
||||||
|
del context[objid]
|
||||||
|
|
||||||
|
|
||||||
|
def _pformat_dispatch(object, indent=1, width=80, depth=None, *, compact=False):
|
||||||
|
return AlwaysDispatchingPrettyPrinter(
|
||||||
|
indent=1, width=80, depth=None, compact=False
|
||||||
|
).pformat(object)
|
||||||
|
|
|
@ -13,6 +13,7 @@ from typing import Tuple
|
||||||
|
|
||||||
import _pytest._code
|
import _pytest._code
|
||||||
from _pytest import outcomes
|
from _pytest import outcomes
|
||||||
|
from _pytest._io.saferepr import _pformat_dispatch
|
||||||
from _pytest._io.saferepr import safeformat
|
from _pytest._io.saferepr import safeformat
|
||||||
from _pytest._io.saferepr import saferepr
|
from _pytest._io.saferepr import saferepr
|
||||||
from _pytest.compat import ATTRS_EQ_FIELD
|
from _pytest.compat import ATTRS_EQ_FIELD
|
||||||
|
@ -28,27 +29,6 @@ _reprcompare = None # type: Optional[Callable[[str, object, object], Optional[s
|
||||||
_assertion_pass = None # type: Optional[Callable[[int, str, str], None]]
|
_assertion_pass = None # type: Optional[Callable[[int, str, str], None]]
|
||||||
|
|
||||||
|
|
||||||
class AlwaysDispatchingPrettyPrinter(pprint.PrettyPrinter):
|
|
||||||
"""PrettyPrinter that always dispatches (regardless of width)."""
|
|
||||||
|
|
||||||
def _format(self, object, stream, indent, allowance, context, level):
|
|
||||||
p = self._dispatch.get(type(object).__repr__, None)
|
|
||||||
|
|
||||||
objid = id(object)
|
|
||||||
if objid in context or p is None:
|
|
||||||
return super()._format(object, stream, indent, allowance, context, level)
|
|
||||||
|
|
||||||
context[objid] = 1
|
|
||||||
p(self, object, stream, indent, allowance, context, level + 1)
|
|
||||||
del context[objid]
|
|
||||||
|
|
||||||
|
|
||||||
def _pformat_dispatch(object, indent=1, width=80, depth=None, *, compact=False):
|
|
||||||
return AlwaysDispatchingPrettyPrinter(
|
|
||||||
indent=1, width=80, depth=None, compact=False
|
|
||||||
).pformat(object)
|
|
||||||
|
|
||||||
|
|
||||||
def format_explanation(explanation: str) -> str:
|
def format_explanation(explanation: str) -> str:
|
||||||
"""This formats an explanation
|
"""This formats an explanation
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue