Index: Lib/tempfile.py =================================================================== --- Lib/tempfile.py (revision 74178) +++ Lib/tempfile.py (working copy) @@ -568,11 +568,11 @@ @property def mode(self): - return self._file.mode + return self._file.mode if self._rolled else None @property def name(self): - return self._file.name + return self._file.name if self._rolled else None @property def newlines(self): Index: Lib/test/test_tempfile.py =================================================================== --- Lib/test/test_tempfile.py (revision 74178) +++ Lib/test/test_tempfile.py (working copy) @@ -814,6 +814,11 @@ pass self.failUnlessRaises(ValueError, use_closed) + def test_properties(self): + # Don't throw AttributeError just because we haven't rolled yet + with tempfile.SpooledTemporaryFile(max_size=1) as f: + self.assertEqual(f.name, None) + self.assertEqual(f.mode, None) test_classes.append(test_SpooledTemporaryFile)