[New-bugs-announce] [issue42868] SpooledTemporaryFile.__iter__ is not transparent to rollover

Jin-oh Kang report at bugs.python.org
Fri Jan 8 09:46:35 EST 2021


New submission from Jin-oh Kang <jinoh.kang.kr at gmail.com>:

In tempfile, SpooledTemporaryFile.__iter__ is defined as follows:

    # file protocol
    def __iter__(self):
        return self._file.__iter__()

A rollover would switch the underlying _file object from a BytesIO to a TemporaryFile, thereby leaving the original iterator stale.

This may be fixed by:

    def __iter__(self):
        while True:
            line = self._file.readline()
            if not line:
                break
            yield line

Or perhaps:

    def __iter__(self):
        while True:
            file = self._file
            for line in file:
                yield line
                if file is not self._file:
                    break
            else:
                break

----------
components: Library (Lib)
messages: 384674
nosy: jinoh.kang.kr
priority: normal
severity: normal
status: open
title: SpooledTemporaryFile.__iter__ is not transparent to rollover
type: behavior
versions: Python 3.10

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42868>
_______________________________________


More information about the New-bugs-announce mailing list