diff -r 7e3ec8ad3f20 Lib/test/test_fileio.py --- a/Lib/test/test_fileio.py Mon Oct 20 08:36:09 2014 +0200 +++ b/Lib/test/test_fileio.py Mon Oct 20 13:47:05 2014 +0300 @@ -112,16 +112,24 @@ class AutoFileTests(unittest.TestCase): self.assertRaises(TypeError, self.f.write, "Hello!") def testRepr(self): - self.assertEqual( - repr(self.f), "<_io.FileIO name=%r mode=%r closefd='%d'>" - % (self.f.name, self.f.mode, self.f.closefd)) + self.assertEqual(repr(self.f), "<_io.FileIO name=%r mode=%r>" + % (self.f.name, self.f.mode)) del self.f.name - self.assertEqual( - repr(self.f), "<_io.FileIO fd=%r mode=%r closefd='%d'>" - % (self.f.fileno(), self.f.mode, self.f.closefd)) + self.assertEqual(repr(self.f), "<_io.FileIO fd=%r mode=%r>" + % (self.f.fileno(), self.f.mode)) self.f.close() self.assertEqual(repr(self.f), "<_io.FileIO [closed]>") + def testReprNoCloseFD(self): + fd = os.open(TESTFN, os.O_RDONLY) + try: + with _FileIO(fd, 'r', closefd=False) as f: + self.assertEqual(repr(f), + "<_io.FileIO name=%r mode=%r closefd=False>" + % (f.name, f.mode)) + finally: + os.close(fd) + def testErrors(self): f = self.f self.assertTrue(not f.isatty()) diff -r 7e3ec8ad3f20 Modules/_io/fileio.c --- a/Modules/_io/fileio.c Mon Oct 20 08:36:09 2014 +0200 +++ b/Modules/_io/fileio.c Mon Oct 20 13:47:05 2014 +0300 @@ -1055,13 +1055,13 @@ fileio_repr(fileio *self) else return NULL; res = PyUnicode_FromFormat( - "<_io.FileIO fd=%d mode='%s' closefd='%d'>", - self->fd, mode_string(self), self->closefd); + "<_io.FileIO fd=%d mode='%s'%s>", + self->fd, mode_string(self), self->closefd ? "" : " closefd=False"); } else { res = PyUnicode_FromFormat( - "<_io.FileIO name=%R mode='%s' closefd='%d'>", - nameobj, mode_string(self), self->closefd); + "<_io.FileIO name=%R mode='%s'%s>", + nameobj, mode_string(self), self->closefd ? "" : " closefd=False"); Py_DECREF(nameobj); } return res;