Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6ee0480

Browse files
committed
[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.
1 parent 5c4ded2 commit 6ee0480

3 files changed

Lines changed: 33 additions & 0 deletions

File tree

Lib/repr.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ def __init__(self):
77
self.maxlevel = 6
88
self.maxtuple = 6
99
self.maxlist = 6
10+
self.maxarray = 5
1011
self.maxdict = 4
1112
self.maxstring = 30
1213
self.maxlong = 40
@@ -48,6 +49,23 @@ def repr_list(self, x, level):
4849
s = s + self.repr1(x[i], level-1)
4950
if n > self.maxlist: s = s + ', ...'
5051
return '[' + s + ']'
52+
53+
def repr_array(self, x, level):
54+
n = len(x)
55+
header = "array('%s', [" % x.typecode
56+
if n == 0:
57+
return header + "])"
58+
if level <= 0:
59+
return header + "...])"
60+
s = ''
61+
for i in range(min(n, self.maxarray)):
62+
if s:
63+
s += ', '
64+
s += self.repr1(x[i], level-1)
65+
if n > self.maxarray:
66+
s += ', ...'
67+
return header + s + "])"
68+
5169
def repr_dict(self, x, level):
5270
n = len(x)
5371
if n == 0: return '{}'

Lib/test/test_repr.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ def test_string(self):
3434
eq(r(s), expected)
3535

3636
def test_container(self):
37+
from array import array
38+
3739
eq = self.assertEquals
3840
# Tuples give up after 6 elements
3941
eq(r(()), "()")
@@ -56,6 +58,16 @@ def test_container(self):
5658
d['arthur'] = 1
5759
eq(r(d), "{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}")
5860

61+
# array.array after 5.
62+
eq(r(array('i')), "array('i', [])")
63+
eq(r(array('i', [1])), "array('i', [1])")
64+
eq(r(array('i', [1, 2])), "array('i', [1, 2])")
65+
eq(r(array('i', [1, 2, 3])), "array('i', [1, 2, 3])")
66+
eq(r(array('i', [1, 2, 3, 4])), "array('i', [1, 2, 3, 4])")
67+
eq(r(array('i', [1, 2, 3, 4, 5])), "array('i', [1, 2, 3, 4, 5])")
68+
eq(r(array('i', [1, 2, 3, 4, 5, 6])),
69+
"array('i', [1, 2, 3, 4, 5, ...])")
70+
5971
def test_numbers(self):
6072
eq = self.assertEquals
6173
eq(r(123), repr(123))

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ Extension modules
145145
Library
146146
-------
147147

148+
- array.array was added to the types repr.py knows about (see
149+
<http://www.python.org/sf/680789>).
150+
148151
- The new pickletools.py contains lots of documentation about pickle
149152
internals, and supplies some helpers for working with pickles, such as
150153
a symbolic pickle disassembler.

0 commit comments

Comments
 (0)