From: Serhiy Storchaka <storchaka@gmail.com> Date: Fri, 20 Mar 2015 14:11:20 +0000 (+0200) Subject: Issue #23700: NamedTemporaryFile iterator closed underlied file object in X-Git-Tag: v3.5.0a3~108^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d83b7c2df4439b678bf7e372f8c9bbaff2907689;p=python Issue #23700: NamedTemporaryFile iterator closed underlied file object in some circunstances while NamedTemporaryFile object was living. This causes failing test_csv. Changed the implementation of NamedTemporaryFile.__iter__ to make tests passed. --- diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 8352c38a0d..cb18ae65f6 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -426,9 +426,11 @@ class _TemporaryFileWrapper: # iter() doesn't use __getattr__ to find the __iter__ method def __iter__(self): - # don't return iter(self.file), but yield from it to avoid closing - # file as long as it's being used as iterator, see issue #23000 - yield from iter(self.file) + # Don't return iter(self.file), but yield from it to avoid closing + # file as long as it's being used as iterator, see issue #23000. + # XXX Also don't use "yield from"! + for line in self.file: + yield line def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,