Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.5 Changeset: r89041:6625a5970bb8 Date: 2016-12-13 12:25 +0000 http://bitbucket.org/pypy/pypy/changeset/6625a5970bb8/
Log: Add badly faked impl of PyUnicode_GetLength diff --git a/pypy/module/cpyext/test/test_unicodeobject.py b/pypy/module/cpyext/test/test_unicodeobject.py --- a/pypy/module/cpyext/test/test_unicodeobject.py +++ b/pypy/module/cpyext/test/test_unicodeobject.py @@ -32,6 +32,17 @@ Py_DECREF(s); return PyLong_FromLong(result); """), + ("test_GetLength", "METH_NOARGS", + """ + PyObject* s = PyUnicode_FromString("Hello world"); + int result = 0; + + if(PyUnicode_GetLength(s) != 11) { + result = -PyUnicode_GetSize(s); + } + Py_DECREF(s); + return PyLong_FromLong(result); + """), ("test_GetSize_exception", "METH_NOARGS", """ PyObject* f = PyFloat_FromDouble(1.0); @@ -48,6 +59,9 @@ assert module.test_GetSize() == 0 raises(TypeError, module.test_GetSize_exception) + # XXX: needs a test where it differs from GetSize + assert module.test_GetLength() == 0 + assert module.test_is_unicode(u"") assert not module.test_is_unicode(()) diff --git a/pypy/module/cpyext/unicodeobject.py b/pypy/module/cpyext/unicodeobject.py --- a/pypy/module/cpyext/unicodeobject.py +++ b/pypy/module/cpyext/unicodeobject.py @@ -253,6 +253,11 @@ @cpython_api([PyObject], Py_ssize_t, error=-1) def PyUnicode_GetSize(space, ref): + """Return the size of the deprecated Py_UNICODE representation, in code + units (this includes surrogate pairs as 2 units). + + Please migrate to using PyUnicode_GetLength(). + """ if from_ref(space, rffi.cast(PyObject, ref.c_ob_type)) is space.w_unicode: ref = rffi.cast(PyUnicodeObject, ref) return ref.c_length @@ -260,6 +265,15 @@ w_obj = from_ref(space, ref) return space.len_w(w_obj) +@cpython_api([PyObject], Py_ssize_t, error=-1) +def PyUnicode_GetLength(space, w_unicode): + """Return the length of the Unicode object, in code points.""" + # XXX: this is a stub + if not PyUnicode_Check(space, w_unicode): + PyErr_BadArgument(space) + #PyUnicode_READY(w_unicode) + return PyUnicode_GET_LENGTH(space, w_unicode) + @cpython_api([PyObject, rffi.CWCHARP, Py_ssize_t], Py_ssize_t, error=-1) def PyUnicode_AsWideChar(space, ref, buf, size): """Copy the Unicode object contents into the wchar_t buffer w. At most _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit