Issue #23501: Argumen Clinic now generates code into separate files by default.
diff --git a/Modules/sha256module.c b/Modules/sha256module.c
index 7b14886..957fd2b 100644
--- a/Modules/sha256module.c
+++ b/Modules/sha256module.c
@@ -52,6 +52,8 @@
     int digestsize;
 } SHAobject;
 
+#include "clinic/sha256module.c.h"
+
 /* When run on a little-endian CPU we need to perform byte reversal on an
    array of longwords. */
 
@@ -404,27 +406,9 @@
 Return a copy of the hash object.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(SHA256Type_copy__doc__,
-"copy($self, /)\n"
-"--\n"
-"\n"
-"Return a copy of the hash object.");
-
-#define SHA256TYPE_COPY_METHODDEF    \
-    {"copy", (PyCFunction)SHA256Type_copy, METH_NOARGS, SHA256Type_copy__doc__},
-
-static PyObject *
-SHA256Type_copy_impl(SHAobject *self);
-
-static PyObject *
-SHA256Type_copy(SHAobject *self, PyObject *Py_UNUSED(ignored))
-{
-    return SHA256Type_copy_impl(self);
-}
-
 static PyObject *
 SHA256Type_copy_impl(SHAobject *self)
-/*[clinic end generated code: output=f716c39d3f81c27c input=f58840a618d4f2a7]*/
+/*[clinic end generated code: output=1a8bbd66a0c9c168 input=f58840a618d4f2a7]*/
 {
     SHAobject *newobj;
 
@@ -446,27 +430,9 @@
 Return the digest value as a string of binary data.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(SHA256Type_digest__doc__,
-"digest($self, /)\n"
-"--\n"
-"\n"
-"Return the digest value as a string of binary data.");
-
-#define SHA256TYPE_DIGEST_METHODDEF    \
-    {"digest", (PyCFunction)SHA256Type_digest, METH_NOARGS, SHA256Type_digest__doc__},
-
-static PyObject *
-SHA256Type_digest_impl(SHAobject *self);
-
-static PyObject *
-SHA256Type_digest(SHAobject *self, PyObject *Py_UNUSED(ignored))
-{
-    return SHA256Type_digest_impl(self);
-}
-
 static PyObject *
 SHA256Type_digest_impl(SHAobject *self)
-/*[clinic end generated code: output=72d34723d7bb694c input=1fb752e58954157d]*/
+/*[clinic end generated code: output=46616a5e909fbc3d input=1fb752e58954157d]*/
 {
     unsigned char digest[SHA_DIGESTSIZE];
     SHAobject temp;
@@ -482,27 +448,9 @@
 Return the digest value as a string of hexadecimal digits.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(SHA256Type_hexdigest__doc__,
-"hexdigest($self, /)\n"
-"--\n"
-"\n"
-"Return the digest value as a string of hexadecimal digits.");
-
-#define SHA256TYPE_HEXDIGEST_METHODDEF    \
-    {"hexdigest", (PyCFunction)SHA256Type_hexdigest, METH_NOARGS, SHA256Type_hexdigest__doc__},
-
-static PyObject *
-SHA256Type_hexdigest_impl(SHAobject *self);
-
-static PyObject *
-SHA256Type_hexdigest(SHAobject *self, PyObject *Py_UNUSED(ignored))
-{
-    return SHA256Type_hexdigest_impl(self);
-}
-
 static PyObject *
 SHA256Type_hexdigest_impl(SHAobject *self)
-/*[clinic end generated code: output=3687aa6183c7d27f input=0cc4c714693010d1]*/
+/*[clinic end generated code: output=725f8a7041ae97f3 input=0cc4c714693010d1]*/
 {
     unsigned char digest[SHA_DIGESTSIZE];
     SHAobject temp;
@@ -543,18 +491,9 @@
 Update this hash object's state with the provided string.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(SHA256Type_update__doc__,
-"update($self, obj, /)\n"
-"--\n"
-"\n"
-"Update this hash object\'s state with the provided string.");
-
-#define SHA256TYPE_UPDATE_METHODDEF    \
-    {"update", (PyCFunction)SHA256Type_update, METH_O, SHA256Type_update__doc__},
-
 static PyObject *
 SHA256Type_update(SHAobject *self, PyObject *obj)
-/*[clinic end generated code: output=b47f53d7cbeabee4 input=b2d449d5b30f0f5a]*/
+/*[clinic end generated code: output=0967fb2860c66af7 input=b2d449d5b30f0f5a]*/
 {
     Py_buffer buf;
 
@@ -686,38 +625,9 @@
 Return a new SHA-256 hash object; optionally initialized with a string.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(_sha256_sha256__doc__,
-"sha256($module, /, string=b\'\')\n"
-"--\n"
-"\n"
-"Return a new SHA-256 hash object; optionally initialized with a string.");
-
-#define _SHA256_SHA256_METHODDEF    \
-    {"sha256", (PyCFunction)_sha256_sha256, METH_VARARGS|METH_KEYWORDS, _sha256_sha256__doc__},
-
-static PyObject *
-_sha256_sha256_impl(PyModuleDef *module, PyObject *string);
-
-static PyObject *
-_sha256_sha256(PyModuleDef *module, PyObject *args, PyObject *kwargs)
-{
-    PyObject *return_value = NULL;
-    static char *_keywords[] = {"string", NULL};
-    PyObject *string = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-        "|O:sha256", _keywords,
-        &string))
-        goto exit;
-    return_value = _sha256_sha256_impl(module, string);
-
-exit:
-    return return_value;
-}
-
 static PyObject *
 _sha256_sha256_impl(PyModuleDef *module, PyObject *string)
-/*[clinic end generated code: output=4b1263d1e2fcdb98 input=09cce3fb855056b2]*/
+/*[clinic end generated code: output=d70e6e2d97112844 input=09cce3fb855056b2]*/
 {
     SHAobject *new;
     Py_buffer buf;
@@ -755,38 +665,9 @@
 Return a new SHA-224 hash object; optionally initialized with a string.
 [clinic start generated code]*/
 
-PyDoc_STRVAR(_sha256_sha224__doc__,
-"sha224($module, /, string=b\'\')\n"
-"--\n"
-"\n"
-"Return a new SHA-224 hash object; optionally initialized with a string.");
-
-#define _SHA256_SHA224_METHODDEF    \
-    {"sha224", (PyCFunction)_sha256_sha224, METH_VARARGS|METH_KEYWORDS, _sha256_sha224__doc__},
-
-static PyObject *
-_sha256_sha224_impl(PyModuleDef *module, PyObject *string);
-
-static PyObject *
-_sha256_sha224(PyModuleDef *module, PyObject *args, PyObject *kwargs)
-{
-    PyObject *return_value = NULL;
-    static char *_keywords[] = {"string", NULL};
-    PyObject *string = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-        "|O:sha224", _keywords,
-        &string))
-        goto exit;
-    return_value = _sha256_sha224_impl(module, string);
-
-exit:
-    return return_value;
-}
-
 static PyObject *
 _sha256_sha224_impl(PyModuleDef *module, PyObject *string)
-/*[clinic end generated code: output=4dde0eb1cdaebc06 input=27a04ba24c353a73]*/
+/*[clinic end generated code: output=f2822bf28416b42a input=27a04ba24c353a73]*/
 {
     SHAobject *new;
     Py_buffer buf;