bpo-37207: Add _PyArg_NoKwnames() helper function (GH-18980)

diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index 123ca0b..5bd178b 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -146,8 +146,7 @@
                  size_t nargsf, PyObject *kwnames)
 {
     Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
-    if (kwnames && PyTuple_GET_SIZE(kwnames) != 0) {
-        PyErr_Format(PyExc_TypeError, "range() takes no keyword arguments");
+    if (!_PyArg_NoKwnames("range", kwnames)) {
         return NULL;
     }
     return range_from_array(type, args, nargs);
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index d4165de..8a8c6ae 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -709,8 +709,7 @@
 tuple_vectorcall(PyObject *type, PyObject * const*args,
                  size_t nargsf, PyObject *kwnames)
 {
-    if (kwnames && PyTuple_GET_SIZE(kwnames) != 0) {
-        PyErr_Format(PyExc_TypeError, "tuple() takes no keyword arguments");
+    if (!_PyArg_NoKwnames("tuple", kwnames)) {
         return NULL;
     }