summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_py3kwarn.py7
-rw-r--r--Misc/NEWS2
-rw-r--r--Objects/fileobject.c15
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):
diff --git a/Misc/NEWS b/Misc/NEWS
index 8ee4d4d..039fd7d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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},