summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2023-10-11 13:41:58 (GMT)
committerGitHub <noreply@github.com>2023-10-11 13:41:58 (GMT)
commiteb50cd37eac47dd4dc71ab42d0582dfb6eac4515 (patch)
tree410d6c0c88cb2c223cace999b490a6adce642e8f /Doc
parentd1f7fae424d51b0374c8204599583c4a26c1a992 (diff)
downloadcpython-eb50cd37eac47dd4dc71ab42d0582dfb6eac4515.zip
cpython-eb50cd37eac47dd4dc71ab42d0582dfb6eac4515.tar.gz
cpython-eb50cd37eac47dd4dc71ab42d0582dfb6eac4515.tar.bz2
gh-110289: C API: Add PyUnicode_EqualToUTF8() and PyUnicode_EqualToUTF8AndSize() functions (GH-110297)
Diffstat (limited to 'Doc')
-rw-r--r--Doc/c-api/unicode.rst22
-rw-r--r--Doc/data/stable_abi.dat2
-rw-r--r--Doc/whatsnew/3.13.rst6
3 files changed, 30 insertions, 0 deletions
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst
index 2a2cb1b..5ab9f1c 100644
--- a/Doc/c-api/unicode.rst
+++ b/Doc/c-api/unicode.rst
@@ -1396,6 +1396,28 @@ They all return ``NULL`` or ``-1`` if an exception occurs.
:c:func:`PyErr_Occurred` to check for errors.
+.. c:function:: int PyUnicode_EqualToUTF8AndSize(PyObject *unicode, const char *string, Py_ssize_t size)
+
+ Compare a Unicode object with a char buffer which is interpreted as
+ being UTF-8 or ASCII encoded and return true (``1``) if they are equal,
+ or false (``0``) otherwise.
+ If the Unicode object contains surrogate characters or
+ the C string is not valid UTF-8, false (``0``) is returned.
+
+ This function does not raise exceptions.
+
+ .. versionadded:: 3.13
+
+
+.. c:function:: int PyUnicode_EqualToUTF8(PyObject *unicode, const char *string)
+
+ Similar to :c:func:`PyUnicode_EqualToUTF8AndSize`, but compute *string*
+ length using :c:func:`!strlen`.
+ If the Unicode object contains null characters, false (``0``) is returned.
+
+ .. versionadded:: 3.13
+
+
.. c:function:: int PyUnicode_CompareWithASCIIString(PyObject *uni, const char *string)
Compare a Unicode object, *uni*, with *string* and return ``-1``, ``0``, ``1`` for less
diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat
index 5bccd5e..6ec9c90 100644
--- a/Doc/data/stable_abi.dat
+++ b/Doc/data/stable_abi.dat
@@ -755,6 +755,8 @@ function,PyUnicode_DecodeUnicodeEscape,3.2,,
function,PyUnicode_EncodeCodePage,3.7,on Windows,
function,PyUnicode_EncodeFSDefault,3.2,,
function,PyUnicode_EncodeLocale,3.7,,
+function,PyUnicode_EqualToUTF8,3.13,,
+function,PyUnicode_EqualToUTF8AndSize,3.13,,
function,PyUnicode_FSConverter,3.2,,
function,PyUnicode_FSDecoder,3.2,,
function,PyUnicode_Find,3.2,,
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index 8b67c27..bbc1fec 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -1024,6 +1024,12 @@ New Features
functions on Python 3.11 and 3.12.
(Contributed by Victor Stinner in :gh:`107073`.)
+* Add :c:func:`PyUnicode_EqualToUTF8AndSize` and :c:func:`PyUnicode_EqualToUTF8`
+ functions: compare Unicode object with a :c:expr:`const char*` UTF-8 encoded
+ string and return true (``1``) if they are equal, or false (``0``) otherwise.
+ These functions do not raise exceptions.
+ (Contributed by Serhiy Storchaka in :gh:`110289`.)
+
* Add :c:func:`PyThreadState_GetUnchecked()` function: similar to
:c:func:`PyThreadState_Get()`, but don't kill the process with a fatal error
if it is NULL. The caller is responsible to check if the result is NULL.