commit:     9ef577a37dd20e634bd433e3fe1fa2e094357442
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 28 17:32:22 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jun 28 17:32:52 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9ef577a3

dev-python/makefun: Fix tests, enable py3.13

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/makefun/files/makefun-1.15.2-test.patch | 98 ++++++++++++++++++++++
 dev-python/makefun/makefun-1.15.2.ebuild           | 13 ++-
 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
 }

Reply via email to