summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Zamarin <arthurzam@gmail.com>2021-07-30 11:43:14 +0300
committerMichał Górny <mgorny@gentoo.org>2021-08-02 10:40:47 +0200
commit72ba0fa7364ce1802bca62d5429d23758c3dd19e (patch)
treeeaf6da94ed467a8ecdca113710aae7e0b6fecc57 /dev-python/regex
parentdev-python/spyder: add version 5.1.0 (diff)
downloadgentoo-72ba0fa7364ce1802bca62d5429d23758c3dd19e.tar.gz
gentoo-72ba0fa7364ce1802bca62d5429d23758c3dd19e.tar.bz2
gentoo-72ba0fa7364ce1802bca62d5429d23758c3dd19e.zip
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>
Diffstat (limited to 'dev-python/regex')
-rw-r--r--dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch35
-rw-r--r--dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_issue_18468.patch31
-rw-r--r--dev-python/regex/regex-2021.4.4.ebuild7
-rw-r--r--dev-python/regex/regex-2021.7.1.ebuild7
-rw-r--r--dev-python/regex/regex-2021.7.6.ebuild7
5 files changed, 84 insertions, 3 deletions
diff --git a/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch
new file mode 100644
index 000000000000..706b41b74688
--- /dev/null
+++ b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_empty_array.patch
@@ -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;
diff --git a/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_issue_18468.patch b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_issue_18468.patch
new file mode 100644
index 000000000000..ae5958021781
--- /dev/null
+++ b/dev-python/regex/files/regex-2021.4.4-pypy3-fix-test_issue_18468.patch
@@ -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)
+
diff --git a/dev-python/regex/regex-2021.4.4.ebuild b/dev-python/regex/regex-2021.4.4.ebuild
index 80f758e55ed2..738d258d1ab9 100644
--- a/dev-python/regex/regex-2021.4.4.ebuild
+++ b/dev-python/regex/regex-2021.4.4.ebuild
@@ -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() {
diff --git a/dev-python/regex/regex-2021.7.1.ebuild b/dev-python/regex/regex-2021.7.1.ebuild
index 271faa2b4fed..c0a5a26d5c4e 100644
--- a/dev-python/regex/regex-2021.7.1.ebuild
+++ b/dev-python/regex/regex-2021.7.1.ebuild
@@ -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() {
diff --git a/dev-python/regex/regex-2021.7.6.ebuild b/dev-python/regex/regex-2021.7.6.ebuild
index 271faa2b4fed..c0a5a26d5c4e 100644
--- a/dev-python/regex/regex-2021.7.6.ebuild
+++ b/dev-python/regex/regex-2021.7.6.ebuild
@@ -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() {