[Idle-dev] [ idlefork-Bugs-558687 ] Printing arrays misses elements
SourceForge.net
noreply@sourceforge.net
Thu, 15 May 2003 13:33:52 -0700
Bugs item #558687, was opened at 2002-05-21 10:10
Message generated for change (Comment added) made by gvanrossum
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=109579&aid=558687&group_id=9579
Category: None
Group: None
Status: Closed
Resolution: Works For Me
Priority: 5
Submitted By: Michael Williams (mikewilliams)
Assigned to: Nobody/Anonymous (nobody)
Summary: Printing arrays misses elements
Initial Comment:
IDLEfork seems to be missing out an inconsistent
number of the final few elements of a Numeric
array when asked to print them. This has been
replicated on both Linux and Solaris with
Python2.2.1 and IDLEfork 0.8.1
Consider the following code snippet (problem
exhibited both if run from module or typed at
shell):
from Numeric import * #Import Numeric (an array
#library)
xx = zeros(100, Float) #Create an empty array of
#100 floats
for i in range(100):
xx[i] = i #Put numbers 0 to 99 in
the #array
print xx #Print the array (see the
#problem?)
print xx[99] #Although xx[99] does
exist!
This problem doesn't seem to occur much below 100
element arrays (although see, e.g. 87), but seems
to get more severe above it. See, for example
102-108 (not 109 or 110), 150, 200, 1000 (which
prints the first 947 elements!). I could not find
a corellation between window width and the number
of elements that were printed (which appears to be
constant). Ther seems to be some reluctance to
start a new line when printing until there are
sufficient elements to put on it.
This is a medium severity problem, especially for
interactive work.
----------------------------------------------------------------------
>Comment By: Guido van Rossum (gvanrossum)
Date: 2003-05-15 16:33
Message:
Logged In: YES
user_id=6380
As I said, and as the OP seems to ignore, this points out
that there must be bug in Numeric. It's tp_str
implementation is missing the last element; its tp_repr
implementation is correct; its tp_print implementation is
also correct. "print xx" uses tp_print when stdout is a real
file, as when using the standard shell; but is uses tp_str
when stdout is an object pretending to be a file, as is the
case when run under IDLE.
So, this is definitely not an IDLE bug.
----------------------------------------------------------------------
Comment By: Kurt B. Kaiser (kbk)
Date: 2003-05-15 16:28
Message:
Logged In: YES
user_id=149084
Numeric version 22.0
IDLEfork0.9a2++
Python 2.2.2
W2K
"works for me"
----------------------------------------------------------------------
Comment By: Bruce Sherwood (bsherwood)
Date: 2002-06-20 09:41
Message:
Logged In: YES
user_id=34881
With idlefork-0.8.1 on RedHat Linux 7.2 with Numeric 21.0,
when I try running exactly the same test in the shell, I see
no difference between "print xx" and "xx", and both are
correct. No clue as to what might be different in your
environment.
----------------------------------------------------------------------
Comment By: Michael Williams (mikewilliams)
Date: 2002-06-20 07:54
Message:
Logged In: YES
user_id=258804
OK. Tested again to convince myself I wasn't daydreaming and
the problem is definitely there. Here's the output of a
short IDLEfork session:
>>> from Numeric import *
>>> xx = zeros(100, Float)
>>> for i in range(100):
xx[i] = i
>>> print xx
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
11. 12. 13. 14.
15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
25. 26. 27. 28.
29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
39. 40. 41. 42.
43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
53. 54. 55. 56.
57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
67. 68. 69. 70.
71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
81. 82. 83. 84.
85. 86. 87. 88. 89. 90. 91. 92. 93. 94.
95. 96. 97. 98.]
>>> xx
array([ 0., 1., 2., 3., 4., 5., 6., 7.,
8., 9., 10., 11., 12.,
13., 14., 15., 16., 17., 18., 19.,
20., 21., 22., 23.,
24., 25., 26., 27., 28., 29., 30.,
31., 32., 33., 34.,
35., 36., 37., 38., 39., 40., 41.,
42., 43., 44., 45.,
46., 47., 48., 49., 50., 51., 52.,
53., 54., 55., 56.,
57., 58., 59., 60., 61., 62., 63.,
64., 65., 66., 67.,
68., 69., 70., 71., 72., 73., 74.,
75., 76., 77., 78.,
79., 80., 81., 82., 83., 84., 85.,
86., 87., 88., 89.,
90., 91., 92., 93., 94., 95., 96.,
97., 98., 99.])
Sorry if line-wrapping hasn't worked! Anyway, the moral of
the story is if you "print xx" the problem is exhibited but
if you just "xx" it isn't. Does this suggest the likely
origin of the problem?
I checked with the regular Python intrerpreter (both through
the old IDLE and from the command line) and this definitely
isn't a problem there. Doing "print str(xx)" instead of
"print xx" makes no difference; this enironment doesn't
exhibit the problem.
By the way, this is all with the latest Numeric which is
version 21.0. Is this the same version you're using Bruce?
If it would be useful I could try and replicate the problem
with earlier Numerics.
----------------------------------------------------------------------
Comment By: Guido van Rossum (gvanrossum)
Date: 2002-06-19 08:33
Message:
Logged In: YES
user_id=6380
Without looking at any code, I venture that this is more
likely a bug in Numeric rather than in idle(fork). If you
don't see this when using the regular python interpreter,
that could be because in IDLE, str() is used to print
numeric objects, while in the regular interpreter an
internal print handler may be used. To verify that theory,
you could use "print str(xx)" in a regular interpreter. If
that has the same problem, please submit the bug report to
the Numeric folks (and report back here in either case).
----------------------------------------------------------------------
Comment By: Bruce Sherwood (bsherwood)
Date: 2002-06-18 21:50
Message:
Logged In: YES
user_id=34881
I'm using idlefork-0.8.1 for daily work. I cannot reproduce
this problem; the test routine gives the correct output on
RedHat Linux 7.2. This is with a version of Numeric from a
few months ago.
----------------------------------------------------------------------
Comment By: Michael Williams (mikewilliams)
Date: 2002-05-21 10:36
Message:
Logged In: YES
user_id=258804
This does not occur in the IDLE distributed with the
Python source.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=109579&aid=558687&group_id=9579