bpo-43787: Add __iter__ to GzipFile, BZ2File, and LZMAFile (GH-25353)

This commit is contained in:
Inada Naoki 2021-04-13 13:51:49 +09:00 committed by GitHub
parent d9151cb453
commit d2a8e69c2c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 0 deletions

View file

@ -197,6 +197,10 @@ class BZ2File(_compression.BaseStream):
self._check_can_read() self._check_can_read()
return self._buffer.readline(size) return self._buffer.readline(size)
def __iter__(self):
self._check_can_read()
return self._buffer.__iter__()
def readlines(self, size=-1): def readlines(self, size=-1):
"""Read a list of lines of uncompressed bytes from the file. """Read a list of lines of uncompressed bytes from the file.

View file

@ -398,6 +398,10 @@ class GzipFile(_compression.BaseStream):
self._check_not_closed() self._check_not_closed()
return self._buffer.readline(size) return self._buffer.readline(size)
def __iter__(self):
self._check_not_closed()
return self._buffer.__iter__()
class _GzipReader(_compression.DecompressReader): class _GzipReader(_compression.DecompressReader):
def __init__(self, fp): def __init__(self, fp):

View file

@ -221,6 +221,10 @@ class LZMAFile(_compression.BaseStream):
self._check_can_read() self._check_can_read()
return self._buffer.readline(size) return self._buffer.readline(size)
def __iter__(self):
self._check_can_read()
return self._buffer.__iter__()
def write(self, data): def write(self, data):
"""Write a bytes object to the file. """Write a bytes object to the file.

View file

@ -0,0 +1,3 @@
Add ``__iter__()`` method to :class:`bz2.BZ2File`, :class:`gzip.GzipFile`, and
:class:`lzma.LZMAFile`. It makes iterating them about 2x faster. Patch by
Inada Naoki.