changeset: 95098:e639750ecd92 parent: 95096:ed8c2a4a6d3d parent: 95097:a90ec6b96af2 user: Serhiy Storchaka date: Fri Mar 20 16:12:43 2015 +0200 files: Lib/tempfile.py description: 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 -r ed8c2a4a6d3d -r e639750ecd92 Lib/tempfile.py --- a/Lib/tempfile.py Fri Mar 20 14:02:33 2015 +0100 +++ b/Lib/tempfile.py Fri Mar 20 16:12:43 2015 +0200 @@ -426,9 +426,11 @@ # 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,