Refine the exception type when assigning improper attributes.
diff --git a/python/message.c b/python/message.c index 95d873e..19cc862 100644 --- a/python/message.c +++ b/python/message.c
@@ -823,12 +823,12 @@ } int PyUpb_CMessage_SetFieldValue(PyObject* _self, const upb_fielddef* field, - PyObject* value) { + PyObject* value, PyObject* exc) { PyUpb_CMessage* self = (void*)_self; assert(value); if (upb_fielddef_issubmsg(field) || upb_fielddef_isseq(field)) { - PyErr_Format(PyExc_AttributeError, + PyErr_Format(exc, "Assignment not allowed to message, map, or repeated " "field \"%s\" in protocol message object.", upb_fielddef_name(field)); @@ -904,7 +904,7 @@ return -1; } - return PyUpb_CMessage_SetFieldValue(_self, field, value); + return PyUpb_CMessage_SetFieldValue(_self, field, value, PyExc_AttributeError); } static PyObject* PyUpb_CMessage_HasField(PyObject* _self, PyObject* arg) {