diff options
-rw-r--r-- | Lib/_pyio.py | 3 | ||||
-rw-r--r-- | Lib/test/test_io.py | 6 | ||||
-rw-r--r-- | Modules/_textio.c | 12 |
3 files changed, 19 insertions, 2 deletions
diff --git a/Lib/_pyio.py b/Lib/_pyio.py index c6811db..535c9ca 100644 --- a/Lib/_pyio.py +++ b/Lib/_pyio.py @@ -1399,6 +1399,9 @@ class TextIOWrapper(TextIOBase): # - "bytes_..." for integer variables that count input bytes # - "chars_..." for integer variables that count decoded characters + def __repr__(self): + return "<TextIOWrapper encoding={0}>".format(self.encoding) + @property def encoding(self): return self._encoding diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 5fc53ea..ef3fed9 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -1354,6 +1354,12 @@ class TextIOWrapperTest(unittest.TestCase): self.assertRaises(TypeError, t.__init__, b, newline=42) self.assertRaises(ValueError, t.__init__, b, newline='xyzzy') + def test_repr(self): + raw = self.BytesIO("hello".encode("utf-8")) + b = self.BufferedReader(raw) + t = self.TextIOWrapper(b, encoding="utf-8") + self.assertEqual(repr(t), "<TextIOWrapper encoding=utf-8>") + def test_line_buffering(self): r = self.BytesIO() b = self.BufferedWriter(r, 1000) diff --git a/Modules/_textio.c b/Modules/_textio.c index c70b1dd..a61e6bc 100644 --- a/Modules/_textio.c +++ b/Modules/_textio.c @@ -2171,6 +2171,14 @@ TextIOWrapper_truncate(PyTextIOWrapperObject *self, PyObject *args) return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, NULL); } +static PyObject * +TextIOWrapper_repr(PyTextIOWrapperObject *self) +{ + CHECK_INITIALIZED(self); + return PyUnicode_FromFormat("<TextIOWrapper encoding=%S>", self->encoding); +} + + /* Inquiries */ static PyObject * @@ -2372,9 +2380,9 @@ PyTypeObject PyTextIOWrapper_Type = { (destructor)TextIOWrapper_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ - 0, /*tp_setattr*/ + 0, /*tps_etattr*/ 0, /*tp_compare */ - 0, /*tp_repr*/ + (reprfunc)TextIOWrapper_repr,/*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ |