[Python-checkins] r61716 - in python/trunk: Lib/test/test_py3kwarn.py Misc/NEWS Objects/fileobject.c

georg.brandl python-checkins at python.org
Fri Mar 21 21:38:24 CET 2008


Author: georg.brandl
Date: Fri Mar 21 21:38:24 2008
New Revision: 61716

Modified:
   python/trunk/Lib/test/test_py3kwarn.py
   python/trunk/Misc/NEWS
   python/trunk/Objects/fileobject.c
Log:
#2348: add py3k warning for file.softspace.


Modified: python/trunk/Lib/test/test_py3kwarn.py
==============================================================================
--- python/trunk/Lib/test/test_py3kwarn.py	(original)
+++ python/trunk/Lib/test/test_py3kwarn.py	Fri Mar 21 21:38:24 2008
@@ -108,6 +108,16 @@
         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)

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Fri Mar 21 21:38:24 2008
@@ -12,6 +12,8 @@
 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.

Modified: python/trunk/Objects/fileobject.c
==============================================================================
--- python/trunk/Objects/fileobject.c	(original)
+++ python/trunk/Objects/fileobject.c	Fri Mar 21 21:38:24 2008
@@ -1783,8 +1783,6 @@
 #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 @@
 	}
 }
 
+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},
 };
 


More information about the Python-checkins mailing list