mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-10 00:04:51 +03:00
dev-python/re-assert: Improve the re fallback patch
Improve the `re` fallback patch to use it on PyPy even if `regex` is available. Fix returning some failure message when match fails. Update the dependency in `setup.cfg` as well. Deselect tests that rely on `regex`-specific output. Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -1,16 +1,42 @@
|
||||
diff --git a/re_assert.py b/re_assert.py
|
||||
index f6ea6b9..66479c3 100644
|
||||
index 840401e..8818da1 100644
|
||||
--- a/re_assert.py
|
||||
+++ b/re_assert.py
|
||||
@@ -3,7 +3,10 @@ from __future__ import annotations
|
||||
@@ -1,8 +1,13 @@
|
||||
+import sys
|
||||
+
|
||||
from typing import Any
|
||||
from typing import Optional
|
||||
from typing import Pattern
|
||||
|
||||
-import regex
|
||||
+try:
|
||||
+if sys.implementation.name == "cpython":
|
||||
+ import regex
|
||||
+except ImportError:
|
||||
+else:
|
||||
+ import re as regex
|
||||
|
||||
|
||||
class Matches: # TODO: Generic[AnyStr] (binary pattern support)
|
||||
@@ -12,6 +17,9 @@ class Matches: # TODO: Generic[AnyStr] (binary pattern support)
|
||||
self._type = type(pattern)
|
||||
|
||||
def _fail_message(self, fail: str) -> str:
|
||||
+ if sys.implementation.name != "cpython":
|
||||
+ return "regex failed to match"
|
||||
+
|
||||
# binary search to find the longest substring match
|
||||
pos, bound = 0, len(fail)
|
||||
while pos < bound:
|
||||
diff --git a/setup.cfg b/setup.cfg
|
||||
index 46303ca..74cf999 100644
|
||||
--- a/setup.cfg
|
||||
+++ b/setup.cfg
|
||||
@@ -20,7 +20,7 @@ classifiers =
|
||||
[options]
|
||||
py_modules = re_assert
|
||||
install_requires =
|
||||
- regex
|
||||
+ regex; python_implementation=="CPython"
|
||||
python_requires = >=3.6.1
|
||||
|
||||
[bdist_wheel]
|
||||
|
||||
@@ -34,3 +34,26 @@ PATCHES=(
|
||||
# use `re` as fallback since `regex` doesn't support PyPy
|
||||
"${FILESDIR}/${P}-re-fallback.patch"
|
||||
)
|
||||
|
||||
python_test() {
|
||||
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
|
||||
local EPYTEST_DESELECT=()
|
||||
|
||||
case ${EPYTHON} in
|
||||
pypy3)
|
||||
EPYTEST_DESELECT+=(
|
||||
# message/repr mismatches due to using `re` module
|
||||
tests/re_assert_test.py::test_fail_at_beginning
|
||||
tests/re_assert_test.py::test_fail_at_end_of_line
|
||||
tests/re_assert_test.py::test_fail_at_end_of_line_mismatching_newline
|
||||
tests/re_assert_test.py::test_fail_end_of_line_with_newline
|
||||
tests/re_assert_test.py::test_fail_multiple_lines
|
||||
tests/re_assert_test.py::test_match_with_tabs
|
||||
tests/re_assert_test.py::test_matches_repr_with_flags
|
||||
tests/re_assert_test.py::test_repr_with_failure
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
epytest
|
||||
}
|
||||
Reference in New Issue
Block a user