-
Notifications
You must be signed in to change notification settings - Fork 1
Description
I propose to add a public PyUnicode_Equal(a, b)
function to the limited C API 3.14 to replace the private _PyUnicode_EQ()
function:
API: int PyUnicode_Equal(PyObject *a, PyObject *b)
- Return
1
if a is equal to b. - Return
0
if a is not equal to b. - Set a
TypeError
exception and return-1
if a or b is not a Pythonstr
object. - The function always succeed if a and b are strings.
Python 3.13 moved the private _PyUnicode_EQ()
function to internal C API. mypy and Pyodide are using it.
The existing PyUnicode_Compare()
isn't enough and has an issue. PyUnicode_Compare()
returns -1
for "less than" but also for the error case. The caller must call PyErr_Occurred()
which is inefficient. It causes an ambiguous return value: capi-workgroup/problems#1
PyUnicode_Equal()
has no such ambiguous return value (-1
only means error). Moreover, PyUnicode_Equal()
may be a little bit faster than PyUnicode_Compare()
, but I'm not sure about that.
Vote to add this API: