FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Make readonly members defined in C throw an AttributeError on modific… · python/cpython@42dae6a · GitHub

Repository navigation

Commit 42dae6a

Browse files
committed
Make readonly members defined in C throw an AttributeError on modification. This brings them into sync with Python-level attributes. Fixes bug #1687163.
1 parent d84da1b commit 42dae6a

5 files changed

Lines changed: 9 additions & 9 deletions

File tree

‎Lib/test/test_csv.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ def _test_default_attrs(self, ctor, *args):
5353
self.assertEqual(obj.dialect.skipinitialspace, False)
5454
self.assertEqual(obj.dialect.strict, False)
5555
# Try deleting or changing attributes (they are read-only)
56-
self.assertRaises(TypeError, delattr, obj.dialect, 'delimiter')
57-
self.assertRaises(TypeError, setattr, obj.dialect, 'delimiter', ':')
56+
self.assertRaises(AttributeError, delattr, obj.dialect, 'delimiter')
57+
self.assertRaises(AttributeError, setattr, obj.dialect, 'delimiter', ':')
5858
self.assertRaises(AttributeError, delattr, obj.dialect, 'quoting')
5959
self.assertRaises(AttributeError, setattr, obj.dialect,
6060
'quoting', None)

‎Lib/test/test_descr.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1857,13 +1857,13 @@ def delx(self):
18571857
for attr in "__doc__", "fget", "fset", "fdel":
18581858
try:
18591859
setattr(raw, attr, 42)
1860-
except TypeError as msg:
1860+
except AttributeError as msg:
18611861
if str(msg).find('readonly') < 0:
18621862
raise TestFailed("when setting readonly attr %r on a "
1863-
"property, got unexpected TypeError "
1863+
"property, got unexpected AttributeError "
18641864
"msg %r" % (attr, str(msg)))
18651865
else:
1866-
raise TestFailed("expected TypeError from trying to set "
1866+
raise TestFailed("expected AttributeError from trying to set "
18671867
"readonly %r attr on a property" % attr)
18681868

18691869
class D(object):

‎Lib/test/test_generators.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@
400400
>>> i.gi_running = 42
401401
Traceback (most recent call last):
402402
...
403-
TypeError: readonly attribute
403+
AttributeError: readonly attribute
404404
>>> def g():
405405
... yield me.gi_running
406406
>>> me = g()

‎Lib/test/test_os.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def trunc(x): return x
143143
try:
144144
result.st_mode = 1
145145
self.fail("No exception thrown")
146-
except TypeError:
146+
except AttributeError:
147147
pass
148148

149149
try:
@@ -201,7 +201,7 @@ def test_statvfs_attributes(self):
201201
try:
202202
result.f_bfree = 1
203203
self.fail("No exception thrown")
204-
except TypeError:
204+
except AttributeError:
205205
pass
206206

207207
try:

‎Python/structmember.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
164164

165165
if ((l->flags & READONLY) || l->type == T_STRING)
166166
{
167-
PyErr_SetString(PyExc_TypeError, "readonly attribute");
167+
PyErr_SetString(PyExc_AttributeError, "readonly attribute");
168168
return -1;
169169
}
170170
if ((l->flags & WRITE_RESTRICTED) && PyEval_GetRestricted()) {

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL