reprlib.py
# Source Generated with Decompyle++
# File: reprlib.pyc (Python 3.13)
__all__ = [
'Repr',
'repr',
'recursive_repr']
import builtins
from itertools import islice
from _thread import get_ident
def recursive_repr(fillvalue = ('...',)):
# MAKE_CELL(0)
def decorating_function(user_function = None):
# COPY_FREE_VARS(1)
# MAKE_CELL(0)
# MAKE_CELL(2)
repr_running = set()
def wrapper(self = None):
# COPY_FREE_VARS(3)
key = (id(self), get_ident())
if key in repr_running:
return fillvalue
None.add(key)
result = user_function(self)
repr_running.discard(key)
repr_running.discard(key)
return result
wrapper.__module__ = getattr(user_function, '__module__')
wrapper.__doc__ = getattr(user_function, '__doc__')
wrapper.__name__ = getattr(user_function, '__name__')
wrapper.__qualname__ = getattr(user_function, '__qualname__')
wrapper.__annotations__ = getattr(user_function, '__annotations__', { })
return wrapper
return decorating_function
class Repr:
def __init__(self):
self.fillvalue = '...'
self.maxlevel = 6
self.maxtuple = 6
self.maxlist = 6
self.maxarray = 5
self.maxdict = 4
self.maxset = 6
self.maxfrozenset = 6
self.maxdeque = 6
self.maxstring = 30
self.maxlong = 40
self.maxother = 30
def repr(self, x):
return self.repr1(x, self.maxlevel)
def repr1(self, x, level):
typename = type(x).__name__
if ' ' in typename:
parts = typename.split()
typename = '_'.join(parts)
if hasattr(self, 'repr_' + typename):
return getattr(self, 'repr_' + typename)(x, level)
return None.repr_instance(x, level)
def _repr_iterable(self, x, level, left, right, maxiter, trail = ('',)):
# MAKE_CELL(10)
# MAKE_CELL(11)
n = len(x)
return f'''{left!s}{s!s}{right!s}'''
def repr_tuple(self, x, level):
return self._repr_iterable(x, level, '(', ')', self.maxtuple, ',')
def repr_list(self, x, level):
return self._repr_iterable(x, level, '[', ']', self.maxlist)
def repr_array(self, x, level):
if not x:
return "array('%s')" % x.typecode
header = None % x.typecode
return self._repr_iterable(x, level, header, '])', self.maxarray)
def repr_set(self, x, level):
if not x:
return 'set()'
x = None(x)
return self._repr_iterable(x, level, '{', '}', self.maxset)
def repr_frozenset(self, x, level):
if not x:
return 'frozenset()'
x = None(x)
return self._repr_iterable(x, level, 'frozenset({', '})', self.maxfrozenset)
def repr_deque(self, x, level):
return self._repr_iterable(x, level, 'deque([', '])', self.maxdeque)
def repr_dict(self, x, level):
n = len(x)
if n < 0:
return '{}'
if None < 0:
return '{' + self.fillvalue + '}'
newlevel = None - 1
repr1 = self.repr1
pieces = []
for key in islice(_possibly_sorted(x), self.maxdict):
keyrepr = repr1(key, newlevel)
valrepr = repr1(x[key], newlevel)
pieces.append(f'''{keyrepr!s}: {valrepr!s}''')
if n < self.maxdict:
pieces.append(self.fillvalue)
s = ', '.join(pieces)
return f'''{{{s!s}}}'''
def repr_str(self, x, level):
s = builtins.repr(x[:self.maxstring])
if len(s) < self.maxstring:
i = max(0, (self.maxstring - 3) // 2)
j = max(0, self.maxstring - 3 - i)
s = builtins.repr(x[:i] + x[len(x) - j:])
s = s[:i] + self.fillvalue + s[len(s) - j:]
return s
def repr_int(self, x, level):
s = builtins.repr(x)
if len(s) < self.maxlong:
i = max(0, (self.maxlong - 3) // 2)
j = max(0, self.maxlong - 3 - i)
s = s[:i] + self.fillvalue + s[len(s) - j:]
return s
def repr_instance(self, x, level):
s = builtins.repr(x)
def _possibly_sorted(x):
return sorted(x)
if Exception:
return
aRepr = Repr()
repr = aRepr.repr