]> granicus.if.org Git - python/commitdiff
Make readonly members defined in C throw an AttributeError on modification. This...
authorCollin Winter <collinw@gmail.com>
Wed, 28 Mar 2007 21:44:53 +0000 (21:44 +0000)
committerCollin Winter <collinw@gmail.com>
Wed, 28 Mar 2007 21:44:53 +0000 (21:44 +0000)
Lib/test/test_csv.py
Lib/test/test_descr.py
Lib/test/test_generators.py
Lib/test/test_os.py
Python/structmember.c

index 46361c8254bf0e87308b881dfaa9d627dab8e209..2cdc8074449cbc3070916d61b66076f1c5151099 100644 (file)
@@ -53,8 +53,8 @@ class Test_Csv(unittest.TestCase):
         self.assertEqual(obj.dialect.skipinitialspace, False)
         self.assertEqual(obj.dialect.strict, False)
         # Try deleting or changing attributes (they are read-only)
-        self.assertRaises(TypeError, delattr, obj.dialect, 'delimiter')
-        self.assertRaises(TypeError, setattr, obj.dialect, 'delimiter', ':')
+        self.assertRaises(AttributeError, delattr, obj.dialect, 'delimiter')
+        self.assertRaises(AttributeError, setattr, obj.dialect, 'delimiter', ':')
         self.assertRaises(AttributeError, delattr, obj.dialect, 'quoting')
         self.assertRaises(AttributeError, setattr, obj.dialect,
                           'quoting', None)
index 6cd8ccd8c32ce8d741878e9f6a1e7a68dc57f085..eec4e40f5b3418886d689813662c2b45109fe710 100644 (file)
@@ -1857,13 +1857,13 @@ def properties():
     for attr in "__doc__", "fget", "fset", "fdel":
         try:
             setattr(raw, attr, 42)
-        except TypeError as msg:
+        except AttributeError as msg:
             if str(msg).find('readonly') < 0:
                 raise TestFailed("when setting readonly attr %r on a "
-                                 "property, got unexpected TypeError "
+                                 "property, got unexpected AttributeError "
                                  "msg %r" % (attr, str(msg)))
         else:
-            raise TestFailed("expected TypeError from trying to set "
+            raise TestFailed("expected AttributeError from trying to set "
                              "readonly %r attr on a property" % attr)
 
     class D(object):
index 7999034fe7eb2d780fee2dac8a5f6233ff90f742..12276be0d92bfec2e9c730e62d7fbab9b466f96d 100644 (file)
@@ -400,7 +400,7 @@ And more, added later.
 >>> i.gi_running = 42
 Traceback (most recent call last):
   ...
-TypeError: readonly attribute
+AttributeError: readonly attribute
 >>> def g():
 ...     yield me.gi_running
 >>> me = g()
index 93e530c22c949187dfceba8d6eda773ce12921fd..a7fc1da7de828ee9684dc8ec27d645ae43ba1450 100644 (file)
@@ -143,7 +143,7 @@ class StatAttributeTests(unittest.TestCase):
         try:
             result.st_mode = 1
             self.fail("No exception thrown")
-        except TypeError:
+        except AttributeError:
             pass
 
         try:
@@ -201,7 +201,7 @@ class StatAttributeTests(unittest.TestCase):
         try:
             result.f_bfree = 1
             self.fail("No exception thrown")
-        except TypeError:
+        except AttributeError:
             pass
 
         try:
index 2bb6e4e85c709d7ff3768c932927839c63afc3b5..87c1641317b07e92cb447cc255795e04d78c9674 100644 (file)
@@ -164,7 +164,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
 
        if ((l->flags & READONLY) || l->type == T_STRING)
        {
-               PyErr_SetString(PyExc_TypeError, "readonly attribute");
+               PyErr_SetString(PyExc_AttributeError, "readonly attribute");
                return -1;
        }
        if ((l->flags & WRITE_RESTRICTED) && PyEval_GetRestricted()) {