Issue 29852: Argument Clinic: add common converter to Py_ssize_t that accepts None (original) (raw)

Many methods in the io module accept int and None and convert the argument to Py_ssize_t. Proposed patch adds common Argument Clinic converter for that case. The Py_ssize_t converter now takes the accept argument that can be {int} (the default) or {int, NoneType}. In the latter case None is acceptable value which means using the default value.

Similar converter was previously used locally in the io module, now it is used also in the mmap module.

Examples:

_io.BytesIO.read size: Py_ssize_t(accept={int, NoneType}) = -1 /

_io.BytesIO.truncate size: Py_ssize_t(accept={int, NoneType}, c_default="self->pos") = None /