From 015dd821364f8c210baa9faf9d66dc766f9b591e Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sun, 4 May 2003 04:16:52 +0000 Subject: Somewhere along the way, the softspace attr of file objects became read- only. Repaired, and added new tests to test_file.py. --- Lib/test/test_file.py | 20 ++++++++++++++++++++ Misc/NEWS | 3 +++ Objects/fileobject.c | 3 ++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py index be1b2de..677dafc 100644 --- a/Lib/test/test_file.py +++ b/Lib/test/test_file.py @@ -5,6 +5,26 @@ from array import array from test.test_support import verify, TESTFN, TestFailed from UserList import UserList +# verify expected attributes exist +f = file(TESTFN, 'w') +softspace = f.softspace +f.name # merely shouldn't blow up +f.mode # ditto +f.closed # ditto + +# verify softspace is writable +f.softspace = softspace # merely shouldn't blow up + +# verify the others aren't +for attr in 'name', 'mode', 'closed': + try: + setattr(f, attr, 'oops') + except TypeError: + pass + else: + raise TestFailed('expected TypeError setting file attr %r' % attr) +f.close() + # verify writelines with instance sequence l = UserList(['1', '2']) f = open(TESTFN, 'wb') diff --git a/Misc/NEWS b/Misc/NEWS index 05c9ce2..3ff9a64 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.3 beta 2? Core and builtins ----------------- +- The softspace attribute of file objects became read-only by oversight. + It's writable again. + Extension modules ----------------- diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 5b2267b..92cfa5b 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -1962,7 +1962,8 @@ PyTypeObject PyFile_Type = { 0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ - 0, /* tp_setattro */ + /* softspace is writable: we must supply tp_setattro */ + PyObject_GenericSetAttr, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ file_doc, /* tp_doc */ -- cgit v0.12