summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2003-02-05 18:29:34 (GMT)
committerTim Peters <tim.peters@gmail.com>2003-02-05 18:29:34 (GMT)
commit6ee0480521901d3e84769d1590603f89efd456a4 (patch)
tree9ecc2d6febd0422f8ea6018c7625a02c7b636f60
parent5c4ded2c3b59aa134b82ab17cdfe7ab633194ca6 (diff)
downloadcpython-6ee0480521901d3e84769d1590603f89efd456a4.zip
cpython-6ee0480521901d3e84769d1590603f89efd456a4.tar.gz
cpython-6ee0480521901d3e84769d1590603f89efd456a4.tar.bz2
[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.
-rw-r--r--Lib/repr.py18
-rw-r--r--Lib/test/test_repr.py12
-rw-r--r--Misc/NEWS3
3 files changed, 33 insertions, 0 deletions
diff --git a/Lib/repr.py b/Lib/repr.py
index c69ce28..0431857 100644
--- a/Lib/repr.py
+++ b/Lib/repr.py
@@ -7,6 +7,7 @@ class Repr:
self.maxlevel = 6
self.maxtuple = 6
self.maxlist = 6
+ self.maxarray = 5
self.maxdict = 4
self.maxstring = 30
self.maxlong = 40
@@ -48,6 +49,23 @@ class Repr:
s = s + self.repr1(x[i], level-1)
if n > self.maxlist: s = 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):
n = len(x)
if n == 0: return '{}'
diff --git a/Lib/test/test_repr.py b/Lib/test/test_repr.py
index 47ec07c..29e1687 100644
--- a/Lib/test/test_repr.py
+++ b/Lib/test/test_repr.py
@@ -34,6 +34,8 @@ class ReprTests(unittest.TestCase):
eq(r(s), expected)
def test_container(self):
+ from array import array
+
eq = self.assertEquals
# Tuples give up after 6 elements
eq(r(()), "()")
@@ -56,6 +58,16 @@ class ReprTests(unittest.TestCase):
d['arthur'] = 1
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):
eq = self.assertEquals
eq(r(123), repr(123))
diff --git a/Misc/NEWS b/Misc/NEWS
index 67e84df..25cbe69 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -145,6 +145,9 @@ Extension modules
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
internals, and supplies some helpers for working with pickles, such as
a symbolic pickle disassembler.