Issue3521
Created on 2008-08-07 22:36 by terry.reedy, last changed 2022-04-11 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| file.readline.diff | ajaksu2, 2008-08-27 23:00 | Adds isinstance(limit, int) to io.X.readline | ||
| Messages (5) | |||
|---|---|---|---|
| msg70866 - (view) | Author: Terry J. Reedy (terry.reedy) * ![]() |
Date: 2008-08-07 22:36 | |
WinXP, 3.0b2
>>>f=open('somefile', 'r')
>>>f.readline(somefloat)
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
f.readline(1.0)
File "C:\Program Files\Python30\lib\io.py", line 1766, in readline
return line[:endpos]
TypeError: slice indices must be integers or None or have an __index__
method
At this point, any f.read or f.readline calls fail with a similar
TypeError. The error recovery seems incomplete. The same does *not*
happen with f.read(float). Recovery is complete and subsequent
f.read/f.readline calls work.
In 2.5, float size arg worked with a deprecation warning, so issue does
not arise. I presume same is true in 2.6.
|
|||
| msg70867 - (view) | Author: Guido van Rossum (gvanrossum) * ![]() |
Date: 2008-08-07 22:53 | |
Good catch! This looks pretty simple to fix; I think a type check is missing (actually several, there are at least two implementations in io.py). In fact, the 2.6 version of io.py already has the necessary checks. (But merging those forward is not 100% trivial since in 3.0 the 'long' type doesn't exist.) |
|||
| msg72049 - (view) | Author: Daniel Diniz (ajaksu2) * ![]() |
Date: 2008-08-27 23:00 | |
Patch attached, suggested test below.
def test_readline():
for mode in ('r', 'rb', 'r+', 'r+b'):
f = open(__file__, mode)
try:
f.readline(0.1)
except TypeError:
tmp = f.readline()
f.close()
print('OK')
test_readline()
|
|||
| msg81364 - (view) | Author: Daniel Diniz (ajaksu2) * ![]() |
Date: 2009-02-08 03:24 | |
Maybe this one should be in 3.0.1? Benchmarking the isinstance approach against int() would be interesting. The io-c branch doesn't have this bug, so 3.1 is OK :) |
|||
| msg86437 - (view) | Author: Benjamin Peterson (benjamin.peterson) * ![]() |
Date: 2009-04-24 23:00 | |
Fixed in r71855 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:56:37 | admin | set | github: 47771 |
| 2009-04-24 23:00:33 | benjamin.peterson | set | status: open -> closed resolution: fixed messages: + msg86437 |
| 2009-04-22 18:58:17 | benjamin.peterson | set | priority: high assignee: benjamin.peterson nosy: + benjamin.peterson |
| 2009-02-08 03:24:34 | ajaksu2 | set | messages: + msg81364 |
| 2008-08-27 23:00:32 | ajaksu2 | set | files:
+ file.readline.diff nosy: + ajaksu2 messages: + msg72049 keywords: + patch |
| 2008-08-07 22:53:35 | gvanrossum | set | keywords:
+ easy nosy: + gvanrossum messages: + msg70867 |
| 2008-08-07 22:36:50 | terry.reedy | create | |

