diff --git a/python/descriptor_pool.c b/python/descriptor_pool.c
index a495c7f6..b016ee2 100644
--- a/python/descriptor_pool.c
+++ b/python/descriptor_pool.c
@@ -310,7 +310,7 @@
                                                      PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_FileDef* file = upb_DefPool_FindFileByName(self->symtab, name);
@@ -335,7 +335,7 @@
                                                           PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_FieldDef* field =
@@ -361,7 +361,7 @@
                                                             PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_MessageDef* m = upb_DefPool_FindMessageByName(self->symtab, name);
@@ -397,7 +397,7 @@
                                                       PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   size_t parent_size;
@@ -433,7 +433,7 @@
                                                          PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_EnumDef* e = upb_DefPool_FindEnumByName(self->symtab, name);
@@ -458,7 +458,7 @@
                                                       PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   size_t parent_size;
@@ -485,7 +485,7 @@
                                                         PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_ServiceDef* s = upb_DefPool_FindServiceByName(self->symtab, name);
@@ -504,7 +504,7 @@
                                                        PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
   size_t parent_size;
   const char* child = PyUpb_DescriptorPool_SplitSymbolName(name, &parent_size);
@@ -530,7 +530,7 @@
                                                                PyObject* arg) {
   PyUpb_DescriptorPool* self = (PyUpb_DescriptorPool*)_self;
 
-  const char* name = PyUpb_CheckStrData(arg);
+  const char* name = PyUpb_VerifyStrData(arg);
   if (!name) return NULL;
 
   const upb_FileDef* f =
diff --git a/python/protobuf.c b/python/protobuf.c
index f3c6fdf..35600ae 100644
--- a/python/protobuf.c
+++ b/python/protobuf.c
@@ -302,7 +302,7 @@
   }
 }
 
-const char* PyUpb_CheckStrData(PyObject* obj) {
+const char* PyUpb_VerifyStrData(PyObject* obj) {
   const char* ret = PyUpb_GetStrData(obj);
   if (ret) return ret;
   PyErr_Format(PyExc_TypeError, "Expected string: %S", obj);
diff --git a/python/protobuf.h b/python/protobuf.h
index bae3530..a45632b 100644
--- a/python/protobuf.h
+++ b/python/protobuf.h
@@ -207,6 +207,6 @@
 }
 
 const char* PyUpb_GetStrData(PyObject* obj);
-const char* PyUpb_CheckStrData(PyObject* obj);
+const char* PyUpb_VerifyStrData(PyObject* obj);
 
 #endif  // PYUPB_PROTOBUF_H__
