diff --git a/Modules/_blake2/clinic/blake2b_impl.c.h b/Modules/_blake2/clinic/blake2b_impl.c.h
index 09fe004..cd329c0 100644
--- a/Modules/_blake2/clinic/blake2b_impl.c.h
+++ b/Modules/_blake2/clinic/blake2b_impl.c.h
@@ -72,7 +72,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&key, 'C')) {
-            _PyArg_BadArgument("blake2b", 3, "contiguous buffer", fastargs[2]);
+            _PyArg_BadArgument("blake2b", "argument 'key'", "contiguous buffer", fastargs[2]);
             goto exit;
         }
         if (!--noptargs) {
@@ -84,7 +84,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&salt, 'C')) {
-            _PyArg_BadArgument("blake2b", 4, "contiguous buffer", fastargs[3]);
+            _PyArg_BadArgument("blake2b", "argument 'salt'", "contiguous buffer", fastargs[3]);
             goto exit;
         }
         if (!--noptargs) {
@@ -96,7 +96,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&person, 'C')) {
-            _PyArg_BadArgument("blake2b", 5, "contiguous buffer", fastargs[4]);
+            _PyArg_BadArgument("blake2b", "argument 'person'", "contiguous buffer", fastargs[4]);
             goto exit;
         }
         if (!--noptargs) {
@@ -261,4 +261,4 @@
 {
     return _blake2_blake2b_hexdigest_impl(self);
 }
-/*[clinic end generated code: output=a91d182ce1109f34 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=cbb625d7f60c288c input=a9049054013a1b77]*/
diff --git a/Modules/_blake2/clinic/blake2s_impl.c.h b/Modules/_blake2/clinic/blake2s_impl.c.h
index 92739a1..560bd68 100644
--- a/Modules/_blake2/clinic/blake2s_impl.c.h
+++ b/Modules/_blake2/clinic/blake2s_impl.c.h
@@ -72,7 +72,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&key, 'C')) {
-            _PyArg_BadArgument("blake2s", 3, "contiguous buffer", fastargs[2]);
+            _PyArg_BadArgument("blake2s", "argument 'key'", "contiguous buffer", fastargs[2]);
             goto exit;
         }
         if (!--noptargs) {
@@ -84,7 +84,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&salt, 'C')) {
-            _PyArg_BadArgument("blake2s", 4, "contiguous buffer", fastargs[3]);
+            _PyArg_BadArgument("blake2s", "argument 'salt'", "contiguous buffer", fastargs[3]);
             goto exit;
         }
         if (!--noptargs) {
@@ -96,7 +96,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&person, 'C')) {
-            _PyArg_BadArgument("blake2s", 5, "contiguous buffer", fastargs[4]);
+            _PyArg_BadArgument("blake2s", "argument 'person'", "contiguous buffer", fastargs[4]);
             goto exit;
         }
         if (!--noptargs) {
@@ -261,4 +261,4 @@
 {
     return _blake2_blake2s_hexdigest_impl(self);
 }
-/*[clinic end generated code: output=ae8e9b7301d092b4 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=39af5a74c8805b36 input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/_iomodule.c.h b/Modules/_io/clinic/_iomodule.c.h
index 00ad616..1a9651d 100644
--- a/Modules/_io/clinic/_iomodule.c.h
+++ b/Modules/_io/clinic/_iomodule.c.h
@@ -161,7 +161,7 @@
     }
     if (args[1]) {
         if (!PyUnicode_Check(args[1])) {
-            _PyArg_BadArgument("open", 2, "str", args[1]);
+            _PyArg_BadArgument("open", "argument 'mode'", "str", args[1]);
             goto exit;
         }
         Py_ssize_t mode_length;
@@ -207,7 +207,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("open", 4, "str or None", args[3]);
+            _PyArg_BadArgument("open", "argument 'encoding'", "str or None", args[3]);
             goto exit;
         }
         if (!--noptargs) {
@@ -230,7 +230,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("open", 5, "str or None", args[4]);
+            _PyArg_BadArgument("open", "argument 'errors'", "str or None", args[4]);
             goto exit;
         }
         if (!--noptargs) {
@@ -253,7 +253,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("open", 6, "str or None", args[5]);
+            _PyArg_BadArgument("open", "argument 'newline'", "str or None", args[5]);
             goto exit;
         }
         if (!--noptargs) {
@@ -311,7 +311,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("open_code", 1, "str", args[0]);
+        _PyArg_BadArgument("open_code", "argument 'path'", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -323,4 +323,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=d479285078750d68 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=3df6bc6d91697545 input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/bufferedio.c.h b/Modules/_io/clinic/bufferedio.c.h
index d5e8c8a..72841fc 100644
--- a/Modules/_io/clinic/bufferedio.c.h
+++ b/Modules/_io/clinic/bufferedio.c.h
@@ -21,11 +21,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__BufferedIOBase_readinto_impl(self, &buffer);
@@ -58,11 +58,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto1", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto1", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto1", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto1", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__BufferedIOBase_readinto1_impl(self, &buffer);
@@ -243,11 +243,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__Buffered_readinto_impl(self, &buffer);
@@ -280,11 +280,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto1", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto1", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto1", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto1", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__Buffered_readinto1_impl(self, &buffer);
@@ -538,7 +538,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("write", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io_BufferedWriter_write_impl(self, &buffer);
@@ -672,4 +672,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=b22b4aedd53c340a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7246104f6c7d3167 input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/bytesio.c.h b/Modules/_io/clinic/bytesio.c.h
index 8dd68f5..83cd490 100644
--- a/Modules/_io/clinic/bytesio.c.h
+++ b/Modules/_io/clinic/bytesio.c.h
@@ -319,11 +319,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io_BytesIO_readinto_impl(self, &buffer);
@@ -515,4 +515,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=22e8fb54874b6ee5 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=4ec2506def9c8eb9 input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/fileio.c.h b/Modules/_io/clinic/fileio.c.h
index 8016e98..64addde 100644
--- a/Modules/_io/clinic/fileio.c.h
+++ b/Modules/_io/clinic/fileio.c.h
@@ -70,7 +70,7 @@
     }
     if (fastargs[1]) {
         if (!PyUnicode_Check(fastargs[1])) {
-            _PyArg_BadArgument("FileIO", 2, "str", fastargs[1]);
+            _PyArg_BadArgument("FileIO", "argument 'mode'", "str", fastargs[1]);
             goto exit;
         }
         Py_ssize_t mode_length;
@@ -200,11 +200,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io_FileIO_readinto_impl(self, &buffer);
@@ -303,7 +303,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&b, 'C')) {
-        _PyArg_BadArgument("write", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io_FileIO_write_impl(self, &b);
@@ -447,4 +447,4 @@
 #ifndef _IO_FILEIO_TRUNCATE_METHODDEF
     #define _IO_FILEIO_TRUNCATE_METHODDEF
 #endif /* !defined(_IO_FILEIO_TRUNCATE_METHODDEF) */
-/*[clinic end generated code: output=7ee4f3ae584fc6d2 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=a7e9cca3613660fb input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/textio.c.h b/Modules/_io/clinic/textio.c.h
index cec9def..b8b5075 100644
--- a/Modules/_io/clinic/textio.c.h
+++ b/Modules/_io/clinic/textio.c.h
@@ -229,7 +229,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("TextIOWrapper", 2, "str or None", fastargs[1]);
+            _PyArg_BadArgument("TextIOWrapper", "argument 'encoding'", "str or None", fastargs[1]);
             goto exit;
         }
         if (!--noptargs) {
@@ -258,7 +258,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("TextIOWrapper", 4, "str or None", fastargs[3]);
+            _PyArg_BadArgument("TextIOWrapper", "argument 'newline'", "str or None", fastargs[3]);
             goto exit;
         }
         if (!--noptargs) {
@@ -401,7 +401,7 @@
     PyObject *text;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("write", 0, "str", arg);
+        _PyArg_BadArgument("write", "argument", "str", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg) == -1) {
@@ -701,4 +701,4 @@
 {
     return _io_TextIOWrapper_close_impl(self);
 }
-/*[clinic end generated code: output=b651e056e3000f88 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b1bae4f4cdf6019e input=a9049054013a1b77]*/
diff --git a/Modules/_io/clinic/winconsoleio.c.h b/Modules/_io/clinic/winconsoleio.c.h
index bb0cdc4..3e501a5 100644
--- a/Modules/_io/clinic/winconsoleio.c.h
+++ b/Modules/_io/clinic/winconsoleio.c.h
@@ -69,7 +69,7 @@
     }
     if (fastargs[1]) {
         if (!PyUnicode_Check(fastargs[1])) {
-            _PyArg_BadArgument("_WindowsConsoleIO", 2, "str", fastargs[1]);
+            _PyArg_BadArgument("_WindowsConsoleIO", "argument 'mode'", "str", fastargs[1]);
             goto exit;
         }
         Py_ssize_t mode_length;
@@ -200,11 +200,11 @@
 
     if (PyObject_GetBuffer(arg, &buffer, PyBUF_WRITABLE) < 0) {
         PyErr_Clear();
-        _PyArg_BadArgument("readinto", 0, "read-write bytes-like object", arg);
+        _PyArg_BadArgument("readinto", "argument", "read-write bytes-like object", arg);
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("readinto", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("readinto", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__WindowsConsoleIO_readinto_impl(self, &buffer);
@@ -313,7 +313,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&b, 'C')) {
-        _PyArg_BadArgument("write", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _io__WindowsConsoleIO_write_impl(self, &b);
@@ -386,4 +386,4 @@
 #ifndef _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
     #define _IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF
 #endif /* !defined(_IO__WINDOWSCONSOLEIO_ISATTY_METHODDEF) */
-/*[clinic end generated code: output=57bf2c09a42bd330 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=f5b8860a658a001a input=a9049054013a1b77]*/
diff --git a/Modules/_multiprocessing/clinic/posixshmem.c.h b/Modules/_multiprocessing/clinic/posixshmem.c.h
index 0ebfa2f..a99f0d2 100644
--- a/Modules/_multiprocessing/clinic/posixshmem.c.h
+++ b/Modules/_multiprocessing/clinic/posixshmem.c.h
@@ -35,7 +35,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("shm_open", 1, "str", args[0]);
+        _PyArg_BadArgument("shm_open", "argument 'path'", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -108,7 +108,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("shm_unlink", 1, "str", args[0]);
+        _PyArg_BadArgument("shm_unlink", "argument 'path'", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -130,4 +130,4 @@
 #ifndef _POSIXSHMEM_SHM_UNLINK_METHODDEF
     #define _POSIXSHMEM_SHM_UNLINK_METHODDEF
 #endif /* !defined(_POSIXSHMEM_SHM_UNLINK_METHODDEF) */
-/*[clinic end generated code: output=be42e23c18677c0f input=a9049054013a1b77]*/
+/*[clinic end generated code: output=9132861c61d8c2d8 input=a9049054013a1b77]*/
diff --git a/Modules/cjkcodecs/clinic/multibytecodec.c.h b/Modules/cjkcodecs/clinic/multibytecodec.c.h
index 84774f0..5ddbbe2 100644
--- a/Modules/cjkcodecs/clinic/multibytecodec.c.h
+++ b/Modules/cjkcodecs/clinic/multibytecodec.c.h
@@ -55,7 +55,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("encode", "argument 'errors'", "str or None", args[1]);
         goto exit;
     }
 skip_optional_pos:
@@ -103,7 +103,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&input, 'C')) {
-        _PyArg_BadArgument("decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decode", "argument 'input'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -124,7 +124,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("decode", "argument 'errors'", "str or None", args[1]);
         goto exit;
     }
 skip_optional_pos:
@@ -223,7 +223,7 @@
     PyLongObject *statelong;
 
     if (!PyLong_Check(arg)) {
-        _PyArg_BadArgument("setstate", 0, "int", arg);
+        _PyArg_BadArgument("setstate", "argument", "int", arg);
         goto exit;
     }
     statelong = (PyLongObject *)arg;
@@ -282,7 +282,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&input, 'C')) {
-        _PyArg_BadArgument("decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decode", "argument 'input'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -345,7 +345,7 @@
     PyObject *state;
 
     if (!PyTuple_Check(arg)) {
-        _PyArg_BadArgument("setstate", 0, "tuple", arg);
+        _PyArg_BadArgument("setstate", "argument", "tuple", arg);
         goto exit;
     }
     state = arg;
@@ -525,4 +525,4 @@
 
 #define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF    \
     {"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__},
-/*[clinic end generated code: output=eb95a408c4ddbfff input=a9049054013a1b77]*/
+/*[clinic end generated code: output=5ce6fd4ca1f95620 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_bz2module.c.h b/Modules/clinic/_bz2module.c.h
index cc16d8b..ac826bd 100644
--- a/Modules/clinic/_bz2module.c.h
+++ b/Modules/clinic/_bz2module.c.h
@@ -29,7 +29,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("compress", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("compress", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _bz2_BZ2Compressor_compress_impl(self, &data);
@@ -156,7 +156,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("decompress", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decompress", "argument 'data'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -220,4 +220,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=8e123f4eec497655 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=ec3d1b3652c98823 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_codecsmodule.c.h b/Modules/clinic/_codecsmodule.c.h
index 65e2483..be1d2f7 100644
--- a/Modules/clinic/_codecsmodule.c.h
+++ b/Modules/clinic/_codecsmodule.c.h
@@ -34,7 +34,7 @@
     const char *encoding;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("lookup", 0, "str", arg);
+        _PyArg_BadArgument("lookup", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t encoding_length;
@@ -93,7 +93,7 @@
     }
     if (args[1]) {
         if (!PyUnicode_Check(args[1])) {
-            _PyArg_BadArgument("encode", 2, "str", args[1]);
+            _PyArg_BadArgument("encode", "argument 'encoding'", "str", args[1]);
             goto exit;
         }
         Py_ssize_t encoding_length;
@@ -110,7 +110,7 @@
         }
     }
     if (!PyUnicode_Check(args[2])) {
-        _PyArg_BadArgument("encode", 3, "str", args[2]);
+        _PyArg_BadArgument("encode", "argument 'errors'", "str", args[2]);
         goto exit;
     }
     Py_ssize_t errors_length;
@@ -170,7 +170,7 @@
     }
     if (args[1]) {
         if (!PyUnicode_Check(args[1])) {
-            _PyArg_BadArgument("decode", 2, "str", args[1]);
+            _PyArg_BadArgument("decode", "argument 'encoding'", "str", args[1]);
             goto exit;
         }
         Py_ssize_t encoding_length;
@@ -187,7 +187,7 @@
         }
     }
     if (!PyUnicode_Check(args[2])) {
-        _PyArg_BadArgument("decode", 3, "str", args[2]);
+        _PyArg_BadArgument("decode", "argument 'errors'", "str", args[2]);
         goto exit;
     }
     Py_ssize_t errors_length;
@@ -225,7 +225,7 @@
     const char *encoding;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("_forget_codec", 0, "str", arg);
+        _PyArg_BadArgument("_forget_codec", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t encoding_length;
@@ -278,7 +278,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&data, 'C')) {
-            _PyArg_BadArgument("escape_decode", 1, "contiguous buffer", args[0]);
+            _PyArg_BadArgument("escape_decode", "argument 1", "contiguous buffer", args[0]);
             goto exit;
         }
     }
@@ -300,7 +300,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("escape_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("escape_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -338,7 +338,7 @@
         goto exit;
     }
     if (!PyBytes_Check(args[0])) {
-        _PyArg_BadArgument("escape_encode", 1, "bytes", args[0]);
+        _PyArg_BadArgument("escape_encode", "argument 1", "bytes", args[0]);
         goto exit;
     }
     data = args[0];
@@ -360,7 +360,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("escape_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("escape_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -397,7 +397,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_7_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_7_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -418,7 +418,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_7_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_7_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -472,7 +472,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_8_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_8_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -493,7 +493,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_8_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_8_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -547,7 +547,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_16_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_16_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -568,7 +568,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -622,7 +622,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_16_le_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_16_le_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -643,7 +643,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_le_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_le_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -697,7 +697,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_16_be_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_16_be_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -718,7 +718,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_be_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_be_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -774,7 +774,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_16_ex_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_16_ex_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -795,7 +795,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_ex_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_ex_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -861,7 +861,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_32_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_32_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -882,7 +882,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -936,7 +936,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_32_le_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_32_le_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -957,7 +957,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_le_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_le_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1011,7 +1011,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_32_be_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_32_be_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1032,7 +1032,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_be_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_be_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1088,7 +1088,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("utf_32_ex_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("utf_32_ex_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1109,7 +1109,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_ex_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_ex_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1183,7 +1183,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&data, 'C')) {
-            _PyArg_BadArgument("unicode_escape_decode", 1, "contiguous buffer", args[0]);
+            _PyArg_BadArgument("unicode_escape_decode", "argument 1", "contiguous buffer", args[0]);
             goto exit;
         }
     }
@@ -1205,7 +1205,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("unicode_escape_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("unicode_escape_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1255,7 +1255,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&data, 'C')) {
-            _PyArg_BadArgument("raw_unicode_escape_decode", 1, "contiguous buffer", args[0]);
+            _PyArg_BadArgument("raw_unicode_escape_decode", "argument 1", "contiguous buffer", args[0]);
             goto exit;
         }
     }
@@ -1277,7 +1277,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("raw_unicode_escape_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("raw_unicode_escape_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1318,7 +1318,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("latin_1_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("latin_1_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1339,7 +1339,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("latin_1_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("latin_1_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1380,7 +1380,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("ascii_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("ascii_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1401,7 +1401,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("ascii_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("ascii_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1443,7 +1443,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("charmap_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("charmap_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1464,7 +1464,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("charmap_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("charmap_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1512,7 +1512,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("mbcs_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("mbcs_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1533,7 +1533,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("mbcs_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("mbcs_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1591,7 +1591,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("oem_decode", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("oem_decode", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -1612,7 +1612,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("oem_decode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("oem_decode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1680,7 +1680,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("code_page_decode", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("code_page_decode", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -1701,7 +1701,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("code_page_decode", 3, "str or None", args[2]);
+        _PyArg_BadArgument("code_page_decode", "argument 3", "str or None", args[2]);
         goto exit;
     }
     if (nargs < 4) {
@@ -1765,7 +1765,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&data, 'C')) {
-            _PyArg_BadArgument("readbuffer_encode", 1, "contiguous buffer", args[0]);
+            _PyArg_BadArgument("readbuffer_encode", "argument 1", "contiguous buffer", args[0]);
             goto exit;
         }
     }
@@ -1787,7 +1787,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("readbuffer_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("readbuffer_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1825,7 +1825,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_7_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_7_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -1850,7 +1850,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_7_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_7_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1883,7 +1883,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_8_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_8_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -1908,7 +1908,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_8_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_8_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -1942,7 +1942,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_16_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_16_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -1967,7 +1967,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -2012,7 +2012,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_16_le_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_16_le_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2037,7 +2037,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_le_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_le_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2070,7 +2070,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_16_be_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_16_be_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2095,7 +2095,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_16_be_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_16_be_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2129,7 +2129,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_32_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_32_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2154,7 +2154,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -2199,7 +2199,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_32_le_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_32_le_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2224,7 +2224,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_le_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_le_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2257,7 +2257,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("utf_32_be_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("utf_32_be_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2282,7 +2282,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("utf_32_be_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("utf_32_be_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2315,7 +2315,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("unicode_escape_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("unicode_escape_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2340,7 +2340,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("unicode_escape_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("unicode_escape_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2373,7 +2373,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("raw_unicode_escape_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("raw_unicode_escape_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2398,7 +2398,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("raw_unicode_escape_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("raw_unicode_escape_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2431,7 +2431,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("latin_1_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("latin_1_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2456,7 +2456,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("latin_1_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("latin_1_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2489,7 +2489,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("ascii_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("ascii_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2514,7 +2514,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("ascii_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("ascii_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2548,7 +2548,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("charmap_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("charmap_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2573,7 +2573,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("charmap_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("charmap_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
     if (nargs < 3) {
@@ -2605,7 +2605,7 @@
     PyObject *map;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("charmap_build", 0, "str", arg);
+        _PyArg_BadArgument("charmap_build", "argument", "str", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg) == -1) {
@@ -2642,7 +2642,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("mbcs_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("mbcs_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2667,7 +2667,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("mbcs_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("mbcs_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2703,7 +2703,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("oem_encode", 1, "str", args[0]);
+        _PyArg_BadArgument("oem_encode", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -2728,7 +2728,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("oem_encode", 2, "str or None", args[1]);
+        _PyArg_BadArgument("oem_encode", "argument 2", "str or None", args[1]);
         goto exit;
     }
 skip_optional:
@@ -2775,7 +2775,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("code_page_encode", 2, "str", args[1]);
+        _PyArg_BadArgument("code_page_encode", "argument 2", "str", args[1]);
         goto exit;
     }
     if (PyUnicode_READY(args[1]) == -1) {
@@ -2800,7 +2800,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("code_page_encode", 3, "str or None", args[2]);
+        _PyArg_BadArgument("code_page_encode", "argument 3", "str or None", args[2]);
         goto exit;
     }
 skip_optional:
@@ -2840,7 +2840,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("register_error", 1, "str", args[0]);
+        _PyArg_BadArgument("register_error", "argument 1", "str", args[0]);
         goto exit;
     }
     Py_ssize_t errors_length;
@@ -2881,7 +2881,7 @@
     const char *name;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("lookup_error", 0, "str", arg);
+        _PyArg_BadArgument("lookup_error", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t name_length;
@@ -2922,4 +2922,4 @@
 #ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF
     #define _CODECS_CODE_PAGE_ENCODE_METHODDEF
 #endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */
-/*[clinic end generated code: output=da3c47709a55a05e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=59726a305e4ec24a input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_cryptmodule.c.h b/Modules/clinic/_cryptmodule.c.h
index 2fcb0c1..ea91d7c 100644
--- a/Modules/clinic/_cryptmodule.c.h
+++ b/Modules/clinic/_cryptmodule.c.h
@@ -30,7 +30,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("crypt", 1, "str", args[0]);
+        _PyArg_BadArgument("crypt", "argument 1", "str", args[0]);
         goto exit;
     }
     Py_ssize_t word_length;
@@ -43,7 +43,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("crypt", 2, "str", args[1]);
+        _PyArg_BadArgument("crypt", "argument 2", "str", args[1]);
         goto exit;
     }
     Py_ssize_t salt_length;
@@ -60,4 +60,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=3f75d4d4be4dddbb input=a9049054013a1b77]*/
+/*[clinic end generated code: output=549de0d43b030126 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_curses_panel.c.h b/Modules/clinic/_curses_panel.c.h
index 0df4420..9840ed8 100644
--- a/Modules/clinic/_curses_panel.c.h
+++ b/Modules/clinic/_curses_panel.c.h
@@ -214,7 +214,7 @@
     PyCursesWindowObject *win;
 
     if (!PyObject_TypeCheck(arg, &PyCursesWindow_Type)) {
-        _PyArg_BadArgument("replace", 0, (&PyCursesWindow_Type)->tp_name, arg);
+        _PyArg_BadArgument("replace", "argument", (&PyCursesWindow_Type)->tp_name, arg);
         goto exit;
     }
     win = (PyCursesWindowObject *)arg;
@@ -288,7 +288,7 @@
     PyCursesWindowObject *win;
 
     if (!PyObject_TypeCheck(arg, &PyCursesWindow_Type)) {
-        _PyArg_BadArgument("new_panel", 0, (&PyCursesWindow_Type)->tp_name, arg);
+        _PyArg_BadArgument("new_panel", "argument", (&PyCursesWindow_Type)->tp_name, arg);
         goto exit;
     }
     win = (PyCursesWindowObject *)arg;
@@ -335,4 +335,4 @@
 {
     return _curses_panel_update_panels_impl(module);
 }
-/*[clinic end generated code: output=3cc16062281b7e07 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d96dc1fd68e898d9 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h
index 6837eac..ad93e6a 100644
--- a/Modules/clinic/_cursesmodule.c.h
+++ b/Modules/clinic/_cursesmodule.c.h
@@ -2521,7 +2521,7 @@
         goto exit;
     }
     if (!PyLong_Check(args[4])) {
-        _PyArg_BadArgument("ungetmouse", 5, "int", args[4]);
+        _PyArg_BadArgument("ungetmouse", "argument 5", "int", args[4]);
         goto exit;
     }
     bstate = PyLong_AsUnsignedLongMask(args[4]);
@@ -3017,7 +3017,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("setupterm", 1, "str or None", args[0]);
+            _PyArg_BadArgument("setupterm", "argument 'term'", "str or None", args[0]);
             goto exit;
         }
         if (!--noptargs) {
@@ -3326,7 +3326,7 @@
     unsigned long newmask;
 
     if (!PyLong_Check(arg)) {
-        _PyArg_BadArgument("mousemask", 0, "int", arg);
+        _PyArg_BadArgument("mousemask", "argument", "int", arg);
         goto exit;
     }
     newmask = PyLong_AsUnsignedLongMask(arg);
@@ -4201,7 +4201,7 @@
     const char *capname;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("tigetflag", 0, "str", arg);
+        _PyArg_BadArgument("tigetflag", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t capname_length;
@@ -4244,7 +4244,7 @@
     const char *capname;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("tigetnum", 0, "str", arg);
+        _PyArg_BadArgument("tigetnum", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t capname_length;
@@ -4287,7 +4287,7 @@
     const char *capname;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("tigetstr", 0, "str", arg);
+        _PyArg_BadArgument("tigetstr", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t capname_length;
@@ -4569,4 +4569,4 @@
 #ifndef _CURSES_USE_DEFAULT_COLORS_METHODDEF
     #define _CURSES_USE_DEFAULT_COLORS_METHODDEF
 #endif /* !defined(_CURSES_USE_DEFAULT_COLORS_METHODDEF) */
-/*[clinic end generated code: output=1350eeb0c1e06af6 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=e5b3502f1d38dff0 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_dbmmodule.c.h b/Modules/clinic/_dbmmodule.c.h
index e54c69c..a7d7350 100644
--- a/Modules/clinic/_dbmmodule.c.h
+++ b/Modules/clinic/_dbmmodule.c.h
@@ -136,7 +136,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("open", 1, "str", args[0]);
+        _PyArg_BadArgument("open", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -147,7 +147,7 @@
         goto skip_optional;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("open", 2, "str", args[1]);
+        _PyArg_BadArgument("open", "argument 2", "str", args[1]);
         goto exit;
     }
     Py_ssize_t flags_length;
@@ -177,4 +177,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=7f5d30ef5d820b8a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7ced103488cbca7a input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_elementtree.c.h b/Modules/clinic/_elementtree.c.h
index 0f55480..324e549 100644
--- a/Modules/clinic/_elementtree.c.h
+++ b/Modules/clinic/_elementtree.c.h
@@ -20,7 +20,7 @@
     PyObject *subelement;
 
     if (!PyObject_TypeCheck(arg, &Element_Type)) {
-        _PyArg_BadArgument("append", 0, (&Element_Type)->tp_name, arg);
+        _PyArg_BadArgument("append", "argument", (&Element_Type)->tp_name, arg);
         goto exit;
     }
     subelement = arg;
@@ -82,7 +82,7 @@
     PyObject *memo;
 
     if (!PyDict_Check(arg)) {
-        _PyArg_BadArgument("__deepcopy__", 0, "dict", arg);
+        _PyArg_BadArgument("__deepcopy__", "argument", "dict", arg);
         goto exit;
     }
     memo = arg;
@@ -501,7 +501,7 @@
         index = ival;
     }
     if (!PyObject_TypeCheck(args[1], &Element_Type)) {
-        _PyArg_BadArgument("insert", 2, (&Element_Type)->tp_name, args[1]);
+        _PyArg_BadArgument("insert", "argument 2", (&Element_Type)->tp_name, args[1]);
         goto exit;
     }
     subelement = args[1];
@@ -593,7 +593,7 @@
     PyObject *subelement;
 
     if (!PyObject_TypeCheck(arg, &Element_Type)) {
-        _PyArg_BadArgument("remove", 0, (&Element_Type)->tp_name, arg);
+        _PyArg_BadArgument("remove", "argument", (&Element_Type)->tp_name, arg);
         goto exit;
     }
     subelement = arg;
@@ -892,7 +892,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("XMLParser", 2, "str or None", fastargs[1]);
+        _PyArg_BadArgument("XMLParser", "argument 'encoding'", "str or None", fastargs[1]);
         goto exit;
     }
 skip_optional_kwonly:
@@ -969,4 +969,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=386a68425d072b5c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=50e0b1954c5f9e0f input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_gdbmmodule.c.h b/Modules/clinic/_gdbmmodule.c.h
index 15f47dc..aa37a24 100644
--- a/Modules/clinic/_gdbmmodule.c.h
+++ b/Modules/clinic/_gdbmmodule.c.h
@@ -257,7 +257,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("open", 1, "str", args[0]);
+        _PyArg_BadArgument("open", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -268,7 +268,7 @@
         goto skip_optional;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("open", 2, "str", args[1]);
+        _PyArg_BadArgument("open", "argument 2", "str", args[1]);
         goto exit;
     }
     Py_ssize_t flags_length;
@@ -298,4 +298,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=0a72598e5a3acd60 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=2766471b2fa1a816 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_hashopenssl.c.h b/Modules/clinic/_hashopenssl.c.h
index 5596f13..6377e18 100644
--- a/Modules/clinic/_hashopenssl.c.h
+++ b/Modules/clinic/_hashopenssl.c.h
@@ -145,7 +145,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("pbkdf2_hmac", 1, "str", args[0]);
+        _PyArg_BadArgument("pbkdf2_hmac", "argument 'hash_name'", "str", args[0]);
         goto exit;
     }
     Py_ssize_t hash_name_length;
@@ -161,14 +161,14 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&password, 'C')) {
-        _PyArg_BadArgument("pbkdf2_hmac", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("pbkdf2_hmac", "argument 'password'", "contiguous buffer", args[1]);
         goto exit;
     }
     if (PyObject_GetBuffer(args[2], &salt, PyBUF_SIMPLE) != 0) {
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&salt, 'C')) {
-        _PyArg_BadArgument("pbkdf2_hmac", 3, "contiguous buffer", args[2]);
+        _PyArg_BadArgument("pbkdf2_hmac", "argument 'salt'", "contiguous buffer", args[2]);
         goto exit;
     }
     if (PyFloat_Check(args[3])) {
@@ -243,7 +243,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&password, 'C')) {
-        _PyArg_BadArgument("scrypt", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("scrypt", "argument 'password'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -254,7 +254,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&salt, 'C')) {
-            _PyArg_BadArgument("scrypt", 2, "contiguous buffer", args[1]);
+            _PyArg_BadArgument("scrypt", "argument 'salt'", "contiguous buffer", args[1]);
             goto exit;
         }
         if (!--noptargs) {
@@ -263,7 +263,7 @@
     }
     if (args[2]) {
         if (!PyLong_Check(args[2])) {
-            _PyArg_BadArgument("scrypt", 3, "int", args[2]);
+            _PyArg_BadArgument("scrypt", "argument 'n'", "int", args[2]);
             goto exit;
         }
         n_obj = args[2];
@@ -273,7 +273,7 @@
     }
     if (args[3]) {
         if (!PyLong_Check(args[3])) {
-            _PyArg_BadArgument("scrypt", 4, "int", args[3]);
+            _PyArg_BadArgument("scrypt", "argument 'r'", "int", args[3]);
             goto exit;
         }
         r_obj = args[3];
@@ -283,7 +283,7 @@
     }
     if (args[4]) {
         if (!PyLong_Check(args[4])) {
-            _PyArg_BadArgument("scrypt", 5, "int", args[4]);
+            _PyArg_BadArgument("scrypt", "argument 'p'", "int", args[4]);
             goto exit;
         }
         p_obj = args[4];
@@ -364,18 +364,18 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&key, 'C')) {
-        _PyArg_BadArgument("hmac_digest", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("hmac_digest", "argument 'key'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyObject_GetBuffer(args[1], &msg, PyBUF_SIMPLE) != 0) {
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&msg, 'C')) {
-        _PyArg_BadArgument("hmac_digest", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("hmac_digest", "argument 'msg'", "contiguous buffer", args[1]);
         goto exit;
     }
     if (!PyUnicode_Check(args[2])) {
-        _PyArg_BadArgument("hmac_digest", 3, "str", args[2]);
+        _PyArg_BadArgument("hmac_digest", "argument 'digest'", "str", args[2]);
         goto exit;
     }
     Py_ssize_t digest_length;
@@ -409,4 +409,4 @@
 #ifndef _HASHLIB_SCRYPT_METHODDEF
     #define _HASHLIB_SCRYPT_METHODDEF
 #endif /* !defined(_HASHLIB_SCRYPT_METHODDEF) */
-/*[clinic end generated code: output=5955ec791260045a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=565dcbe3452e71f4 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_lzmamodule.c.h b/Modules/clinic/_lzmamodule.c.h
index 68aa770..82ef4d5 100644
--- a/Modules/clinic/_lzmamodule.c.h
+++ b/Modules/clinic/_lzmamodule.c.h
@@ -29,7 +29,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("compress", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("compress", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _lzma_LZMACompressor_compress_impl(self, &data);
@@ -110,7 +110,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("decompress", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decompress", "argument 'data'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -321,7 +321,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&encoded_props, 'C')) {
-        _PyArg_BadArgument("_decode_filter_properties", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("_decode_filter_properties", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     return_value = _lzma__decode_filter_properties_impl(module, filter_id, &encoded_props);
@@ -334,4 +334,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=1a290aa478603107 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=f7477a10e86a717d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_pickle.c.h b/Modules/clinic/_pickle.c.h
index 8ac723f..b92daa7 100644
--- a/Modules/clinic/_pickle.c.h
+++ b/Modules/clinic/_pickle.c.h
@@ -356,7 +356,7 @@
     }
     if (fastargs[2]) {
         if (!PyUnicode_Check(fastargs[2])) {
-            _PyArg_BadArgument("Unpickler", 3, "str", fastargs[2]);
+            _PyArg_BadArgument("Unpickler", "argument 'encoding'", "str", fastargs[2]);
             goto exit;
         }
         Py_ssize_t encoding_length;
@@ -374,7 +374,7 @@
     }
     if (fastargs[3]) {
         if (!PyUnicode_Check(fastargs[3])) {
-            _PyArg_BadArgument("Unpickler", 4, "str", fastargs[3]);
+            _PyArg_BadArgument("Unpickler", "argument 'errors'", "str", fastargs[3]);
             goto exit;
         }
         Py_ssize_t errors_length;
@@ -691,7 +691,7 @@
     }
     if (args[2]) {
         if (!PyUnicode_Check(args[2])) {
-            _PyArg_BadArgument("load", 3, "str", args[2]);
+            _PyArg_BadArgument("load", "argument 'encoding'", "str", args[2]);
             goto exit;
         }
         Py_ssize_t encoding_length;
@@ -709,7 +709,7 @@
     }
     if (args[3]) {
         if (!PyUnicode_Check(args[3])) {
-            _PyArg_BadArgument("load", 4, "str", args[3]);
+            _PyArg_BadArgument("load", "argument 'errors'", "str", args[3]);
             goto exit;
         }
         Py_ssize_t errors_length;
@@ -794,7 +794,7 @@
     }
     if (args[2]) {
         if (!PyUnicode_Check(args[2])) {
-            _PyArg_BadArgument("loads", 3, "str", args[2]);
+            _PyArg_BadArgument("loads", "argument 'encoding'", "str", args[2]);
             goto exit;
         }
         Py_ssize_t encoding_length;
@@ -812,7 +812,7 @@
     }
     if (args[3]) {
         if (!PyUnicode_Check(args[3])) {
-            _PyArg_BadArgument("loads", 4, "str", args[3]);
+            _PyArg_BadArgument("loads", "argument 'errors'", "str", args[3]);
             goto exit;
         }
         Py_ssize_t errors_length;
@@ -835,4 +835,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=8dc0e862f96c4afe input=a9049054013a1b77]*/
+/*[clinic end generated code: output=17f6a76ebd94325d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_sre.c.h b/Modules/clinic/_sre.c.h
index 9c08dec..d398a85 100644
--- a/Modules/clinic/_sre.c.h
+++ b/Modules/clinic/_sre.c.h
@@ -894,7 +894,7 @@
         goto exit;
     }
     if (!PyList_Check(args[2])) {
-        _PyArg_BadArgument("compile", 3, "list", args[2]);
+        _PyArg_BadArgument("compile", "argument 'code'", "list", args[2]);
         goto exit;
     }
     code = args[2];
@@ -916,12 +916,12 @@
         groups = ival;
     }
     if (!PyDict_Check(args[4])) {
-        _PyArg_BadArgument("compile", 5, "dict", args[4]);
+        _PyArg_BadArgument("compile", "argument 'groupindex'", "dict", args[4]);
         goto exit;
     }
     groupindex = args[4];
     if (!PyTuple_Check(args[5])) {
-        _PyArg_BadArgument("compile", 6, "tuple", args[5]);
+        _PyArg_BadArgument("compile", "argument 'indexgroup'", "tuple", args[5]);
         goto exit;
     }
     indexgroup = args[5];
@@ -1207,4 +1207,4 @@
 {
     return _sre_SRE_Scanner_search_impl(self);
 }
-/*[clinic end generated code: output=67b702da5bdc9cac input=a9049054013a1b77]*/
+/*[clinic end generated code: output=1adeddce58ae284c input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_ssl.c.h b/Modules/clinic/_ssl.c.h
index adef7db..25769a2 100644
--- a/Modules/clinic/_ssl.c.h
+++ b/Modules/clinic/_ssl.c.h
@@ -222,7 +222,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&b, 'C')) {
-        _PyArg_BadArgument("write", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _ssl__SSLSocket_write_impl(self, &b);
@@ -353,7 +353,7 @@
         goto skip_optional_pos;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("get_channel_binding", 1, "str", args[0]);
+        _PyArg_BadArgument("get_channel_binding", "argument 'cb_type'", "str", args[0]);
         goto exit;
     }
     Py_ssize_t cb_type_length;
@@ -439,7 +439,7 @@
     const char *cipherlist;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("set_ciphers", 0, "str", arg);
+        _PyArg_BadArgument("set_ciphers", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t cipherlist_length;
@@ -500,7 +500,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&protos, 'C')) {
-        _PyArg_BadArgument("_set_npn_protocols", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("_set_npn_protocols", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _ssl__SSLContext__set_npn_protocols_impl(self, &protos);
@@ -536,7 +536,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&protos, 'C')) {
-        _PyArg_BadArgument("_set_alpn_protocols", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("_set_alpn_protocols", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _ssl__SSLContext__set_alpn_protocols_impl(self, &protos);
@@ -690,7 +690,7 @@
         goto exit;
     }
     if (!PyObject_TypeCheck(args[0], PySocketModule.Sock_Type)) {
-        _PyArg_BadArgument("_wrap_socket", 1, (PySocketModule.Sock_Type)->tp_name, args[0]);
+        _PyArg_BadArgument("_wrap_socket", "argument 'sock'", (PySocketModule.Sock_Type)->tp_name, args[0]);
         goto exit;
     }
     sock = args[0];
@@ -765,12 +765,12 @@
         goto exit;
     }
     if (!PyObject_TypeCheck(args[0], &PySSLMemoryBIO_Type)) {
-        _PyArg_BadArgument("_wrap_bio", 1, (&PySSLMemoryBIO_Type)->tp_name, args[0]);
+        _PyArg_BadArgument("_wrap_bio", "argument 'incoming'", (&PySSLMemoryBIO_Type)->tp_name, args[0]);
         goto exit;
     }
     incoming = (PySSLMemoryBIO *)args[0];
     if (!PyObject_TypeCheck(args[1], &PySSLMemoryBIO_Type)) {
-        _PyArg_BadArgument("_wrap_bio", 2, (&PySSLMemoryBIO_Type)->tp_name, args[1]);
+        _PyArg_BadArgument("_wrap_bio", "argument 'outgoing'", (&PySSLMemoryBIO_Type)->tp_name, args[1]);
         goto exit;
     }
     outgoing = (PySSLMemoryBIO *)args[1];
@@ -1017,7 +1017,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&b, 'C')) {
-        _PyArg_BadArgument("write", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("write", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = _ssl_MemoryBIO_write_impl(self, &b);
@@ -1089,7 +1089,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&view, 'C')) {
-            _PyArg_BadArgument("RAND_add", 1, "contiguous buffer", args[0]);
+            _PyArg_BadArgument("RAND_add", "argument 1", "contiguous buffer", args[0]);
             goto exit;
         }
     }
@@ -1289,7 +1289,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("txt2obj", 1, "str", args[0]);
+        _PyArg_BadArgument("txt2obj", "argument 'txt'", "str", args[0]);
         goto exit;
     }
     Py_ssize_t txt_length;
@@ -1382,7 +1382,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("enum_certificates", 1, "str", args[0]);
+        _PyArg_BadArgument("enum_certificates", "argument 'store_name'", "str", args[0]);
         goto exit;
     }
     Py_ssize_t store_name_length;
@@ -1435,7 +1435,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("enum_crls", 1, "str", args[0]);
+        _PyArg_BadArgument("enum_crls", "argument 'store_name'", "str", args[0]);
         goto exit;
     }
     Py_ssize_t store_name_length;
@@ -1482,4 +1482,4 @@
 #ifndef _SSL_ENUM_CRLS_METHODDEF
     #define _SSL_ENUM_CRLS_METHODDEF
 #endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
-/*[clinic end generated code: output=5003112e167cd948 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=aa4947067c3fef2d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_struct.c.h b/Modules/clinic/_struct.c.h
index 908c442..36c4b40 100644
--- a/Modules/clinic/_struct.c.h
+++ b/Modules/clinic/_struct.c.h
@@ -65,7 +65,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("unpack", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("unpack", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = Struct_unpack_impl(self, &buffer);
@@ -118,7 +118,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("unpack_from", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("unpack_from", "argument 'buffer'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -253,7 +253,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("unpack", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("unpack", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     return_value = unpack_impl(module, s_object, &buffer);
@@ -309,7 +309,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("unpack_from", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("unpack_from", "argument 'buffer'", "contiguous buffer", args[1]);
         goto exit;
     }
     if (!noptargs) {
@@ -386,4 +386,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=b642e1002d25ebdd input=a9049054013a1b77]*/
+/*[clinic end generated code: output=6a6228cfc4b7099c input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_tkinter.c.h b/Modules/clinic/_tkinter.c.h
index 0a3e7ff..4870e9b 100644
--- a/Modules/clinic/_tkinter.c.h
+++ b/Modules/clinic/_tkinter.c.h
@@ -20,7 +20,7 @@
     const char *script;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("eval", 0, "str", arg);
+        _PyArg_BadArgument("eval", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t script_length;
@@ -56,7 +56,7 @@
     const char *fileName;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("evalfile", 0, "str", arg);
+        _PyArg_BadArgument("evalfile", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t fileName_length;
@@ -92,7 +92,7 @@
     const char *script;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("record", 0, "str", arg);
+        _PyArg_BadArgument("record", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t script_length;
@@ -128,7 +128,7 @@
     const char *msg;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("adderrorinfo", 0, "str", arg);
+        _PyArg_BadArgument("adderrorinfo", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t msg_length;
@@ -188,7 +188,7 @@
     const char *s;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("exprstring", 0, "str", arg);
+        _PyArg_BadArgument("exprstring", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t s_length;
@@ -224,7 +224,7 @@
     const char *s;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("exprlong", 0, "str", arg);
+        _PyArg_BadArgument("exprlong", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t s_length;
@@ -260,7 +260,7 @@
     const char *s;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("exprdouble", 0, "str", arg);
+        _PyArg_BadArgument("exprdouble", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t s_length;
@@ -296,7 +296,7 @@
     const char *s;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("exprboolean", 0, "str", arg);
+        _PyArg_BadArgument("exprboolean", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t s_length;
@@ -353,7 +353,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("createcommand", 1, "str", args[0]);
+        _PyArg_BadArgument("createcommand", "argument 1", "str", args[0]);
         goto exit;
     }
     Py_ssize_t name_length;
@@ -390,7 +390,7 @@
     const char *name;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("deletecommand", 0, "str", arg);
+        _PyArg_BadArgument("deletecommand", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t name_length;
@@ -731,14 +731,14 @@
         }
     }
     else {
-        _PyArg_BadArgument("create", 1, "str or None", args[0]);
+        _PyArg_BadArgument("create", "argument 1", "str or None", args[0]);
         goto exit;
     }
     if (nargs < 2) {
         goto skip_optional;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("create", 2, "str", args[1]);
+        _PyArg_BadArgument("create", "argument 2", "str", args[1]);
         goto exit;
     }
     Py_ssize_t baseName_length;
@@ -754,7 +754,7 @@
         goto skip_optional;
     }
     if (!PyUnicode_Check(args[2])) {
-        _PyArg_BadArgument("create", 3, "str", args[2]);
+        _PyArg_BadArgument("create", "argument 3", "str", args[2]);
         goto exit;
     }
     Py_ssize_t className_length;
@@ -832,7 +832,7 @@
         }
     }
     else {
-        _PyArg_BadArgument("create", 8, "str or None", args[7]);
+        _PyArg_BadArgument("create", "argument 8", "str or None", args[7]);
         goto exit;
     }
 skip_optional:
@@ -912,4 +912,4 @@
 #ifndef _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF
     #define _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF
 #endif /* !defined(_TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF) */
-/*[clinic end generated code: output=2cf95f0101f3dbca input=a9049054013a1b77]*/
+/*[clinic end generated code: output=da0115c470aac1c0 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_weakref.c.h b/Modules/clinic/_weakref.c.h
index aa0d77f..c3a908f 100644
--- a/Modules/clinic/_weakref.c.h
+++ b/Modules/clinic/_weakref.c.h
@@ -54,7 +54,7 @@
         goto exit;
     }
     if (!PyDict_Check(args[0])) {
-        _PyArg_BadArgument("_remove_dead_weakref", 1, "dict", args[0]);
+        _PyArg_BadArgument("_remove_dead_weakref", "argument 1", "dict", args[0]);
         goto exit;
     }
     dct = args[0];
@@ -64,4 +64,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=eae22e2d2e43120e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=c543dc2cd6ece975 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/arraymodule.c.h b/Modules/clinic/arraymodule.c.h
index 5f45b7c..33f82d4 100644
--- a/Modules/clinic/arraymodule.c.h
+++ b/Modules/clinic/arraymodule.c.h
@@ -345,7 +345,7 @@
             goto exit;
         }
         if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-            _PyArg_BadArgument("fromstring", 0, "contiguous buffer", arg);
+            _PyArg_BadArgument("fromstring", "argument", "contiguous buffer", arg);
             goto exit;
         }
     }
@@ -382,7 +382,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("frombytes", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("frombytes", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = array_array_frombytes_impl(self, &buffer);
@@ -537,14 +537,14 @@
     }
     arraytype = (PyTypeObject *)args[0];
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("_array_reconstructor", 2, "a unicode character", args[1]);
+        _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
         goto exit;
     }
     if (PyUnicode_READY(args[1])) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(args[1]) != 1) {
-        _PyArg_BadArgument("_array_reconstructor", 2, "a unicode character", args[1]);
+        _PyArg_BadArgument("_array_reconstructor", "argument 2", "a unicode character", args[1]);
         goto exit;
     }
     typecode = PyUnicode_READ_CHAR(args[1], 0);
@@ -599,4 +599,4 @@
 
 #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF    \
     {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
-/*[clinic end generated code: output=c9a40f11f1a866fb input=a9049054013a1b77]*/
+/*[clinic end generated code: output=6aa421571e2c0756 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/audioop.c.h b/Modules/clinic/audioop.c.h
index aa17696..8745533 100644
--- a/Modules/clinic/audioop.c.h
+++ b/Modules/clinic/audioop.c.h
@@ -30,7 +30,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("getsample", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("getsample", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -96,7 +96,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("max", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("max", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -145,7 +145,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("minmax", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("minmax", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -194,7 +194,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("avg", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("avg", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -243,7 +243,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("rms", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("rms", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -293,14 +293,14 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("findfit", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("findfit", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyObject_GetBuffer(args[1], &reference, PyBUF_SIMPLE) != 0) {
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&reference, 'C')) {
-        _PyArg_BadArgument("findfit", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("findfit", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     return_value = audioop_findfit_impl(module, &fragment, &reference);
@@ -345,14 +345,14 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("findfactor", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("findfactor", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyObject_GetBuffer(args[1], &reference, PyBUF_SIMPLE) != 0) {
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&reference, 'C')) {
-        _PyArg_BadArgument("findfactor", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("findfactor", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     return_value = audioop_findfactor_impl(module, &fragment, &reference);
@@ -397,7 +397,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("findmax", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("findmax", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -454,7 +454,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("avgpp", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("avgpp", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -503,7 +503,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("maxpp", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("maxpp", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -552,7 +552,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("cross", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("cross", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -603,7 +603,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("mul", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("mul", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -665,7 +665,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("tomono", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("tomono", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -737,7 +737,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("tostereo", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("tostereo", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -808,14 +808,14 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment1, 'C')) {
-        _PyArg_BadArgument("add", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("add", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyObject_GetBuffer(args[1], &fragment2, PyBUF_SIMPLE) != 0) {
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment2, 'C')) {
-        _PyArg_BadArgument("add", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("add", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     if (PyFloat_Check(args[2])) {
@@ -869,7 +869,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("bias", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("bias", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -927,7 +927,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("reverse", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("reverse", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -976,7 +976,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("byteswap", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("byteswap", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1027,7 +1027,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("lin2lin", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("lin2lin", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1094,7 +1094,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("ratecv", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("ratecv", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1196,7 +1196,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("lin2ulaw", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("lin2ulaw", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1245,7 +1245,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("ulaw2lin", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("ulaw2lin", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1294,7 +1294,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("lin2alaw", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("lin2alaw", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1343,7 +1343,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("alaw2lin", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("alaw2lin", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1394,7 +1394,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("lin2adpcm", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("lin2adpcm", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1446,7 +1446,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&fragment, 'C')) {
-        _PyArg_BadArgument("adpcm2lin", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("adpcm2lin", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -1469,4 +1469,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=af32f4bce9c934fa input=a9049054013a1b77]*/
+/*[clinic end generated code: output=6b4f2c597f295abc input=a9049054013a1b77]*/
diff --git a/Modules/clinic/binascii.c.h b/Modules/clinic/binascii.c.h
index d485048..e18d407 100644
--- a/Modules/clinic/binascii.c.h
+++ b/Modules/clinic/binascii.c.h
@@ -64,7 +64,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("b2a_uu", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("b2a_uu", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -153,7 +153,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("b2a_base64", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("b2a_base64", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -233,7 +233,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("rlecode_hqx", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("rlecode_hqx", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = binascii_rlecode_hqx_impl(module, &data);
@@ -269,7 +269,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("b2a_hqx", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("b2a_hqx", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = binascii_b2a_hqx_impl(module, &data);
@@ -305,7 +305,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("rledecode_hqx", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("rledecode_hqx", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = binascii_rledecode_hqx_impl(module, &data);
@@ -346,7 +346,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("crc_hqx", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("crc_hqx", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (PyFloat_Check(args[1])) {
@@ -400,7 +400,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("crc32", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("crc32", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -481,7 +481,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("b2a_hex", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("b2a_hex", "argument 'data'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -556,7 +556,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("hexlify", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("hexlify", "argument 'data'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -747,7 +747,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("b2a_qp", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("b2a_qp", "argument 'data'", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -801,4 +801,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=f7b8049edb130c63 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=e13bd02ac40496f0 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/grpmodule.c.h b/Modules/clinic/grpmodule.c.h
index ae99c50..2e2690a 100644
--- a/Modules/clinic/grpmodule.c.h
+++ b/Modules/clinic/grpmodule.c.h
@@ -64,7 +64,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("getgrnam", 1, "str", args[0]);
+        _PyArg_BadArgument("getgrnam", "argument 'name'", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -97,4 +97,4 @@
 {
     return grp_getgrall_impl(module);
 }
-/*[clinic end generated code: output=2aa6c60873d41ee8 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=9b3f26779e4e1a52 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/itertoolsmodule.c.h b/Modules/clinic/itertoolsmodule.c.h
index b43ce64..20594b0 100644
--- a/Modules/clinic/itertoolsmodule.c.h
+++ b/Modules/clinic/itertoolsmodule.c.h
@@ -66,7 +66,7 @@
         goto exit;
     }
     if (!PyObject_TypeCheck(PyTuple_GET_ITEM(args, 0), &groupby_type)) {
-        _PyArg_BadArgument("_grouper", 1, (&groupby_type)->tp_name, PyTuple_GET_ITEM(args, 0));
+        _PyArg_BadArgument("_grouper", "argument 1", (&groupby_type)->tp_name, PyTuple_GET_ITEM(args, 0));
         goto exit;
     }
     parent = PyTuple_GET_ITEM(args, 0);
@@ -104,7 +104,7 @@
     }
     it = PyTuple_GET_ITEM(args, 0);
     if (!PyList_Check(PyTuple_GET_ITEM(args, 1))) {
-        _PyArg_BadArgument("teedataobject", 2, "list", PyTuple_GET_ITEM(args, 1));
+        _PyArg_BadArgument("teedataobject", "argument 2", "list", PyTuple_GET_ITEM(args, 1));
         goto exit;
     }
     values = PyTuple_GET_ITEM(args, 1);
@@ -642,4 +642,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=04c49debcae96003 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=392c9706e79f6710 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index c4ebe39..cb4ef59 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -616,7 +616,7 @@
         goto exit;
     }
     if (!PyLong_Check(args[1])) {
-        _PyArg_BadArgument("chflags", 2, "int", args[1]);
+        _PyArg_BadArgument("chflags", "argument 'flags'", "int", args[1]);
         goto exit;
     }
     flags = PyLong_AsUnsignedLongMask(args[1]);
@@ -674,7 +674,7 @@
         goto exit;
     }
     if (!PyLong_Check(args[1])) {
-        _PyArg_BadArgument("lchflags", 2, "int", args[1]);
+        _PyArg_BadArgument("lchflags", "argument 'flags'", "int", args[1]);
         goto exit;
     }
     flags = PyLong_AsUnsignedLongMask(args[1]);
@@ -4956,7 +4956,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("write", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("write", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     _return_value = os_write_impl(module, fd, &data);
@@ -5279,7 +5279,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&buffer, 'C')) {
-        _PyArg_BadArgument("pwrite", 2, "contiguous buffer", args[1]);
+        _PyArg_BadArgument("pwrite", "argument 2", "contiguous buffer", args[1]);
         goto exit;
     }
     if (!Py_off_t_converter(args[2], &offset)) {
@@ -6012,7 +6012,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("putenv", 1, "str", args[0]);
+        _PyArg_BadArgument("putenv", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -6020,7 +6020,7 @@
     }
     name = args[0];
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("putenv", 2, "str", args[1]);
+        _PyArg_BadArgument("putenv", "argument 2", "str", args[1]);
         goto exit;
     }
     if (PyUnicode_READY(args[1]) == -1) {
@@ -7216,7 +7216,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&value, 'C')) {
-        _PyArg_BadArgument("setxattr", 3, "contiguous buffer", args[2]);
+        _PyArg_BadArgument("setxattr", "argument 'value'", "contiguous buffer", args[2]);
         goto exit;
     }
     if (!noptargs) {
@@ -8724,4 +8724,4 @@
 #ifndef OS__REMOVE_DLL_DIRECTORY_METHODDEF
     #define OS__REMOVE_DLL_DIRECTORY_METHODDEF
 #endif /* !defined(OS__REMOVE_DLL_DIRECTORY_METHODDEF) */
-/*[clinic end generated code: output=b71eff00b91f5e43 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=3c5cb675b0d09145 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/pwdmodule.c.h b/Modules/clinic/pwdmodule.c.h
index cf84ec9..cb83062 100644
--- a/Modules/clinic/pwdmodule.c.h
+++ b/Modules/clinic/pwdmodule.c.h
@@ -34,7 +34,7 @@
     PyObject *name;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("getpwnam", 0, "str", arg);
+        _PyArg_BadArgument("getpwnam", "argument", "str", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg) == -1) {
@@ -74,4 +74,4 @@
 #ifndef PWD_GETPWALL_METHODDEF
     #define PWD_GETPWALL_METHODDEF
 #endif /* !defined(PWD_GETPWALL_METHODDEF) */
-/*[clinic end generated code: output=f9412bdedc69706c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7fceab7f1a85da36 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/pyexpat.c.h b/Modules/clinic/pyexpat.c.h
index dfb27d5..41ab536 100644
--- a/Modules/clinic/pyexpat.c.h
+++ b/Modules/clinic/pyexpat.c.h
@@ -75,7 +75,7 @@
     const char *base;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("SetBase", 0, "str", arg);
+        _PyArg_BadArgument("SetBase", "argument", "str", arg);
         goto exit;
     }
     Py_ssize_t base_length;
@@ -171,14 +171,14 @@
         }
     }
     else {
-        _PyArg_BadArgument("ExternalEntityParserCreate", 1, "str or None", args[0]);
+        _PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
         goto exit;
     }
     if (nargs < 2) {
         goto skip_optional;
     }
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("ExternalEntityParserCreate", 2, "str", args[1]);
+        _PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
         goto exit;
     }
     Py_ssize_t encoding_length;
@@ -327,7 +327,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("ParserCreate", 1, "str or None", args[0]);
+            _PyArg_BadArgument("ParserCreate", "argument 'encoding'", "str or None", args[0]);
             goto exit;
         }
         if (!--noptargs) {
@@ -350,7 +350,7 @@
             }
         }
         else {
-            _PyArg_BadArgument("ParserCreate", 2, "str or None", args[1]);
+            _PyArg_BadArgument("ParserCreate", "argument 'namespace_separator'", "str or None", args[1]);
             goto exit;
         }
         if (!--noptargs) {
@@ -401,4 +401,4 @@
 #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
     #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
 #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
-/*[clinic end generated code: output=e48f37d326956bdd input=a9049054013a1b77]*/
+/*[clinic end generated code: output=133a4105d508ebec input=a9049054013a1b77]*/
diff --git a/Modules/clinic/signalmodule.c.h b/Modules/clinic/signalmodule.c.h
index bc46515..3cb1db1 100644
--- a/Modules/clinic/signalmodule.c.h
+++ b/Modules/clinic/signalmodule.c.h
@@ -590,7 +590,7 @@
         goto exit;
     }
     if (!PyLong_Check(args[0])) {
-        _PyArg_BadArgument("pthread_kill", 1, "int", args[0]);
+        _PyArg_BadArgument("pthread_kill", "argument 1", "int", args[0]);
         goto exit;
     }
     thread_id = PyLong_AsUnsignedLongMask(args[0]);
@@ -658,4 +658,4 @@
 #ifndef SIGNAL_PTHREAD_KILL_METHODDEF
     #define SIGNAL_PTHREAD_KILL_METHODDEF
 #endif /* !defined(SIGNAL_PTHREAD_KILL_METHODDEF) */
-/*[clinic end generated code: output=f0d3a5703581da76 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=3320b8f73c20ba60 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/spwdmodule.c.h b/Modules/clinic/spwdmodule.c.h
index e051e6e..411d234 100644
--- a/Modules/clinic/spwdmodule.c.h
+++ b/Modules/clinic/spwdmodule.c.h
@@ -25,7 +25,7 @@
     PyObject *arg;
 
     if (!PyUnicode_Check(arg_)) {
-        _PyArg_BadArgument("getspnam", 0, "str", arg_);
+        _PyArg_BadArgument("getspnam", "argument", "str", arg_);
         goto exit;
     }
     if (PyUnicode_READY(arg_) == -1) {
@@ -71,4 +71,4 @@
 #ifndef SPWD_GETSPALL_METHODDEF
     #define SPWD_GETSPALL_METHODDEF
 #endif /* !defined(SPWD_GETSPALL_METHODDEF) */
-/*[clinic end generated code: output=2bbaa6bab1d9116e input=a9049054013a1b77]*/
+/*[clinic end generated code: output=eec8d0bedcd312e5 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/symtablemodule.c.h b/Modules/clinic/symtablemodule.c.h
index 7d8b0ad..4a17f13 100644
--- a/Modules/clinic/symtablemodule.c.h
+++ b/Modules/clinic/symtablemodule.c.h
@@ -31,7 +31,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[2])) {
-        _PyArg_BadArgument("symtable", 3, "str", args[2]);
+        _PyArg_BadArgument("symtable", "argument 3", "str", args[2]);
         goto exit;
     }
     Py_ssize_t startstr_length;
@@ -48,4 +48,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=de655625eee705f4 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=a12f75cdbdf4e52a input=a9049054013a1b77]*/
diff --git a/Modules/clinic/unicodedata.c.h b/Modules/clinic/unicodedata.c.h
index 8ca0881..77e4f22 100644
--- a/Modules/clinic/unicodedata.c.h
+++ b/Modules/clinic/unicodedata.c.h
@@ -30,14 +30,14 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("decimal", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("decimal", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0])) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(args[0]) != 1) {
-        _PyArg_BadArgument("decimal", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("decimal", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(args[0], 0);
@@ -79,14 +79,14 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("digit", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("digit", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0])) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(args[0]) != 1) {
-        _PyArg_BadArgument("digit", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("digit", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(args[0], 0);
@@ -129,14 +129,14 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("numeric", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("numeric", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0])) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(args[0]) != 1) {
-        _PyArg_BadArgument("numeric", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("numeric", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(args[0], 0);
@@ -170,14 +170,14 @@
     int chr;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("category", 0, "a unicode character", arg);
+        _PyArg_BadArgument("category", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("category", 0, "a unicode character", arg);
+        _PyArg_BadArgument("category", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -208,14 +208,14 @@
     int chr;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("bidirectional", 0, "a unicode character", arg);
+        _PyArg_BadArgument("bidirectional", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("bidirectional", 0, "a unicode character", arg);
+        _PyArg_BadArgument("bidirectional", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -247,14 +247,14 @@
     int _return_value;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("combining", 0, "a unicode character", arg);
+        _PyArg_BadArgument("combining", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("combining", 0, "a unicode character", arg);
+        _PyArg_BadArgument("combining", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -291,14 +291,14 @@
     int _return_value;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("mirrored", 0, "a unicode character", arg);
+        _PyArg_BadArgument("mirrored", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("mirrored", 0, "a unicode character", arg);
+        _PyArg_BadArgument("mirrored", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -331,14 +331,14 @@
     int chr;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("east_asian_width", 0, "a unicode character", arg);
+        _PyArg_BadArgument("east_asian_width", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("east_asian_width", 0, "a unicode character", arg);
+        _PyArg_BadArgument("east_asian_width", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -369,14 +369,14 @@
     int chr;
 
     if (!PyUnicode_Check(arg)) {
-        _PyArg_BadArgument("decomposition", 0, "a unicode character", arg);
+        _PyArg_BadArgument("decomposition", "argument", "a unicode character", arg);
         goto exit;
     }
     if (PyUnicode_READY(arg)) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(arg) != 1) {
-        _PyArg_BadArgument("decomposition", 0, "a unicode character", arg);
+        _PyArg_BadArgument("decomposition", "argument", "a unicode character", arg);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(arg, 0);
@@ -412,7 +412,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("is_normalized", 1, "str", args[0]);
+        _PyArg_BadArgument("is_normalized", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -420,7 +420,7 @@
     }
     form = args[0];
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("is_normalized", 2, "str", args[1]);
+        _PyArg_BadArgument("is_normalized", "argument 2", "str", args[1]);
         goto exit;
     }
     if (PyUnicode_READY(args[1]) == -1) {
@@ -459,7 +459,7 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("normalize", 1, "str", args[0]);
+        _PyArg_BadArgument("normalize", "argument 1", "str", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0]) == -1) {
@@ -467,7 +467,7 @@
     }
     form = args[0];
     if (!PyUnicode_Check(args[1])) {
-        _PyArg_BadArgument("normalize", 2, "str", args[1]);
+        _PyArg_BadArgument("normalize", "argument 2", "str", args[1]);
         goto exit;
     }
     if (PyUnicode_READY(args[1]) == -1) {
@@ -506,14 +506,14 @@
         goto exit;
     }
     if (!PyUnicode_Check(args[0])) {
-        _PyArg_BadArgument("name", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("name", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     if (PyUnicode_READY(args[0])) {
         goto exit;
     }
     if (PyUnicode_GET_LENGTH(args[0]) != 1) {
-        _PyArg_BadArgument("name", 1, "a unicode character", args[0]);
+        _PyArg_BadArgument("name", "argument 1", "a unicode character", args[0]);
         goto exit;
     }
     chr = PyUnicode_READ_CHAR(args[0], 0);
@@ -559,4 +559,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=0fc850fe5b6b312c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=3238f76814fb48d1 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/zlibmodule.c.h b/Modules/clinic/zlibmodule.c.h
index aa57920..77ea04a 100644
--- a/Modules/clinic/zlibmodule.c.h
+++ b/Modules/clinic/zlibmodule.c.h
@@ -38,7 +38,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("compress", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("compress", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -105,7 +105,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("decompress", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decompress", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -273,7 +273,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&zdict, 'C')) {
-        _PyArg_BadArgument("compressobj", 6, "contiguous buffer", args[5]);
+        _PyArg_BadArgument("compressobj", "argument 'zdict'", "contiguous buffer", args[5]);
         goto exit;
     }
 skip_optional_pos:
@@ -375,7 +375,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("compress", 0, "contiguous buffer", arg);
+        _PyArg_BadArgument("compress", "argument", "contiguous buffer", arg);
         goto exit;
     }
     return_value = zlib_Compress_compress_impl(self, &data);
@@ -432,7 +432,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("decompress", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("decompress", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (!noptargs) {
@@ -677,7 +677,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("adler32", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("adler32", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -735,7 +735,7 @@
         goto exit;
     }
     if (!PyBuffer_IsContiguous(&data, 'C')) {
-        _PyArg_BadArgument("crc32", 1, "contiguous buffer", args[0]);
+        _PyArg_BadArgument("crc32", "argument 1", "contiguous buffer", args[0]);
         goto exit;
     }
     if (nargs < 2) {
@@ -785,4 +785,4 @@
 #ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
     #define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
 #endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */
-/*[clinic end generated code: output=feb079cebbbaacd6 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=faae38ef96b88b16 input=a9049054013a1b77]*/
