[680789] Debug with long array takes forever

Added array.array to the types repr.py knows about, after a suggestion
from Jurjen N.E. Bos.
This commit is contained in:
Tim Peters 2003-02-05 18:29:34 +00:00
parent 5c4ded2c3b
commit 6ee0480521
3 changed files with 33 additions and 0 deletions

View File

@ -7,6 +7,7 @@ class Repr:
self.maxlevel = 6 self.maxlevel = 6
self.maxtuple = 6 self.maxtuple = 6
self.maxlist = 6 self.maxlist = 6
self.maxarray = 5
self.maxdict = 4 self.maxdict = 4
self.maxstring = 30 self.maxstring = 30
self.maxlong = 40 self.maxlong = 40
@ -48,6 +49,23 @@ class Repr:
s = s + self.repr1(x[i], level-1) s = s + self.repr1(x[i], level-1)
if n > self.maxlist: s = s + ', ...' if n > self.maxlist: s = s + ', ...'
return '[' + s + ']' return '[' + s + ']'
def repr_array(self, x, level):
n = len(x)
header = "array('%s', [" % x.typecode
if n == 0:
return header + "])"
if level <= 0:
return header + "...])"
s = ''
for i in range(min(n, self.maxarray)):
if s:
s += ', '
s += self.repr1(x[i], level-1)
if n > self.maxarray:
s += ', ...'
return header + s + "])"
def repr_dict(self, x, level): def repr_dict(self, x, level):
n = len(x) n = len(x)
if n == 0: return '{}' if n == 0: return '{}'

View File

@ -34,6 +34,8 @@ class ReprTests(unittest.TestCase):
eq(r(s), expected) eq(r(s), expected)
def test_container(self): def test_container(self):
from array import array
eq = self.assertEquals eq = self.assertEquals
# Tuples give up after 6 elements # Tuples give up after 6 elements
eq(r(()), "()") eq(r(()), "()")
@ -56,6 +58,16 @@ class ReprTests(unittest.TestCase):
d['arthur'] = 1 d['arthur'] = 1
eq(r(d), "{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}") eq(r(d), "{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}")
# array.array after 5.
eq(r(array('i')), "array('i', [])")
eq(r(array('i', [1])), "array('i', [1])")
eq(r(array('i', [1, 2])), "array('i', [1, 2])")
eq(r(array('i', [1, 2, 3])), "array('i', [1, 2, 3])")
eq(r(array('i', [1, 2, 3, 4])), "array('i', [1, 2, 3, 4])")
eq(r(array('i', [1, 2, 3, 4, 5])), "array('i', [1, 2, 3, 4, 5])")
eq(r(array('i', [1, 2, 3, 4, 5, 6])),
"array('i', [1, 2, 3, 4, 5, ...])")
def test_numbers(self): def test_numbers(self):
eq = self.assertEquals eq = self.assertEquals
eq(r(123), repr(123)) eq(r(123), repr(123))

View File

@ -145,6 +145,9 @@ Extension modules
Library Library
------- -------
- array.array was added to the types repr.py knows about (see
<http://www.python.org/sf/680789>).
- The new pickletools.py contains lots of documentation about pickle - The new pickletools.py contains lots of documentation about pickle
internals, and supplies some helpers for working with pickles, such as internals, and supplies some helpers for working with pickles, such as
a symbolic pickle disassembler. a symbolic pickle disassembler.