From: Georg Brandl Date: Sat, 17 May 2008 22:11:54 +0000 (+0000) Subject: #2353: raise Py3k warning in file.xreadlines(). X-Git-Tag: v2.6b1~345 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a9916b55de0e42a4c171ff71972ab9cbce014a77;p=python #2353: raise Py3k warning in file.xreadlines(). --- 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},