Skip to content

RecursionError on Python 3.6+3.7 with flake8 5.0.3 #1650

@andy-maier

Description

@andy-maier

how did you install flake8?

$ pip install --upgrade --upgrade-strategy eager -r dev-requirements.txt

In dev-requirements.txt:

flake8>=3.8.0; python_version == '2.7'
flake8>=3.8.0,<3.9.0; python_version == '3.4'
flake8>=3.8.0; python_version >= '3.5' and python_version <= '3.9'
flake8>=4.0.0; python_version >= '3.10'

unmodified output of flake8 --bug-report

{
  "platform": {
    "python_implementation": "CPython",
    "python_version": "3.7.13",
    "system": "Darwin"
  },
  "plugins": [
    {
      "plugin": "mccabe",
      "version": "0.7.0"
    },
    {
      "plugin": "pycodestyle",
      "version": "2.9.0"
    },
    {
      "plugin": "pyflakes",
      "version": "2.5.0"
    }
  ],
  "version": "5.0.3"
}

describe the problem

what I expected to happen

flake8 succeeds with no issues

sample code

The issue happens on only some of our projects, and only on Python 3.6 and 3.7. On all projects where it fails, it does not fail on Python 3.8 or higher.

I saw the issue first with flake8 5.0.0 and also with 5.0.3 (did not check versions in between).

It can be reproduced for example in the https://github.com/pywbem/nocaselist project with these commands on Linux or MacOS:

git clone https://github.com/pywbem/nocaselist.git
cd nocaselist
mkvirtualenv -p python3.7 py37
make develop
make check  # invokes flake8 and reproduces the failure

flake8 command and output showing the failure:

flake8 --statistics --config=.flake8 --filename='*' setup.py nocaselist/_version.py nocaselist/_nocaselist.py nocaselist/__init__.py tests/__init__.py tests/utils/import_installed.py tests/utils/__init__.py tests/utils/simplified_test_function.py tests/unittest/test_package.py tests/unittest/__init__.py tests/unittest/test_nocaselist.py   
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.7.13/x64/bin/flake8", line 8, in <module>
    sys.exit(main())
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/main/cli.py", line 22, in main
    app.run(argv)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/main/application.py", line 336, in run
    self._run(argv)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/main/application.py", line 325, in _run
    self.run_checks()
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/main/application.py", line 229, in run_checks
    self.file_checker_manager.run()
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/checker.py", line 250, in run
    self.run_parallel()
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/flake8/checker.py", line 217, in run_parallel
    for ret in pool_map:
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/multiprocessing/pool.py", line 354, in <genexpr>
    return (item for chunk in result for item in chunk)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/multiprocessing/pool.py", line 748, in next
    raise value
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/multiprocessing/pool.py", line 431, in _handle_tasks
    put(task)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/multiprocessing/reduction.py", line 51, in dumps
    cls(buf, protocol).dump(obj)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/collections/__init__.py", line 432, in __getnewargs__
    return tuple(self)
RecursionError: maximum recursion depth exceeded

See also this GitHub Actions run on the same project: https://github.com/pywbem/nocaselist/runs/7646495550?check_suite_focus=true

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions