Added extension field numbers.
diff --git a/python/message.c b/python/message.c
index 02fb902..3c77828 100644
--- a/python/message.c
+++ b/python/message.c
@@ -1614,6 +1614,15 @@
PyUpb_Dealloc(self);
}
+void PyUpb_MessageMeta_AddFieldNumber(PyObject* self, const upb_fielddef* f) {
+ PyObject* name =
+ PyUnicode_FromFormat("%s_FIELD_NUMBER", upb_fielddef_name(f));
+ PyObject* upper = PyObject_CallMethod(name, "upper", "");
+ PyObject_SetAttr(self, upper, PyLong_FromLong(upb_fielddef_number(f)));
+ Py_DECREF(name);
+ Py_DECREF(upper);
+}
+
static PyObject* PyUpb_MessageMeta_GetDynamicAttr(PyObject* self,
PyObject* name) {
const char* name_buf = PyUpb_GetStrData(name);
@@ -1655,13 +1664,11 @@
// So we just add all field numbers.
int n = upb_msgdef_fieldcount(msgdef);
for (int i = 0; i < n; i++) {
- const upb_fielddef* f = upb_msgdef_field(msgdef, i);
- PyObject* name = PyUnicode_FromFormat(
- "%s_FIELD_NUMBER", upb_fielddef_name(f));
- PyObject* upper = PyObject_CallMethod(name, "upper", "");
- PyObject_SetAttr(self, upper, PyLong_FromLong(upb_fielddef_number(f)));
- Py_DECREF(name);
- Py_DECREF(upper);
+ PyUpb_MessageMeta_AddFieldNumber(self, upb_msgdef_field(msgdef, i));
+ }
+ n = upb_msgdef_nestedextcount(msgdef);
+ for (int i = 0; i < n; i++) {
+ PyUpb_MessageMeta_AddFieldNumber(self, upb_msgdef_nestedext(msgdef, i));
}
ret = PyObject_GenericGetAttr(self, name);
}