diff options
-rw-r--r-- | Lib/test/test_py3kwarn.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Objects/fileobject.c | 15 |
3 files changed, 21 insertions, 3 deletions
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index 1a65323..d64d66a 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -123,6 +123,13 @@ class TestPy3KWarnings(unittest.TestCase): with catch_warning() as w: self.assertWarning(buffer('a'), w, expected) + def test_file_xreadlines(self): + expected = ("f.xreadlines() not supported in 3.x, " + "try 'for line in f' instead") + with file(__file__) as f: + with catch_warning() as w: + self.assertWarning(f.xreadlines(), w, expected) + class TestStdlibRemovals(unittest.TestCase): @@ -12,6 +12,8 @@ What's New in Python 2.6 beta 1? Core and Builtins ----------------- +- Issue #2353: file.xreadlines() now emits a Py3k warning. + - Issue #2863: generators now have a ``gen.__name__`` attribute that equals ``gen.gi_code.co_name``, like ``func.__name___`` that equals ``func.func_code.co_name``. The repr() of a generator now also diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 40ea944..4f8c46b 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -1736,6 +1736,15 @@ file_self(PyFileObject *f) } static PyObject * +file_xreadlines(PyFileObject *f) +{ + if (PyErr_WarnPy3k("f.xreadlines() not supported in 3.x, " + "try 'for line in f' instead", 1) < 0) + return NULL; + return file_self(f); +} + +static PyObject * file_exit(PyObject *f, PyObject *args) { PyObject *ret = PyObject_CallMethod(f, "close", NULL); @@ -1850,9 +1859,9 @@ static PyMethodDef file_methods[] = { #endif {"tell", (PyCFunction)file_tell, METH_NOARGS, tell_doc}, {"readinto", (PyCFunction)file_readinto, METH_VARARGS, readinto_doc}, - {"readlines", (PyCFunction)file_readlines,METH_VARARGS, readlines_doc}, - {"xreadlines",(PyCFunction)file_self, METH_NOARGS, xreadlines_doc}, - {"writelines",(PyCFunction)file_writelines, METH_O, writelines_doc}, + {"readlines", (PyCFunction)file_readlines, METH_VARARGS, readlines_doc}, + {"xreadlines",(PyCFunction)file_xreadlines, METH_NOARGS, xreadlines_doc}, + {"writelines",(PyCFunction)file_writelines, METH_O, writelines_doc}, {"flush", (PyCFunction)file_flush, METH_NOARGS, flush_doc}, {"close", (PyCFunction)file_close, METH_NOARGS, close_doc}, {"isatty", (PyCFunction)file_isatty, METH_NOARGS, isatty_doc}, |