Skip to content

Pylint crash when importing pyarrow.flight #10181

Open
@freeform-andre

Description

@freeform-andre

Bug description

When I run pylint on the following code it crashes:

"""Plyint error repro"""

from pyarrow.flight import connect

connect("pylint")

Configuration

[tool.pylint.main]

unsafe-load-any-extension = true

Command used

pylint ./pylint_repro.py

Pylint output

Exception on node <Call l.5 at 0x7fe6e7b21590> in file '/home/user/Code/repro/pylint_repro.py'
Traceback (most recent call last):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/pylint/utils/ast_walker.py", line 87, in walk
    callback(astroid)
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/pylint/checkers/base/basic_checker.py", line 708, in visit_call
    if utils.is_terminating_func(node):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/pylint/checkers/utils.py", line 2189, in is_terminating_func
    for inferred in node.func.infer():
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 168, in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 86, in inner
    yield next(generator)
          ^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 49, in wrapped
    for res in _func(node, context, **kwargs):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/bases.py", line 177, in _infer_stmts
    for inf in stmt.infer(context=context):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 168, in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 86, in inner
    yield next(generator)
          ^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 49, in wrapped
    for res in _func(node, context, **kwargs):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/bases.py", line 177, in _infer_stmts
    for inf in stmt.infer(context=context):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 168, in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 86, in inner
    yield next(generator)
          ^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 49, in wrapped
    for res in _func(node, context, **kwargs):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_classes.py", line 2867, in _infer
    module = self.do_import_module()
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/_base_nodes.py", line 168, in do_import_module
    return mymodule.import_module(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 462, in import_module
    return AstroidManager().ast_from_module_name(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/manager.py", line 251, in ast_from_module_name
    return self.ast_from_module(named_module, modname)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/manager.py", line 356, in ast_from_module
    return AstroidBuilder(self).module_build(module, modname)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/builder.py", line 105, in module_build
    node = self._manager.visit_transforms(node)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/manager.py", line 127, in visit_transforms
    return self._transform.visit(node)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 158, in visit
    return self._visit(node)
           ^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 82, in _visit
    visited = self._visit_generic(value)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 108, in _visit_generic
    return [self._visit_generic(child) for child in node]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 108, in <listcomp>
    return [self._visit_generic(child) for child in node]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 115, in _visit_generic
    return self._visit(node)
           ^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 85, in _visit
    return self._transform(node)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/transforms.py", line 66, in _transform
    if predicate is None or predicate(node):
                            ^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/brain/brain_namedtuple_enum.py", line 647, in _is_enum_subclass
    return cls.is_subtype_of("enum.Enum")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2070, in is_subtype_of
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2070, in <genexpr>
    return any(anc.qname() == type_name for anc in self.ancestors(context=context))
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2245, in ancestors
    for baseobj in stmt.infer(context):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 168, in infer
    for i, result in enumerate(self._infer(context=context, **kwargs)):
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 86, in inner
    yield next(generator)
          ^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/decorators.py", line 49, in wrapped
    for res in _func(node, context, **kwargs):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_classes.py", line 585, in _infer
    frame, stmts = self.lookup(self.name)
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/_base_nodes.py", line 277, in lookup
    return self.scope().scope_lookup(self, name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2211, in scope_lookup
    return frame._scope_lookup(node, name, offset)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/mixin.py", line 80, in _scope_lookup
    stmts = _filter_stmts(node, self.locals[name], self, offset)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/filter_statements.py", line 110, in _filter_stmts
    statements = _get_filtered_node_statements(base_node, stmts)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/filter_statements.py", line 25, in _get_filtered_node_statements
    statements = [(node, node.statement()) for node in stmt_nodes]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/filter_statements.py", line 25, in <listcomp>
    statements = [(node, node.statement()) for node in stmt_nodes]
                         ^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/node_ng.py", line 295, in statement
    return self.parent.statement()
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/Code/repro/.venv/lib/python3.11/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 413, in statement
    raise StatementMissing(target=self)
astroid.exceptions.StatementMissing: Statement not found on <Module.pyarrow._flight l.0 at 0x7fe6e7983a90>
************* Module pylint_repro
pylint_repro.py:1:0: F0002: pylint_repro.py: Fatal error while checking 'pylint_repro.py'. Please open an issue in our bug tracker so we address this. There is a pre-filled template that you can use in '/home/user.cache/pylint/pylint-crash-2025-01-12-12-05-08.txt'. (astroid-error)

------------------------------------------------------------------
Your code has been rated at 0.00/10 (previous run: 0.00/10, +0.00)

Expected behavior

I expect pylint to run nominally.

Pylint version

pylint 3.3.3
astroid 3.3.8
Python 3.11.0rc1 (main, Aug 12 2022, 10:02:14) [GCC 11.2.0]

OS / Environment

Linux

Additional dependencies

astroid==3.3.8
dill==0.3.9
isort==5.13.2
mccabe==0.7.0
platformdirs==4.3.6
pyarrow==18.1.0
pylint==3.3.3
tomlkit==0.13.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs triage 📥Just created, needs acknowledgment, triage, and proper labelling

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions