Skip to content

bpo-24037: Add Argument Clinic converter bool(accept={int}). #485

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,10 @@ Build
Tools/Demos
-----------

- bpo-24037: Argument Clinic now uses the converter `bool(accept={int})` rather
than `int` for semantical booleans. This avoids repeating the default
value for Python and C and will help in converting to `bool` in future.

- Issue #29367: python-gdb.py now supports also ``method-wrapper``
(``wrapperobject``) objects.

Expand Down
52 changes: 26 additions & 26 deletions Modules/_codecsmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,14 +286,14 @@ _codecs_unicode_internal_decode_impl(PyObject *module, PyObject *obj,
_codecs.utf_7_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_7_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=0cd3a944a32a4089 input=bc4d6247ecdb01e6]*/
/*[clinic end generated code: output=0cd3a944a32a4089 input=2d94a5a1f170c8ae]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeUTF7Stateful(data->buf, data->len,
Expand All @@ -306,14 +306,14 @@ _codecs_utf_7_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_8_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_8_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=10f74dec8d9bb8bf input=39161d71e7422ee2]*/
/*[clinic end generated code: output=10f74dec8d9bb8bf input=1ea6c21492e8bcbe]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeUTF8Stateful(data->buf, data->len,
Expand All @@ -326,14 +326,14 @@ _codecs_utf_8_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_16_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_16_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=783b442abcbcc2d0 input=f3cf01d1461007ce]*/
/*[clinic end generated code: output=783b442abcbcc2d0 input=2ba128c28ea0bb40]*/
{
int byteorder = 0;
/* This is overwritten unless final is true. */
Expand All @@ -348,14 +348,14 @@ _codecs_utf_16_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_16_le_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_16_le_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=899b9e6364379dcd input=a77e3bf97335d94e]*/
/*[clinic end generated code: output=899b9e6364379dcd input=43aeb8b0461cace5]*/
{
int byteorder = -1;
/* This is overwritten unless final is true. */
Expand All @@ -370,14 +370,14 @@ _codecs_utf_16_le_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_16_be_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_16_be_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=49f6465ea07669c8 input=606f69fae91b5563]*/
/*[clinic end generated code: output=49f6465ea07669c8 input=339e554c804f34b2]*/
{
int byteorder = 1;
/* This is overwritten unless final is true. */
Expand All @@ -400,14 +400,14 @@ _codecs.utf_16_ex_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
byteorder: int = 0
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_16_ex_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int byteorder, int final)
/*[clinic end generated code: output=0f385f251ecc1988 input=f6e7f697658c013e]*/
/*[clinic end generated code: output=0f385f251ecc1988 input=3201aeddb9636889]*/
{
/* This is overwritten unless final is true. */
Py_ssize_t consumed = data->len;
Expand All @@ -424,14 +424,14 @@ _codecs_utf_16_ex_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_32_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_32_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=2fc961807f7b145f input=86d4f41c6c2e763d]*/
/*[clinic end generated code: output=2fc961807f7b145f input=155a5c673a4e2514]*/
{
int byteorder = 0;
/* This is overwritten unless final is true. */
Expand All @@ -446,14 +446,14 @@ _codecs_utf_32_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_32_le_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_32_le_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=ec8f46b67a94f3e6 input=d18b650772d188ba]*/
/*[clinic end generated code: output=ec8f46b67a94f3e6 input=7baf061069e92d3b]*/
{
int byteorder = -1;
/* This is overwritten unless final is true. */
Expand All @@ -468,14 +468,14 @@ _codecs_utf_32_le_decode_impl(PyObject *module, Py_buffer *data,
_codecs.utf_32_be_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_32_be_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=ff82bae862c92c4e input=19c271b5d34926d8]*/
/*[clinic end generated code: output=ff82bae862c92c4e input=b182026300dae595]*/
{
int byteorder = 1;
/* This is overwritten unless final is true. */
Expand All @@ -498,14 +498,14 @@ _codecs.utf_32_ex_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
byteorder: int = 0
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_utf_32_ex_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int byteorder, int final)
/*[clinic end generated code: output=6bfb177dceaf4848 input=4af3e6ccfe34a076]*/
/*[clinic end generated code: output=6bfb177dceaf4848 input=7b9c2cb819fb237a]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeUTF32Stateful(data->buf, data->len,
Expand Down Expand Up @@ -610,14 +610,14 @@ _codecs_charmap_decode_impl(PyObject *module, Py_buffer *data,
_codecs.mbcs_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_mbcs_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=39b65b8598938c4b input=d492c1ca64f4fa8a]*/
/*[clinic end generated code: output=39b65b8598938c4b input=b5f2fe568f311297]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeMBCSStateful(data->buf, data->len,
Expand All @@ -629,14 +629,14 @@ _codecs_mbcs_decode_impl(PyObject *module, Py_buffer *data,
_codecs.oem_decode
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_oem_decode_impl(PyObject *module, Py_buffer *data,
const char *errors, int final)
/*[clinic end generated code: output=da1617612f3fcad8 input=95b8a92c446b03cd]*/
/*[clinic end generated code: output=da1617612f3fcad8 input=278709bcfd374a9c]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeCodePageStateful(CP_OEMCP,
Expand All @@ -649,14 +649,14 @@ _codecs.code_page_decode
codepage: int
data: Py_buffer
errors: str(accept={str, NoneType}) = NULL
final: int(c_default="0") = False
final: bool(accept={int}) = False
/
[clinic start generated code]*/

static PyObject *
_codecs_code_page_decode_impl(PyObject *module, int codepage,
Py_buffer *data, const char *errors, int final)
/*[clinic end generated code: output=53008ea967da3fff input=4f3152a304e21d51]*/
/*[clinic end generated code: output=53008ea967da3fff input=51f6169021c68dd5]*/
{
Py_ssize_t consumed = data->len;
PyObject *decoded = PyUnicode_DecodeCodePageStateful(codepage,
Expand Down
4 changes: 2 additions & 2 deletions Modules/_io/_iomodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ _io.open
encoding: str(accept={str, NoneType}) = NULL
errors: str(accept={str, NoneType}) = NULL
newline: str(accept={str, NoneType}) = NULL
closefd: int(c_default="1") = True
closefd: bool(accept={int}) = True
opener: object = None

Open file and return a stream. Raise IOError upon failure.
Expand Down Expand Up @@ -232,7 +232,7 @@ static PyObject *
_io_open_impl(PyObject *module, PyObject *file, const char *mode,
int buffering, const char *encoding, const char *errors,
const char *newline, int closefd, PyObject *opener)
/*[clinic end generated code: output=aefafc4ce2b46dc0 input=f4e1ca75223987bc]*/
/*[clinic end generated code: output=aefafc4ce2b46dc0 input=7f81b2a1d3b02344]*/
{
unsigned i;

Expand Down
4 changes: 2 additions & 2 deletions Modules/_io/fileio.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ extern int _Py_open_cloexec_works;
_io.FileIO.__init__
file as nameobj: object
mode: str = "r"
closefd: int(c_default="1") = True
closefd: bool(accept={int}) = True
opener: object = None

Open a file.
Expand All @@ -228,7 +228,7 @@ results in functionality similar to passing None).
static int
_io_FileIO___init___impl(fileio *self, PyObject *nameobj, const char *mode,
int closefd, PyObject *opener)
/*[clinic end generated code: output=23413f68e6484bbd input=193164e293d6c097]*/
/*[clinic end generated code: output=23413f68e6484bbd input=1596c9157a042a39]*/
{
#ifdef MS_WINDOWS
Py_UNICODE *widename = NULL;
Expand Down
10 changes: 5 additions & 5 deletions Modules/_io/textio.c
Original file line number Diff line number Diff line change
Expand Up @@ -511,13 +511,13 @@ _PyIncrementalNewlineDecoder_decode(PyObject *myself,
/*[clinic input]
_io.IncrementalNewlineDecoder.decode
input: object
final: int(c_default="0") = False
final: bool(accept={int}) = False
[clinic start generated code]*/

static PyObject *
_io_IncrementalNewlineDecoder_decode_impl(nldecoder_object *self,
PyObject *input, int final)
/*[clinic end generated code: output=0d486755bb37a66e input=d65677385bfd6827]*/
/*[clinic end generated code: output=0d486755bb37a66e input=a4ea97f26372d866]*/
{
return _PyIncrementalNewlineDecoder_decode((PyObject *) self, input, final);
}
Expand Down Expand Up @@ -792,8 +792,8 @@ _io.TextIOWrapper.__init__
encoding: str(accept={str, NoneType}) = NULL
errors: str(accept={str, NoneType}) = NULL
newline: str(accept={str, NoneType}) = NULL
line_buffering: int(c_default="0") = False
write_through: int(c_default="0") = False
line_buffering: bool(accept={int}) = False
write_through: bool(accept={int}) = False

Character and line based layer over a BufferedIOBase object, buffer.

Expand Down Expand Up @@ -830,7 +830,7 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
const char *encoding, const char *errors,
const char *newline, int line_buffering,
int write_through)
/*[clinic end generated code: output=56a83402ce2a8381 input=3126cb3101a2c99b]*/
/*[clinic end generated code: output=56a83402ce2a8381 input=598d10cc5f2ed7dd]*/
{
PyObject *raw, *codec_info = NULL;
_PyIO_State *state = NULL;
Expand Down
4 changes: 2 additions & 2 deletions Modules/_io/winconsoleio.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ winconsoleio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
_io._WindowsConsoleIO.__init__
file as nameobj: object
mode: str = "r"
closefd: int(c_default="1") = True
closefd: bool(accept={int}) = True
opener: object = None

Open a console buffer by file descriptor.
Expand All @@ -266,7 +266,7 @@ static int
_io__WindowsConsoleIO___init___impl(winconsoleio *self, PyObject *nameobj,
const char *mode, int closefd,
PyObject *opener)
/*[clinic end generated code: output=3fd9cbcdd8d95429 input=61be39633a86f5d7]*/
/*[clinic end generated code: output=3fd9cbcdd8d95429 input=06ae4b863c63244b]*/
{
const char *s;
wchar_t *name = NULL;
Expand Down
10 changes: 5 additions & 5 deletions Modules/_tkinter.c
Original file line number Diff line number Diff line change
Expand Up @@ -3199,11 +3199,11 @@ _tkinter.create
screenName: str(accept={str, NoneType}) = NULL
baseName: str = NULL
className: str = "Tk"
interactive: int(c_default="0") = False
wantobjects: int(c_default="0") = False
wantTk: int(c_default="1") = True
interactive: bool(accept={int}) = False
wantobjects: bool(accept={int}) = False
wantTk: bool(accept={int}) = True
if false, then Tk_Init() doesn't get called
sync: int(c_default="0") = False
sync: bool(accept={int}) = False
if true, then pass -sync to wish
use: str(accept={str, NoneType}) = NULL
if not None, then pass -use to wish
Expand All @@ -3216,7 +3216,7 @@ _tkinter_create_impl(PyObject *module, const char *screenName,
const char *baseName, const char *className,
int interactive, int wantobjects, int wantTk, int sync,
const char *use)
/*[clinic end generated code: output=e3315607648e6bb4 input=0d522aad1cb0ca0e]*/
/*[clinic end generated code: output=e3315607648e6bb4 input=431907c134c80085]*/
{
/* XXX baseName is not used anymore;
* try getting rid of it. */
Expand Down
12 changes: 6 additions & 6 deletions Modules/_winapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,13 +387,13 @@ _winapi_CloseHandle_impl(PyObject *module, HANDLE handle)
_winapi.ConnectNamedPipe

handle: HANDLE
overlapped as use_overlapped: int(c_default='0') = False
overlapped as use_overlapped: bool(accept={int}) = False
[clinic start generated code]*/

static PyObject *
_winapi_ConnectNamedPipe_impl(PyObject *module, HANDLE handle,
int use_overlapped)
/*[clinic end generated code: output=335a0e7086800671 input=edc83da007ebf3be]*/
/*[clinic end generated code: output=335a0e7086800671 input=34f937c1c86e5e68]*/
{
BOOL success;
OverlappedObject *overlapped = NULL;
Expand Down Expand Up @@ -1161,13 +1161,13 @@ _winapi.ReadFile

handle: HANDLE
size: int
overlapped as use_overlapped: int(c_default='0') = False
overlapped as use_overlapped: bool(accept={int}) = False
[clinic start generated code]*/

static PyObject *
_winapi_ReadFile_impl(PyObject *module, HANDLE handle, int size,
int use_overlapped)
/*[clinic end generated code: output=492029ca98161d84 input=8dd810194e86ac7d]*/
/*[clinic end generated code: output=492029ca98161d84 input=3f0fde92f74de59a]*/
{
DWORD nread;
PyObject *buf;
Expand Down Expand Up @@ -1413,13 +1413,13 @@ _winapi.WriteFile

handle: HANDLE
buffer: object
overlapped as use_overlapped: int(c_default='0') = False
overlapped as use_overlapped: bool(accept={int}) = False
[clinic start generated code]*/

static PyObject *
_winapi_WriteFile_impl(PyObject *module, HANDLE handle, PyObject *buffer,
int use_overlapped)
/*[clinic end generated code: output=2ca80f6bf3fa92e3 input=51846a5af52053fd]*/
/*[clinic end generated code: output=2ca80f6bf3fa92e3 input=11eae2a03aa32731]*/
{
Py_buffer _buf, *buf;
DWORD len, written;
Expand Down
Loading