1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
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():
|