diff --git a/tests/test_utils_python.py b/tests/test_utils_python.py index 94f5ecb..07a53a2 100644 --- a/tests/test_utils_python.py +++ b/tests/test_utils_python.py @@ -1,6 +1,7 @@ import functools import operator import platform +import sys import unittest from typing import Any @@ -48,16 +49,18 @@ def __call__(self, a, b, c): self.assertEqual(get_func_args(str.split, stripself=True), ["sep", "maxsplit"]) self.assertEqual(get_func_args(" ".join, stripself=True), ["iterable"]) - if platform.python_implementation() == "CPython": - # This didn't work on older versions of CPython: https://github.com/python/cpython/issues/86951 + if sys.version_info >= (3, 13) or platform.python_implementation() == "PyPy": + # the correct and correctly extracted signature + self.assertEqual( + get_func_args(operator.itemgetter(2), stripself=True), ["obj"] + ) + elif platform.python_implementation() == "CPython": + # ["args", "kwargs"] is a correct result for the pre-3.13 incorrect function signature + # [] is an incorrect result on even older CPython (https://github.com/python/cpython/issues/86951) self.assertIn( get_func_args(operator.itemgetter(2), stripself=True), [[], ["args", "kwargs"]], ) - elif platform.python_implementation() == "PyPy": - self.assertEqual( - get_func_args(operator.itemgetter(2), stripself=True), ["obj"] - ) if __name__ == "__main__":