From a9916b55de0e42a4c171ff71972ab9cbce014a77 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 17 May 2008 22:11:54 +0000 Subject: [PATCH] #2353: raise Py3k warning in file.xreadlines(). --- Lib/test/test_py3kwarn.py | 7 +++++++ Misc/NEWS | 2 ++ 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 1a65323e4c..d64d66aff2 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 8ee4d4d9dc..039fd7dbdc 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 40ea9441cb..4f8c46b0de 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -1735,6 +1735,15 @@ file_self(PyFileObject *f) return (PyObject *)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) { @@ -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}, -- 2.50.0