From: Nadeem Vawda Date: Mon, 1 Oct 2012 21:05:32 +0000 (+0200) Subject: Issue #16304: Further optimize BZ2File.readlines?(). X-Git-Tag: v3.4.0a1~2416^2~1^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eb70be2b46e12ab81a80342906f63ee9c9b6ea3d;p=python Issue #16304: Further optimize BZ2File.readlines?(). --- diff --git a/Lib/bz2.py b/Lib/bz2.py index da19e27233..c3075073f0 100644 --- a/Lib/bz2.py +++ b/Lib/bz2.py @@ -319,9 +319,10 @@ class BZ2File(io.BufferedIOBase): non-negative, no more than size bytes will be read (in which case the line may be incomplete). Returns b'' if already at EOF. """ - if not hasattr(size, "__index__"): - raise TypeError("Integer argument expected") - size = size.__index__() + if not isinstance(size, int): + if not hasattr(size, "__index__"): + raise TypeError("Integer argument expected") + size = size.__index__() with self._lock: self._check_can_read() # Shortcut for the common case - the whole line is in the buffer. @@ -341,9 +342,10 @@ class BZ2File(io.BufferedIOBase): further lines will be read once the total size of the lines read so far equals or exceeds size. """ - if not hasattr(size, "__index__"): - raise TypeError("Integer argument expected") - size = size.__index__() + if not isinstance(size, int): + if not hasattr(size, "__index__"): + raise TypeError("Integer argument expected") + size = size.__index__() with self._lock: return io.BufferedIOBase.readlines(self, size)