Skip to content

Commit

Permalink
Add patch to fix tests for newer Python releases
Browse files Browse the repository at this point in the history
  • Loading branch information
dopplershift committed Sep 25, 2024
1 parent 11dd7d6 commit 142d00b
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
92 changes: 92 additions & 0 deletions recipe/fix-tests-newer-python.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
diff --git a/cytoolz/functoolz.pyx b/cytoolz/functoolz.pyx
index 446e85c..269a143 100644
--- a/cytoolz/functoolz.pyx
+++ b/cytoolz/functoolz.pyx
@@ -27,6 +27,11 @@ __all__ = ['identity', 'thread_first', 'thread_last', 'memoize', 'compose', 'com


cpdef object identity(object x):
+ """ Identity function. Return x
+
+ >>> identity(3)
+ 3
+ """
return x


diff --git a/cytoolz/tests/test_docstrings.py b/cytoolz/tests/test_docstrings.py
index 85654e6..0420e7b 100644
--- a/cytoolz/tests/test_docstrings.py
+++ b/cytoolz/tests/test_docstrings.py
@@ -49,8 +49,10 @@ def test_docstrings_uptodate():
d = merge_with(identity, toolz_dict, cytoolz_dict)
for key, (toolz_func, cytoolz_func) in d.items():
# only check if the new doctstring *contains* the expected docstring
- toolz_doc = convertdoc(toolz_func)
- cytoolz_doc = cytoolz_func.__doc__
+ # in Python < 3.13 the second line is indented, in 3.13+
+ # it is not, strip all lines to fudge it
+ toolz_doc = "\n".join((line.strip() for line in convertdoc(toolz_func).splitlines()))
+ cytoolz_doc = "\n".join((line.strip() for line in cytoolz_func.__doc__.splitlines()))
if toolz_doc not in cytoolz_doc:
diff = list(differ.compare(toolz_doc.splitlines(),
cytoolz_doc.splitlines()))
diff --git a/cytoolz/tests/test_functoolz.py b/cytoolz/tests/test_functoolz.py
index a459dad..dc1c038 100644
--- a/cytoolz/tests/test_functoolz.py
+++ b/cytoolz/tests/test_functoolz.py
@@ -748,10 +748,13 @@ def test_flip():
def test_excepts():
# These are descriptors, make sure this works correctly.
assert excepts.__name__ == 'excepts'
+ # in Python < 3.13 the second line is indented, in 3.13+
+ # it is not, strip all lines to fudge it
+ testlines = "\n".join((line.strip() for line in excepts.__doc__.splitlines()))
assert (
'A wrapper around a function to catch exceptions and\n'
- ' dispatch to a handler.\n'
- ) in excepts.__doc__
+ 'dispatch to a handler.\n'
+ ) in testlines

def idx(a):
"""idx docstring
diff --git a/cytoolz/tests/test_inspect_args.py b/cytoolz/tests/test_inspect_args.py
index b2c5669..0dc0156 100644
--- a/cytoolz/tests/test_inspect_args.py
+++ b/cytoolz/tests/test_inspect_args.py
@@ -2,6 +2,7 @@ import functools
import inspect
import itertools
import operator
+import sys
import cytoolz
from cytoolz.functoolz import (curry, is_valid_args, is_partial_args, is_arity,
num_required_args, has_varargs, has_keywords)
@@ -482,6 +483,23 @@ def test_inspect_wrapped_property():
wrapped = Wrapped(func)
assert inspect.signature(func) == inspect.signature(wrapped)

- assert num_required_args(Wrapped) is None
- _sigs.signatures[Wrapped] = (_sigs.expand_sig((0, lambda func: None)),)
- assert num_required_args(Wrapped) == 1
+ # inspect.signature did not used to work properly on wrappers,
+ # but it was fixed in Python 3.11.9, Python 3.12.3 and Python
+ # 3.13+
+ inspectbroken = True
+ if sys.version_info.major > 3:
+ inspectbroken = False
+ if sys.version_info.major == 3:
+ if sys.version_info.minor == 11 and sys.version_info.micro > 8:
+ inspectbroken = False
+ if sys.version_info.minor == 12 and sys.version_info.micro > 2:
+ inspectbroken = False
+ if sys.version_info.minor > 12:
+ inspectbroken = False
+
+ if inspectbroken:
+ assert num_required_args(Wrapped) is None
+ _sigs.signatures[Wrapped] = (_sigs.expand_sig((0, lambda func: None)),)
+ assert num_required_args(Wrapped) == 1
+ else:
+ assert num_required_args(Wrapped) is 1
2 changes: 2 additions & 0 deletions recipe/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ package:
source:
url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/cytoolz-{{ version }}.tar.gz
sha256: 4503dc59f4ced53a54643272c61dc305d1dbbfbd7d6bdf296948de9f34c3a282
patches:
- fix-tests-newer-python.patch

build:
skip: true # [python_impl == 'pypy']
Expand Down

0 comments on commit 142d00b

Please sign in to comment.