diff options
Diffstat (limited to 'devel/brz/files/patch-breezy___rio__pyx.pyx')
-rw-r--r-- | devel/brz/files/patch-breezy___rio__pyx.pyx | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/devel/brz/files/patch-breezy___rio__pyx.pyx b/devel/brz/files/patch-breezy___rio__pyx.pyx new file mode 100644 index 000000000000..125603cb2660 --- /dev/null +++ b/devel/brz/files/patch-breezy___rio__pyx.pyx @@ -0,0 +1,82 @@ +--- breezy/_rio_pyx.pyx.orig 2021-12-07 02:24:26 UTC ++++ breezy/_rio_pyx.pyx +@@ -31,10 +31,6 @@ from cpython.unicode cimport ( + from cpython.unicode cimport ( + PyUnicode_CheckExact, + PyUnicode_DecodeUTF8, +- # Deprecated after PEP 393 changes +- PyUnicode_AS_UNICODE, +- PyUnicode_FromUnicode, +- PyUnicode_GET_SIZE, + ) + from cpython.list cimport ( + PyList_Append, +@@ -44,15 +40,9 @@ from cpython.mem cimport ( + PyMem_Malloc, + PyMem_Realloc, + ) +-from cpython.version cimport ( +- PY_MAJOR_VERSION, +- ) + + cdef extern from "Python.h": + ctypedef int Py_UNICODE +- object PyUnicode_EncodeASCII(Py_UNICODE *, int, char *) +- int Py_UNICODE_ISLINEBREAK(Py_UNICODE) +- + # GZ 2017-09-11: Not sure why cython unicode module lacks this? + object PyUnicode_FromStringAndSize(const char *u, Py_ssize_t size) + +@@ -74,19 +64,13 @@ def _valid_tag(tag): + + + def _valid_tag(tag): +- cdef char *c_tag ++ cdef const char *c_tag + cdef Py_ssize_t c_len + cdef int i + # GZ 2017-09-11: Encapsulate native string as ascii tag somewhere neater +- if PY_MAJOR_VERSION >= 3: +- if not PyUnicode_CheckExact(tag): +- raise TypeError(tag) +- c_tag = PyUnicode_AsUTF8AndSize(tag, &c_len) +- else: +- if not PyBytes_CheckExact(tag): +- raise TypeError(tag) +- c_tag = PyBytes_AS_STRING(tag) +- c_len = PyBytes_GET_SIZE(tag) ++ if not PyUnicode_CheckExact(tag): ++ raise TypeError(tag) ++ c_tag = PyUnicode_AsUTF8AndSize(tag, &c_len) + if c_len < 1: + return False + for i from 0 <= i < c_len: +@@ -104,27 +88,8 @@ cdef object _split_first_line_utf8(char *line, int len + raise ValueError("invalid tag in line %r" % line) + memcpy(value, line+i+2, len-i-2) + value_len[0] = len-i-2 +- if PY_MAJOR_VERSION >= 3: +- return PyUnicode_FromStringAndSize(line, i) +- return PyBytes_FromStringAndSize(line, i) ++ return PyUnicode_DecodeUTF8(line, i, "strict") + raise ValueError('tag/value separator not found in line %r' % line) +- +- +-cdef object _split_first_line_unicode(Py_UNICODE *line, int len, +- Py_UNICODE *value, Py_ssize_t *value_len): +- cdef int i +- for i from 0 <= i < len: +- if line[i] == c':': +- if line[i+1] != c' ': +- raise ValueError("invalid tag in line %r" % +- PyUnicode_FromUnicode(line, len)) +- memcpy(value, &line[i+2], (len-i-2) * sizeof(Py_UNICODE)) +- value_len[0] = len-i-2 +- if PY_MAJOR_VERSION >= 3: +- return PyUnicode_FromUnicode(line, i) +- return PyUnicode_EncodeASCII(line, i, "strict") +- raise ValueError("tag/value separator not found in line %r" % +- PyUnicode_FromUnicode(line, len)) + + + def _read_stanza_utf8(line_iter): |