As per discussion on python-dev, descriptors defined in C with a NULL setter
now raise AttributeError instead of TypeError, for consistency with their pure-Python equivalent.
This commit is contained in:
parent
a267563f43
commit
c8d907c60b
|
@ -12,6 +12,11 @@ What's New in Python 2.5 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Descriptors defined in C with a PyGetSetDef structure, where the setter is
|
||||
NULL, now raise an AttributeError when attempting to set or delete the
|
||||
attribute. Previously a TypeError was raised, but this was inconsistent
|
||||
with the equivalent pure-Python implementation.
|
||||
|
||||
- It is now safe to call PyGILState_Release() before
|
||||
PyEval_InitThreads() (note that if there is reason to believe there
|
||||
are multiple threads around you still must call PyEval_InitThreads()
|
||||
|
|
|
@ -144,7 +144,7 @@ getset_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *type)
|
|||
return res;
|
||||
if (descr->d_getset->get != NULL)
|
||||
return descr->d_getset->get(obj, descr->d_getset->closure);
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
PyErr_Format(PyExc_AttributeError,
|
||||
"attribute '%.300s' of '%.100s' objects is not readable",
|
||||
descr_name((PyDescrObject *)descr),
|
||||
descr->d_type->tp_name);
|
||||
|
@ -199,7 +199,7 @@ getset_set(PyGetSetDescrObject *descr, PyObject *obj, PyObject *value)
|
|||
if (descr->d_getset->set != NULL)
|
||||
return descr->d_getset->set(obj, value,
|
||||
descr->d_getset->closure);
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
PyErr_Format(PyExc_AttributeError,
|
||||
"attribute '%.300s' of '%.100s' objects is not writable",
|
||||
descr_name((PyDescrObject *)descr),
|
||||
descr->d_type->tp_name);
|
||||
|
|
Loading…
Reference in New Issue