diff --git a/Misc/NEWS b/Misc/NEWS
index 5e4706b..ff7e543 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -162,6 +162,8 @@
 Tools/Demos
 -----------
 
+- Issue #23944: Argument Clinic now wraps long impl prototypes at column 78.
+
 - Issue #20586: Argument Clinic now ensures that functions without docstrings
   have signatures.
 
diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c
index 4ca0944..7dfd307 100644
--- a/Modules/_bz2module.c
+++ b/Modules/_bz2module.c
@@ -614,8 +614,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_bz2_BZ2Decompressor_decompress_impl(BZ2Decompressor *self, Py_buffer *data, Py_ssize_t max_length)
-/*[clinic end generated code: output=7eeb5794035a2ca3 input=9558b424c8b00516]*/
+_bz2_BZ2Decompressor_decompress_impl(BZ2Decompressor *self, Py_buffer *data,
+                                     Py_ssize_t max_length)
+/*[clinic end generated code: output=23e41045deb240a3 input=9558b424c8b00516]*/
 {
     PyObject *result = NULL;
 
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 209f87e..54c724b 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -586,8 +586,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y, int x, PyObject *ch, int group_right_1, long attr)
-/*[clinic end generated code: output=9fa34a5d80151f1a input=5a41efb34a2de338]*/
+curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
+                         int x, PyObject *ch, int group_right_1, long attr)
+/*[clinic end generated code: output=99f7f85078ec06c3 input=5a41efb34a2de338]*/
 {
     PyCursesWindowObject *cwself = (PyCursesWindowObject *)self;
     int coordinates_group = group_left_1;
diff --git a/Modules/_dbmmodule.c b/Modules/_dbmmodule.c
index c017885..bcdea1d 100644
--- a/Modules/_dbmmodule.c
+++ b/Modules/_dbmmodule.c
@@ -280,8 +280,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-dbm_dbm_get_impl(dbmobject *dp, const char *key, Py_ssize_clean_t key_length, PyObject *default_value)
-/*[clinic end generated code: output=c2bdccaa734ad349 input=aecf5efd2f2b1a3b]*/
+dbm_dbm_get_impl(dbmobject *dp, const char *key, Py_ssize_clean_t key_length,
+                 PyObject *default_value)
+/*[clinic end generated code: output=4f5c0e523eaf1251 input=aecf5efd2f2b1a3b]*/
 {
     datum dbm_key, val;
 
@@ -422,8 +423,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-dbmopen_impl(PyModuleDef *module, const char *filename, const char *flags, int mode)
-/*[clinic end generated code: output=8b618fe06b92bf86 input=6499ab0fab1333ac]*/
+dbmopen_impl(PyModuleDef *module, const char *filename, const char *flags,
+             int mode)
+/*[clinic end generated code: output=e8d4b36f25c733fd input=6499ab0fab1333ac]*/
 {
     int iflags;
 
diff --git a/Modules/_lzmamodule.c b/Modules/_lzmamodule.c
index f110f5b..7e4e2df 100644
--- a/Modules/_lzmamodule.c
+++ b/Modules/_lzmamodule.c
@@ -1085,8 +1085,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_lzma_LZMADecompressor_decompress_impl(Decompressor *self, Py_buffer *data, Py_ssize_t max_length)
-/*[clinic end generated code: output=1532a5bb23629001 input=f2bb902cc1caf203]*/
+_lzma_LZMADecompressor_decompress_impl(Decompressor *self, Py_buffer *data,
+                                       Py_ssize_t max_length)
+/*[clinic end generated code: output=ef4e20ec7122241d input=f2bb902cc1caf203]*/
 {
     PyObject *result = NULL;
 
@@ -1150,8 +1151,9 @@
 [clinic start generated code]*/
 
 static int
-_lzma_LZMADecompressor___init___impl(Decompressor *self, int format, PyObject *memlimit, PyObject *filters)
-/*[clinic end generated code: output=9b119f6f2cc2d7a8 input=458ca6132ef29801]*/
+_lzma_LZMADecompressor___init___impl(Decompressor *self, int format,
+                                     PyObject *memlimit, PyObject *filters)
+/*[clinic end generated code: output=3e1821f8aa36564c input=458ca6132ef29801]*/
 {
     const uint32_t decoder_flags = LZMA_TELL_ANY_CHECK | LZMA_TELL_NO_CHECK;
     uint64_t memlimit_ = UINT64_MAX;
@@ -1399,8 +1401,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_lzma__decode_filter_properties_impl(PyModuleDef *module, lzma_vli filter_id, Py_buffer *encoded_props)
-/*[clinic end generated code: output=235f7f5345d48744 input=246410800782160c]*/
+_lzma__decode_filter_properties_impl(PyModuleDef *module, lzma_vli filter_id,
+                                     Py_buffer *encoded_props)
+/*[clinic end generated code: output=af248f570746668b input=246410800782160c]*/
 {
     lzma_filter filter;
     lzma_ret lzret;
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index d4aff5e..78a4b15 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -4106,8 +4106,9 @@
 [clinic start generated code]*/
 
 static int
-_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file, PyObject *protocol, int fix_imports)
-/*[clinic end generated code: output=56e229f3b1f4332f input=b8cdeb7e3f5ee674]*/
+_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file,
+                              PyObject *protocol, int fix_imports)
+/*[clinic end generated code: output=b5f31078dab17fb0 input=b8cdeb7e3f5ee674]*/
 {
     _Py_IDENTIFIER(persistent_id);
     _Py_IDENTIFIER(dispatch_table);
@@ -6302,8 +6303,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-_pickle_Unpickler_find_class_impl(UnpicklerObject *self, PyObject *module_name, PyObject *global_name)
-/*[clinic end generated code: output=64c77437e088e188 input=e2e6a865de093ef4]*/
+_pickle_Unpickler_find_class_impl(UnpicklerObject *self,
+                                  PyObject *module_name,
+                                  PyObject *global_name)
+/*[clinic end generated code: output=becc08d7f9ed41e3 input=e2e6a865de093ef4]*/
 {
     PyObject *global;
     PyObject *modules_dict;
@@ -6514,8 +6517,10 @@
 [clinic start generated code]*/
 
 static int
-_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file, int fix_imports, const char *encoding, const char *errors)
-/*[clinic end generated code: output=b9ed1d84d315f3b5 input=30b4dc9e976b890c]*/
+_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file,
+                                int fix_imports, const char *encoding,
+                                const char *errors)
+/*[clinic end generated code: output=e2c8ce748edc57b0 input=30b4dc9e976b890c]*/
 {
     _Py_IDENTIFIER(persistent_load);
 
@@ -6943,8 +6948,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_pickle_dump_impl(PyModuleDef *module, PyObject *obj, PyObject *file, PyObject *protocol, int fix_imports)
-/*[clinic end generated code: output=a606e626d553850d input=e9e5fdd48de92eae]*/
+_pickle_dump_impl(PyModuleDef *module, PyObject *obj, PyObject *file,
+                  PyObject *protocol, int fix_imports)
+/*[clinic end generated code: output=0de7dff89c406816 input=e9e5fdd48de92eae]*/
 {
     PicklerObject *pickler = _Pickler_New();
 
@@ -6996,8 +7002,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_pickle_dumps_impl(PyModuleDef *module, PyObject *obj, PyObject *protocol, int fix_imports)
-/*[clinic end generated code: output=777f0deefe5b88ee input=293dbeda181580b7]*/
+_pickle_dumps_impl(PyModuleDef *module, PyObject *obj, PyObject *protocol,
+                   int fix_imports)
+/*[clinic end generated code: output=daa380db56fe07b9 input=293dbeda181580b7]*/
 {
     PyObject *result;
     PicklerObject *pickler = _Pickler_New();
@@ -7056,8 +7063,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_pickle_load_impl(PyModuleDef *module, PyObject *file, int fix_imports, const char *encoding, const char *errors)
-/*[clinic end generated code: output=568c61356c172654 input=da97372e38e510a6]*/
+_pickle_load_impl(PyModuleDef *module, PyObject *file, int fix_imports,
+                  const char *encoding, const char *errors)
+/*[clinic end generated code: output=798f1c57cb2b4eb1 input=da97372e38e510a6]*/
 {
     PyObject *result;
     UnpicklerObject *unpickler = _Unpickler_New();
@@ -7109,8 +7117,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_pickle_loads_impl(PyModuleDef *module, PyObject *data, int fix_imports, const char *encoding, const char *errors)
-/*[clinic end generated code: output=0b3845ad110b2522 input=f57f0fdaa2b4cb8b]*/
+_pickle_loads_impl(PyModuleDef *module, PyObject *data, int fix_imports,
+                   const char *encoding, const char *errors)
+/*[clinic end generated code: output=61e9cdb01e36a736 input=f57f0fdaa2b4cb8b]*/
 {
     PyObject *result;
     UnpicklerObject *unpickler = _Unpickler_New();
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 6e20aaa..49f837c 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1684,8 +1684,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-array_array_fromunicode_impl(arrayobject *self, Py_UNICODE *ustr, Py_ssize_clean_t ustr_length)
-/*[clinic end generated code: output=3b3f4f133bac725e input=56bcedb5ef70139f]*/
+array_array_fromunicode_impl(arrayobject *self, Py_UNICODE *ustr,
+                             Py_ssize_clean_t ustr_length)
+/*[clinic end generated code: output=ebb72fc16975e06d input=56bcedb5ef70139f]*/
 {
     char typecode;
 
@@ -1937,8 +1938,11 @@
 [clinic start generated code]*/
 
 static PyObject *
-array__array_reconstructor_impl(PyModuleDef *module, PyTypeObject *arraytype, int typecode, enum machine_format_code mformat_code, PyObject *items)
-/*[clinic end generated code: output=c51081ec91caf7e9 input=f72492708c0a1d50]*/
+array__array_reconstructor_impl(PyModuleDef *module, PyTypeObject *arraytype,
+                                int typecode,
+                                enum machine_format_code mformat_code,
+                                PyObject *items)
+/*[clinic end generated code: output=6ecbf0e8e4d92ab9 input=f72492708c0a1d50]*/
 {
     PyObject *converted_items;
     PyObject *result;
diff --git a/Modules/audioop.c b/Modules/audioop.c
index 7712e79..d49596f 100644
--- a/Modules/audioop.c
+++ b/Modules/audioop.c
@@ -407,8 +407,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_getsample_impl(PyModuleDef *module, Py_buffer *fragment, int width, Py_ssize_t index)
-/*[clinic end generated code: output=f4482497e6f6e78f input=88edbe2871393549]*/
+audioop_getsample_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       Py_ssize_t index)
+/*[clinic end generated code: output=3995e189fdc8ec16 input=88edbe2871393549]*/
 {
     int val;
 
@@ -593,8 +594,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_findfit_impl(PyModuleDef *module, Py_buffer *fragment, Py_buffer *reference)
-/*[clinic end generated code: output=505fd04d4244db31 input=62c305605e183c9a]*/
+audioop_findfit_impl(PyModuleDef *module, Py_buffer *fragment,
+                     Py_buffer *reference)
+/*[clinic end generated code: output=609eedf5d823d6dd input=62c305605e183c9a]*/
 {
     const short *cp1, *cp2;
     Py_ssize_t len1, len2;
@@ -661,8 +663,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_findfactor_impl(PyModuleDef *module, Py_buffer *fragment, Py_buffer *reference)
-/*[clinic end generated code: output=ddf35a1e57575ce4 input=816680301d012b21]*/
+audioop_findfactor_impl(PyModuleDef *module, Py_buffer *fragment,
+                        Py_buffer *reference)
+/*[clinic end generated code: output=5566a8c55de54f99 input=816680301d012b21]*/
 {
     const short *cp1, *cp2;
     Py_ssize_t len;
@@ -702,8 +705,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_findmax_impl(PyModuleDef *module, Py_buffer *fragment, Py_ssize_t length)
-/*[clinic end generated code: output=21d0c2a1e5655134 input=2f304801ed42383c]*/
+audioop_findmax_impl(PyModuleDef *module, Py_buffer *fragment,
+                     Py_ssize_t length)
+/*[clinic end generated code: output=01fe796fad2573bb input=2f304801ed42383c]*/
 {
     const short *cp1;
     Py_ssize_t len1;
@@ -896,8 +900,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_mul_impl(PyModuleDef *module, Py_buffer *fragment, int width, double factor)
-/*[clinic end generated code: output=a697ebbd5852d38f input=c726667baa157d3c]*/
+audioop_mul_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                 double factor)
+/*[clinic end generated code: output=1c7c31191ac86b10 input=c726667baa157d3c]*/
 {
     signed char *ncp;
     Py_ssize_t i;
@@ -937,8 +942,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_tomono_impl(PyModuleDef *module, Py_buffer *fragment, int width, double lfactor, double rfactor)
-/*[clinic end generated code: output=436e7710521661dd input=c4ec949b3f4dddfa]*/
+audioop_tomono_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                    double lfactor, double rfactor)
+/*[clinic end generated code: output=553f547c5e29e3b6 input=c4ec949b3f4dddfa]*/
 {
     signed char *cp, *ncp;
     Py_ssize_t len, i;
@@ -985,8 +991,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_tostereo_impl(PyModuleDef *module, Py_buffer *fragment, int width, double lfactor, double rfactor)
-/*[clinic end generated code: output=6ff50681c87f4c1c input=27b6395ebfdff37a]*/
+audioop_tostereo_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                      double lfactor, double rfactor)
+/*[clinic end generated code: output=697bb6ba41e9dd2c input=27b6395ebfdff37a]*/
 {
     signed char *ncp;
     Py_ssize_t i;
@@ -1032,8 +1039,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_add_impl(PyModuleDef *module, Py_buffer *fragment1, Py_buffer *fragment2, int width)
-/*[clinic end generated code: output=f9218bf9ea75c3f1 input=4a8d4bae4c1605c7]*/
+audioop_add_impl(PyModuleDef *module, Py_buffer *fragment1,
+                 Py_buffer *fragment2, int width)
+/*[clinic end generated code: output=fe6c12f143e0b027 input=4a8d4bae4c1605c7]*/
 {
     signed char *ncp;
     Py_ssize_t i;
@@ -1090,8 +1098,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_bias_impl(PyModuleDef *module, Py_buffer *fragment, int width, int bias)
-/*[clinic end generated code: output=8ec80b3f5d510a51 input=2b5cce5c3bb4838c]*/
+audioop_bias_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                  int bias)
+/*[clinic end generated code: output=ac1f4dda20a01c26 input=2b5cce5c3bb4838c]*/
 {
     signed char *ncp;
     Py_ssize_t i;
@@ -1217,8 +1226,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_lin2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width, int newwidth)
-/*[clinic end generated code: output=3f9468a74472a93e input=5ce08c8aa2f24d96]*/
+audioop_lin2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                     int newwidth)
+/*[clinic end generated code: output=cb6ca950d1df9898 input=5ce08c8aa2f24d96]*/
 {
     unsigned char *ncp;
     Py_ssize_t i, j;
@@ -1274,8 +1284,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width, int nchannels, int inrate, int outrate, PyObject *state, int weightA, int weightB)
-/*[clinic end generated code: output=5585dddc4b5ff236 input=aff3acdc94476191]*/
+audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                    int nchannels, int inrate, int outrate, PyObject *state,
+                    int weightA, int weightB)
+/*[clinic end generated code: output=59e1787bfa49b9d9 input=aff3acdc94476191]*/
 {
     char *cp, *ncp;
     Py_ssize_t len;
@@ -1601,8 +1613,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyObject *state)
-/*[clinic end generated code: output=4654c29d2731fafe input=12919d549b90c90a]*/
+audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       PyObject *state)
+/*[clinic end generated code: output=93f0996f592b5ce5 input=12919d549b90c90a]*/
 {
     signed char *ncp;
     Py_ssize_t i;
@@ -1723,8 +1736,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-audioop_adpcm2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyObject *state)
-/*[clinic end generated code: output=371965cdcc0aa69b input=f5221144f5ca9ef0]*/
+audioop_adpcm2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       PyObject *state)
+/*[clinic end generated code: output=236cf6dc2c829181 input=f5221144f5ca9ef0]*/
 {
     signed char *cp;
     signed char *ncp;
diff --git a/Modules/binascii.c b/Modules/binascii.c
index e54a8ba..4e4faa9 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -1381,8 +1381,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs, int istext, int header)
-/*[clinic end generated code: output=ff2991ba640fff3e input=7f2a9aaa008e92b2]*/
+binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs,
+                     int istext, int header)
+/*[clinic end generated code: output=a87ca9ccb94e2a9f input=7f2a9aaa008e92b2]*/
 {
     Py_ssize_t in, out;
     unsigned char *databuf, *odata;
diff --git a/Modules/cjkcodecs/clinic/multibytecodec.c.h b/Modules/cjkcodecs/clinic/multibytecodec.c.h
index 29b00ac..d2bad32 100644
--- a/Modules/cjkcodecs/clinic/multibytecodec.c.h
+++ b/Modules/cjkcodecs/clinic/multibytecodec.c.h
@@ -17,7 +17,9 @@
     {"encode", (PyCFunction)_multibytecodec_MultibyteCodec_encode, METH_VARARGS|METH_KEYWORDS, _multibytecodec_MultibyteCodec_encode__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteCodec_encode_impl(MultibyteCodecObject *self, PyObject *input, const char *errors);
+_multibytecodec_MultibyteCodec_encode_impl(MultibyteCodecObject *self,
+                                           PyObject *input,
+                                           const char *errors);
 
 static PyObject *
 _multibytecodec_MultibyteCodec_encode(MultibyteCodecObject *self, PyObject *args, PyObject *kwargs)
@@ -52,7 +54,9 @@
     {"decode", (PyCFunction)_multibytecodec_MultibyteCodec_decode, METH_VARARGS|METH_KEYWORDS, _multibytecodec_MultibyteCodec_decode__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteCodec_decode_impl(MultibyteCodecObject *self, Py_buffer *input, const char *errors);
+_multibytecodec_MultibyteCodec_decode_impl(MultibyteCodecObject *self,
+                                           Py_buffer *input,
+                                           const char *errors);
 
 static PyObject *
 _multibytecodec_MultibyteCodec_decode(MultibyteCodecObject *self, PyObject *args, PyObject *kwargs)
@@ -85,7 +89,9 @@
     {"encode", (PyCFunction)_multibytecodec_MultibyteIncrementalEncoder_encode, METH_VARARGS|METH_KEYWORDS, _multibytecodec_MultibyteIncrementalEncoder_encode__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteIncrementalEncoder_encode_impl(MultibyteIncrementalEncoderObject *self, PyObject *input, int final);
+_multibytecodec_MultibyteIncrementalEncoder_encode_impl(MultibyteIncrementalEncoderObject *self,
+                                                        PyObject *input,
+                                                        int final);
 
 static PyObject *
 _multibytecodec_MultibyteIncrementalEncoder_encode(MultibyteIncrementalEncoderObject *self, PyObject *args, PyObject *kwargs)
@@ -131,7 +137,9 @@
     {"decode", (PyCFunction)_multibytecodec_MultibyteIncrementalDecoder_decode, METH_VARARGS|METH_KEYWORDS, _multibytecodec_MultibyteIncrementalDecoder_decode__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteIncrementalDecoder_decode_impl(MultibyteIncrementalDecoderObject *self, Py_buffer *input, int final);
+_multibytecodec_MultibyteIncrementalDecoder_decode_impl(MultibyteIncrementalDecoderObject *self,
+                                                        Py_buffer *input,
+                                                        int final);
 
 static PyObject *
 _multibytecodec_MultibyteIncrementalDecoder_decode(MultibyteIncrementalDecoderObject *self, PyObject *args, PyObject *kwargs)
@@ -181,7 +189,8 @@
     {"read", (PyCFunction)_multibytecodec_MultibyteStreamReader_read, METH_VARARGS, _multibytecodec_MultibyteStreamReader_read__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_read_impl(MultibyteStreamReaderObject *self, PyObject *sizeobj);
+_multibytecodec_MultibyteStreamReader_read_impl(MultibyteStreamReaderObject *self,
+                                                PyObject *sizeobj);
 
 static PyObject *
 _multibytecodec_MultibyteStreamReader_read(MultibyteStreamReaderObject *self, PyObject *args)
@@ -208,7 +217,8 @@
     {"readline", (PyCFunction)_multibytecodec_MultibyteStreamReader_readline, METH_VARARGS, _multibytecodec_MultibyteStreamReader_readline__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_readline_impl(MultibyteStreamReaderObject *self, PyObject *sizeobj);
+_multibytecodec_MultibyteStreamReader_readline_impl(MultibyteStreamReaderObject *self,
+                                                    PyObject *sizeobj);
 
 static PyObject *
 _multibytecodec_MultibyteStreamReader_readline(MultibyteStreamReaderObject *self, PyObject *args)
@@ -235,7 +245,8 @@
     {"readlines", (PyCFunction)_multibytecodec_MultibyteStreamReader_readlines, METH_VARARGS, _multibytecodec_MultibyteStreamReader_readlines__doc__},
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_readlines_impl(MultibyteStreamReaderObject *self, PyObject *sizehintobj);
+_multibytecodec_MultibyteStreamReader_readlines_impl(MultibyteStreamReaderObject *self,
+                                                     PyObject *sizehintobj);
 
 static PyObject *
 _multibytecodec_MultibyteStreamReader_readlines(MultibyteStreamReaderObject *self, PyObject *args)
@@ -310,4 +321,4 @@
 
 #define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF    \
     {"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__},
-/*[clinic end generated code: output=0ea29cd57f7cbc1a input=a9049054013a1b77]*/
+/*[clinic end generated code: output=0fe582cb941024c1 input=a9049054013a1b77]*/
diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c
index 8cde6ad..70f7a21 100644
--- a/Modules/cjkcodecs/multibytecodec.c
+++ b/Modules/cjkcodecs/multibytecodec.c
@@ -555,8 +555,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteCodec_encode_impl(MultibyteCodecObject *self, PyObject *input, const char *errors)
-/*[clinic end generated code: output=a36bfa08783a0d0b input=252e7ee695867b2d]*/
+_multibytecodec_MultibyteCodec_encode_impl(MultibyteCodecObject *self,
+                                           PyObject *input,
+                                           const char *errors)
+/*[clinic end generated code: output=7b26652045ba56a9 input=252e7ee695867b2d]*/
 {
     MultibyteCodec_State state;
     PyObject *errorcb, *r, *ucvt;
@@ -622,8 +624,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteCodec_decode_impl(MultibyteCodecObject *self, Py_buffer *input, const char *errors)
-/*[clinic end generated code: output=4c8ee8b2931b014e input=37e1d9236e3ce8f3]*/
+_multibytecodec_MultibyteCodec_decode_impl(MultibyteCodecObject *self,
+                                           Py_buffer *input,
+                                           const char *errors)
+/*[clinic end generated code: output=ff419f65bad6cc77 input=37e1d9236e3ce8f3]*/
 {
     MultibyteCodec_State state;
     MultibyteDecodeBuffer buf;
@@ -884,8 +888,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteIncrementalEncoder_encode_impl(MultibyteIncrementalEncoderObject *self, PyObject *input, int final)
-/*[clinic end generated code: output=3cd8780c8a719bbf input=456b76d73e464661]*/
+_multibytecodec_MultibyteIncrementalEncoder_encode_impl(MultibyteIncrementalEncoderObject *self,
+                                                        PyObject *input,
+                                                        int final)
+/*[clinic end generated code: output=123361b6c505e2c1 input=456b76d73e464661]*/
 {
     return encoder_encode_stateful(STATEFUL_ECTX(self), input, final);
 }
@@ -1039,8 +1045,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteIncrementalDecoder_decode_impl(MultibyteIncrementalDecoderObject *self, Py_buffer *input, int final)
-/*[clinic end generated code: output=a0f3f92aa7303cf7 input=eb18c2f6e83589e1]*/
+_multibytecodec_MultibyteIncrementalDecoder_decode_impl(MultibyteIncrementalDecoderObject *self,
+                                                        Py_buffer *input,
+                                                        int final)
+/*[clinic end generated code: output=b9b9090e8a9ce2ba input=eb18c2f6e83589e1]*/
 {
     MultibyteDecodeBuffer buf;
     char *data, *wdata = NULL;
@@ -1360,8 +1368,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_read_impl(MultibyteStreamReaderObject *self, PyObject *sizeobj)
-/*[clinic end generated code: output=f298ea6e1bd2083c input=015b0d3ff2fca485]*/
+_multibytecodec_MultibyteStreamReader_read_impl(MultibyteStreamReaderObject *self,
+                                                PyObject *sizeobj)
+/*[clinic end generated code: output=35621eb75355d5b8 input=015b0d3ff2fca485]*/
 {
     Py_ssize_t size;
 
@@ -1388,8 +1397,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_readline_impl(MultibyteStreamReaderObject *self, PyObject *sizeobj)
-/*[clinic end generated code: output=e5ac302a6d0999de input=41ccc64f9bb0cec3]*/
+_multibytecodec_MultibyteStreamReader_readline_impl(MultibyteStreamReaderObject *self,
+                                                    PyObject *sizeobj)
+/*[clinic end generated code: output=4fbfaae1ed457a11 input=41ccc64f9bb0cec3]*/
 {
     Py_ssize_t size;
 
@@ -1416,8 +1426,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteStreamReader_readlines_impl(MultibyteStreamReaderObject *self, PyObject *sizehintobj)
-/*[clinic end generated code: output=68f024178b77cb0f input=54932f5d4d88e880]*/
+_multibytecodec_MultibyteStreamReader_readlines_impl(MultibyteStreamReaderObject *self,
+                                                     PyObject *sizehintobj)
+/*[clinic end generated code: output=e7c4310768ed2ad4 input=54932f5d4d88e880]*/
 {
     PyObject *r, *sr;
     Py_ssize_t sizehint;
@@ -1618,8 +1629,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteStreamWriter_write(MultibyteStreamWriterObject *self, PyObject *strobj)
-/*[clinic end generated code: output=44e9eb0db0374cb1 input=551dc4c018c10a2b]*/
+_multibytecodec_MultibyteStreamWriter_write(MultibyteStreamWriterObject *self,
+                                            PyObject *strobj)
+/*[clinic end generated code: output=e13ae841c895251e input=551dc4c018c10a2b]*/
 {
     if (mbstreamwriter_iwrite(self, strobj))
         return NULL;
@@ -1635,8 +1647,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_multibytecodec_MultibyteStreamWriter_writelines(MultibyteStreamWriterObject *self, PyObject *lines)
-/*[clinic end generated code: output=4facbb0638dde172 input=57797fe7008d4e96]*/
+_multibytecodec_MultibyteStreamWriter_writelines(MultibyteStreamWriterObject *self,
+                                                 PyObject *lines)
+/*[clinic end generated code: output=e5c4285ac8e7d522 input=57797fe7008d4e96]*/
 {
     PyObject *strobj;
     int i, r;
diff --git a/Modules/clinic/_bz2module.c.h b/Modules/clinic/_bz2module.c.h
index d118c39..7937fb6 100644
--- a/Modules/clinic/_bz2module.c.h
+++ b/Modules/clinic/_bz2module.c.h
@@ -117,7 +117,8 @@
     {"decompress", (PyCFunction)_bz2_BZ2Decompressor_decompress, METH_VARARGS|METH_KEYWORDS, _bz2_BZ2Decompressor_decompress__doc__},
 
 static PyObject *
-_bz2_BZ2Decompressor_decompress_impl(BZ2Decompressor *self, Py_buffer *data, Py_ssize_t max_length);
+_bz2_BZ2Decompressor_decompress_impl(BZ2Decompressor *self, Py_buffer *data,
+                                     Py_ssize_t max_length);
 
 static PyObject *
 _bz2_BZ2Decompressor_decompress(BZ2Decompressor *self, PyObject *args, PyObject *kwargs)
@@ -168,4 +169,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=3565d163a360af01 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=e8a48a949969c355 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h
index 7fb1b53..5e11742 100644
--- a/Modules/clinic/_cursesmodule.c.h
+++ b/Modules/clinic/_cursesmodule.c.h
@@ -24,7 +24,8 @@
     {"addch", (PyCFunction)curses_window_addch, METH_VARARGS, curses_window_addch__doc__},
 
 static PyObject *
-curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y, int x, PyObject *ch, int group_right_1, long attr);
+curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
+                         int x, PyObject *ch, int group_right_1, long attr);
 
 static PyObject *
 curses_window_addch(PyCursesWindowObject *self, PyObject *args)
@@ -67,4 +68,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=660ab0ae6d8fbdda input=a9049054013a1b77]*/
+/*[clinic end generated code: output=982b1e709577f3ec input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_dbmmodule.c.h b/Modules/clinic/_dbmmodule.c.h
index 784b74b..c5f4c5a 100644
--- a/Modules/clinic/_dbmmodule.c.h
+++ b/Modules/clinic/_dbmmodule.c.h
@@ -12,7 +12,8 @@
     {"get", (PyCFunction)dbm_dbm_get, METH_VARARGS, dbm_dbm_get__doc__},
 
 static PyObject *
-dbm_dbm_get_impl(dbmobject *dp, const char *key, Py_ssize_clean_t key_length, PyObject *default_value);
+dbm_dbm_get_impl(dbmobject *dp, const char *key, Py_ssize_clean_t key_length,
+                 PyObject *default_value);
 
 static PyObject *
 dbm_dbm_get(dbmobject *dp, PyObject *args)
@@ -50,7 +51,8 @@
     {"open", (PyCFunction)dbmopen, METH_VARARGS, dbmopen__doc__},
 
 static PyObject *
-dbmopen_impl(PyModuleDef *module, const char *filename, const char *flags, int mode);
+dbmopen_impl(PyModuleDef *module, const char *filename, const char *flags,
+             int mode);
 
 static PyObject *
 dbmopen(PyModuleDef *module, PyObject *args)
@@ -69,4 +71,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=78d62d1aa3ddd13c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d6ec55c6c5d0b19d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_lzmamodule.c.h b/Modules/clinic/_lzmamodule.c.h
index 131edd3..815dc90 100644
--- a/Modules/clinic/_lzmamodule.c.h
+++ b/Modules/clinic/_lzmamodule.c.h
@@ -84,7 +84,8 @@
     {"decompress", (PyCFunction)_lzma_LZMADecompressor_decompress, METH_VARARGS|METH_KEYWORDS, _lzma_LZMADecompressor_decompress__doc__},
 
 static PyObject *
-_lzma_LZMADecompressor_decompress_impl(Decompressor *self, Py_buffer *data, Py_ssize_t max_length);
+_lzma_LZMADecompressor_decompress_impl(Decompressor *self, Py_buffer *data,
+                                       Py_ssize_t max_length);
 
 static PyObject *
 _lzma_LZMADecompressor_decompress(Decompressor *self, PyObject *args, PyObject *kwargs)
@@ -132,7 +133,8 @@
 "For one-shot decompression, use the decompress() function instead.");
 
 static int
-_lzma_LZMADecompressor___init___impl(Decompressor *self, int format, PyObject *memlimit, PyObject *filters);
+_lzma_LZMADecompressor___init___impl(Decompressor *self, int format,
+                                     PyObject *memlimit, PyObject *filters);
 
 static int
 _lzma_LZMADecompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -229,7 +231,8 @@
     {"_decode_filter_properties", (PyCFunction)_lzma__decode_filter_properties, METH_VARARGS, _lzma__decode_filter_properties__doc__},
 
 static PyObject *
-_lzma__decode_filter_properties_impl(PyModuleDef *module, lzma_vli filter_id, Py_buffer *encoded_props);
+_lzma__decode_filter_properties_impl(PyModuleDef *module, lzma_vli filter_id,
+                                     Py_buffer *encoded_props);
 
 static PyObject *
 _lzma__decode_filter_properties(PyModuleDef *module, PyObject *args)
@@ -251,4 +254,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=ea7f2b2c4019fe86 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8981089cde080b54 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_pickle.c.h b/Modules/clinic/_pickle.c.h
index 975298c..c7fa5bf 100644
--- a/Modules/clinic/_pickle.c.h
+++ b/Modules/clinic/_pickle.c.h
@@ -85,7 +85,8 @@
 "2, so that the pickle data stream is readable with Python 2.");
 
 static int
-_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file, PyObject *protocol, int fix_imports);
+_pickle_Pickler___init___impl(PicklerObject *self, PyObject *file,
+                              PyObject *protocol, int fix_imports);
 
 static int
 _pickle_Pickler___init__(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -199,7 +200,9 @@
     {"find_class", (PyCFunction)_pickle_Unpickler_find_class, METH_VARARGS, _pickle_Unpickler_find_class__doc__},
 
 static PyObject *
-_pickle_Unpickler_find_class_impl(UnpicklerObject *self, PyObject *module_name, PyObject *global_name);
+_pickle_Unpickler_find_class_impl(UnpicklerObject *self,
+                                  PyObject *module_name,
+                                  PyObject *global_name);
 
 static PyObject *
 _pickle_Unpickler_find_class(UnpicklerObject *self, PyObject *args)
@@ -271,7 +274,9 @@
 "string instances as bytes objects.");
 
 static int
-_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file, int fix_imports, const char *encoding, const char *errors);
+_pickle_Unpickler___init___impl(UnpicklerObject *self, PyObject *file,
+                                int fix_imports, const char *encoding,
+                                const char *errors);
 
 static int
 _pickle_Unpickler___init__(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -377,7 +382,8 @@
     {"dump", (PyCFunction)_pickle_dump, METH_VARARGS|METH_KEYWORDS, _pickle_dump__doc__},
 
 static PyObject *
-_pickle_dump_impl(PyModuleDef *module, PyObject *obj, PyObject *file, PyObject *protocol, int fix_imports);
+_pickle_dump_impl(PyModuleDef *module, PyObject *obj, PyObject *file,
+                  PyObject *protocol, int fix_imports);
 
 static PyObject *
 _pickle_dump(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -421,7 +427,8 @@
     {"dumps", (PyCFunction)_pickle_dumps, METH_VARARGS|METH_KEYWORDS, _pickle_dumps__doc__},
 
 static PyObject *
-_pickle_dumps_impl(PyModuleDef *module, PyObject *obj, PyObject *protocol, int fix_imports);
+_pickle_dumps_impl(PyModuleDef *module, PyObject *obj, PyObject *protocol,
+                   int fix_imports);
 
 static PyObject *
 _pickle_dumps(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -475,7 +482,8 @@
     {"load", (PyCFunction)_pickle_load, METH_VARARGS|METH_KEYWORDS, _pickle_load__doc__},
 
 static PyObject *
-_pickle_load_impl(PyModuleDef *module, PyObject *file, int fix_imports, const char *encoding, const char *errors);
+_pickle_load_impl(PyModuleDef *module, PyObject *file, int fix_imports,
+                  const char *encoding, const char *errors);
 
 static PyObject *
 _pickle_load(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -521,7 +529,8 @@
     {"loads", (PyCFunction)_pickle_loads, METH_VARARGS|METH_KEYWORDS, _pickle_loads__doc__},
 
 static PyObject *
-_pickle_loads_impl(PyModuleDef *module, PyObject *data, int fix_imports, const char *encoding, const char *errors);
+_pickle_loads_impl(PyModuleDef *module, PyObject *data, int fix_imports,
+                   const char *encoding, const char *errors);
 
 static PyObject *
 _pickle_loads(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -542,4 +551,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=3aba79576e240c62 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=2c413ecc2ec74f7c input=a9049054013a1b77]*/
diff --git a/Modules/clinic/arraymodule.c.h b/Modules/clinic/arraymodule.c.h
index 5e66421..2e64aad 100644
--- a/Modules/clinic/arraymodule.c.h
+++ b/Modules/clinic/arraymodule.c.h
@@ -376,7 +376,8 @@
     {"fromunicode", (PyCFunction)array_array_fromunicode, METH_O, array_array_fromunicode__doc__},
 
 static PyObject *
-array_array_fromunicode_impl(arrayobject *self, Py_UNICODE *ustr, Py_ssize_clean_t ustr_length);
+array_array_fromunicode_impl(arrayobject *self, Py_UNICODE *ustr,
+                             Py_ssize_clean_t ustr_length);
 
 static PyObject *
 array_array_fromunicode(arrayobject *self, PyObject *arg)
@@ -446,7 +447,10 @@
     {"_array_reconstructor", (PyCFunction)array__array_reconstructor, METH_VARARGS, array__array_reconstructor__doc__},
 
 static PyObject *
-array__array_reconstructor_impl(PyModuleDef *module, PyTypeObject *arraytype, int typecode, enum machine_format_code mformat_code, PyObject *items);
+array__array_reconstructor_impl(PyModuleDef *module, PyTypeObject *arraytype,
+                                int typecode,
+                                enum machine_format_code mformat_code,
+                                PyObject *items);
 
 static PyObject *
 array__array_reconstructor(PyModuleDef *module, PyObject *args)
@@ -502,4 +506,4 @@
 
 #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF    \
     {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
-/*[clinic end generated code: output=a8fbe83c2026fa83 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=48e8198c8087cd00 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/audioop.c.h b/Modules/clinic/audioop.c.h
index 40ef5e2..a58afda 100644
--- a/Modules/clinic/audioop.c.h
+++ b/Modules/clinic/audioop.c.h
@@ -12,7 +12,8 @@
     {"getsample", (PyCFunction)audioop_getsample, METH_VARARGS, audioop_getsample__doc__},
 
 static PyObject *
-audioop_getsample_impl(PyModuleDef *module, Py_buffer *fragment, int width, Py_ssize_t index);
+audioop_getsample_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       Py_ssize_t index);
 
 static PyObject *
 audioop_getsample(PyModuleDef *module, PyObject *args)
@@ -178,7 +179,8 @@
     {"findfit", (PyCFunction)audioop_findfit, METH_VARARGS, audioop_findfit__doc__},
 
 static PyObject *
-audioop_findfit_impl(PyModuleDef *module, Py_buffer *fragment, Py_buffer *reference);
+audioop_findfit_impl(PyModuleDef *module, Py_buffer *fragment,
+                     Py_buffer *reference);
 
 static PyObject *
 audioop_findfit(PyModuleDef *module, PyObject *args)
@@ -214,7 +216,8 @@
     {"findfactor", (PyCFunction)audioop_findfactor, METH_VARARGS, audioop_findfactor__doc__},
 
 static PyObject *
-audioop_findfactor_impl(PyModuleDef *module, Py_buffer *fragment, Py_buffer *reference);
+audioop_findfactor_impl(PyModuleDef *module, Py_buffer *fragment,
+                        Py_buffer *reference);
 
 static PyObject *
 audioop_findfactor(PyModuleDef *module, PyObject *args)
@@ -250,7 +253,8 @@
     {"findmax", (PyCFunction)audioop_findmax, METH_VARARGS, audioop_findmax__doc__},
 
 static PyObject *
-audioop_findmax_impl(PyModuleDef *module, Py_buffer *fragment, Py_ssize_t length);
+audioop_findmax_impl(PyModuleDef *module, Py_buffer *fragment,
+                     Py_ssize_t length);
 
 static PyObject *
 audioop_findmax(PyModuleDef *module, PyObject *args)
@@ -382,7 +386,8 @@
     {"mul", (PyCFunction)audioop_mul, METH_VARARGS, audioop_mul__doc__},
 
 static PyObject *
-audioop_mul_impl(PyModuleDef *module, Py_buffer *fragment, int width, double factor);
+audioop_mul_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                 double factor);
 
 static PyObject *
 audioop_mul(PyModuleDef *module, PyObject *args)
@@ -416,7 +421,8 @@
     {"tomono", (PyCFunction)audioop_tomono, METH_VARARGS, audioop_tomono__doc__},
 
 static PyObject *
-audioop_tomono_impl(PyModuleDef *module, Py_buffer *fragment, int width, double lfactor, double rfactor);
+audioop_tomono_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                    double lfactor, double rfactor);
 
 static PyObject *
 audioop_tomono(PyModuleDef *module, PyObject *args)
@@ -451,7 +457,8 @@
     {"tostereo", (PyCFunction)audioop_tostereo, METH_VARARGS, audioop_tostereo__doc__},
 
 static PyObject *
-audioop_tostereo_impl(PyModuleDef *module, Py_buffer *fragment, int width, double lfactor, double rfactor);
+audioop_tostereo_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                      double lfactor, double rfactor);
 
 static PyObject *
 audioop_tostereo(PyModuleDef *module, PyObject *args)
@@ -486,7 +493,8 @@
     {"add", (PyCFunction)audioop_add, METH_VARARGS, audioop_add__doc__},
 
 static PyObject *
-audioop_add_impl(PyModuleDef *module, Py_buffer *fragment1, Py_buffer *fragment2, int width);
+audioop_add_impl(PyModuleDef *module, Py_buffer *fragment1,
+                 Py_buffer *fragment2, int width);
 
 static PyObject *
 audioop_add(PyModuleDef *module, PyObject *args)
@@ -523,7 +531,8 @@
     {"bias", (PyCFunction)audioop_bias, METH_VARARGS, audioop_bias__doc__},
 
 static PyObject *
-audioop_bias_impl(PyModuleDef *module, Py_buffer *fragment, int width, int bias);
+audioop_bias_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                  int bias);
 
 static PyObject *
 audioop_bias(PyModuleDef *module, PyObject *args)
@@ -623,7 +632,8 @@
     {"lin2lin", (PyCFunction)audioop_lin2lin, METH_VARARGS, audioop_lin2lin__doc__},
 
 static PyObject *
-audioop_lin2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width, int newwidth);
+audioop_lin2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                     int newwidth);
 
 static PyObject *
 audioop_lin2lin(PyModuleDef *module, PyObject *args)
@@ -658,7 +668,9 @@
     {"ratecv", (PyCFunction)audioop_ratecv, METH_VARARGS, audioop_ratecv__doc__},
 
 static PyObject *
-audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width, int nchannels, int inrate, int outrate, PyObject *state, int weightA, int weightB);
+audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                    int nchannels, int inrate, int outrate, PyObject *state,
+                    int weightA, int weightB);
 
 static PyObject *
 audioop_ratecv(PyModuleDef *module, PyObject *args)
@@ -829,7 +841,8 @@
     {"lin2adpcm", (PyCFunction)audioop_lin2adpcm, METH_VARARGS, audioop_lin2adpcm__doc__},
 
 static PyObject *
-audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyObject *state);
+audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       PyObject *state);
 
 static PyObject *
 audioop_lin2adpcm(PyModuleDef *module, PyObject *args)
@@ -863,7 +876,8 @@
     {"adpcm2lin", (PyCFunction)audioop_adpcm2lin, METH_VARARGS, audioop_adpcm2lin__doc__},
 
 static PyObject *
-audioop_adpcm2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyObject *state);
+audioop_adpcm2lin_impl(PyModuleDef *module, Py_buffer *fragment, int width,
+                       PyObject *state);
 
 static PyObject *
 audioop_adpcm2lin(PyModuleDef *module, PyObject *args)
@@ -886,4 +900,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=be840bba5d40c2ce input=a9049054013a1b77]*/
+/*[clinic end generated code: output=9b01aafef50425ae input=a9049054013a1b77]*/
diff --git a/Modules/clinic/binascii.c.h b/Modules/clinic/binascii.c.h
index 0e42c36..d7c2ee6 100644
--- a/Modules/clinic/binascii.c.h
+++ b/Modules/clinic/binascii.c.h
@@ -518,7 +518,8 @@
     {"b2a_qp", (PyCFunction)binascii_b2a_qp, METH_VARARGS|METH_KEYWORDS, binascii_b2a_qp__doc__},
 
 static PyObject *
-binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs, int istext, int header);
+binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs,
+                     int istext, int header);
 
 static PyObject *
 binascii_b2a_qp(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -543,4 +544,4 @@
 
     return return_value;
 }
-/*[clinic end generated code: output=31ccbd5fddc8fd75 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=175025a8a94fbdd1 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/fcntlmodule.c.h b/Modules/clinic/fcntlmodule.c.h
index d2c36ba..2a1f8aa 100644
--- a/Modules/clinic/fcntlmodule.c.h
+++ b/Modules/clinic/fcntlmodule.c.h
@@ -79,7 +79,8 @@
     {"ioctl", (PyCFunction)fcntl_ioctl, METH_VARARGS, fcntl_ioctl__doc__},
 
 static PyObject *
-fcntl_ioctl_impl(PyModuleDef *module, int fd, unsigned int code, PyObject *ob_arg, int mutate_arg);
+fcntl_ioctl_impl(PyModuleDef *module, int fd, unsigned int code,
+                 PyObject *ob_arg, int mutate_arg);
 
 static PyObject *
 fcntl_ioctl(PyModuleDef *module, PyObject *args)
@@ -163,7 +164,8 @@
     {"lockf", (PyCFunction)fcntl_lockf, METH_VARARGS, fcntl_lockf__doc__},
 
 static PyObject *
-fcntl_lockf_impl(PyModuleDef *module, int fd, int code, PyObject *lenobj, PyObject *startobj, int whence);
+fcntl_lockf_impl(PyModuleDef *module, int fd, int code, PyObject *lenobj,
+                 PyObject *startobj, int whence);
 
 static PyObject *
 fcntl_lockf(PyModuleDef *module, PyObject *args)
@@ -184,4 +186,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=ec482672292aab0c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=badaa968eb04410d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h
index 3f33709..fc79f57 100644
--- a/Modules/clinic/posixmodule.c.h
+++ b/Modules/clinic/posixmodule.c.h
@@ -30,7 +30,8 @@
     {"stat", (PyCFunction)os_stat, METH_VARARGS|METH_KEYWORDS, os_stat__doc__},
 
 static PyObject *
-os_stat_impl(PyModuleDef *module, path_t *path, int dir_fd, int follow_symlinks);
+os_stat_impl(PyModuleDef *module, path_t *path, int dir_fd,
+             int follow_symlinks);
 
 static PyObject *
 os_stat(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -126,7 +127,8 @@
     {"access", (PyCFunction)os_access, METH_VARARGS|METH_KEYWORDS, os_access__doc__},
 
 static int
-os_access_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd, int effective_ids, int follow_symlinks);
+os_access_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd,
+               int effective_ids, int follow_symlinks);
 
 static PyObject *
 os_access(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -319,7 +321,8 @@
     {"chmod", (PyCFunction)os_chmod, METH_VARARGS|METH_KEYWORDS, os_chmod__doc__},
 
 static PyObject *
-os_chmod_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd, int follow_symlinks);
+os_chmod_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd,
+              int follow_symlinks);
 
 static PyObject *
 os_chmod(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -438,7 +441,8 @@
     {"chflags", (PyCFunction)os_chflags, METH_VARARGS|METH_KEYWORDS, os_chflags__doc__},
 
 static PyObject *
-os_chflags_impl(PyModuleDef *module, path_t *path, unsigned long flags, int follow_symlinks);
+os_chflags_impl(PyModuleDef *module, path_t *path, unsigned long flags,
+                int follow_symlinks);
 
 static PyObject *
 os_chflags(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -664,7 +668,8 @@
     {"chown", (PyCFunction)os_chown, METH_VARARGS|METH_KEYWORDS, os_chown__doc__},
 
 static PyObject *
-os_chown_impl(PyModuleDef *module, path_t *path, uid_t uid, gid_t gid, int dir_fd, int follow_symlinks);
+os_chown_impl(PyModuleDef *module, path_t *path, uid_t uid, gid_t gid,
+              int dir_fd, int follow_symlinks);
 
 static PyObject *
 os_chown(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -829,7 +834,8 @@
     {"link", (PyCFunction)os_link, METH_VARARGS|METH_KEYWORDS, os_link__doc__},
 
 static PyObject *
-os_link_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd, int follow_symlinks);
+os_link_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd,
+             int dst_dir_fd, int follow_symlinks);
 
 static PyObject *
 os_link(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -1125,7 +1131,8 @@
     {"rename", (PyCFunction)os_rename, METH_VARARGS|METH_KEYWORDS, os_rename__doc__},
 
 static PyObject *
-os_rename_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd);
+os_rename_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd,
+               int dst_dir_fd);
 
 static PyObject *
 os_rename(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -1168,7 +1175,8 @@
     {"replace", (PyCFunction)os_replace, METH_VARARGS|METH_KEYWORDS, os_replace__doc__},
 
 static PyObject *
-os_replace_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd);
+os_replace_impl(PyModuleDef *module, path_t *src, path_t *dst,
+                int src_dir_fd, int dst_dir_fd);
 
 static PyObject *
 os_replace(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -1472,7 +1480,8 @@
     {"utime", (PyCFunction)os_utime, METH_VARARGS|METH_KEYWORDS, os_utime__doc__},
 
 static PyObject *
-os_utime_impl(PyModuleDef *module, path_t *path, PyObject *times, PyObject *ns, int dir_fd, int follow_symlinks);
+os_utime_impl(PyModuleDef *module, path_t *path, PyObject *times,
+              PyObject *ns, int dir_fd, int follow_symlinks);
 
 static PyObject *
 os_utime(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -1587,7 +1596,8 @@
     {"execve", (PyCFunction)os_execve, METH_VARARGS|METH_KEYWORDS, os_execve__doc__},
 
 static PyObject *
-os_execve_impl(PyModuleDef *module, path_t *path, PyObject *argv, PyObject *env);
+os_execve_impl(PyModuleDef *module, path_t *path, PyObject *argv,
+               PyObject *env);
 
 static PyObject *
 os_execve(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -1678,7 +1688,8 @@
     {"spawnve", (PyCFunction)os_spawnve, METH_VARARGS, os_spawnve__doc__},
 
 static PyObject *
-os_spawnve_impl(PyModuleDef *module, int mode, PyObject *path, PyObject *argv, PyObject *env);
+os_spawnve_impl(PyModuleDef *module, int mode, PyObject *path,
+                PyObject *argv, PyObject *env);
 
 static PyObject *
 os_spawnve(PyModuleDef *module, PyObject *args)
@@ -1900,7 +1911,8 @@
     {"sched_setscheduler", (PyCFunction)os_sched_setscheduler, METH_VARARGS, os_sched_setscheduler__doc__},
 
 static PyObject *
-os_sched_setscheduler_impl(PyModuleDef *module, pid_t pid, int policy, struct sched_param *param);
+os_sched_setscheduler_impl(PyModuleDef *module, pid_t pid, int policy,
+                           struct sched_param *param);
 
 static PyObject *
 os_sched_setscheduler(PyModuleDef *module, PyObject *args)
@@ -1972,7 +1984,8 @@
     {"sched_setparam", (PyCFunction)os_sched_setparam, METH_VARARGS, os_sched_setparam__doc__},
 
 static PyObject *
-os_sched_setparam_impl(PyModuleDef *module, pid_t pid, struct sched_param *param);
+os_sched_setparam_impl(PyModuleDef *module, pid_t pid,
+                       struct sched_param *param);
 
 static PyObject *
 os_sched_setparam(PyModuleDef *module, PyObject *args)
@@ -2972,7 +2985,8 @@
     {"symlink", (PyCFunction)os_symlink, METH_VARARGS|METH_KEYWORDS, os_symlink__doc__},
 
 static PyObject *
-os_symlink_impl(PyModuleDef *module, path_t *src, path_t *dst, int target_is_directory, int dir_fd);
+os_symlink_impl(PyModuleDef *module, path_t *src, path_t *dst,
+                int target_is_directory, int dir_fd);
 
 static PyObject *
 os_symlink(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -3194,7 +3208,8 @@
     {"open", (PyCFunction)os_open, METH_VARARGS|METH_KEYWORDS, os_open__doc__},
 
 static int
-os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode, int dir_fd);
+os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode,
+             int dir_fd);
 
 static PyObject *
 os_open(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -3756,7 +3771,8 @@
     {"pwrite", (PyCFunction)os_pwrite, METH_VARARGS, os_pwrite__doc__},
 
 static Py_ssize_t
-os_pwrite_impl(PyModuleDef *module, int fd, Py_buffer *buffer, Py_off_t offset);
+os_pwrite_impl(PyModuleDef *module, int fd, Py_buffer *buffer,
+               Py_off_t offset);
 
 static PyObject *
 os_pwrite(PyModuleDef *module, PyObject *args)
@@ -3853,7 +3869,8 @@
     {"mknod", (PyCFunction)os_mknod, METH_VARARGS|METH_KEYWORDS, os_mknod__doc__},
 
 static PyObject *
-os_mknod_impl(PyModuleDef *module, path_t *path, int mode, dev_t device, int dir_fd);
+os_mknod_impl(PyModuleDef *module, path_t *path, int mode, dev_t device,
+              int dir_fd);
 
 static PyObject *
 os_mknod(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -4077,7 +4094,8 @@
     {"posix_fallocate", (PyCFunction)os_posix_fallocate, METH_VARARGS, os_posix_fallocate__doc__},
 
 static PyObject *
-os_posix_fallocate_impl(PyModuleDef *module, int fd, Py_off_t offset, Py_off_t length);
+os_posix_fallocate_impl(PyModuleDef *module, int fd, Py_off_t offset,
+                        Py_off_t length);
 
 static PyObject *
 os_posix_fallocate(PyModuleDef *module, PyObject *args)
@@ -4119,7 +4137,8 @@
     {"posix_fadvise", (PyCFunction)os_posix_fadvise, METH_VARARGS, os_posix_fadvise__doc__},
 
 static PyObject *
-os_posix_fadvise_impl(PyModuleDef *module, int fd, Py_off_t offset, Py_off_t length, int advice);
+os_posix_fadvise_impl(PyModuleDef *module, int fd, Py_off_t offset,
+                      Py_off_t length, int advice);
 
 static PyObject *
 os_posix_fadvise(PyModuleDef *module, PyObject *args)
@@ -5041,7 +5060,8 @@
     {"getxattr", (PyCFunction)os_getxattr, METH_VARARGS|METH_KEYWORDS, os_getxattr__doc__},
 
 static PyObject *
-os_getxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, int follow_symlinks);
+os_getxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                 int follow_symlinks);
 
 static PyObject *
 os_getxattr(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -5087,7 +5107,8 @@
     {"setxattr", (PyCFunction)os_setxattr, METH_VARARGS|METH_KEYWORDS, os_setxattr__doc__},
 
 static PyObject *
-os_setxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, Py_buffer *value, int flags, int follow_symlinks);
+os_setxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                 Py_buffer *value, int flags, int follow_symlinks);
 
 static PyObject *
 os_setxattr(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -5137,7 +5158,8 @@
     {"removexattr", (PyCFunction)os_removexattr, METH_VARARGS|METH_KEYWORDS, os_removexattr__doc__},
 
 static PyObject *
-os_removexattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, int follow_symlinks);
+os_removexattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                    int follow_symlinks);
 
 static PyObject *
 os_removexattr(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -5363,7 +5385,8 @@
     {"set_handle_inheritable", (PyCFunction)os_set_handle_inheritable, METH_VARARGS, os_set_handle_inheritable__doc__},
 
 static PyObject *
-os_set_handle_inheritable_impl(PyModuleDef *module, Py_intptr_t handle, int inheritable);
+os_set_handle_inheritable_impl(PyModuleDef *module, Py_intptr_t handle,
+                               int inheritable);
 
 static PyObject *
 os_set_handle_inheritable(PyModuleDef *module, PyObject *args)
@@ -5847,4 +5870,4 @@
 #ifndef OS_SET_HANDLE_INHERITABLE_METHODDEF
     #define OS_SET_HANDLE_INHERITABLE_METHODDEF
 #endif /* !defined(OS_SET_HANDLE_INHERITABLE_METHODDEF) */
-/*[clinic end generated code: output=22f405f79f87ba20 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=0e3fb3bb5df25fea input=a9049054013a1b77]*/
diff --git a/Modules/clinic/pyexpat.c.h b/Modules/clinic/pyexpat.c.h
index 707cc0c..ba5c380 100644
--- a/Modules/clinic/pyexpat.c.h
+++ b/Modules/clinic/pyexpat.c.h
@@ -14,7 +14,8 @@
     {"Parse", (PyCFunction)pyexpat_xmlparser_Parse, METH_VARARGS, pyexpat_xmlparser_Parse__doc__},
 
 static PyObject *
-pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data, int isFinal);
+pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data,
+                             int isFinal);
 
 static PyObject *
 pyexpat_xmlparser_Parse(xmlparseobject *self, PyObject *args)
@@ -119,7 +120,9 @@
     {"ExternalEntityParserCreate", (PyCFunction)pyexpat_xmlparser_ExternalEntityParserCreate, METH_VARARGS, pyexpat_xmlparser_ExternalEntityParserCreate__doc__},
 
 static PyObject *
-pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self, const char *context, const char *encoding);
+pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
+                                                  const char *context,
+                                                  const char *encoding);
 
 static PyObject *
 pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
@@ -235,7 +238,8 @@
     {"ParserCreate", (PyCFunction)pyexpat_ParserCreate, METH_VARARGS|METH_KEYWORDS, pyexpat_ParserCreate__doc__},
 
 static PyObject *
-pyexpat_ParserCreate_impl(PyModuleDef *module, const char *encoding, const char *namespace_separator, PyObject *intern);
+pyexpat_ParserCreate_impl(PyModuleDef *module, const char *encoding,
+                          const char *namespace_separator, PyObject *intern);
 
 static PyObject *
 pyexpat_ParserCreate(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -287,4 +291,4 @@
 #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
     #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
 #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
-/*[clinic end generated code: output=e5993de4e9dd2236 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=abdf05a21dae98c7 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/unicodedata.c.h b/Modules/clinic/unicodedata.c.h
index 4934e84..99cc369 100644
--- a/Modules/clinic/unicodedata.c.h
+++ b/Modules/clinic/unicodedata.c.h
@@ -16,7 +16,9 @@
     {"decimal", (PyCFunction)unicodedata_UCD_decimal, METH_VARARGS, unicodedata_UCD_decimal__doc__},
 
 static PyObject *
-unicodedata_UCD_decimal_impl(PreviousDBVersion *self, PyUnicodeObject *unichr, PyObject *default_value);
+unicodedata_UCD_decimal_impl(PreviousDBVersion *self,
+                             PyUnicodeObject *unichr,
+                             PyObject *default_value);
 
 static PyObject *
 unicodedata_UCD_decimal(PreviousDBVersion *self, PyObject *args)
@@ -34,4 +36,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=15b82651419cc823 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=33b488251c4fd143 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/zlibmodule.c.h b/Modules/clinic/zlibmodule.c.h
index 2fb4809..61bcdc4 100644
--- a/Modules/clinic/zlibmodule.c.h
+++ b/Modules/clinic/zlibmodule.c.h
@@ -57,7 +57,8 @@
     {"decompress", (PyCFunction)zlib_decompress, METH_VARARGS, zlib_decompress__doc__},
 
 static PyObject *
-zlib_decompress_impl(PyModuleDef *module, Py_buffer *data, int wbits, unsigned int bufsize);
+zlib_decompress_impl(PyModuleDef *module, Py_buffer *data, int wbits,
+                     unsigned int bufsize);
 
 static PyObject *
 zlib_decompress(PyModuleDef *module, PyObject *args)
@@ -111,7 +112,8 @@
     {"compressobj", (PyCFunction)zlib_compressobj, METH_VARARGS|METH_KEYWORDS, zlib_compressobj__doc__},
 
 static PyObject *
-zlib_compressobj_impl(PyModuleDef *module, int level, int method, int wbits, int memLevel, int strategy, Py_buffer *zdict);
+zlib_compressobj_impl(PyModuleDef *module, int level, int method, int wbits,
+                      int memLevel, int strategy, Py_buffer *zdict);
 
 static PyObject *
 zlib_compressobj(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -235,7 +237,8 @@
     {"decompress", (PyCFunction)zlib_Decompress_decompress, METH_VARARGS, zlib_Decompress_decompress__doc__},
 
 static PyObject *
-zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length);
+zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data,
+                                unsigned int max_length);
 
 static PyObject *
 zlib_Decompress_decompress(compobject *self, PyObject *args)
@@ -446,4 +449,4 @@
 #ifndef ZLIB_COMPRESS_COPY_METHODDEF
     #define ZLIB_COMPRESS_COPY_METHODDEF
 #endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */
-/*[clinic end generated code: output=0743b1aa908f0b68 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=6cdeb624bebfe11f input=a9049054013a1b77]*/
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index cabff06..97ff07c 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -146,8 +146,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-fcntl_ioctl_impl(PyModuleDef *module, int fd, unsigned int code, PyObject *ob_arg, int mutate_arg)
-/*[clinic end generated code: output=ad47738c118622bf input=ede70c433cccbbb2]*/
+fcntl_ioctl_impl(PyModuleDef *module, int fd, unsigned int code,
+                 PyObject *ob_arg, int mutate_arg)
+/*[clinic end generated code: output=102faa0f7ebe2210 input=ede70c433cccbbb2]*/
 {
 #define IOCTL_BUFSZ 1024
     /* We use the unsigned non-checked 'I' format for the 'code' parameter
@@ -357,8 +358,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-fcntl_lockf_impl(PyModuleDef *module, int fd, int code, PyObject *lenobj, PyObject *startobj, int whence)
-/*[clinic end generated code: output=5536df2892bf3ce9 input=9c594391de821f24]*/
+fcntl_lockf_impl(PyModuleDef *module, int fd, int code, PyObject *lenobj,
+                 PyObject *startobj, int whence)
+/*[clinic end generated code: output=31af35eba08b9af7 input=9c594391de821f24]*/
 {
     int ret;
 
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 23c0068..89fb08b 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2476,8 +2476,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_stat_impl(PyModuleDef *module, path_t *path, int dir_fd, int follow_symlinks)
-/*[clinic end generated code: output=708c225f94fcfc8e input=099d356c306fa24a]*/
+os_stat_impl(PyModuleDef *module, path_t *path, int dir_fd,
+             int follow_symlinks)
+/*[clinic end generated code: output=e4f7569f95d523ca input=099d356c306fa24a]*/
 {
     return posix_do_stat("stat", path, dir_fd, follow_symlinks);
 }
@@ -2547,8 +2548,9 @@
 [clinic start generated code]*/
 
 static int
-os_access_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd, int effective_ids, int follow_symlinks)
-/*[clinic end generated code: output=f9e734db3d88b767 input=b75a756797af45ec]*/
+os_access_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd,
+               int effective_ids, int follow_symlinks)
+/*[clinic end generated code: output=abaa53340210088d input=b75a756797af45ec]*/
 {
     int return_value;
 
@@ -2775,8 +2777,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_chmod_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd, int follow_symlinks)
-/*[clinic end generated code: output=96063c976f23106a input=7f1618e5e15cc196]*/
+os_chmod_impl(PyModuleDef *module, path_t *path, int mode, int dir_fd,
+              int follow_symlinks)
+/*[clinic end generated code: output=05e7f73b1a843ba2 input=7f1618e5e15cc196]*/
 {
     int result;
 
@@ -2956,8 +2959,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_chflags_impl(PyModuleDef *module, path_t *path, unsigned long flags, int follow_symlinks)
-/*[clinic end generated code: output=9e5f9417afc20c4b input=0327e29feb876236]*/
+os_chflags_impl(PyModuleDef *module, path_t *path, unsigned long flags,
+                int follow_symlinks)
+/*[clinic end generated code: output=ff2d6e73534a95b9 input=0327e29feb876236]*/
 {
     int result;
 
@@ -3136,8 +3140,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_chown_impl(PyModuleDef *module, path_t *path, uid_t uid, gid_t gid, int dir_fd, int follow_symlinks)
-/*[clinic end generated code: output=59a8db91897fb46c input=a61cc35574814d5d]*/
+os_chown_impl(PyModuleDef *module, path_t *path, uid_t uid, gid_t gid,
+              int dir_fd, int follow_symlinks)
+/*[clinic end generated code: output=e0a4559f394dbd91 input=a61cc35574814d5d]*/
 {
     int result;
 
@@ -3365,8 +3370,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_link_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd, int follow_symlinks)
-/*[clinic end generated code: output=c0a9ded8111d2a79 input=b0095ebbcbaa7e04]*/
+os_link_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd,
+             int dst_dir_fd, int follow_symlinks)
+/*[clinic end generated code: output=f47a7e88f7b391b6 input=b0095ebbcbaa7e04]*/
 {
 #ifdef MS_WINDOWS
     BOOL result;
@@ -4162,8 +4168,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_rename_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd)
-/*[clinic end generated code: output=1bb520bf2fad186d input=faa61c847912c850]*/
+os_rename_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd,
+               int dst_dir_fd)
+/*[clinic end generated code: output=08033bb2ec27fb5f input=faa61c847912c850]*/
 {
     return internal_rename(src, dst, src_dir_fd, dst_dir_fd, 0);
 }
@@ -4182,8 +4189,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_replace_impl(PyModuleDef *module, path_t *src, path_t *dst, int src_dir_fd, int dst_dir_fd)
-/*[clinic end generated code: output=aa9ddad55fdef8e3 input=25515dfb107c8421]*/
+os_replace_impl(PyModuleDef *module, path_t *src, path_t *dst,
+                int src_dir_fd, int dst_dir_fd)
+/*[clinic end generated code: output=131d012eed8d3b8b input=25515dfb107c8421]*/
 {
     return internal_rename(src, dst, src_dir_fd, dst_dir_fd, 1);
 }
@@ -4697,8 +4705,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_utime_impl(PyModuleDef *module, path_t *path, PyObject *times, PyObject *ns, int dir_fd, int follow_symlinks)
-/*[clinic end generated code: output=c52d8fd0d1067f0b input=1f18c17d5941aa82]*/
+os_utime_impl(PyModuleDef *module, path_t *path, PyObject *times,
+              PyObject *ns, int dir_fd, int follow_symlinks)
+/*[clinic end generated code: output=31f3434e560ba2f0 input=1f18c17d5941aa82]*/
 {
 #ifdef MS_WINDOWS
     HANDLE hFile;
@@ -5072,8 +5081,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_execve_impl(PyModuleDef *module, path_t *path, PyObject *argv, PyObject *env)
-/*[clinic end generated code: output=7758d4f230d8aac6 input=626804fa092606d9]*/
+os_execve_impl(PyModuleDef *module, path_t *path, PyObject *argv,
+               PyObject *env)
+/*[clinic end generated code: output=181884fcdb21508e input=626804fa092606d9]*/
 {
     char **argvlist = NULL;
     char **envlist;
@@ -5219,8 +5229,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_spawnve_impl(PyModuleDef *module, int mode, PyObject *path, PyObject *argv, PyObject *env)
-/*[clinic end generated code: output=1c52955789461be8 input=02362fd937963f8f]*/
+os_spawnve_impl(PyModuleDef *module, int mode, PyObject *path,
+                PyObject *argv, PyObject *env)
+/*[clinic end generated code: output=e7f5f0703610531f input=02362fd937963f8f]*/
 {
     char *path_char;
     char **argvlist;
@@ -5521,8 +5532,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_sched_setscheduler_impl(PyModuleDef *module, pid_t pid, int policy, struct sched_param *param)
-/*[clinic end generated code: output=97f40f8384e554b0 input=c581f9469a5327dd]*/
+os_sched_setscheduler_impl(PyModuleDef *module, pid_t pid, int policy,
+                           struct sched_param *param)
+/*[clinic end generated code: output=37053e5c528c35c9 input=c581f9469a5327dd]*/
 {
     /*
     ** sched_setscheduler() returns 0 in Linux, but the previous
@@ -5584,8 +5596,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_sched_setparam_impl(PyModuleDef *module, pid_t pid, struct sched_param *param)
-/*[clinic end generated code: output=c6560b34395bb343 input=6b8d6dfcecdc21bd]*/
+os_sched_setparam_impl(PyModuleDef *module, pid_t pid,
+                       struct sched_param *param)
+/*[clinic end generated code: output=b7a3c589436cec9b input=6b8d6dfcecdc21bd]*/
 {
     if (sched_setparam(pid, param))
         return posix_error();
@@ -7353,8 +7366,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_symlink_impl(PyModuleDef *module, path_t *src, path_t *dst, int target_is_directory, int dir_fd)
-/*[clinic end generated code: output=11aa03f278bb2c8a input=e820ec4472547bc3]*/
+os_symlink_impl(PyModuleDef *module, path_t *src, path_t *dst,
+                int target_is_directory, int dir_fd)
+/*[clinic end generated code: output=a01b4bcf32403ccd input=e820ec4472547bc3]*/
 {
 #ifdef MS_WINDOWS
     DWORD result;
@@ -7677,8 +7691,9 @@
 [clinic start generated code]*/
 
 static int
-os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode, int dir_fd)
-/*[clinic end generated code: output=c95a64f0e62f199b input=ad8623b29acd2934]*/
+os_open_impl(PyModuleDef *module, path_t *path, int flags, int mode,
+             int dir_fd)
+/*[clinic end generated code: output=47e8cc63559f5ddd input=ad8623b29acd2934]*/
 {
     int fd;
     int async_err = 0;
@@ -8606,8 +8621,9 @@
 [clinic start generated code]*/
 
 static Py_ssize_t
-os_pwrite_impl(PyModuleDef *module, int fd, Py_buffer *buffer, Py_off_t offset)
-/*[clinic end generated code: output=95225f3b496feaf3 input=19903f1b3dd26377]*/
+os_pwrite_impl(PyModuleDef *module, int fd, Py_buffer *buffer,
+               Py_off_t offset)
+/*[clinic end generated code: output=93aabdb40e17d325 input=19903f1b3dd26377]*/
 {
     Py_ssize_t size;
     int async_err = 0;
@@ -8701,8 +8717,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_mknod_impl(PyModuleDef *module, path_t *path, int mode, dev_t device, int dir_fd)
-/*[clinic end generated code: output=f7f813e8847de12f input=ee44531551a4d83b]*/
+os_mknod_impl(PyModuleDef *module, path_t *path, int mode, dev_t device,
+              int dir_fd)
+/*[clinic end generated code: output=5151a8a9f754d272 input=ee44531551a4d83b]*/
 {
     int result;
     int async_err = 0;
@@ -8897,8 +8914,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_posix_fallocate_impl(PyModuleDef *module, int fd, Py_off_t offset, Py_off_t length)
-/*[clinic end generated code: output=8ae5f7837004d454 input=d7a2ef0ab2ca52fb]*/
+os_posix_fallocate_impl(PyModuleDef *module, int fd, Py_off_t offset,
+                        Py_off_t length)
+/*[clinic end generated code: output=7f6f87a8c751e1b4 input=d7a2ef0ab2ca52fb]*/
 {
     int result;
     int async_err = 0;
@@ -8938,8 +8956,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_posix_fadvise_impl(PyModuleDef *module, int fd, Py_off_t offset, Py_off_t length, int advice)
-/*[clinic end generated code: output=0e3f09f651661257 input=0fbe554edc2f04b5]*/
+os_posix_fadvise_impl(PyModuleDef *module, int fd, Py_off_t offset,
+                      Py_off_t length, int advice)
+/*[clinic end generated code: output=457ce6a67189e10d input=0fbe554edc2f04b5]*/
 {
     int result;
     int async_err = 0;
@@ -10785,8 +10804,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_getxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, int follow_symlinks)
-/*[clinic end generated code: output=d90086b314859f8b input=8c8ea3bab78d89c2]*/
+os_getxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                 int follow_symlinks)
+/*[clinic end generated code: output=cf2cede74bd5d412 input=8c8ea3bab78d89c2]*/
 {
     Py_ssize_t i;
     PyObject *buffer = NULL;
@@ -10856,8 +10876,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_setxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, Py_buffer *value, int flags, int follow_symlinks)
-/*[clinic end generated code: output=e3defa5c4b1ad0ae input=f0d26833992015c2]*/
+os_setxattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                 Py_buffer *value, int flags, int follow_symlinks)
+/*[clinic end generated code: output=1b395ef82880fea0 input=f0d26833992015c2]*/
 {
     ssize_t result;
 
@@ -10903,8 +10924,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_removexattr_impl(PyModuleDef *module, path_t *path, path_t *attribute, int follow_symlinks)
-/*[clinic end generated code: output=4870ec90249af875 input=cdb54834161e3329]*/
+os_removexattr_impl(PyModuleDef *module, path_t *path, path_t *attribute,
+                    int follow_symlinks)
+/*[clinic end generated code: output=f92bb39ab992650d input=cdb54834161e3329]*/
 {
     ssize_t result;
 
@@ -11293,8 +11315,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-os_set_handle_inheritable_impl(PyModuleDef *module, Py_intptr_t handle, int inheritable)
-/*[clinic end generated code: output=627aa5b158b69338 input=e64b2b2730469def]*/
+os_set_handle_inheritable_impl(PyModuleDef *module, Py_intptr_t handle,
+                               int inheritable)
+/*[clinic end generated code: output=d2e111a96c9eb296 input=e64b2b2730469def]*/
 {
     DWORD flags = inheritable ? HANDLE_FLAG_INHERIT : 0;
     if (!SetHandleInformation((HANDLE)handle, HANDLE_FLAG_INHERIT, flags)) {
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index 52064a5..706319e 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -716,8 +716,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data, int isFinal)
-/*[clinic end generated code: output=2d4dc77f4d434854 input=e37b81b8948ca7e0]*/
+pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyObject *data,
+                             int isFinal)
+/*[clinic end generated code: output=37e105d55645b0f2 input=e37b81b8948ca7e0]*/
 {
     const char *s;
     Py_ssize_t slen;
@@ -918,8 +919,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self, const char *context, const char *encoding)
-/*[clinic end generated code: output=942f300ed0e56054 input=283206575d960272]*/
+pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
+                                                  const char *context,
+                                                  const char *encoding)
+/*[clinic end generated code: output=535cda9d7a0fbcd6 input=283206575d960272]*/
 {
     xmlparseobject *new_parser;
     int i;
@@ -1551,8 +1554,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-pyexpat_ParserCreate_impl(PyModuleDef *module, const char *encoding, const char *namespace_separator, PyObject *intern)
-/*[clinic end generated code: output=b839b60992d8ce71 input=71b9f471aa6f8f86]*/
+pyexpat_ParserCreate_impl(PyModuleDef *module, const char *encoding,
+                          const char *namespace_separator, PyObject *intern)
+/*[clinic end generated code: output=81fccd233e1743a8 input=71b9f471aa6f8f86]*/
 {
     PyObject *result;
     int intern_decref = 0;
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index e89c92d..d6f3829 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -133,8 +133,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-unicodedata_UCD_decimal_impl(PreviousDBVersion *self, PyUnicodeObject *unichr, PyObject *default_value)
-/*[clinic end generated code: output=d285215533b58b28 input=c25c9d2b4de076b1]*/
+unicodedata_UCD_decimal_impl(PreviousDBVersion *self,
+                             PyUnicodeObject *unichr,
+                             PyObject *default_value)
+/*[clinic end generated code: output=bf853108f246ba19 input=c25c9d2b4de076b1]*/
 {
     int have_old = 0;
     long rc;
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 768c451..1997b40 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -280,8 +280,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-zlib_decompress_impl(PyModuleDef *module, Py_buffer *data, int wbits, unsigned int bufsize)
-/*[clinic end generated code: output=9e5464e72df9cb5f input=0f4b9abb7103f50e]*/
+zlib_decompress_impl(PyModuleDef *module, Py_buffer *data, int wbits,
+                     unsigned int bufsize)
+/*[clinic end generated code: output=444d0987f3429574 input=0f4b9abb7103f50e]*/
 {
     PyObject *result_str = NULL;
     Byte *input;
@@ -410,8 +411,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-zlib_compressobj_impl(PyModuleDef *module, int level, int method, int wbits, int memLevel, int strategy, Py_buffer *zdict)
-/*[clinic end generated code: output=89e5a6c1449caa9e input=b034847f8821f6af]*/
+zlib_compressobj_impl(PyModuleDef *module, int level, int method, int wbits,
+                      int memLevel, int strategy, Py_buffer *zdict)
+/*[clinic end generated code: output=2949bbb9a5723ccd input=b034847f8821f6af]*/
 {
     compobject *self = NULL;
     int err;
@@ -703,8 +705,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data, unsigned int max_length)
-/*[clinic end generated code: output=755cccc9087bfe55 input=02cfc047377cec86]*/
+zlib_Decompress_decompress_impl(compobject *self, Py_buffer *data,
+                                unsigned int max_length)
+/*[clinic end generated code: output=b82e2a2c19f5fe7b input=02cfc047377cec86]*/
 {
     int err;
     unsigned int old_length, length = DEF_BUF_SIZE;
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
index 1dce4c7..f055269 100644
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -1524,8 +1524,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytearray_translate_impl(PyByteArrayObject *self, PyObject *table, int group_right_1, PyObject *deletechars)
-/*[clinic end generated code: output=fa3ea4f9a8d58bc7 input=b749ad85f4860824]*/
+bytearray_translate_impl(PyByteArrayObject *self, PyObject *table,
+                         int group_right_1, PyObject *deletechars)
+/*[clinic end generated code: output=2bebc86a9a1ff083 input=b749ad85f4860824]*/
 {
     char *input, *output;
     const char *table_chars;
@@ -2142,8 +2143,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old, Py_buffer *new, Py_ssize_t count)
-/*[clinic end generated code: output=3fc105c8232d7b3f input=aa379d988637c7fb]*/
+bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old,
+                       Py_buffer *new, Py_ssize_t count)
+/*[clinic end generated code: output=d39884c4dc59412a input=aa379d988637c7fb]*/
 {
     return (PyObject *)replace((PyByteArrayObject *) self,
                                old->buf, old->len,
@@ -2165,8 +2167,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytearray_split_impl(PyByteArrayObject *self, PyObject *sep, Py_ssize_t maxsplit)
-/*[clinic end generated code: output=cdccf5a29dbf7eb5 input=24f82669f41bf523]*/
+bytearray_split_impl(PyByteArrayObject *self, PyObject *sep,
+                     Py_ssize_t maxsplit)
+/*[clinic end generated code: output=833e2cf385d9a04d input=24f82669f41bf523]*/
 {
     Py_ssize_t len = PyByteArray_GET_SIZE(self), n;
     const char *s = PyByteArray_AS_STRING(self), *sub;
@@ -2276,8 +2279,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep, Py_ssize_t maxsplit)
-/*[clinic end generated code: output=4d648cf3ac65c9e9 input=a68286e4dd692ffe]*/
+bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep,
+                      Py_ssize_t maxsplit)
+/*[clinic end generated code: output=a55e0b5a03cb6190 input=a68286e4dd692ffe]*/
 {
     Py_ssize_t len = PyByteArray_GET_SIZE(self), n;
     const char *s = PyByteArray_AS_STRING(self), *sub;
@@ -2730,8 +2734,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytearray_decode_impl(PyByteArrayObject *self, const char *encoding, const char *errors)
-/*[clinic end generated code: output=7e64e2cc91573b26 input=f28d8f903020257b]*/
+bytearray_decode_impl(PyByteArrayObject *self, const char *encoding,
+                      const char *errors)
+/*[clinic end generated code: output=f57d43f4a00b42c5 input=f28d8f903020257b]*/
 {
     if (encoding == NULL)
         encoding = PyUnicode_GetDefaultEncoding();
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index b6089dd..258db63 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -2113,8 +2113,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytes_translate_impl(PyBytesObject *self, PyObject *table, int group_right_1, PyObject *deletechars)
-/*[clinic end generated code: output=0ddd2cef4f4918f2 input=d8fa5519d7cc4be7]*/
+bytes_translate_impl(PyBytesObject *self, PyObject *table, int group_right_1,
+                     PyObject *deletechars)
+/*[clinic end generated code: output=233df850eb50bf8d input=d8fa5519d7cc4be7]*/
 {
     char *input, *output;
     Py_buffer table_view = {NULL, NULL};
@@ -2761,8 +2762,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytes_replace_impl(PyBytesObject*self, Py_buffer *old, Py_buffer *new, Py_ssize_t count)
-/*[clinic end generated code: output=3fe052c3c60cffc2 input=b2fbbf0bf04de8e5]*/
+bytes_replace_impl(PyBytesObject*self, Py_buffer *old, Py_buffer *new,
+                   Py_ssize_t count)
+/*[clinic end generated code: output=403dc9d7a83c5a1d input=b2fbbf0bf04de8e5]*/
 {
     return (PyObject *)replace((PyBytesObject *) self,
                                (const char *)old->buf, old->len,
@@ -2929,8 +2931,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-bytes_decode_impl(PyBytesObject*self, const char *encoding, const char *errors)
-/*[clinic end generated code: output=8038751c823b9038 input=958174769d2a40ca]*/
+bytes_decode_impl(PyBytesObject*self, const char *encoding,
+                  const char *errors)
+/*[clinic end generated code: output=2d2016ff8e0bb176 input=958174769d2a40ca]*/
 {
     return PyUnicode_FromEncodedObject((PyObject*)self, encoding, errors);
 }
diff --git a/Objects/clinic/bytearrayobject.c.h b/Objects/clinic/bytearrayobject.c.h
index 23c1609..787efc0 100644
--- a/Objects/clinic/bytearrayobject.c.h
+++ b/Objects/clinic/bytearrayobject.c.h
@@ -52,7 +52,8 @@
     {"translate", (PyCFunction)bytearray_translate, METH_VARARGS, bytearray_translate__doc__},
 
 static PyObject *
-bytearray_translate_impl(PyByteArrayObject *self, PyObject *table, int group_right_1, PyObject *deletechars);
+bytearray_translate_impl(PyByteArrayObject *self, PyObject *table,
+                         int group_right_1, PyObject *deletechars);
 
 static PyObject *
 bytearray_translate(PyByteArrayObject *self, PyObject *args)
@@ -140,7 +141,8 @@
     {"replace", (PyCFunction)bytearray_replace, METH_VARARGS, bytearray_replace__doc__},
 
 static PyObject *
-bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old, Py_buffer *new, Py_ssize_t count);
+bytearray_replace_impl(PyByteArrayObject *self, Py_buffer *old,
+                       Py_buffer *new, Py_ssize_t count);
 
 static PyObject *
 bytearray_replace(PyByteArrayObject *self, PyObject *args)
@@ -185,7 +187,8 @@
     {"split", (PyCFunction)bytearray_split, METH_VARARGS|METH_KEYWORDS, bytearray_split__doc__},
 
 static PyObject *
-bytearray_split_impl(PyByteArrayObject *self, PyObject *sep, Py_ssize_t maxsplit);
+bytearray_split_impl(PyByteArrayObject *self, PyObject *sep,
+                     Py_ssize_t maxsplit);
 
 static PyObject *
 bytearray_split(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
@@ -257,7 +260,8 @@
     {"rsplit", (PyCFunction)bytearray_rsplit, METH_VARARGS|METH_KEYWORDS, bytearray_rsplit__doc__},
 
 static PyObject *
-bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep, Py_ssize_t maxsplit);
+bytearray_rsplit_impl(PyByteArrayObject *self, PyObject *sep,
+                      Py_ssize_t maxsplit);
 
 static PyObject *
 bytearray_rsplit(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
@@ -546,7 +550,8 @@
     {"decode", (PyCFunction)bytearray_decode, METH_VARARGS|METH_KEYWORDS, bytearray_decode__doc__},
 
 static PyObject *
-bytearray_decode_impl(PyByteArrayObject *self, const char *encoding, const char *errors);
+bytearray_decode_impl(PyByteArrayObject *self, const char *encoding,
+                      const char *errors);
 
 static PyObject *
 bytearray_decode(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
@@ -705,4 +710,4 @@
 {
     return bytearray_sizeof_impl(self);
 }
-/*[clinic end generated code: output=d763876718a66fc3 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=2a698741a4f14047 input=a9049054013a1b77]*/
diff --git a/Objects/clinic/bytesobject.c.h b/Objects/clinic/bytesobject.c.h
index 5f0ae05..7702211 100644
--- a/Objects/clinic/bytesobject.c.h
+++ b/Objects/clinic/bytesobject.c.h
@@ -277,7 +277,8 @@
     {"translate", (PyCFunction)bytes_translate, METH_VARARGS, bytes_translate__doc__},
 
 static PyObject *
-bytes_translate_impl(PyBytesObject *self, PyObject *table, int group_right_1, PyObject *deletechars);
+bytes_translate_impl(PyBytesObject *self, PyObject *table, int group_right_1,
+                     PyObject *deletechars);
 
 static PyObject *
 bytes_translate(PyBytesObject *self, PyObject *args)
@@ -365,7 +366,8 @@
     {"replace", (PyCFunction)bytes_replace, METH_VARARGS, bytes_replace__doc__},
 
 static PyObject *
-bytes_replace_impl(PyBytesObject*self, Py_buffer *old, Py_buffer *new, Py_ssize_t count);
+bytes_replace_impl(PyBytesObject*self, Py_buffer *old, Py_buffer *new,
+                   Py_ssize_t count);
 
 static PyObject *
 bytes_replace(PyBytesObject*self, PyObject *args)
@@ -411,7 +413,8 @@
     {"decode", (PyCFunction)bytes_decode, METH_VARARGS|METH_KEYWORDS, bytes_decode__doc__},
 
 static PyObject *
-bytes_decode_impl(PyBytesObject*self, const char *encoding, const char *errors);
+bytes_decode_impl(PyBytesObject*self, const char *encoding,
+                  const char *errors);
 
 static PyObject *
 bytes_decode(PyBytesObject*self, PyObject *args, PyObject *kwargs)
@@ -493,4 +496,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=b9e69e1f7c8ccd14 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=deaf886e15270679 input=a9049054013a1b77]*/
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index e733485..e6d2bab 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -574,8 +574,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_format_impl(PyModuleDef *module, PyObject *value, PyObject *format_spec)
-/*[clinic end generated code: output=fae3e927cc715466 input=e23f2f11e0098c64]*/
+builtin_format_impl(PyModuleDef *module, PyObject *value,
+                    PyObject *format_spec)
+/*[clinic end generated code: output=4341fd78a5f01764 input=e23f2f11e0098c64]*/
 {
     return PyObject_Format(value, format_spec);
 }
@@ -654,8 +655,10 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_compile_impl(PyModuleDef *module, PyObject *source, PyObject *filename, const char *mode, int flags, int dont_inherit, int optimize)
-/*[clinic end generated code: output=4f41a315386bab9f input=c6212a9d21472f7e]*/
+builtin_compile_impl(PyModuleDef *module, PyObject *source,
+                     PyObject *filename, const char *mode, int flags,
+                     int dont_inherit, int optimize)
+/*[clinic end generated code: output=31881762c1bb90c4 input=c6212a9d21472f7e]*/
 {
     Py_buffer view = {NULL, NULL};
     const char *str;
@@ -805,8 +808,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals)
-/*[clinic end generated code: output=90642b79dd8b08d6 input=31e42c1d2125b50b]*/
+builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals,
+                  PyObject *locals)
+/*[clinic end generated code: output=7284501fb7b4d666 input=31e42c1d2125b50b]*/
 {
     PyObject *result, *tmp = NULL;
     Py_buffer view = {NULL, NULL};
@@ -889,8 +893,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals)
-/*[clinic end generated code: output=e8e0bbcde826a048 input=536e057b5e00d89e]*/
+builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals,
+                  PyObject *locals)
+/*[clinic end generated code: output=83d574ef9d5d0b46 input=536e057b5e00d89e]*/
 {
     PyObject *v;
 
@@ -1303,8 +1308,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name, PyObject *value)
-/*[clinic end generated code: output=c5e0a3a3971333ed input=fbe7e53403116b93]*/
+builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name,
+                     PyObject *value)
+/*[clinic end generated code: output=d881c655c0f7e34f input=fbe7e53403116b93]*/
 {
     if (PyObject_SetAttr(obj, name, value) != 0)
         return NULL;
@@ -2328,8 +2334,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_isinstance_impl(PyModuleDef *module, PyObject *obj, PyObject *class_or_tuple)
-/*[clinic end generated code: output=5e234dc3872d75a2 input=cf9eb0ad6bb9bad6]*/
+builtin_isinstance_impl(PyModuleDef *module, PyObject *obj,
+                        PyObject *class_or_tuple)
+/*[clinic end generated code: output=f960b7c12dbbeda0 input=cf9eb0ad6bb9bad6]*/
 {
     int retval;
 
@@ -2355,8 +2362,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-builtin_issubclass_impl(PyModuleDef *module, PyObject *cls, PyObject *class_or_tuple)
-/*[clinic end generated code: output=6346a85ba15dbd7d input=923d03fa41fc352a]*/
+builtin_issubclass_impl(PyModuleDef *module, PyObject *cls,
+                        PyObject *class_or_tuple)
+/*[clinic end generated code: output=8b012a151940bbf2 input=923d03fa41fc352a]*/
 {
     int retval;
 
diff --git a/Python/clinic/bltinmodule.c.h b/Python/clinic/bltinmodule.c.h
index 0bd859d..83e4f69 100644
--- a/Python/clinic/bltinmodule.c.h
+++ b/Python/clinic/bltinmodule.c.h
@@ -83,7 +83,8 @@
     {"format", (PyCFunction)builtin_format, METH_VARARGS, builtin_format__doc__},
 
 static PyObject *
-builtin_format_impl(PyModuleDef *module, PyObject *value, PyObject *format_spec);
+builtin_format_impl(PyModuleDef *module, PyObject *value,
+                    PyObject *format_spec);
 
 static PyObject *
 builtin_format(PyModuleDef *module, PyObject *args)
@@ -152,7 +153,9 @@
     {"compile", (PyCFunction)builtin_compile, METH_VARARGS|METH_KEYWORDS, builtin_compile__doc__},
 
 static PyObject *
-builtin_compile_impl(PyModuleDef *module, PyObject *source, PyObject *filename, const char *mode, int flags, int dont_inherit, int optimize);
+builtin_compile_impl(PyModuleDef *module, PyObject *source,
+                     PyObject *filename, const char *mode, int flags,
+                     int dont_inherit, int optimize);
 
 static PyObject *
 builtin_compile(PyModuleDef *module, PyObject *args, PyObject *kwargs)
@@ -221,7 +224,8 @@
     {"eval", (PyCFunction)builtin_eval, METH_VARARGS, builtin_eval__doc__},
 
 static PyObject *
-builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals);
+builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals,
+                  PyObject *locals);
 
 static PyObject *
 builtin_eval(PyModuleDef *module, PyObject *args)
@@ -257,7 +261,8 @@
     {"exec", (PyCFunction)builtin_exec, METH_VARARGS, builtin_exec__doc__},
 
 static PyObject *
-builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals);
+builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals,
+                  PyObject *locals);
 
 static PyObject *
 builtin_exec(PyModuleDef *module, PyObject *args)
@@ -353,7 +358,8 @@
     {"setattr", (PyCFunction)builtin_setattr, METH_VARARGS, builtin_setattr__doc__},
 
 static PyObject *
-builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name, PyObject *value);
+builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name,
+                     PyObject *value);
 
 static PyObject *
 builtin_setattr(PyModuleDef *module, PyObject *args)
@@ -605,7 +611,8 @@
     {"isinstance", (PyCFunction)builtin_isinstance, METH_VARARGS, builtin_isinstance__doc__},
 
 static PyObject *
-builtin_isinstance_impl(PyModuleDef *module, PyObject *obj, PyObject *class_or_tuple);
+builtin_isinstance_impl(PyModuleDef *module, PyObject *obj,
+                        PyObject *class_or_tuple);
 
 static PyObject *
 builtin_isinstance(PyModuleDef *module, PyObject *args)
@@ -638,7 +645,8 @@
     {"issubclass", (PyCFunction)builtin_issubclass, METH_VARARGS, builtin_issubclass__doc__},
 
 static PyObject *
-builtin_issubclass_impl(PyModuleDef *module, PyObject *cls, PyObject *class_or_tuple);
+builtin_issubclass_impl(PyModuleDef *module, PyObject *cls,
+                        PyObject *class_or_tuple);
 
 static PyObject *
 builtin_issubclass(PyModuleDef *module, PyObject *args)
@@ -656,4 +664,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=12db4cde92eb11b3 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b308ab64aa4d4ff8 input=a9049054013a1b77]*/
diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h
index 4995d89..9d28f3a 100644
--- a/Python/clinic/import.c.h
+++ b/Python/clinic/import.c.h
@@ -78,7 +78,8 @@
     {"_fix_co_filename", (PyCFunction)_imp__fix_co_filename, METH_VARARGS, _imp__fix_co_filename__doc__},
 
 static PyObject *
-_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code, PyObject *path);
+_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code,
+                           PyObject *path);
 
 static PyObject *
 _imp__fix_co_filename(PyModuleDef *module, PyObject *args)
@@ -295,7 +296,8 @@
     {"load_dynamic", (PyCFunction)_imp_load_dynamic, METH_VARARGS, _imp_load_dynamic__doc__},
 
 static PyObject *
-_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyObject *file);
+_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path,
+                       PyObject *file);
 
 static PyObject *
 _imp_load_dynamic(PyModuleDef *module, PyObject *args)
@@ -320,4 +322,4 @@
 #ifndef _IMP_LOAD_DYNAMIC_METHODDEF
     #define _IMP_LOAD_DYNAMIC_METHODDEF
 #endif /* !defined(_IMP_LOAD_DYNAMIC_METHODDEF) */
-/*[clinic end generated code: output=d41c392510815c5b input=a9049054013a1b77]*/
+/*[clinic end generated code: output=b64fe33fe76591cf input=a9049054013a1b77]*/
diff --git a/Python/import.c b/Python/import.c
index 54654af..46c6b53 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -904,8 +904,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code, PyObject *path)
-/*[clinic end generated code: output=7afe5ba6b9d383e4 input=895ba50e78b82f05]*/
+_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code,
+                           PyObject *path)
+/*[clinic end generated code: output=f4db56aac0a1327f input=895ba50e78b82f05]*/
 
 {
     update_compiled_module(code, path);
@@ -1934,8 +1935,9 @@
 [clinic start generated code]*/
 
 static PyObject *
-_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyObject *file)
-/*[clinic end generated code: output=8b7ae431d795e1ba input=af64f06e4bad3526]*/
+_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path,
+                       PyObject *file)
+/*[clinic end generated code: output=e84e5f7f0f39bc54 input=af64f06e4bad3526]*/
 {
     PyObject *mod;
     FILE *fp;
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index fae5c43..8a2e601 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -527,6 +527,58 @@
     return s
 
 
+def wrap_declarations(text, length=78):
+    """
+    A simple-minded text wrapper for C function declarations.
+
+    It views a declaration line as looking like this:
+        xxxxxxxx(xxxxxxxxx,xxxxxxxxx)
+    If called with length=30, it would wrap that line into
+        xxxxxxxx(xxxxxxxxx,
+                 xxxxxxxxx)
+    (If the declaration has zero or one parameters, this
+    function won't wrap it.)
+
+    If this doesn't work properly, it's probably better to
+    start from scratch with a more sophisticated algorithm,
+    rather than try and improve/debug this dumb little function.
+    """
+    lines = []
+    for line in text.split('\n'):
+        prefix, _, after_l_paren = line.partition('(')
+        if not after_l_paren:
+            lines.append(line)
+            continue
+        parameters, _, after_r_paren = after_l_paren.partition(')')
+        if not _:
+            lines.append(line)
+            continue
+        if ',' not in parameters:
+            lines.append(line)
+            continue
+        parameters = [x.strip() + ", " for x in parameters.split(',')]
+        prefix += "("
+        if len(prefix) < length:
+            spaces = " " * len(prefix)
+        else:
+            spaces = " " * 4
+
+        while parameters:
+            line = prefix
+            first = True
+            while parameters:
+                if (not first and
+                    (len(line) + len(parameters[0]) > length)):
+                    break
+                line += parameters.pop(0)
+                first = False
+            if not parameters:
+                line = line.rstrip(", ") + ")" + after_r_paren
+            lines.append(line.rstrip())
+            prefix = spaces
+    return "\n".join(lines)
+
+
 class CLanguage(Language):
 
     body_prefix   = "#"
@@ -1129,6 +1181,11 @@
 
             s = template.format_map(template_dict)
 
+            # mild hack:
+            # reflow long impl declarations
+            if name in {"impl_prototype", "impl_definition"}:
+                s = wrap_declarations(s)
+
             if clinic.line_prefix:
                 s = indent_all_lines(s, clinic.line_prefix)
             if clinic.line_suffix:
