]> granicus.if.org Git - python/commitdiff
Issue #16304: Further optimize BZ2File.readlines?().
authorNadeem Vawda <nadeem.vawda@gmail.com>
Mon, 1 Oct 2012 21:05:32 +0000 (23:05 +0200)
committerNadeem Vawda <nadeem.vawda@gmail.com>
Mon, 1 Oct 2012 21:05:32 +0000 (23:05 +0200)
Lib/bz2.py

index da19e272334cc7a371df12e03a1c8e140d9f90e3..c3075073f0ed786cdfd8be4211e4bfa629e275f9 100644 (file)
@@ -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)