FS#72019 - [python-pylint] Error launching if python-setuptools is installed and python-mccabe is not installed

Attached to Project: Community Packages
Opened by gamezelda (gamezelda) - Saturday, 04 September 2021, 01:55 GMT
Last edited by Caleb Maclennan (alerque) - Saturday, 04 September 2021, 09:36 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Felix Yan (felixonmars)
Caleb Maclennan (alerque)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

On my system attempting to run any pylint command (e.g. "pylint --version") without python-mccabe installed gives a pretty lenghty stack trace (see below) with a final message asking for python-mccabe ("pkg_resources.DistributionNotFound: The 'mccabe' distribution was not found and is required by pylint"). Installing python-mccabe fixes the problem.

After some troubleshooting, I found out that this doesn't happen on a minimal install, but only if python-setuptools is installed. So the situation is:
* Only python-pylint: OK
* python-pylint + python-setuptools but no python-mccabe: KO
* python-pylint + python-setuptools + python-mccabe: OK

From a cursory look upstream lists mccabe as a non-optional dependency ( https://github.com/PyCQA/pylint/blob/v2.10.2/setup.cfg#L48 ) so we could make python-mccabe a non-optional dependency in the Arch package as well.

(As for why it only happens when python-setuptools is installed, I'm not entirely sure, but I see that in this case pkg_resources is loaded (see the stacktrace below), and strace reveals it reads /usr/lib/python3.9/site-packages/pylint-2.10.2-py3.9.egg-info/requires.txt which lists mccabe as a dependency.

Additional info:
* package version(s): python-pylint 2.10.2-2, python-setuptools 1:57.4.0-1, python-mccabe 0.6.1-9
* config and/or log files etc.: N/A
* link to upstream bug report, if any: N/A

Steps to reproduce:

$ docker run --rm -it --hostname archtest archlinux:base
[root@archtest /]# pacman -Syu
[...]
[root@archtest /]# pacman -S python-pylint
[...]
[root@archtest /]# pylint --version
pylint 2.10.2
astroid 2.7.3
Python 3.9.6 (default, Jun 30 2021, 10:22:16)
[GCC 11.1.0]
[root@archtest /]# pacman -S python-setuptools
[...]
[root@archtest /]# pylint --version
Traceback (most recent call last):
File "/usr/sbin/pylint", line 33, in <module>
sys.exit(load_entry_point('pylint==2.10.2', 'console_scripts', 'pylint')())
File "/usr/lib/python3.9/site-packages/pylint/__init__.py", line 21, in run_pylint
from pylint.lint import Run as PylintRun
File "/usr/lib/python3.9/site-packages/pylint/lint/__init__.py", line 76, in <module>
from pylint.lint.parallel import check_parallel
File "/usr/lib/python3.9/site-packages/pylint/lint/parallel.py", line 7, in <module>
from pylint import reporters
File "/usr/lib/python3.9/site-packages/pylint/reporters/__init__.py", line 26, in <module>
from pylint import utils
File "/usr/lib/python3.9/site-packages/pylint/utils/__init__.py", line 46, in <module>
from pylint.utils.ast_walker import ASTWalker
File "/usr/lib/python3.9/site-packages/pylint/utils/ast_walker.py", line 7, in <module>
from astroid import nodes
File "/usr/lib/python3.9/site-packages/astroid/__init__.py", line 53, in <module>
from astroid import node_classes # Deprecated, to remove later
File "/usr/lib/python3.9/site-packages/astroid/node_classes.py", line 5, in <module>
from astroid.nodes.node_classes import ( # pylint: disable=redefined-builtin (Ellipsis)
File "/usr/lib/python3.9/site-packages/astroid/nodes/__init__.py", line 26, in <module>
from astroid.nodes.node_classes import ( # pylint: disable=redefined-builtin (Ellipsis)
File "/usr/lib/python3.9/site-packages/astroid/nodes/node_classes.py", line 46, in <module>
from astroid.bases import Instance, _infer_stmts
File "/usr/lib/python3.9/site-packages/astroid/bases.py", line 548, in <module>
class Generator(BaseInstance):
File "/usr/lib/python3.9/site-packages/astroid/bases.py", line 554, in Generator
special_attributes = lazy_descriptor(objectmodel.GeneratorModel)
File "/usr/lib/python3.9/site-packages/astroid/util.py", line 29, in <lambda>
lambda: importlib.import_module("." + module_name, "astroid")
File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/lib/python3.9/site-packages/astroid/interpreter/objectmodel.py", line 43, in <module>
from astroid.manager import AstroidManager
File "/usr/lib/python3.9/site-packages/astroid/manager.py", line 36, in <module>
from astroid.interpreter._import import spec
File "/usr/lib/python3.9/site-packages/astroid/interpreter/_import/spec.py", line 27, in <module>
from . import util
File "/usr/lib/python3.9/site-packages/astroid/interpreter/_import/util.py", line 6, in <module>
import pkg_resources
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3243, in <module>
def _initialize_master_working_set():
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3226, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 3255, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 568, in _build_master
ws.require(__requires__)
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 886, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3.9/site-packages/pkg_resources/__init__.py", line 772, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'mccabe' distribution was not found and is required by pylint
[root@archtest /]# pacman -S python-mccabe
[...]
[root@archtest /]# pylint --version
pylint 2.10.2
astroid 2.7.3
Python 3.9.6 (default, Jun 30 2021, 10:22:16)
[GCC 11.1.0]
[root@archtest /]#
This task depends upon

Closed by  Caleb Maclennan (alerque)
Saturday, 04 September 2021, 09:36 GMT
Reason for closing:  Fixed
Additional comments about closing:  Fixed in 2.10.2-3, thanks for the report.

Loading...