[Python-checkins] cpython (3.5): Issue #27481: Docummented that ValueError is now raised instead of TypeError

serhiy.storchaka python-checkins at python.org
Tue Jul 12 02:15:31 EDT 2016


https://hg.python.org/cpython/rev/420030a5e854
changeset:   102331:420030a5e854
branch:      3.5
parent:      102324:6aca24745831
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Tue Jul 12 09:14:15 2016 +0300
summary:
  Issue #27481: Docummented that ValueError is now raised instead of TypeError
in case of embedded null characters/bytes.  Patch by Xiang Zhang.

files:
  Doc/c-api/arg.rst   |  22 +++++++++++++++++-----
  Doc/c-api/bytes.rst |   6 +++++-
  2 files changed, 22 insertions(+), 6 deletions(-)


diff --git a/Doc/c-api/arg.rst b/Doc/c-api/arg.rst
--- a/Doc/c-api/arg.rst
+++ b/Doc/c-api/arg.rst
@@ -59,8 +59,8 @@
    Convert a Unicode object to a C pointer to a character string.
    A pointer to an existing string is stored in the character pointer
    variable whose address you pass.  The C string is NUL-terminated.
-   The Python string must not contain embedded NUL bytes; if it does,
-   a :exc:`TypeError` exception is raised. Unicode objects are converted
+   The Python string must not contain embedded null characters; if it does,
+   a :exc:`ValueError` exception is raised. Unicode objects are converted
    to C strings using ``'utf-8'`` encoding. If this conversion fails, a
    :exc:`UnicodeError` is raised.
 
@@ -71,6 +71,10 @@
       preferable to use the ``O&`` format with :c:func:`PyUnicode_FSConverter`
       as *converter*.
 
+   .. versionchanged:: 3.5
+      Previously, :exc:`TypeError` was raised when embedded null characters
+      were encountered in the Python string.
+
 ``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]
    This format accepts Unicode objects as well as bytes-like objects.
    It fills a :c:type:`Py_buffer` structure provided by the caller.
@@ -99,9 +103,13 @@
 ``y`` (read-only :term:`bytes-like object`) [const char \*]
    This format converts a bytes-like object to a C pointer to a character
    string; it does not accept Unicode objects.  The bytes buffer must not
-   contain embedded NUL bytes; if it does, a :exc:`TypeError`
+   contain embedded null bytes; if it does, a :exc:`ValueError`
    exception is raised.
 
+   .. versionchanged:: 3.5
+      Previously, :exc:`TypeError` was raised when embedded null bytes were
+      encountered in the bytes buffer.
+
 ``y*`` (:term:`bytes-like object`) [Py_buffer]
    This variant on ``s*`` doesn't accept Unicode objects, only
    bytes-like objects.  **This is the recommended way to accept
@@ -127,14 +135,18 @@
    pointer variable, which will be filled with the pointer to an existing
    Unicode buffer.  Please note that the width of a :c:type:`Py_UNICODE`
    character depends on compilation options (it is either 16 or 32 bits).
-   The Python string must not contain embedded NUL characters; if it does,
-   a :exc:`TypeError` exception is raised.
+   The Python string must not contain embedded null characters; if it does,
+   a :exc:`ValueError` exception is raised.
 
    .. note::
       Since ``u`` doesn't give you back the length of the string, and it
       may contain embedded NUL characters, it is recommended to use ``u#``
       or ``U`` instead.
 
+   .. versionchanged:: 3.5
+      Previously, :exc:`TypeError` was raised when embedded null characters
+      were encountered in the Python string.
+
 ``u#`` (:class:`str`) [Py_UNICODE \*, int]
    This variant on ``u`` stores into two C variables, the first one a pointer to a
    Unicode data buffer, the second one its length.
diff --git a/Doc/c-api/bytes.rst b/Doc/c-api/bytes.rst
--- a/Doc/c-api/bytes.rst
+++ b/Doc/c-api/bytes.rst
@@ -158,7 +158,7 @@
 
    If *length* is *NULL*, the bytes object
    may not contain embedded null bytes;
-   if it does, the function returns ``-1`` and a :exc:`TypeError` is raised.
+   if it does, the function returns ``-1`` and a :exc:`ValueError` is raised.
 
    The buffer refers to an internal buffer of *obj*, which includes an
    additional null byte at the end (not counted in *length*).  The data
@@ -167,6 +167,10 @@
    *obj* is not a bytes object at all, :c:func:`PyBytes_AsStringAndSize`
    returns ``-1`` and raises :exc:`TypeError`.
 
+   .. versionchanged:: 3.5
+      Previously, :exc:`TypeError` was raised when embedded null bytes were
+      encountered in the bytes object.
+
 
 .. c:function:: void PyBytes_Concat(PyObject **bytes, PyObject *newpart)
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list