forked from PyCQA/pylint-pytest
-
Notifications
You must be signed in to change notification settings - Fork 3
Closed as not planned
Labels
bugSomething isn't workingSomething isn't workingduplicateThis issue or pull request already existsThis issue or pull request already exists
Description
Describe the bug
When configuring the number of Pytest workers to anything other than 1, a recursion error is seen and the linting task fails to complete.
To Reproduce
astroid==3.1.0
pylint-django==2.5.5
pylint-plugin-utils==0.8.2
pylint-pytest==1.1.7
pylint==3.1.0
Folder structure
src\namespace\module\submodule\settings_init_.py
File content
from namespace.module.submodule.event import log_event
from namespace.module.submodule.util import get_ip_address
def log_auth_event(msg, request):
log_event("auth", dict(msg, remote_addr=get_ip_address(request)))
def log_user_logged_in(sender, user, request, **kwargs): # pylint: disable=unused-argument
log_auth_event(dict(username=user.username, action="login", result="success"), request)
def log_user_logged_out(sender, user, request, **kwargs): # pylint: disable=unused-argument
if not user:
return
log_auth_event(dict(username=user.username, action="logout", result="success"), request)
def log_user_login_failed(sender, credentials, request, **kwargs): # pylint: disable=unused-argument
log_auth_event(
dict(username=credentials["username"], action="login", result="failure"),
request,
)
pylint output with the plugin
Exception on node <FunctionDef.log_user_logged_in l.9 at 0x257d06d9150> in file 'C:\dev\project_name\src\br\bls\audit\auth.py'
Traceback (most recent call last):
File "C:\dev\project_name\venv\Lib\site-packages\pylint\utils\ast_walker.py", line 96, in walk
callback(astroid)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 1557, in leave_functiondef
self._check_is_unused(
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 2730, in _check_is_unused
self._check_unused_arguments(name, node, stmt, argnames, nonlocal_names)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 2853, in _check_unused_arguments
self.add_message("unused-argument", args=name, node=stmt, confidence=confidence)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
[Previous line repeated 976 more times]
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 290, in patch_add_message
and _can_use_fixture(node.parent.parent)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\utils.py", line 113, in _can_use_fixture
if function.name.startswith("test_") or function.name.endswith("_test"):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 830, in _check_file
check_astroid_module(ast_node)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 1016, in check_astroid_module
retval = self._check_astroid_module(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 1068, in _check_astroid_module
walker.walk(node)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\utils\ast_walker.py", line 94, in walk
self.walk(child)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\utils\ast_walker.py", line 96, in walk
callback(astroid)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 1557, in leave_functiondef
self._check_is_unused(
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 2730, in _check_is_unused
self._check_unused_arguments(name, node, stmt, argnames, nonlocal_names)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\checkers\variables.py", line 2853, in _check_unused_arguments
self.add_message("unused-argument", args=name, node=stmt, confidence=confidence)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 314, in patch_add_message
FixtureChecker._original_add_message(self, msgid, line, node, args, confidence, col_offset)
[Previous line repeated 976 more times]
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\checkers\fixture.py", line 290, in patch_add_message
and _can_use_fixture(node.parent.parent)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\dev\project_name\venv\Lib\site-packages\pylint_pytest\utils.py", line 113, in _can_use_fixture
if function.name.startswith("test_") or function.name.endswith("_test"):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 256, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 205, in _process_chunk
return [fn(*args) for args in chunk]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 205, in <listcomp>
return [fn(*args) for args in chunk]
^^^^^^^^^
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\parallel.py", line 79, in _worker_check_single_file
_worker_linter.check_single_file_item(file_item)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 739, in check_single_file_item
self._check_file(self.get_ast, check_astroid_module, file)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 832, in _check_file
raise astroid.AstroidError from e
astroid.exceptions.AstroidError
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\dev\project_name\venv\Scripts\pylint.exe\__main__.py", line 7, in <module>
File "C:\dev\project_name\venv\Lib\site-packages\pylint\__init__.py", line 34, in run_pylint
PylintRun(argv or sys.argv[1:])
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\run.py", line 211, in __init__
linter.check(args)
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\pylinter.py", line 678, in check
check_parallel(
File "C:\dev\project_name\venv\Lib\site-packages\pylint\lint\parallel.py", line 153, in check_parallel
for (
File "C:\Program Files\Python311\Lib\concurrent\futures\process.py", line 602, in _chain_from_iterable_of_lists
for element in iterable:
File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 619, in result_iterator
yield _result_or_cancel(fs.pop())
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 317, in _result_or_cancel
return fut.result(timeout)
^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\concurrent\futures\_base.py", line 401, in __get_result
raise self._exception
astroid.exceptions.AstroidError
Expected behavior
The plugin should result in the same output as when running in single-threaded mode.
Additional context
I'm on a 16-core machine, and I've tried with jobs=0, 1, and 2. jobs=1 is fine; everything else breaks.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingduplicateThis issue or pull request already existsThis issue or pull request already exists