From: Inada Naoki Date: Tue, 13 Apr 2021 04:51:49 +0000 (+0900) Subject: bpo-43787: Add __iter__ to GzipFile, BZ2File, and LZMAFile (GH-25353) X-Git-Tag: v3.10.0b1~308 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d2a8e69c2c605fbaa3656a5f99aa8d295f74c80e;p=thirdparty%2FPython%2Fcpython.git bpo-43787: Add __iter__ to GzipFile, BZ2File, and LZMAFile (GH-25353) --- diff --git a/Lib/bz2.py b/Lib/bz2.py index 43f321ae8523..a2c588e7487f 100644 --- a/Lib/bz2.py +++ b/Lib/bz2.py @@ -197,6 +197,10 @@ class BZ2File(_compression.BaseStream): self._check_can_read() return self._buffer.readline(size) + def __iter__(self): + self._check_can_read() + return self._buffer.__iter__() + def readlines(self, size=-1): """Read a list of lines of uncompressed bytes from the file. diff --git a/Lib/gzip.py b/Lib/gzip.py index 0a8993ba3547..9a4e0f9c00c5 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -398,6 +398,10 @@ class GzipFile(_compression.BaseStream): self._check_not_closed() return self._buffer.readline(size) + def __iter__(self): + self._check_not_closed() + return self._buffer.__iter__() + class _GzipReader(_compression.DecompressReader): def __init__(self, fp): diff --git a/Lib/lzma.py b/Lib/lzma.py index c8b197055cdd..2ada7d81d3c8 100644 --- a/Lib/lzma.py +++ b/Lib/lzma.py @@ -221,6 +221,10 @@ class LZMAFile(_compression.BaseStream): self._check_can_read() return self._buffer.readline(size) + def __iter__(self): + self._check_can_read() + return self._buffer.__iter__() + def write(self, data): """Write a bytes object to the file. diff --git a/Misc/NEWS.d/next/Library/2021-04-12-15-15-50.bpo-43787.wCy_Wd.rst b/Misc/NEWS.d/next/Library/2021-04-12-15-15-50.bpo-43787.wCy_Wd.rst new file mode 100644 index 000000000000..9b8d945cbb8a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-12-15-15-50.bpo-43787.wCy_Wd.rst @@ -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.