Commit 6ee04805 authored by Tim Peters's avatar Tim Peters

[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.
parent 5c4ded2c
...@@ -7,6 +7,7 @@ class Repr: ...@@ -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: ...@@ -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 '{}'
......
...@@ -34,6 +34,8 @@ class ReprTests(unittest.TestCase): ...@@ -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): ...@@ -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))
......
...@@ -145,6 +145,9 @@ Extension modules ...@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment