Index: Python/getargs.c =================================================================== --- Python/getargs.c (révision 81561) +++ Python/getargs.c (copie de travail) @@ -864,7 +864,7 @@ break; } - /* XXX WAAAAH! 's', 'y', 'z', 'u', 'Z', 'e', 'w', 't' codes all + /* XXX WAAAAH! 's', 'y', 'z', 'u', 'Z', 'e', 'w' codes all need to be cleaned up! */ case 's': {/* text string */ @@ -1381,45 +1381,6 @@ break; } - /*TEO: This can be eliminated --- here only for backward - compatibility */ - case 't': { /* 8-bit character buffer, read-only access */ - char **p = va_arg(*p_va, char **); - PyBufferProcs *pb = arg->ob_type->tp_as_buffer; - Py_ssize_t count; - Py_buffer view; - - if (*format++ != '#') - return converterr( - "invalid use of 't' format character", - arg, msgbuf, bufsize); - if (pb == NULL || pb->bf_getbuffer == NULL) - return converterr( - "bytes or read-only character buffer", - arg, msgbuf, bufsize); - - if (PyObject_GetBuffer(arg, &view, PyBUF_SIMPLE) != 0) - return converterr("string or single-segment read-only buffer", - arg, msgbuf, bufsize); - - count = view.len; - *p = view.buf; - if (pb->bf_releasebuffer) - return converterr( - "string or pinned buffer", - arg, msgbuf, bufsize); - - PyBuffer_Release(&view); - - if (count < 0) - return converterr("(unspecified)", arg, msgbuf, bufsize); - { - FETCH_SIZE; - STORE_SIZE(count); - } - break; - } - default: return converterr("impossible", arg, msgbuf, bufsize); Index: Misc/NEWS =================================================================== --- Misc/NEWS (révision 81561) +++ Misc/NEWS (copie de travail) @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #8339: Remove "t#" parsing format of PyArg_ParseTuple(), use "y#" + instead + - Issue #2844: Make int('42', n) consistently raise ValueError for invalid integers n (including n = -909). Index: Doc/c-api/arg.rst =================================================================== --- Doc/c-api/arg.rst (révision 81561) +++ Doc/c-api/arg.rst (copie de travail) @@ -149,13 +149,6 @@ any conversion. Raises :exc:`TypeError` if the object is not a Unicode object. The C variable may also be declared as :ctype:`PyObject\*`. -``t#`` (read-only character buffer) [char \*, int] - Like ``s#``, but accepts any object which implements the read-only buffer - interface. The :ctype:`char\*` variable is set to point to the first byte of - the buffer, and the :ctype:`int` is set to the length of the buffer. Only - single-segment buffer objects are accepted; :exc:`TypeError` is raised for all - others. - ``w`` (read-write character buffer) [char \*] Similar to ``s``, but accepts any object which implements the read-write buffer interface. The caller must determine the length of the buffer by other means, Index: Doc/whatsnew/3.2.rst =================================================================== --- Doc/whatsnew/3.2.rst (révision 81561) +++ Doc/whatsnew/3.2.rst (copie de travail) @@ -161,4 +161,6 @@ * bytearray objects cannot be used anymore as filenames: convert them to bytes +* "t#" format of PyArg_ParseTuple() has been removed: use "y#" instead + * Stub Index: Modules/_codecsmodule.c =================================================================== --- Modules/_codecsmodule.c (révision 81561) +++ Modules/_codecsmodule.c (copie de travail) @@ -646,7 +646,7 @@ Py_ssize_t size; const char *errors = NULL; - if (!PyArg_ParseTuple(args, "t#|z:charbuffer_encode", + if (!PyArg_ParseTuple(args, "y#|z:charbuffer_encode", &data, &size, &errors)) return NULL;