From a02b95002814e56fd8793c22f1abe291682a2507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 9 Nov 2021 15:21:32 +0100 Subject: [PATCH] Python 3.11.0a2 fixes The error was: + /usr/bin/python3 selftest.py Traceback (most recent call last): File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/plugins/manager.py", line 250, in __getattr__ return self._proxies[call] ~~~~~~~~~~~~~^^^^^^ KeyError: 'loadTestsFromModule' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/builddir/build/BUILD/nose-1.3.7/selftest.py", line 60, in nose.run_exit() ^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/core.py", line 118, in __init__ unittest.TestProgram.__init__( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/unittest/main.py", line 101, in __init__ self.runTests() ^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/core.py", line 207, in runTests result = self.testRunner.run(self.test) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/core.py", line 62, in run test(result) ^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/suite.py", line 177, in __call__ return self.run(*arg, **kw) ^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/suite.py", line 224, in run test(orig) ^^^^^^^^^^ File "/usr/lib64/python3.11/unittest/suite.py", line 84, in __call__ return self.run(*args, **kwds) ^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/suite.py", line 72, in run for test in self._tests: ^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/suite.py", line 99, in _get_tests for test in self.test_generator: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 190, in loadTestsFromDir yield self.loadTestsFromName( ^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 430, in loadTestsFromName return self.loadTestsFromModule( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 353, in loadTestsFromModule tests.extend(self.loadTestsFromDir(module_path)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 182, in loadTestsFromDir yield self.loadTestsFromName( ^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 430, in loadTestsFromName return self.loadTestsFromModule( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/loader.py", line 355, in loadTestsFromModule for test in self.config.plugins.loadTestsFromModule(module, path): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/plugins/manager.py", line 252, in __getattr__ proxy = self.proxyClass(call, self._plugins) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/plugins/manager.py", line 96, in __init__ self.addPlugin(p, call) ^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/nose-1.3.7/build/tests/nose/plugins/manager.py", line 108, in addPlugin len(inspect.getargspec(meth)[0]) == 2: ^^^^^^^^^^^^^^^^^^ AttributeError: module 'inspect' has no attribute 'getargspec' --- python-nose-py311.patch | 37 +++++++++++++++++++++++++++++++++++++ python-nose.spec | 1 + 2 files changed, 38 insertions(+) diff --git a/python-nose-py311.patch b/python-nose-py311.patch index 71fdaf3..1fcb6d9 100644 --- a/python-nose-py311.patch +++ b/python-nose-py311.patch @@ -48,3 +48,40 @@ index 2a9f69b..560b9c2 100644 else: # this is a dumb test for 2.4- assert '' in result +diff --git a/nose/plugins/manager.py b/nose/plugins/manager.py +index 4d2ed22..daa9edb 100644 +--- a/nose/plugins/manager.py ++++ b/nose/plugins/manager.py +@@ -105,7 +105,7 @@ class PluginProxy(object): + meth = getattr(plugin, call, None) + if meth is not None: + if call == 'loadTestsFromModule' and \ +- len(inspect.getargspec(meth)[0]) == 2: ++ len(inspect.getfullargspec(meth)[0]) == 2: + orig_meth = meth + meth = lambda module, path, **kwargs: orig_meth(module) + self.plugins.append((plugin, meth)) +diff --git a/nose/util.py b/nose/util.py +index 80ab1d4..21770ae 100644 +--- a/nose/util.py ++++ b/nose/util.py +@@ -449,15 +449,15 @@ def try_run(obj, names): + if type(obj) == types.ModuleType: + # py.test compatibility + if isinstance(func, types.FunctionType): +- args, varargs, varkw, defaults = \ +- inspect.getargspec(func) ++ args, varargs, varkw, defaults, *_ = \ ++ inspect.getfullargspec(func) + else: + # Not a function. If it's callable, call it anyway + if hasattr(func, '__call__') and not inspect.ismethod(func): + func = func.__call__ + try: +- args, varargs, varkw, defaults = \ +- inspect.getargspec(func) ++ args, varargs, varkw, defaults, *_ = \ ++ inspect.getfullargspec(func) + args.pop(0) # pop the self off + except TypeError: + raise TypeError("Attribute %s of %r is not a python " diff --git a/python-nose.spec b/python-nose.spec index 627dd66..090cbd8 100644 --- a/python-nose.spec +++ b/python-nose.spec @@ -33,6 +33,7 @@ Patch6: python-nose-no-use_2to3.patch # Import unittest.TextTestResult instead of removed unittest._TextTestResult # Use ConfigParser.read_file() instead of .readfp() # Adapt test_xunit to tracebacks/exceptions with ^^^^^^^^ lines +# Migrate from removed inspect.getargspec() to inspect.getfullargspec() Patch7: python-nose-py311.patch BuildRequires: dos2unix