summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-03-21 20:38:24 (GMT)
committerGeorg Brandl <georg@python.org>2008-03-21 20:38:24 (GMT)
commit65bb42dc1be3afe9ad0e5413b7843cc65d9d3a37 (patch)
treee9fcb9f39686f7d1bdd8eecb77c55a36f9902b00
parent07e5681fd3a8c7169f569f6b70aa824f203f89d9 (diff)
downloadcpython-65bb42dc1be3afe9ad0e5413b7843cc65d9d3a37.zip
cpython-65bb42dc1be3afe9ad0e5413b7843cc65d9d3a37.tar.gz
cpython-65bb42dc1be3afe9ad0e5413b7843cc65d9d3a37.tar.bz2
#2348: add py3k warning for file.softspace.
-rw-r--r--Lib/test/test_py3kwarn.py10
-rw-r--r--Misc/NEWS2
-rw-r--r--Objects/fileobject.c36
3 files changed, 46 insertions, 2 deletions
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index f030af0..07bcdf9 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -108,6 +108,16 @@ class TestPy3KWarnings(unittest.TestCase):
with catch_warning() as w:
self.assertWarning(dir(c), w, expected)
+ def test_softspace(self):
+ expected = 'file.softspace not supported in 3.x'
+ with file(__file__) as f:
+ with catch_warning() as w:
+ self.assertWarning(f.softspace, w, expected)
+ def set():
+ f.softspace = 0
+ with catch_warning() as w:
+ self.assertWarning(set(), w, expected)
+
def test_main():
run_unittest(TestPy3KWarnings)
diff --git a/Misc/NEWS b/Misc/NEWS
index 83903ef..615effc 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 2?
Core and builtins
-----------------
+- Issue #2348: add Py3k warning for file.softspace.
+
- Issue #2346/#2347: add Py3k warnings for __methods__ and __members__.
- Issue #2358: Add a Py3k warning on sys.exc_clear() usage.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 9195a24..0a6ccff 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -1783,8 +1783,6 @@ static PyMethodDef file_methods[] = {
#define OFF(x) offsetof(PyFileObject, x)
static PyMemberDef file_memberlist[] = {
- {"softspace", T_INT, OFF(f_softspace), 0,
- "flag indicating that a space needs to be printed; used by print"},
{"mode", T_OBJECT, OFF(f_mode), RO,
"file mode ('r', 'U', 'w', 'a', possibly with 'b' or '+' added)"},
{"name", T_OBJECT, OFF(f_name), RO,
@@ -1829,10 +1827,44 @@ get_newlines(PyFileObject *f, void *closure)
}
}
+static PyObject *
+get_softspace(PyFileObject *f, void *closure)
+{
+ if (Py_Py3kWarningFlag &&
+ PyErr_Warn(PyExc_DeprecationWarning,
+ "file.softspace not supported in 3.x") < 0)
+ return NULL;
+ return PyInt_FromLong(f->f_softspace);
+}
+
+static int
+set_softspace(PyFileObject *f, PyObject *value)
+{
+ int new;
+ if (Py_Py3kWarningFlag &&
+ PyErr_Warn(PyExc_DeprecationWarning,
+ "file.softspace not supported in 3.x") < 0)
+ return -1;
+
+ if (value == NULL) {
+ PyErr_SetString(PyExc_TypeError,
+ "can't delete softspace attribute");
+ return -1;
+ }
+
+ new = PyInt_AsLong(value);
+ if (new == -1 && PyErr_Occurred())
+ return -1;
+ f->f_softspace = new;
+ return 0;
+}
+
static PyGetSetDef file_getsetlist[] = {
{"closed", (getter)get_closed, NULL, "True if the file is closed"},
{"newlines", (getter)get_newlines, NULL,
"end-of-line convention used in this file"},
+ {"softspace", (getter)get_softspace, (setter)set_softspace,
+ "flag indicating that a space needs to be printed; used by print"},
{0},
};