pylint
pylint copied to clipboard
RuntimeError: dictionary changed size during iteration
Bug description
When parsing the following file:
import janitor
from metaflow import FlowSpec, step
class LinearFlow(FlowSpec):
@step
def start(self):
self.my_var = 'hello world'
self.next(self.a)
@step
def a(self):
print('the data artifact is: %s' % self.my_var)
self.next(self.end)
@step
def end(self):
print('the data artifact is still: %s' % self.my_var)
if __name__ == '__main__':
LinearFlow()
pylint crashed with a AstroidError and with the following stacktrace:
- note that when there is no import of
janitorthen everything went fine.
Traceback (most recent call last):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/checkers/imports.py", line 858, in _get_imported_module
return importnode.do_import_module(modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/_base_nodes.py", line 146, in do_import_module
return mymodule.import_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 530, in import_module
return AstroidManager().ast_from_module_name(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 232, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 124, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 166, in _post_build
self.add_from_names_to_locals(from_node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 223, in add_from_names_to_locals
imported = node.do_import_module()
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/_base_nodes.py", line 146, in do_import_module
return mymodule.import_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 530, in import_module
return AstroidManager().ast_from_module_name(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 232, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 124, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 173, in _post_build
module = self._manager.visit_transforms(module)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 95, in visit_transforms
return self._transform.visit(node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 89, in visit
return self._visit(module)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 54, in _visit
visited = self._visit_generic(value)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 61, in _visit_generic
return [self._visit_generic(child) for child in node]
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 61, in <listcomp>
return [self._visit_generic(child) for child in node]
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 67, in _visit_generic
return self._visit(node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 54, in _visit
visited = self._visit_generic(value)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 61, in _visit_generic
return [self._visit_generic(child) for child in node]
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 61, in <listcomp>
return [self._visit_generic(child) for child in node]
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 67, in _visit_generic
return self._visit(node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 57, in _visit
return self._transform(node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/transforms.py", line 38, in _transform
if predicate is None or predicate(node):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/brain/brain_namedtuple_enum.py", line 613, in _is_enum_subclass
for klass in cls.mro()
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 3066, in mro
return self._compute_mro(context=context)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 3035, in _compute_mro
inferred_bases = list(self._inferred_bases(context=context))
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 3018, in _inferred_bases
baseobj = next(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 3018, in <genexpr>
baseobj = next(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 334, in infer_import_from
module = self.do_import_module()
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/_base_nodes.py", line 146, in do_import_module
return mymodule.import_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 530, in import_module
return AstroidManager().ast_from_module_name(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 232, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 124, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 169, in _post_build
self.delayed_assattr(delayed)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 240, in delayed_assattr
for inferred in node.expr.infer():
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 171, in infer
yield from self._infer(context=context, **kwargs)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 270, in infer_call
for callee in self.func.infer(context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 358, in infer_attribute
for owner in self.expr.infer(context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 304, in infer_import
yield self.do_import_module(self.real_name(name))
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/_base_nodes.py", line 146, in do_import_module
return mymodule.import_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 530, in import_module
return AstroidManager().ast_from_module_name(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 232, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 124, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 169, in _post_build
self.delayed_assattr(delayed)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 240, in delayed_assattr
for inferred in node.expr.infer():
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 171, in infer
yield from self._infer(context=context, **kwargs)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 279, in infer_call
yield from callee.infer_call_result(caller=self, context=callcontext)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2291, in infer_call_result
result = self._infer_type_call(caller, context)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 2242, in _infer_type_call
name_node = next(caller.args[0].infer(context))
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 270, in infer_call
for callee in self.func.infer(context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 358, in infer_attribute
for owner in self.expr.infer(context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_ng.py", line 184, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 143, in raise_if_nothing_inferred
yield next(generator)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/decorators.py", line 112, in wrapped
for res in _func(node, context, **kwargs):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/inference.py", line 304, in infer_import
yield self.do_import_module(self.real_name(name))
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/_base_nodes.py", line 146, in do_import_module
return mymodule.import_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 530, in import_module
return AstroidManager().ast_from_module_name(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 207, in ast_from_module_name
return self.ast_from_module(named_module, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/manager.py", line 314, in ast_from_module
return AstroidBuilder(self).module_build(module, modname)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/builder.py", line 101, in module_build
node = self.inspect_build(module, modname=modname, path=path)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/raw_building.py", line 404, in inspect_build
self.object_build(node, module)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/raw_building.py", line 455, in object_build
attach_const_node(node, name, member)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/raw_building.py", line 78, in attach_const_node
_attach_local_node(node, nodes.const_factory(value), name)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_classes.py", line 5641, in const_factory
instance.postinit(_create_dict_items(value, instance))
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/astroid/nodes/node_classes.py", line 5612, in _create_dict_items
for key, value in values.items():
RuntimeError: dictionary changed size during iteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/lint/pylinter.py", line 811, in _lint_file
check_astroid_module(module)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/lint/pylinter.py", line 1085, in check_astroid_module
retval = self._check_astroid_module(
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/lint/pylinter.py", line 1135, in _check_astroid_module
walker.walk(node)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/utils/ast_walker.py", line 94, in walk
self.walk(child)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/utils/ast_walker.py", line 91, in walk
callback(astroid)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/checkers/imports.py", line 534, in visit_import
imported_module = self._get_imported_module(node, name)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/checkers/imports.py", line 883, in _get_imported_module
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 "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/lint/pylinter.py", line 775, in _lint_files
self._lint_file(fileitem, module, check_astroid_module)
File "/home/jixux/miniconda3/envs/metaflow_test/lib/python3.10/site-packages/pylint/lint/pylinter.py", line 813, in _lint_file
raise astroid.AstroidError from e
astroid.exceptions.AstroidError
Configuration
No response
Command used
python linear_flow.py run
Pylint output
linear_flow.py:1:0: F0002: /local/home/jixux/test/metaflow/linear_flow.py: Fatal error while checking '/local/home/jixux/test/metaflow/linear_flow.py'. Please open an issue in our bug tracker so we address this. There is a pre-filled template that you can use in '/local/home/jixux/.cache/pylint/pylint-crash-2023-04-18-16-46-18.txt'. (astroid-error)
Expected behavior
I expect pylint to run without crashing.
Pylint version
pylint 2.17.2
astroid 2.15.3
Python 3.10.0 (default, Mar 3 2022, 09:58:08) [GCC 7.5.0]
OS / Environment
Linux version 5.4.235-151.344.amzn2int.x86_64 (mockbuild@ip-10-0-51-118) (gcc version 7.3.1 20180712 (Red Hat 7.3.1-13) (GCC))
Additional dependencies
aiobotocore==2.4.2 aiohttp==3.8.3 aioitertools==0.11.0 aiosignal==1.3.1 alembic==1.9.2 astroid==2.15.3 asttokens==2.2.1 async-timeout==4.0.2 attrs==22.2.0 autopage==0.5.1 backcall==0.2.0 bigtree==0.6.7 black==22.12.0 boto3==1.24.59 botocore==1.27.59 certifi==2022.12.7 charset-normalizer==2.1.1 click==8.1.3 cliff==4.1.0 cmaes==0.9.1 cmd2==2.4.2 colorlog==6.7.0 contourpy==1.0.6 cycler==0.11.0 Cython==0.29.33 decorator==5.1.1 dill==0.3.6 et-xmlfile==1.1.0 exceptiongroup==1.1.0 executing==1.2.0 fonttools==4.38.0 frozenlist==1.3.3 fsspec==2022.11.0 hdbscan==0.8.29 idna==3.4 importlib-metadata==4.13.0 iniconfig==2.0.0 ipython==8.8.0 isort==5.11.4 jedi==0.18.2 Jinja2==3.1.2 jmespath==1.0.1 joblib==1.2.0 kiwisolver==1.4.4 lazy-object-proxy==1.9.0 lazy_loader==0.1rc2 lightgbm==3.3.3 llvmlite==0.39.1 Mako==1.2.4 markdown-it-py==2.1.0 MarkupSafe==2.1.1 matplotlib==3.6.2 matplotlib-inline==0.1.6 mccabe==0.7.0 mdit-py-plugins==0.3.3 mdurl==0.1.2 metaflow==2.7.18 multidict==6.0.4 multipledispatch==0.6.0 mypy-extensions==0.4.3 natsort==8.2.0 nbclient==0.7.2 networkx==3.0 numba==0.56.4 numpy==1.23.5 nx-altair==0.1.6 openpyxl==3.0.10 optuna==3.0.3 packaging==23.0 pandas==1.5.1 pandas-flavor==0.3.0 parso==0.8.3 pathspec==0.10.3 pbr==5.11.1 pexpect==4.8.0 pickleshare==0.7.5 Pillow==9.4.0 platformdirs==2.6.2 plotly==5.11.0 pluggy==1.0.0 prettytable==3.6.0 prompt-toolkit==3.0.36 ptyprocess==0.7.0 pure-eval==0.2.2 pyarrow==10.0.1 pydot==1.4.2 pyemd==0.5.1 Pygments==2.14.0 pyjanitor==0.24.0 pylint==2.17.2 pynndescent==0.5.8 pyparsing==3.0.9 pyperclip==1.8.2 pytest==7.2.0 python-dateutil==2.8.2 python-dotenv==0.21.0 pytz==2022.6 PyYAML==6.0 requests==2.28.1 s3fs==2022.11.0 s3transfer==0.6.0 scikit-learn==1.2.1 scipy==1.10.1 seaborn==0.12.2 six==1.16.0 SQLAlchemy==1.3.19 stack-data==0.6.2 stevedore==4.1.1 tenacity==8.1.0 threadpoolctl==3.1.0 toml==0.10.2 tomli==2.0.1 tomlkit==0.11.6 toolz==0.12.0 tqdm==4.64.1 traitlets==5.8.1 typing_extensions==4.4.0 umap-learn==0.5.3 urllib3==1.26.13 vega-datasets==0.9.0 watermark==2.3.1 wcwidth==0.2.6 wrapt==1.14.1 xarray==2022.12.0 yarl==1.8.2 zipp==3.11.0
I checked the code and have no idea how the following code can cause that issue:
def _create_dict_items(
values: Mapping[Any, Any], node: Dict
) -> list[tuple[SuccessfulInferenceResult, SuccessfulInferenceResult]]:
"""Create a list of node pairs to function as the items of a new dict node."""
elements: list[tuple[SuccessfulInferenceResult, SuccessfulInferenceResult]] = []
for key, value in values.items():
key_node = const_factory(key)
key_node.parent = node
value_node = const_factory(value)
value_node.parent = node
elements.append((key_node, value_node))
return elements
I might be dumb but the dictionary doesn't seem to change size here.
Thanks for the report, we always like to address crashes when we can reproduce them. Unfortunately, with a fresh venv, and with the pylint/astroid/python versions reported, and with as many of the packages installed as practical (see below), I can't reproduce the crash. Feel free to reopen if you have a reproducer from a fresh venv. Thanks.
pip reports the following package inconsistency trying to reproduce your environment:
ERROR: Cannot install -r requirements.txt (line 34), -r requirements.txt (line 47), -r requirements.txt (line 68) and scipy==1.10.1 because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested scipy==1.10.1
hdbscan 0.8.29 depends on scipy>=1.0
lightgbm 3.3.3 depends on scipy
optuna 3.0.3 depends on scipy<1.9.0 and >=1.7.0
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
Reported again in #8928.
Just want to follow up and FYI that the behavior can be reproduced with this minimal requirement.txt:
metaflow
pyjanitor==0.24.0
However, the error went away if I upgrade pyjanitor to the latest release 0.25.0.
Run into the same issue today as well.
The strange thing is, this is only happening in the CI checks in one of our company's repos. When executing the same thing locally Pylint works as expected.