Closed
Description
Bug description
When parsing the following a.py
:
Proprietary code removed
Pycharm external tools arguments used to create the crash:
--msg-template="/Users/xxx/code/xxxtools/python/dashboard/{path}:{line}:{column}:{C}:({symbol}){msg}"
--load-plugins="pylint_flask,pylint_flask_sqlalchemy"
$FileDir$
There is no crash when I instead use:
--msg-template="/Users/xxx/code/xxxtools/python/dashboard/{path}:{line}:{column}:{C}:({symbol}){msg}"
--load-plugins="pylint_flask"
$FileDir$
Becomes:
/Users/xxx/code/xxxtools/python/dashboard/venv/bin/pylint --msg-template=/Users/xxx/code/xxxtools/python/dashboard/{path}:{line}:{column}:{C}:({symbol}){msg} --load-plugins=pylint_flask,pylint_flask_sqlalchemy /Users/xxx/code/xxxtools/python/dashboard/app/admin
Error I was trying to get rid of by including pylint_flask_sqlalchemy:
E:(no-member)Instance of 'SQLAlchemy' has no 'func' member
on code line
x = MyObject.query.filter(
db.func.date(MyObject.timestamp) == given_date
).order_by(MyObject.timestamp.desc())
Other issues with AstroidErrors: #8842, #9139
Reason I am submitting a fresh issue: The above issues don't mention plugins. This is almost certainly an issue with pylint_flask_sqlalchemy, but perhaps pylint might be able to fail gracefully when a plugin blows up.
Command used
pylint a.py
Pylint output
pylint crashed with a ``AstroidError`` and with the following stacktrace:
Traceback (most recent call last):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/lint/pylinter.py", line 788, in _lint_file
check_astroid_module(module)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/lint/pylinter.py", line 1017, in check_astroid_module
retval = self._check_astroid_module(
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/lint/pylinter.py", line 1069, in _check_astroid_module
walker.walk(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/utils/ast_walker.py", line 94, in walk
self.walk(child)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/utils/ast_walker.py", line 91, in walk
callback(astroid)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/checkers/variables.py", line 2059, in visit_importfrom
self._check_module_attrs(node, module, name.split("."))
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/checkers/variables.py", line 3066, in _check_module_attrs
module = next(module.getattr(name)[0].infer())
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_ng.py", line 169, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 90, in inner
yield next(generator)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/bases.py", line 179, in _infer_stmts
for inf in stmt.infer(context=context):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_ng.py", line 169, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 90, in inner
yield next(generator)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_classes.py", line 1756, in _infer
for callee in self.func.infer(context):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_ng.py", line 169, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 90, in inner
yield next(generator)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/bases.py", line 179, in _infer_stmts
for inf in stmt.infer(context=context):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_ng.py", line 169, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 90, in inner
yield next(generator)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/node_classes.py", line 2863, in _infer
module = self.do_import_module()
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/_base_nodes.py", line 168, in do_import_module
return mymodule.import_module(
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/nodes/scoped_nodes/scoped_nodes.py", line 453, in import_module
return AstroidManager().ast_from_module_name(
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/manager.py", line 259, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/manager.py", line 151, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/builder.py", line 140, in file_build
return self._post_build(module, builder, encoding)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/builder.py", line 168, in _post_build
module = self._manager.visit_transforms(module)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/manager.py", line 114, in visit_transforms
return self._transform.visit(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 151, in visit
return self._visit(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 81, in _visit
visited = self._visit_generic(value)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 112, in _visit_generic
return [self._visit_generic(child) for child in node]
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 112, in <listcomp>
return [self._visit_generic(child) for child in node]
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 118, in _visit_generic
return self._visit(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 84, in _visit
return self._transform(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/astroid/transforms.py", line 66, in _transform
ret = transform_func(node)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint_flask_sqlalchemy/__init__.py", line 24, in transform
cls.locals[key] = [ClassDef(key, None)]
TypeError: __init__() missing 2 required positional arguments: 'col_offset' and 'parent'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/lint/pylinter.py", line 752, in _lint_files
self._lint_file(fileitem, module, check_astroid_module)
File "/Users/xxx/code/xxxtools/python/dashboard/venv/lib/python3.9/site-packages/pylint/lint/pylinter.py", line 790, in _lint_file
raise astroid.AstroidError from e
astroid.exceptions.AstroidError
Expected behavior
No crash.
Pylint version
pylint 3.0.3
astroid 3.0.2
Python 3.9.6 (default, Nov 10 2023, 13:38:27)
[Clang 15.0.0 (clang-1500.1.0.2.5)]
OS / Environment
darwin (Darwin)