Skip to content

RecursionError: maximum recursion depth exceeded on python 3.8.0 after upgrading to flake8 5.0.0 #1637

@brianmedigate

Description

@brianmedigate

how did you install flake8?

$ pip install flake8==5.0.0
Collecting flake8==5.0.0
  Using cached flake8-5.0.0-py2.py3-none-any.whl (61 kB)

unmodified output of flake8 --bug-report

{
  "platform": {
    "python_implementation": "CPython",
    "python_version": "3.8.0",
    "system": "Linux"
  },
  "plugins": [
    {
      "plugin": "mccabe",
      "version": "0.7.0"
    },
    {
      "plugin": "pycodestyle",
      "version": "2.9.0"
    },
    {
      "plugin": "pyflakes",
      "version": "2.5.0"
    }
  ],
  "version": "5.0.0"
}

describe the problem

commands ran

$ flake8 src/
Traceback (most recent call last):
  File "/home/user/project/env/bin/flake8", line 8, in <module>
    sys.exit(main())
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/main/cli.py", line 22, in main
    app.run(argv)
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/main/application.py", line 336, in run
    self._run(argv)
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/main/application.py", line 325, in _run
    self.run_checks()
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/main/application.py", line 229, in run_checks
    self.file_checker_manager.run()
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/checker.py", line 250, in run
    self.run_parallel()
  File "/home/user/project/env/lib/python3.8/site-packages/flake8/checker.py", line 217, in run_parallel
    for ret in pool_map:
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 448, in <genexpr>
    return (item for chunk in result for item in chunk)
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 865, in next
    raise value
  File "/usr/lib/python3.8/multiprocessing/pool.py", line 537, in _handle_tasks
    put(task)
  File "/usr/lib/python3.8/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/usr/lib/python3.8/multiprocessing/reduction.py", line 51, in dumps
    cls(buf, protocol).dump(obj)
  File "/usr/lib/python3.8/collections/__init__.py", line 429, in __getnewargs__
    return _tuple(self)
RecursionError: maximum recursion depth exceeded

It looks like FileChecker isn't pickleable for some reason.

I added a breakpoint in checker.py on line 210, and ran:

(Pdb) p self.checkers[0]
FileChecker for src/dir/__init__.py
(Pdb) import pickle
(Pdb) pickle.dumps(self.checkers[0])
*** RecursionError: maximum recursion depth exceeded

This did not occur before upgrading, when I was using flake8 4.0.1.

It does not reproduce on python 3.8.10.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions