mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/regex: enable support for pypy3
uses custom patches that try to fix the two last test failures here: https://bitbucket.org/mrabarnett/mrab-regex/issues/404/ Signed-off-by: Arthur Zamarin <arthurzam@gmail.com> Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
committed by
Michał Górny
parent
3736a67edb
commit
72ba0fa736
@@ -0,0 +1,35 @@
|
||||
From: Arthur Zamarin <arthurzam@gmail.com>
|
||||
Date: Fri, 30 Jul 2021 11:13:41 +0300
|
||||
[PATCH] PyPy3: fix test_empty_array
|
||||
|
||||
As an optimization, PyPy sets empty array.array to use a NULL buffer
|
||||
pointer, while CPython uses empty buffer (but not NULL).
|
||||
Add a very specially crafted fix for PyPy3
|
||||
|
||||
Signed-off-by: Arthur Zamarin <arthurzam@gmail.com>
|
||||
---
|
||||
regex_3/_regex.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
--- a/regex_3/_regex.c
|
||||
+++ b/regex_3/_regex.c
|
||||
@@ -18062,9 +18062,19 @@ Py_LOCAL_INLINE(BOOL) get_string(PyObject* string, RE_StringInfo* str_info) {
|
||||
}
|
||||
|
||||
if (!str_info->view.buf) {
|
||||
+#if defined(PYPY_VERSION)
|
||||
+ /* In PyPy3, when the array.array is empty, it's buffer is NULL */
|
||||
+ str_info->characters = NULL;
|
||||
+ str_info->length = 0;
|
||||
+ str_info->charsize = 1;
|
||||
+ str_info->is_unicode = FALSE;
|
||||
+ str_info->should_release = FALSE;
|
||||
+ return TRUE;
|
||||
+#else
|
||||
PyBuffer_Release(&str_info->view);
|
||||
PyErr_SetString(PyExc_ValueError, "buffer is NULL");
|
||||
return FALSE;
|
||||
+#endif
|
||||
}
|
||||
|
||||
str_info->should_release = TRUE;
|
||||
@@ -0,0 +1,31 @@
|
||||
From: Arthur Zamarin <arthurzam@gmail.com>
|
||||
Date: Fri, 30 Jul 2021 11:38:26 +0300
|
||||
[PATCH] PyPy3: fix test_issue_18468
|
||||
|
||||
When using the small subclass classes to test correctness of split
|
||||
results, there are difference between CPython and PyPy3:
|
||||
- CPython returns always the base class (for example str instead
|
||||
of StrSubclass)
|
||||
- PyPy3 returns the same class, so we get an StrSubclass
|
||||
|
||||
Based on the test, it looks like the behaviour of PyPy3 is correct,
|
||||
but the test works based on CPython.
|
||||
|
||||
The fix was to relax the equals type to check that it is a subclass.
|
||||
|
||||
Signed-off-by: Arthur Zamarin <arthurzam@gmail.com>
|
||||
---
|
||||
regex_3/test_regex.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/regex_3/test_regex.py
|
||||
+++ b/regex_3/test_regex.py
|
||||
@@ -52,7 +52,7 @@ class RegexTests(unittest.TestCase):
|
||||
for x, y in zip(actual, expect):
|
||||
recurse(x, y)
|
||||
else:
|
||||
- self.assertIs(type(actual), type(expect), msg)
|
||||
+ self.assertIsInstance(actual, type(expect), msg)
|
||||
|
||||
recurse(actual, expect)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( python3_{7..10} )
|
||||
PYTHON_COMPAT=( python3_{8..10} pypy3 )
|
||||
|
||||
inherit distutils-r1 flag-o-matic
|
||||
|
||||
@@ -16,6 +16,11 @@ SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos"
|
||||
IUSE="doc"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_empty_array.patch"
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_issue_18468.patch"
|
||||
)
|
||||
|
||||
distutils_enable_tests unittest
|
||||
|
||||
python_test() {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
PYTHON_COMPAT=( python3_{8..10} pypy3 )
|
||||
inherit distutils-r1 flag-o-matic
|
||||
|
||||
DESCRIPTION="Alternative regular expression module to replace re"
|
||||
@@ -15,6 +15,11 @@ SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
|
||||
IUSE="doc"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_empty_array.patch"
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_issue_18468.patch"
|
||||
)
|
||||
|
||||
distutils_enable_tests unittest
|
||||
|
||||
python_test() {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{8..10} )
|
||||
PYTHON_COMPAT=( python3_{8..10} pypy3 )
|
||||
inherit distutils-r1 flag-o-matic
|
||||
|
||||
DESCRIPTION="Alternative regular expression module to replace re"
|
||||
@@ -15,6 +15,11 @@ SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
|
||||
IUSE="doc"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_empty_array.patch"
|
||||
"${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_issue_18468.patch"
|
||||
)
|
||||
|
||||
distutils_enable_tests unittest
|
||||
|
||||
python_test() {
|
||||
|
||||
Reference in New Issue
Block a user