From: Serhiy Storchaka Date: Thu, 7 Jul 2016 15:20:03 +0000 (+0300) Subject: - Issue #27332: Fixed the type of the first argument of module-level functions X-Git-Tag: v3.6.0a3~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2954f8399914c77e048f9e3358abfadb7a3f76e9;p=python - Issue #27332: Fixed the type of the first argument of module-level functions generated by Argument Clinic. Patch by Petr Viktorin. --- 2954f8399914c77e048f9e3358abfadb7a3f76e9 diff --cc Modules/_codecsmodule.c index 611ca82cac,9b1194eae8..4e75995bbf --- a/Modules/_codecsmodule.c +++ b/Modules/_codecsmodule.c @@@ -720,12 -724,21 +720,12 @@@ _codecs.utf_7_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_7_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_7_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=a7accc496a32b759 input=d1a47579e79cbe15]*/ -/*[clinic end generated code: output=0feda21ffc921bc8 input=fd91a78f103b0421]*/ ++/*[clinic end generated code: output=0feda21ffc921bc8 input=d1a47579e79cbe15]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF7(str, 0, 0, errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF7(str, 0, 0, errors), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -736,12 -749,21 +736,12 @@@ _codecs.utf_8_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_8_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_8_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=ec831d80e7aedede input=42e3ba73c4392eef]*/ -/*[clinic end generated code: output=02bf47332b9c796c input=2c22d40532f071f3]*/ ++/*[clinic end generated code: output=02bf47332b9c796c input=42e3ba73c4392eef]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(PyUnicode_AsEncodedString(str, "utf-8", errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_AsUTF8String(str, errors), + PyUnicode_GET_LENGTH(str)); } /* This version provides access to the byteorder parameter of the @@@ -760,12 -782,21 +760,12 @@@ _codecs.utf_16_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_16_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_16_encode_impl(PyObject *module, PyObject *str, const char *errors, int byteorder) - /*[clinic end generated code: output=93ac58e960a9ee4d input=ff46416b04edb944]*/ -/*[clinic end generated code: output=c654e13efa2e64e4 input=3935a489b2d5385e]*/ ++/*[clinic end generated code: output=c654e13efa2e64e4 input=ff46416b04edb944]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF16(str, errors, byteorder), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF16(str, errors, byteorder), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -776,12 -807,21 +776,12 @@@ _codecs.utf_16_le_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_16_le_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_16_le_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=422bedb8da34fb66 input=cb385455ea8f2fe0]*/ -/*[clinic end generated code: output=431b01e55f2d4995 input=bc27df05d1d20dfe]*/ ++/*[clinic end generated code: output=431b01e55f2d4995 input=cb385455ea8f2fe0]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF16(str, errors, -1), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF16(str, errors, -1), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -792,12 -832,21 +792,12 @@@ _codecs.utf_16_be_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_16_be_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_16_be_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=3aa7ee9502acdd77 input=9119997066bdaefd]*/ -/*[clinic end generated code: output=96886a6fd54dcae3 input=5a69d4112763462b]*/ ++/*[clinic end generated code: output=96886a6fd54dcae3 input=9119997066bdaefd]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF16(str, errors, +1), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF16(str, errors, +1), + PyUnicode_GET_LENGTH(str)); } /* This version provides access to the byteorder parameter of the @@@ -816,12 -865,21 +816,12 @@@ _codecs.utf_32_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_32_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_32_encode_impl(PyObject *module, PyObject *str, const char *errors, int byteorder) - /*[clinic end generated code: output=3e7d5a003b02baed input=c5e77da82fbe5c2a]*/ -/*[clinic end generated code: output=5c760da0c09a8b83 input=434a1efa492b8d58]*/ ++/*[clinic end generated code: output=5c760da0c09a8b83 input=c5e77da82fbe5c2a]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF32(str, errors, byteorder), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF32(str, errors, byteorder), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -832,12 -890,21 +832,12 @@@ _codecs.utf_32_le_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_32_le_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_32_le_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=5dda641cd33dbfc2 input=9993b25fe0877848]*/ -/*[clinic end generated code: output=b65cd176de8e36d6 input=dfa2d7dc78b99422]*/ ++/*[clinic end generated code: output=b65cd176de8e36d6 input=9993b25fe0877848]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF32(str, errors, -1), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF32(str, errors, -1), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -848,12 -915,21 +848,12 @@@ _codecs.utf_32_be_encod [clinic start generated code]*/ static PyObject * - _codecs_utf_32_be_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_utf_32_be_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=ccca8b44d91a7c7a input=d3e0ccaa02920431]*/ -/*[clinic end generated code: output=1d9e71a9358709e9 input=4595617b18169002]*/ ++/*[clinic end generated code: output=1d9e71a9358709e9 input=d3e0ccaa02920431]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_EncodeUTF32(str, errors, +1), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_EncodeUTF32(str, errors, +1), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -864,12 -940,21 +864,12 @@@ _codecs.unicode_escape_encod [clinic start generated code]*/ static PyObject * - _codecs_unicode_escape_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_unicode_escape_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=389f23d2b8f8d80b input=65d9eefca65b455a]*/ -/*[clinic end generated code: output=66271b30bc4f7a3c input=8273506f14076912]*/ ++/*[clinic end generated code: output=66271b30bc4f7a3c input=65d9eefca65b455a]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(PyUnicode_AsUnicodeEscapeString(str), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(PyUnicode_AsUnicodeEscapeString(str), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -880,12 -965,21 +880,12 @@@ _codecs.raw_unicode_escape_encod [clinic start generated code]*/ static PyObject * - _codecs_raw_unicode_escape_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_raw_unicode_escape_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=fec4e39d6ec37a62 input=5aa33e4a133391ab]*/ -/*[clinic end generated code: output=a66a806ed01c830a input=181755d5dfacef3c]*/ ++/*[clinic end generated code: output=a66a806ed01c830a input=5aa33e4a133391ab]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(PyUnicode_AsRawUnicodeEscapeString(str), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(PyUnicode_AsRawUnicodeEscapeString(str), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -896,12 -990,21 +896,12 @@@ _codecs.latin_1_encod [clinic start generated code]*/ static PyObject * - _codecs_latin_1_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_latin_1_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=ecf00eb8e48c889c input=30b11c9e49a65150]*/ -/*[clinic end generated code: output=2c28c83a27884e08 input=f03f6dcf1d84bee4]*/ ++/*[clinic end generated code: output=2c28c83a27884e08 input=30b11c9e49a65150]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_AsLatin1String(str, errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_AsLatin1String(str, errors), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -912,12 -1015,21 +912,12 @@@ _codecs.ascii_encod [clinic start generated code]*/ static PyObject * - _codecs_ascii_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_ascii_encode_impl(PyObject *module, PyObject *str, const char *errors) - /*[clinic end generated code: output=a9d18fc6b6b91cfb input=843a1d268e6dfa8e]*/ -/*[clinic end generated code: output=b5e035182d33befc input=d87e25a10a593fee]*/ ++/*[clinic end generated code: output=b5e035182d33befc input=843a1d268e6dfa8e]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(_PyUnicode_AsASCIIString(str, errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(_PyUnicode_AsASCIIString(str, errors), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -929,10 -1041,12 +929,10 @@@ _codecs.charmap_encod [clinic start generated code]*/ static PyObject * - _codecs_charmap_encode_impl(PyModuleDef *module, PyObject *str, + _codecs_charmap_encode_impl(PyObject *module, PyObject *str, const char *errors, PyObject *mapping) - /*[clinic end generated code: output=14ca42b83853c643 input=0752cde07a6d6d00]*/ -/*[clinic end generated code: output=047476f48495a9e9 input=85f4172661e8dad9]*/ ++/*[clinic end generated code: output=047476f48495a9e9 input=0752cde07a6d6d00]*/ { - PyObject *v; - if (mapping == Py_None) mapping = NULL; @@@ -963,12 -1084,20 +963,11 @@@ _codecs.mbcs_encod [clinic start generated code]*/ static PyObject * - _codecs_mbcs_encode_impl(PyModuleDef *module, PyObject *str, - const char *errors) - /*[clinic end generated code: output=d1a013bc68798bd7 input=de471e0815947553]*/ + _codecs_mbcs_encode_impl(PyObject *module, PyObject *str, const char *errors) -/*[clinic end generated code: output=76e2e170c966c080 input=65c09ee1e4203263]*/ ++/*[clinic end generated code: output=76e2e170c966c080 input=de471e0815947553]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(PyUnicode_EncodeCodePage(CP_ACP, str, errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(PyUnicode_EncodeCodePage(CP_ACP, str, errors), + PyUnicode_GET_LENGTH(str)); } /*[clinic input] @@@ -980,12 -1109,23 +979,12 @@@ _codecs.code_page_encod [clinic start generated code]*/ static PyObject * - _codecs_code_page_encode_impl(PyModuleDef *module, int code_page, - PyObject *str, const char *errors) - /*[clinic end generated code: output=3b406618dbfbce25 input=786421ae617d680b]*/ + _codecs_code_page_encode_impl(PyObject *module, int code_page, PyObject *str, + const char *errors) -/*[clinic end generated code: output=45673f6085657a9e input=c8562ec460c2e309]*/ ++/*[clinic end generated code: output=45673f6085657a9e input=786421ae617d680b]*/ { - PyObject *v; - - str = PyUnicode_FromObject(str); - if (str == NULL || PyUnicode_READY(str) < 0) { - Py_XDECREF(str); - return NULL; - } - v = codec_tuple(PyUnicode_EncodeCodePage(code_page, - str, - errors), - PyUnicode_GET_LENGTH(str)); - Py_DECREF(str); - return v; + return codec_tuple(PyUnicode_EncodeCodePage(code_page, str, errors), + PyUnicode_GET_LENGTH(str)); } #endif /* HAVE_MBCS */ diff --cc Modules/_io/clinic/_iomodule.c.h index 6dcfc0812d,6c88e32e5a..ee01cfb7b3 --- a/Modules/_io/clinic/_iomodule.c.h +++ b/Modules/_io/clinic/_iomodule.c.h @@@ -157,4 -156,4 +157,4 @@@ _io_open(PyObject *module, PyObject *ar exit: return return_value; } - /*[clinic end generated code: output=079f597e71e9f0c6 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=bc2c003cb7daeafe input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=ae2facf262cf464e input=a9049054013a1b77]*/ diff --cc Modules/binascii.c index a306acde32,13780b2899..623c298767 --- a/Modules/binascii.c +++ b/Modules/binascii.c @@@ -253,11 -253,10 +253,11 @@@ Decode a line of uuencoded data [clinic start generated code]*/ static PyObject * - binascii_a2b_uu_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=5779f39b0b48459f input=7cafeaf73df63d1c]*/ + binascii_a2b_uu_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=e027f8e0b0598742 input=7cafeaf73df63d1c]*/ { - unsigned char *ascii_data, *bin_data; + const unsigned char *ascii_data; + unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -340,11 -339,10 +340,11 @@@ Uuencode line of data [clinic start generated code]*/ static PyObject * - binascii_b2a_uu_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=181021b69bb9a414 input=00fdf458ce8b465b]*/ + binascii_b2a_uu_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=0070670e52e4aa6b input=00fdf458ce8b465b]*/ { - unsigned char *ascii_data, *bin_data; + unsigned char *ascii_data; + const unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -425,11 -426,10 +425,11 @@@ Decode a line of base64 data [clinic start generated code]*/ static PyObject * - binascii_a2b_base64_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=3e351b702bed56d2 input=5872acf6e1cac243]*/ + binascii_a2b_base64_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=0628223f19fd3f9b input=5872acf6e1cac243]*/ { - unsigned char *ascii_data, *bin_data; + const unsigned char *ascii_data; + unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -522,11 -534,10 +522,11 @@@ Base64-code line of data [clinic start generated code]*/ static PyObject * - binascii_b2a_base64_impl(PyModuleDef *module, Py_buffer *data, int newline) - /*[clinic end generated code: output=19e1dd719a890b50 input=7b2ea6fa38d8924c]*/ -binascii_b2a_base64_impl(PyObject *module, Py_buffer *data) -/*[clinic end generated code: output=4d96663170778dc3 input=14ec4e47371174a9]*/ ++binascii_b2a_base64_impl(PyObject *module, Py_buffer *data, int newline) ++/*[clinic end generated code: output=4ad62c8e8485d3b3 input=7b2ea6fa38d8924c]*/ { - unsigned char *ascii_data, *bin_data; + unsigned char *ascii_data; + const unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -590,11 -601,10 +590,11 @@@ Decode .hqx coding [clinic start generated code]*/ static PyObject * - binascii_a2b_hqx_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=60bcdbbd28b105cd input=0d914c680e0eed55]*/ + binascii_a2b_hqx_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=4d6d8c54d54ea1c1 input=0d914c680e0eed55]*/ { - unsigned char *ascii_data, *bin_data; + const unsigned char *ascii_data; + unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -669,16 -684,14 +669,16 @@@ Binhex RLE-code binary data [clinic start generated code]*/ static PyObject * - binascii_rlecode_hqx_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=0905da344dbf0648 input=e1f1712447a82b09]*/ + binascii_rlecode_hqx_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=393d79338f5f5629 input=e1f1712447a82b09]*/ { - unsigned char *in_data, *out_data; - PyObject *rv; + const unsigned char *in_data; + unsigned char *out_data; unsigned char ch; Py_ssize_t in, inend, len; + _PyBytesWriter writer; + _PyBytesWriter_Init(&writer); in_data = data->buf; len = data->len; @@@ -731,11 -748,10 +731,11 @@@ Encode .hqx data [clinic start generated code]*/ static PyObject * - binascii_b2a_hqx_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=5a987810d5e3cdbb input=9596ebe019fe12ba]*/ + binascii_b2a_hqx_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=d0aa5a704bc9f7de input=9596ebe019fe12ba]*/ { - unsigned char *ascii_data, *bin_data; + unsigned char *ascii_data; + const unsigned char *bin_data; int leftbits = 0; unsigned char this_ch; unsigned int leftchar = 0; @@@ -786,14 -805,13 +786,14 @@@ Decode hexbin RLE-coded string [clinic start generated code]*/ static PyObject * - binascii_rledecode_hqx_impl(PyModuleDef *module, Py_buffer *data) - /*[clinic end generated code: output=f7afd89b789946ab input=54cdd49fc014402c]*/ + binascii_rledecode_hqx_impl(PyObject *module, Py_buffer *data) + /*[clinic end generated code: output=9826619565de1c6c input=54cdd49fc014402c]*/ { - unsigned char *in_data, *out_data; + const unsigned char *in_data; + unsigned char *out_data; unsigned char in_byte, in_repeat; - PyObject *rv; - Py_ssize_t in_len, out_len, out_len_left; + Py_ssize_t in_len; + _PyBytesWriter writer; in_data = data->buf; in_len = data->len; @@@ -904,10 -919,10 +904,10 @@@ Compute hqx CRC incrementally [clinic start generated code]*/ static unsigned int - binascii_crc_hqx_impl(PyModuleDef *module, Py_buffer *data, unsigned int crc) - /*[clinic end generated code: output=167c2dac62625717 input=add8c53712ccceda]*/ + binascii_crc_hqx_impl(PyObject *module, Py_buffer *data, unsigned int crc) + /*[clinic end generated code: output=8ec2a78590d19170 input=add8c53712ccceda]*/ { - unsigned char *bin_data; + const unsigned char *bin_data; Py_ssize_t len; crc &= 0xffff; @@@ -1149,10 -1164,10 +1149,10 @@@ This function is also available as "unh [clinic start generated code]*/ static PyObject * - binascii_a2b_hex_impl(PyModuleDef *module, Py_buffer *hexstr) - /*[clinic end generated code: output=d61da452b5c6d290 input=9e1e7f2f94db24fd]*/ + binascii_a2b_hex_impl(PyObject *module, Py_buffer *hexstr) + /*[clinic end generated code: output=0cc1a139af0eeecb input=9e1e7f2f94db24fd]*/ { - char* argbuf; + const char* argbuf; Py_ssize_t arglen; PyObject *retval; char* retbuf; @@@ -1342,13 -1356,12 +1342,13 @@@ are both encoded. When quotetabs is se [clinic start generated code]*/ static PyObject * - binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs, + binascii_b2a_qp_impl(PyObject *module, Py_buffer *data, int quotetabs, int istext, int header) - /*[clinic end generated code: output=a87ca9ccb94e2a9f input=7f2a9aaa008e92b2]*/ + /*[clinic end generated code: output=e9884472ebb1a94c input=7f2a9aaa008e92b2]*/ { Py_ssize_t in, out; - unsigned char *databuf, *odata; + const unsigned char *databuf; + unsigned char *odata; Py_ssize_t datalen = 0, odatalen = 0; PyObject *rv; unsigned int linelen = 0; diff --cc Modules/clinic/_codecsmodule.c.h index a7ca79e1bf,af06c6d9e0..52c61c597a --- a/Modules/clinic/_codecsmodule.c.h +++ b/Modules/clinic/_codecsmodule.c.h @@@ -1456,4 -1392,4 +1455,4 @@@ exit #ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF #define _CODECS_CODE_PAGE_ENCODE_METHODDEF #endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */ - /*[clinic end generated code: output=120320fe2ac32085 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=42fed94e2ab765ba input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=6e89ff4423c12a9b input=a9049054013a1b77]*/ diff --cc Modules/clinic/_cryptmodule.c.h index 664cba8dfb,a3c371cbaa..412c6fe8a1 --- a/Modules/clinic/_cryptmodule.c.h +++ b/Modules/clinic/_cryptmodule.c.h @@@ -35,4 -34,4 +35,4 @@@ crypt_crypt(PyObject *module, PyObject exit: return return_value; } - /*[clinic end generated code: output=6977cf9917d9a684 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=e0493a9691537690 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=8dfc88264e662df4 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_dbmmodule.c.h index b31da71eb9,49cbceb1ef..06cf7e6741 --- a/Modules/clinic/_dbmmodule.c.h +++ b/Modules/clinic/_dbmmodule.c.h @@@ -141,4 -138,4 +141,4 @@@ dbmopen(PyObject *module, PyObject *arg exit: return return_value; } - /*[clinic end generated code: output=97f8b6f542973b71 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=fff12f168cdf8b43 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=99adf966ef0475ff input=a9049054013a1b77]*/ diff --cc Modules/clinic/_gdbmmodule.c.h index 23182c8712,2d87cfc760..fdd589c07a --- a/Modules/clinic/_gdbmmodule.c.h +++ b/Modules/clinic/_gdbmmodule.c.h @@@ -254,4 -249,4 +253,4 @@@ dbmopen(PyObject *module, PyObject *arg exit: return return_value; } - /*[clinic end generated code: output=418849fb5dbe69a5 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=9ac7a89858a9765f input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=ed0f5d4e3d79b80c input=a9049054013a1b77]*/ diff --cc Modules/clinic/_lzmamodule.c.h index b78dbcd06c,f8d38ea1fc..899d5c0e33 --- a/Modules/clinic/_lzmamodule.c.h +++ b/Modules/clinic/_lzmamodule.c.h @@@ -254,4 -245,4 +254,4 @@@ exit return return_value; } - /*[clinic end generated code: output=804aed7d196ba52e input=a9049054013a1b77]*/ -/*[clinic end generated code: output=fada06020fd318cc input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=25bf57a0845d147a input=a9049054013a1b77]*/ diff --cc Modules/clinic/_opcode.c.h index 68652b0388,a5f644265a..513cbfdad8 --- a/Modules/clinic/_opcode.c.h +++ b/Modules/clinic/_opcode.c.h @@@ -35,4 -33,4 +35,4 @@@ _opcode_stack_effect(PyObject *module, exit: return return_value; } - /*[clinic end generated code: output=5bd7c1c113e6526a input=a9049054013a1b77]*/ -/*[clinic end generated code: output=984d6de140303d10 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=4d91c6a765097853 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_pickle.c.h index 11299e97e6,bd12d2a0c4..0528615bbe --- a/Modules/clinic/_pickle.c.h +++ b/Modules/clinic/_pickle.c.h @@@ -554,4 -545,4 +554,4 @@@ _pickle_loads(PyObject *module, PyObjec exit: return return_value; } - /*[clinic end generated code: output=5e972f339d197760 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=93657e55d6a748af input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=5c5f9149df292ce4 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_sre.c.h index 448d8afbc1,3281717218..2a8b220377 --- a/Modules/clinic/_sre.c.h +++ b/Modules/clinic/_sre.c.h @@@ -713,4 -690,4 +713,4 @@@ _sre_SRE_Scanner_search(ScannerObject * { return _sre_SRE_Scanner_search_impl(self); } - /*[clinic end generated code: output=00f7bf869b3283bc input=a9049054013a1b77]*/ -/*[clinic end generated code: output=a4ce9e5b748ce532 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=af9455cb54b2a907 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_ssl.c.h index 1d9f91d58d,852e3658b6..fd184d5f0f --- a/Modules/clinic/_ssl.c.h +++ b/Modules/clinic/_ssl.c.h @@@ -1135,4 -1102,4 +1135,4 @@@ exit #ifndef _SSL_ENUM_CRLS_METHODDEF #define _SSL_ENUM_CRLS_METHODDEF #endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */ - /*[clinic end generated code: output=df99659ec790e573 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=6fb10594d8351dc5 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=02444732c19722b3 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_tkinter.c.h index 73527fc901,77af083c06..edd5380005 --- a/Modules/clinic/_tkinter.c.h +++ b/Modules/clinic/_tkinter.c.h @@@ -638,4 -621,4 +638,4 @@@ exit #ifndef _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF #define _TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF #endif /* !defined(_TKINTER_TKAPP_DELETEFILEHANDLER_METHODDEF) */ - /*[clinic end generated code: output=13be3f8313bba3c7 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=f9057c8bf288633d input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=836c578b71d69097 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_weakref.c.h index b93343b079,b83b33e4a1..c192e72193 --- a/Modules/clinic/_weakref.c.h +++ b/Modules/clinic/_weakref.c.h @@@ -29,4 -28,4 +29,4 @@@ _weakref_getweakrefcount(PyObject *modu exit: return return_value; } - /*[clinic end generated code: output=00e317cda5359ea3 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=d9086c8576d46933 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=e1ad587147323e19 input=a9049054013a1b77]*/ diff --cc Modules/clinic/_winapi.c.h index 2b8deeab2b,ac38d374a2..e0c7d6c62d --- a/Modules/clinic/_winapi.c.h +++ b/Modules/clinic/_winapi.c.h @@@ -889,4 -848,4 +886,4 @@@ _winapi_WriteFile(PyObject *module, PyO exit: return return_value; } - /*[clinic end generated code: output=d099ee4fbcdd5bc0 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=a4c4b2a9fcb0bea1 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=8032f3371c14749e input=a9049054013a1b77]*/ diff --cc Modules/clinic/arraymodule.c.h index ced17aaf88,0c7061a1d2..3b9fcdab0a --- a/Modules/clinic/arraymodule.c.h +++ b/Modules/clinic/arraymodule.c.h @@@ -505,4 -496,4 +505,4 @@@ PyDoc_STRVAR(array_arrayiterator___sets #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \ {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__}, - /*[clinic end generated code: output=0b99c89275eda265 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=305df3f5796039e4 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=b2054fb764c8cc64 input=a9049054013a1b77]*/ diff --cc Modules/clinic/audioop.c.h index 4baba27cfd,62e313b5bf..be4b718843 --- a/Modules/clinic/audioop.c.h +++ b/Modules/clinic/audioop.c.h @@@ -929,4 -873,4 +928,4 @@@ exit return return_value; } - /*[clinic end generated code: output=af5b025f0241fee2 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=385fb09fa21a62c0 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=e0ab74c3fa57c39c input=a9049054013a1b77]*/ diff --cc Modules/clinic/binascii.c.h index e297f1d53e,e20cac24ba..68c34f9750 --- a/Modules/clinic/binascii.c.h +++ b/Modules/clinic/binascii.c.h @@@ -103,24 -99,20 +103,24 @@@ PyDoc_STRVAR(binascii_b2a_base64__doc__ "Base64-code line of data."); #define BINASCII_B2A_BASE64_METHODDEF \ - {"b2a_base64", (PyCFunction)binascii_b2a_base64, METH_O, binascii_b2a_base64__doc__}, + {"b2a_base64", (PyCFunction)binascii_b2a_base64, METH_VARARGS|METH_KEYWORDS, binascii_b2a_base64__doc__}, static PyObject * - binascii_b2a_base64_impl(PyModuleDef *module, Py_buffer *data, int newline); -binascii_b2a_base64_impl(PyObject *module, Py_buffer *data); ++binascii_b2a_base64_impl(PyObject *module, Py_buffer *data, int newline); static PyObject * - binascii_b2a_base64(PyModuleDef *module, PyObject *args, PyObject *kwargs) -binascii_b2a_base64(PyObject *module, PyObject *arg) ++binascii_b2a_base64(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL; + static char *_keywords[] = {"data", "newline", NULL}; Py_buffer data = {NULL, NULL}; + int newline = 1; - if (!PyArg_Parse(arg, "y*:b2a_base64", &data)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|$i:b2a_base64", _keywords, + &data, &newline)) { goto exit; - return_value = binascii_b2a_base64_impl(module, &data); + } + return_value = binascii_b2a_base64_impl(module, &data, newline); exit: /* Cleanup for data */ @@@ -547,4 -516,4 +547,4 @@@ exit return return_value; } - /*[clinic end generated code: output=7fb420392d78ac4d input=a9049054013a1b77]*/ -/*[clinic end generated code: output=51173fc9718a5edc input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=d91d1058dc0590e1 input=a9049054013a1b77]*/ diff --cc Modules/clinic/cmathmodule.c.h index 5899348c87,a255353d4a..cba035f150 --- a/Modules/clinic/cmathmodule.c.h +++ b/Modules/clinic/cmathmodule.c.h @@@ -881,4 -857,4 +881,4 @@@ cmath_isclose(PyObject *module, PyObjec exit: return return_value; } - /*[clinic end generated code: output=f166205b4beb1826 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=732194029b7fb1e7 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=0f49dd11b50175bc input=a9049054013a1b77]*/ diff --cc Modules/clinic/fcntlmodule.c.h index 104b4823f9,67660ebdcb..84a004bb59 --- a/Modules/clinic/fcntlmodule.c.h +++ b/Modules/clinic/fcntlmodule.c.h @@@ -186,4 -182,4 +186,4 @@@ fcntl_lockf(PyObject *module, PyObject exit: return return_value; } - /*[clinic end generated code: output=b08537e9adc04ca2 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=97b1306b864c01c8 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=36cff76a8fb2c9a6 input=a9049054013a1b77]*/ diff --cc Modules/clinic/grpmodule.c.h index cd111aa4d6,2c47a4236b..82dcd53780 --- a/Modules/clinic/grpmodule.c.h +++ b/Modules/clinic/grpmodule.c.h @@@ -84,4 -82,4 +84,4 @@@ grp_getgrall(PyObject *module, PyObjec { return grp_getgrall_impl(module); } - /*[clinic end generated code: output=a8a097520206ccd6 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=bee09feefc54a2cb input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=8b7502970a29e7f1 input=a9049054013a1b77]*/ diff --cc Modules/clinic/md5module.c.h index 9c8987eb5e,0bd958ac6e..25dc7bb462 --- a/Modules/clinic/md5module.c.h +++ b/Modules/clinic/md5module.c.h @@@ -93,4 -92,4 +93,4 @@@ _md5_md5(PyObject *module, PyObject *ar exit: return return_value; } - /*[clinic end generated code: output=d701d041d387b081 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=4cd3cc96e35563d2 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=8f640a98761daffe input=a9049054013a1b77]*/ diff --cc Modules/clinic/posixmodule.c.h index 33621d80d9,be2e5a6d1a..c550b9ddc7 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@@ -5480,39 -5313,6 +5476,39 @@@ exit #endif /* defined(MS_WINDOWS) */ +PyDoc_STRVAR(os_fspath__doc__, +"fspath($module, /, path)\n" +"--\n" +"\n" +"Return the file system path representation of the object.\n" +"\n" +"If the object is str or bytes, then allow it to pass through as-is. If the\n" +"object defines __fspath__(), then return the result of that method. All other\n" +"types raise a TypeError."); + +#define OS_FSPATH_METHODDEF \ + {"fspath", (PyCFunction)os_fspath, METH_VARARGS|METH_KEYWORDS, os_fspath__doc__}, + +static PyObject * - os_fspath_impl(PyModuleDef *module, PyObject *path); ++os_fspath_impl(PyObject *module, PyObject *path); + +static PyObject * - os_fspath(PyModuleDef *module, PyObject *args, PyObject *kwargs) ++os_fspath(PyObject *module, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + static char *_keywords[] = {"path", NULL}; + PyObject *path; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:fspath", _keywords, + &path)) { + goto exit; + } + return_value = os_fspath_impl(module, path); + +exit: + return return_value; +} + #ifndef OS_TTYNAME_METHODDEF #define OS_TTYNAME_METHODDEF #endif /* !defined(OS_TTYNAME_METHODDEF) */ @@@ -5984,4 -5784,4 +5980,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=1b91c3a100e75a4d input=a9049054013a1b77]*/ -/*[clinic end generated code: output=c27221987f987cf3 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=e91e62d8e8f1b6ac input=a9049054013a1b77]*/ diff --cc Modules/clinic/pwdmodule.c.h index 6b50464b00,cb191a0b77..f9e0644f26 --- a/Modules/clinic/pwdmodule.c.h +++ b/Modules/clinic/pwdmodule.c.h @@@ -69,4 -68,4 +69,4 @@@ pwd_getpwall(PyObject *module, PyObjec #ifndef PWD_GETPWALL_METHODDEF #define PWD_GETPWALL_METHODDEF #endif /* !defined(PWD_GETPWALL_METHODDEF) */ - /*[clinic end generated code: output=f807c89b44be0fde input=a9049054013a1b77]*/ -/*[clinic end generated code: output=d0ea1c5c832f0c1a input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=fc41d8d88ec206d8 input=a9049054013a1b77]*/ diff --cc Modules/clinic/pyexpat.c.h index 0c1f3fc0fc,c5b5c71c99..d9cf73dc6e --- a/Modules/clinic/pyexpat.c.h +++ b/Modules/clinic/pyexpat.c.h @@@ -288,4 -281,4 +288,4 @@@ exit #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */ - /*[clinic end generated code: output=71a60d709647fbe3 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=d479cfab607e9dc8 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=9de21f46734b1311 input=a9049054013a1b77]*/ diff --cc Modules/clinic/sha1module.c.h index 6d3fa64334,5b8db8079b..8030fbde00 --- a/Modules/clinic/sha1module.c.h +++ b/Modules/clinic/sha1module.c.h @@@ -93,4 -92,4 +93,4 @@@ _sha1_sha1(PyObject *module, PyObject * exit: return return_value; } - /*[clinic end generated code: output=40df3f8955919e72 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=0b6a194fbb0b94f2 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=475c4cc749ab31b1 input=a9049054013a1b77]*/ diff --cc Modules/clinic/sha256module.c.h index c429800118,661569c4fe..483109f936 --- a/Modules/clinic/sha256module.c.h +++ b/Modules/clinic/sha256module.c.h @@@ -122,4 -120,4 +122,4 @@@ _sha256_sha224(PyObject *module, PyObje exit: return return_value; } - /*[clinic end generated code: output=e85cc4a223371d84 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=5a1fc5480e399f95 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=a41a21c08fcddd70 input=a9049054013a1b77]*/ diff --cc Modules/clinic/sha512module.c.h index 94fb15ca84,d64c2a413f..ec5a0c3402 --- a/Modules/clinic/sha512module.c.h +++ b/Modules/clinic/sha512module.c.h @@@ -170,4 -168,4 +170,4 @@@ exit #ifndef _SHA512_SHA384_METHODDEF #define _SHA512_SHA384_METHODDEF #endif /* !defined(_SHA512_SHA384_METHODDEF) */ - /*[clinic end generated code: output=845af47cea22e2a1 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=bb87f494df50ffc0 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=e314c0f773abd5d7 input=a9049054013a1b77]*/ diff --cc Modules/clinic/signalmodule.c.h index e0aaab67a6,c8f4cd5c41..f8d5bd942b --- a/Modules/clinic/signalmodule.c.h +++ b/Modules/clinic/signalmodule.c.h @@@ -439,4 -429,4 +439,4 @@@ exit #ifndef SIGNAL_PTHREAD_KILL_METHODDEF #define SIGNAL_PTHREAD_KILL_METHODDEF #endif /* !defined(SIGNAL_PTHREAD_KILL_METHODDEF) */ - /*[clinic end generated code: output=4b9519180a091536 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=dafa598412bfb8d2 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=c6990ef0d0ba72b6 input=a9049054013a1b77]*/ diff --cc Modules/clinic/spwdmodule.c.h index 51bda962c2,e26acf1863..b2479ff245 --- a/Modules/clinic/spwdmodule.c.h +++ b/Modules/clinic/spwdmodule.c.h @@@ -66,4 -65,4 +66,4 @@@ spwd_getspall(PyObject *module, PyObjec #ifndef SPWD_GETSPALL_METHODDEF #define SPWD_GETSPALL_METHODDEF #endif /* !defined(SPWD_GETSPALL_METHODDEF) */ - /*[clinic end generated code: output=2b7a384447e5f1e3 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=510f681b36f54c30 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=07cd8af0afd77fe7 input=a9049054013a1b77]*/ diff --cc Modules/clinic/zlibmodule.c.h index dcaeef81e6,71da0273a7..1b2b7fed46 --- a/Modules/clinic/zlibmodule.c.h +++ b/Modules/clinic/zlibmodule.c.h @@@ -8,36 -8,33 +8,36 @@@ PyDoc_STRVAR(zlib_compress__doc__ "\n" "Returns a bytes object containing compressed data.\n" "\n" -" bytes\n" +" data\n" " Binary data to be compressed.\n" " level\n" -" Compression level, in 0-9."); +" Compression level, in 0-9 or -1."); #define ZLIB_COMPRESS_METHODDEF \ - {"compress", (PyCFunction)zlib_compress, METH_VARARGS, zlib_compress__doc__}, + {"compress", (PyCFunction)zlib_compress, METH_VARARGS|METH_KEYWORDS, zlib_compress__doc__}, static PyObject * - zlib_compress_impl(PyModuleDef *module, Py_buffer *data, int level); -zlib_compress_impl(PyObject *module, Py_buffer *bytes, int level); ++zlib_compress_impl(PyObject *module, Py_buffer *data, int level); static PyObject * - zlib_compress(PyModuleDef *module, PyObject *args, PyObject *kwargs) -zlib_compress(PyObject *module, PyObject *args) ++zlib_compress(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL; - Py_buffer bytes = {NULL, NULL}; + static char *_keywords[] = {"", "level", NULL}; + Py_buffer data = {NULL, NULL}; int level = Z_DEFAULT_COMPRESSION; - if (!PyArg_ParseTuple(args, "y*|i:compress", - &bytes, &level)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:compress", _keywords, + &data, &level)) { goto exit; - return_value = zlib_compress_impl(module, &bytes, level); + } + return_value = zlib_compress_impl(module, &data, level); exit: - /* Cleanup for bytes */ - if (bytes.obj) - PyBuffer_Release(&bytes); + /* Cleanup for data */ + if (data.obj) { + PyBuffer_Release(&data); + } return return_value; } @@@ -460,4 -442,4 +460,4 @@@ exit #ifndef ZLIB_COMPRESS_COPY_METHODDEF #define ZLIB_COMPRESS_COPY_METHODDEF #endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */ - /*[clinic end generated code: output=ba904dec30cc1a1a input=a9049054013a1b77]*/ -/*[clinic end generated code: output=8545565b1a1822de input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=519446af912f4e72 input=a9049054013a1b77]*/ diff --cc Modules/posixmodule.c index 4dc7c49465,3c3f80660c..4c0f26e89c --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@@ -3918,12 -3902,11 +3917,12 @@@ A helper function for ismount on Win32 [clinic start generated code]*/ static PyObject * - os__getvolumepathname_impl(PyModuleDef *module, PyObject *path) - /*[clinic end generated code: output=79a0ba729f956dbe input=7eacadc40acbda6b]*/ + os__getvolumepathname_impl(PyObject *module, PyObject *path) + /*[clinic end generated code: output=cbdcbd1059ceef4c input=7eacadc40acbda6b]*/ { PyObject *result; - wchar_t *path_wchar, *mountpath=NULL; + const wchar_t *path_wchar; + wchar_t *mountpath=NULL; size_t buflen; BOOL ret; @@@ -4297,11 -4280,11 +4296,11 @@@ Execute the command in a subshell [clinic start generated code]*/ static long - os_system_impl(PyModuleDef *module, PyObject *command) - /*[clinic end generated code: output=800f775e10b7be55 input=86a58554ba6094af]*/ + os_system_impl(PyObject *module, PyObject *command) + /*[clinic end generated code: output=290fc437dd4f33a0 input=86a58554ba6094af]*/ { long result; - char *bytes = PyBytes_AsString(command); + const char *bytes = PyBytes_AsString(command); Py_BEGIN_ALLOW_THREADS result = system(bytes); Py_END_ALLOW_THREADS @@@ -5053,10 -5035,10 +5052,10 @@@ Execute an executable path with argumen [clinic start generated code]*/ static PyObject * - os_execv_impl(PyModuleDef *module, PyObject *path, PyObject *argv) - /*[clinic end generated code: output=9221f08143146fff input=96041559925e5229]*/ + os_execv_impl(PyObject *module, PyObject *path, PyObject *argv) + /*[clinic end generated code: output=b21dc34deeb5b004 input=96041559925e5229]*/ { - char *path_char; + const char *path_char; char **argvlist; Py_ssize_t argc; @@@ -5174,10 -5155,10 +5172,10 @@@ Execute the program specified by path i [clinic start generated code]*/ static PyObject * - os_spawnv_impl(PyModuleDef *module, int mode, PyObject *path, PyObject *argv) - /*[clinic end generated code: output=140a7945484c8cc5 input=042c91dfc1e6debc]*/ + os_spawnv_impl(PyObject *module, int mode, PyObject *path, PyObject *argv) + /*[clinic end generated code: output=c427c0ce40f10638 input=042c91dfc1e6debc]*/ { - char *path_char; + const char *path_char; char **argvlist; int i; Py_ssize_t argc; @@@ -5251,11 -5232,11 +5249,11 @@@ Execute the program specified by path i [clinic start generated code]*/ static PyObject * - os_spawnve_impl(PyModuleDef *module, int mode, PyObject *path, - PyObject *argv, PyObject *env) - /*[clinic end generated code: output=e7f5f0703610531f input=02362fd937963f8f]*/ + os_spawnve_impl(PyObject *module, int mode, PyObject *path, PyObject *argv, + PyObject *env) + /*[clinic end generated code: output=ebcfa5f7ba2f4219 input=02362fd937963f8f]*/ { - char *path_char; + const char *path_char; char **argvlist; char **envlist; PyObject *res = NULL; @@@ -5781,8 -5762,8 +5779,8 @@@ The affinity is returned as a set of CP [clinic start generated code]*/ static PyObject * - os_sched_getaffinity_impl(PyModuleDef *module, pid_t pid) - /*[clinic end generated code: output=b431a8f310e369e7 input=983ce7cb4a565980]*/ + os_sched_getaffinity_impl(PyObject *module, pid_t pid) -/*[clinic end generated code: output=f726f2c193c17a4f input=eaf161936874b8a1]*/ ++/*[clinic end generated code: output=f726f2c193c17a4f input=983ce7cb4a565980]*/ { int cpu, ncpus, count; size_t setsize; @@@ -9031,10 -9010,10 +9027,10 @@@ Change or add an environment variable [clinic start generated code]*/ static PyObject * - os_putenv_impl(PyModuleDef *module, PyObject *name, PyObject *value) - /*[clinic end generated code: output=a2438cf95e5a0c1c input=ba586581c2e6105f]*/ + os_putenv_impl(PyObject *module, PyObject *name, PyObject *value) + /*[clinic end generated code: output=d29a567d6b2327d2 input=ba586581c2e6105f]*/ { - wchar_t *env; + const wchar_t *env; PyObject *unicode = PyUnicode_FromFormat("%U=%U", name, value); if (unicode == NULL) { @@@ -11228,8 -11200,8 +11224,8 @@@ use. The number of usable CPUs can be [clinic start generated code]*/ static PyObject * - os_cpu_count_impl(PyModuleDef *module) - /*[clinic end generated code: output=c59ee7f6bce832b8 input=e7c8f4ba6dbbadd3]*/ + os_cpu_count_impl(PyObject *module) -/*[clinic end generated code: output=5fc29463c3936a9c input=d55e2f8f3823a628]*/ ++/*[clinic end generated code: output=5fc29463c3936a9c input=e7c8f4ba6dbbadd3]*/ { int ncpu = 0; #ifdef MS_WINDOWS @@@ -12294,65 -12167,6 +12290,65 @@@ error return NULL; } +/* + Return the file system path representation of the object. + + If the object is str or bytes, then allow it to pass through with + an incremented refcount. If the object defines __fspath__(), then + return the result of that method. All other types raise a TypeError. +*/ +PyObject * +PyOS_FSPath(PyObject *path) +{ + _Py_IDENTIFIER(__fspath__); + PyObject *func = NULL; + PyObject *path_repr = NULL; + + if (PyUnicode_Check(path) || PyBytes_Check(path)) { + Py_INCREF(path); + return path; + } + + func = _PyObject_LookupSpecial(path, &PyId___fspath__); + if (NULL == func) { + return PyErr_Format(PyExc_TypeError, + "expected str, bytes or os.PathLike object, " + "not %.200s", + Py_TYPE(path)->tp_name); + } + + path_repr = PyObject_CallFunctionObjArgs(func, NULL); + Py_DECREF(func); + if (!(PyUnicode_Check(path_repr) || PyBytes_Check(path_repr))) { + PyErr_Format(PyExc_TypeError, + "expected %.200s.__fspath__() to return str or bytes, " + "not %.200s", Py_TYPE(path)->tp_name, + Py_TYPE(path_repr)->tp_name); + Py_DECREF(path_repr); + return NULL; + } + + return path_repr; +} + +/*[clinic input] +os.fspath + + path: object + +Return the file system path representation of the object. + +If the object is str or bytes, then allow it to pass through as-is. If the +object defines __fspath__(), then return the result of that method. All other +types raise a TypeError. +[clinic start generated code]*/ + +static PyObject * - os_fspath_impl(PyModuleDef *module, PyObject *path) - /*[clinic end generated code: output=51ef0c2772c1932a input=e357165f7b22490f]*/ ++os_fspath_impl(PyObject *module, PyObject *path) ++/*[clinic end generated code: output=c3c3b78ecff2914f input=e357165f7b22490f]*/ +{ + return PyOS_FSPath(path); +} #include "clinic/posixmodule.c.h" diff --cc Modules/zlibmodule.c index 3a459a58f4,ab5b65d264..28f7f151ac --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@@ -151,8 -151,8 +151,8 @@@ Returns a bytes object containing compr [clinic start generated code]*/ static PyObject * - zlib_compress_impl(PyModuleDef *module, Py_buffer *data, int level) - /*[clinic end generated code: output=1b97589132b203b4 input=638d54b6315dbed3]*/ -zlib_compress_impl(PyObject *module, Py_buffer *bytes, int level) -/*[clinic end generated code: output=ae64c2c3076321a0 input=be3abe9934bda4b3]*/ ++zlib_compress_impl(PyObject *module, Py_buffer *data, int level) ++/*[clinic end generated code: output=d80906d73f6294c8 input=638d54b6315dbed3]*/ { PyObject *ReturnVal = NULL; Byte *input, *output = NULL; diff --cc PC/clinic/msvcrtmodule.c.h index 24e18cd5fb,e7a72c47f6..a5b4ccf379 --- a/PC/clinic/msvcrtmodule.c.h +++ b/PC/clinic/msvcrtmodule.c.h @@@ -570,4 -550,4 +569,4 @@@ exit #ifndef MSVCRT_SET_ERROR_MODE_METHODDEF #define MSVCRT_SET_ERROR_MODE_METHODDEF #endif /* !defined(MSVCRT_SET_ERROR_MODE_METHODDEF) */ - /*[clinic end generated code: output=636de3460aecbca7 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=2a794c520d6ae887 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=ece8106c0592ff1f input=a9049054013a1b77]*/ diff --cc PC/clinic/winreg.c.h index f3a4cd1f69,f6ae2c0b92..264dcf0c61 --- a/PC/clinic/winreg.c.h +++ b/PC/clinic/winreg.c.h @@@ -1086,4 -1056,4 +1086,4 @@@ winreg_QueryReflectionKey(PyObject *mod exit: return return_value; } - /*[clinic end generated code: output=ca128bfa212d8d1f input=a9049054013a1b77]*/ -/*[clinic end generated code: output=7b8940a23f605ddc input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=c35ce71f825424d1 input=a9049054013a1b77]*/ diff --cc PC/clinic/winsound.c.h index e649363fe2,b00b442362..cdb20454a5 --- a/PC/clinic/winsound.c.h +++ b/PC/clinic/winsound.c.h @@@ -100,4 -97,4 +100,4 @@@ winsound_MessageBeep(PyObject *module, exit: return return_value; } - /*[clinic end generated code: output=a5f53e42d4396bb4 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=c0b290daf2330dc9 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=1044b2adf3c67014 input=a9049054013a1b77]*/ diff --cc PC/winreg.c index 293825dbb4,f08d9a47ff..9524838c08 --- a/PC/winreg.c +++ b/PC/winreg.c @@@ -1655,9 -1629,9 +1655,9 @@@ the configuration registry to help the [clinic start generated code]*/ static PyObject * - winreg_SetValueEx_impl(PyModuleDef *module, HKEY key, Py_UNICODE *value_name, + winreg_SetValueEx_impl(PyObject *module, HKEY key, Py_UNICODE *value_name, PyObject *reserved, DWORD type, PyObject *value) - /*[clinic end generated code: output=ea092a935c361582 input=900a9e3990bfb196]*/ -/*[clinic end generated code: output=c88c8426b6c00ec7 input=f1b16cbcc3ed4101]*/ ++/*[clinic end generated code: output=c88c8426b6c00ec7 input=900a9e3990bfb196]*/ { BYTE *data; DWORD len; diff --cc Python/clinic/bltinmodule.c.h index 6df3ef5839,4e2b1f1fe8..529274fd5c --- a/Python/clinic/bltinmodule.c.h +++ b/Python/clinic/bltinmodule.c.h @@@ -674,4 -659,4 +673,4 @@@ builtin_issubclass(PyObject *module, Py exit: return return_value; } - /*[clinic end generated code: output=940f25126caf8166 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=9031270b64c794b8 input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=6ab37e6c6d2e7b19 input=a9049054013a1b77]*/ diff --cc Python/clinic/import.c.h index 9b9f812ced,05d79ac41b..b3460b061d --- a/Python/clinic/import.c.h +++ b/Python/clinic/import.c.h @@@ -361,4 -352,4 +361,4 @@@ exit #ifndef _IMP_EXEC_DYNAMIC_METHODDEF #define _IMP_EXEC_DYNAMIC_METHODDEF #endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */ - /*[clinic end generated code: output=22a7225925755674 input=a9049054013a1b77]*/ -/*[clinic end generated code: output=90ad6e5833e6170d input=a9049054013a1b77]*/ ++/*[clinic end generated code: output=d24d7f73702a907f input=a9049054013a1b77]*/