summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/makefun/files/makefun-1.15.2-test.patch98
-rw-r--r--dev-python/makefun/makefun-1.15.2.ebuild13
2 files changed, 108 insertions, 3 deletions
diff --git a/dev-python/makefun/files/makefun-1.15.2-test.patch b/dev-python/makefun/files/makefun-1.15.2-test.patch
new file mode 100644
index 000000000000..ab43045809d9
--- /dev/null
+++ b/dev-python/makefun/files/makefun-1.15.2-test.patch
@@ -0,0 +1,98 @@
+diff --git a/tests/test_partial_and_macros.py b/tests/test_partial_and_macros.py
+index 6fd4503..3ce0a33 100644
+--- a/tests/test_partial_and_macros.py
++++ b/tests/test_partial_and_macros.py
+@@ -1,5 +1,6 @@
+ import functools
+ import pytest
++import re
+ import sys
+
+ import makefun
+@@ -11,6 +12,11 @@ except ImportError:
+
+ PY2 = sys.version_info < (3, )
+
++# Python 3.13 dedents docstrings, earlier versions just strip initial
++# whitespace. Use a regexp to get a consistently dedented docstring
++# for comparison across Python versions.
++DOCSTRING_NORMALIZE_RE = re.compile(r"^ +", re.MULTILINE)
++
+
+ def test_doc():
+ def foo(x, y):
+@@ -41,15 +47,15 @@ def test_doc():
+
+ sig_actual_call = ref_sig_str.replace("*, ", "")
+
+- assert bar.__doc__ \
++ assert DOCSTRING_NORMALIZE_RE.sub("", bar.__doc__) \
+ == """<This function is equivalent to 'foo%s', see original 'foo' doc below.>
+
+- a `foo` function
++a `foo` function
+
+- :param x:
+- :param y:
+- :return:
+- """ % sig_actual_call
++:param x:
++:param y:
++:return:
++""" % sig_actual_call
+
+
+ def test_partial():
+@@ -78,16 +84,16 @@ def test_partial():
+
+ sig_actual_call = "(x, y='hello', a)" # if PY2 else "(x, *, y='hello', a)"
+
+- assert foo.__doc__.replace("=KW_ONLY_ARG!", "") \
++ assert DOCSTRING_NORMALIZE_RE.sub("", foo.__doc__.replace("=KW_ONLY_ARG!", "")) \
+ == """<This function is equivalent to 'foo%s', see original 'foo' doc below.>
+
+- a `foo` function
++a `foo` function
+
+- :param x:
+- :param y:
+- :param a:
+- :return:
+- """ % sig_actual_call
++:param x:
++:param y:
++:param a:
++:return:
++""" % sig_actual_call
+
+
+ def test_issue_57():
+@@ -127,9 +133,7 @@ def test_create_with_partial():
+ assert m() == -1
+ assert m.i == 1
+ # the doc remains untouched in create_function as opposed to wraps, this is normal
+- assert m.__doc__ == """partial(func, *args, **keywords) - new function with partial application
+- of the given arguments and keywords.
+-"""
++ assert m.__doc__ == functools.partial.__doc__
+
+
+ def test_args_order_and_kind():
+@@ -161,11 +165,12 @@ def test_args_order_and_kind():
+ # it is possible to keyword-partialize a positional-only argument...
+ fp_ref = functools.partial(f, b=0)
+
+- # but 'signature' does not support it !
+- with pytest.raises(ValueError):
+- signature(fp_ref)
+-
+- # assert str(signature(fp_ref)) == "(c, /, *, d, **e)"
++ # but 'signature' does not support it before Python 3.12.4 !
++ if sys.version_info < (3, 12, 4):
++ with pytest.raises(ValueError):
++ signature(fp_ref)
++ else:
++ assert str(signature(fp_ref)) == "(a, c, /, *, d, **e)"
+
+ # so we do not support it
+ with pytest.raises(NotImplementedError):
diff --git a/dev-python/makefun/makefun-1.15.2.ebuild b/dev-python/makefun/makefun-1.15.2.ebuild
index e422b0555e2d..29cd2d63889b 100644
--- a/dev-python/makefun/makefun-1.15.2.ebuild
+++ b/dev-python/makefun/makefun-1.15.2.ebuild
@@ -1,10 +1,10 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_COMPAT=( python3_{10..13} )
inherit distutils-r1 pypi
@@ -25,6 +25,13 @@ BDEPEND="
distutils_enable_tests pytest
src_prepare() {
- sed -e '/pytest-runner/d' -i setup.cfg || die
+ local PATCHES=(
+ # https://github.com/smarie/python-makefun/pull/103
+ # https://github.com/smarie/python-makefun/pull/104
+ "${FILESDIR}/${P}-test.patch"
+ )
+
distutils-r1_src_prepare
+
+ sed -e '/pytest-runner/d' -i setup.cfg || die
}