-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
Crash 💥A bug that makes pylint crashA bug that makes pylint crashNeeds astroid updateNeeds an astroid update (probably a release too) before being mergableNeeds an astroid update (probably a release too) before being mergableNeeds investigation 🔬A bug or crash where it's not immediately obvious what is happenningA bug or crash where it's not immediately obvious what is happenning
Description
Bug description
When parsing the following a.py
:
"""
程序主窗口。
"""
from win32more.Microsoft.UI.Xaml import LaunchActivatedEventArgs, Window
from win32more.Microsoft.UI.Xaml.Markup import XamlReader
from win32more.Microsoft.UI.Xaml.Media import MicaBackdrop
from win32more.xaml import XamlApplication
class MainWindow(XamlApplication):
"""
程序主窗口。
"""
win: Window
args: LaunchActivatedEventArgs
def OnLaunched(self, args):
self.win = Window()
self.win.SystemBackdrop = MicaBackdrop()
with open("page.xaml", "r", encoding="utf-8") as file:
self.win.Content = XamlReader.Load(file.read())
self.win.Activate()
XamlApplication.Start(MainWindow)
Command used
pylint a.py
Pylint output
pylint crashed with a `AstroidBuildingError` and with the following stacktrace:
Traceback (most recent call last):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\pylint\lint\pylinter.py", line 980, in get_ast
return astroid.builder.AstroidBuilder(MANAGER).string_build(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 153, in string_build
return self._post_build(module, builder, "utf-8")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 169, in _post_build
self.delayed_assattr(delayed)
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 243, in delayed_assattr
for inferred in node.expr.infer():
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_classes.py", line 456, in _infer
stmts = list(self.assigned_stmts(context=context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\protocols.py", line 368, in _arguments_infer_argname
is_metaclass = isinstance(cls, nodes.ClassDef) and cls.type == "metaclass"
^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1785, in _class_type
if _is_metaclass(klass, context=context):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1752, in _is_metaclass
for baseobj in base.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_classes.py", line 2867, in _infer
module = self.do_import_module()
^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\_base_nodes.py", line 168, in do_import_module
return mymodule.import_module(
^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 462, in import_module
return AstroidManager().ast_from_module_name(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\manager.py", line 276, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\manager.py", line 166, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 169, in _post_build
self.delayed_assattr(delayed)
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 243, in delayed_assattr
for inferred in node.expr.infer():
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_classes.py", line 456, in _infer
stmts = list(self.assigned_stmts(context=context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\protocols.py", line 368, in _arguments_infer_argname
is_metaclass = isinstance(cls, nodes.ClassDef) and cls.type == "metaclass"
^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1785, in _class_type
if _is_metaclass(klass, context=context):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 1752, in _is_metaclass
for baseobj in base.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\bases.py", line 177, in _infer_stmts
for inf in stmt.infer(context=context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_classes.py", line 2867, in _infer
module = self.do_import_module()
^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\_base_nodes.py", line 168, in do_import_module
return mymodule.import_module(
^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 462, in import_module
return AstroidManager().ast_from_module_name(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\manager.py", line 276, in ast_from_module_name
return self.ast_from_file(found_spec.location, modname, fallback=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\manager.py", line 166, in ast_from_file
return AstroidBuilder(self).file_build(filepath, modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 145, in file_build
return self._post_build(module, builder, encoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\builder.py", line 173, in _post_build
module = self._manager.visit_transforms(module)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\manager.py", line 127, in visit_transforms
return self._transform.visit(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 158, in visit
return self._visit(node)
^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 82, in _visit
visited = self._visit_generic(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 108, in _visit_generic
return [self._visit_generic(child) for child in node]
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 115, in _visit_generic
return self._visit(node)
^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 85, in _visit
return self._transform(node)
^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\transforms.py", line 66, in _transform
if predicate is None or predicate(node):
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\brain\brain_namedtuple_enum.py", line 647, in _is_enum_subclass
return cls.is_subtype_of("enum.Enum")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\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 "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\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 "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 2245, in ancestors
for baseobj in stmt.infer(context):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 168, in infer
for i, result in enumerate(self._infer(context=context, **kwargs)):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 86, in inner
yield next(generator)
^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\decorators.py", line 49, in wrapped
for res in _func(node, context, **kwargs):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_classes.py", line 1108, in _infer_attribute
yield from owner.igetattr(node.attrname, context)
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\scoped_nodes\scoped_nodes.py", line 2502, in igetattr
first_scope = first_attr.parent.scope()
^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\astroid\nodes\node_ng.py", line 326, in scope
raise ParentMissingError(target=self)
astroid.exceptions.ParentMissingError: Parent not found on <Unknown.Unknown l.0 at 0x1a6cd355df0>.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\pylint\lint\pylinter.py", line 716, in _get_asts
ast_per_fileitem[fileitem] = self.get_ast(
^^^^^^^^^^^^^
File "c:\Users\Administrator\.vscode\extensions\ms-python.pylint-2025.3.11821009\bundled\libs\pylint\lint\pylinter.py", line 1001, in get_ast
raise astroid.AstroidBuildingError(
astroid.exceptions.AstroidBuildingError: Building error when trying to create ast representation of module 'src.ui.mainwindow'
Expected behavior
No crash.
Pylint version
pylint 3.3.4
astroid 3.3.8
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec 7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)]
OS / Environment
win32 (Windows)
Additional dependencies
Python library win32more
(ynkdir/py-win32more)
Additional information
Additionally, when I removed the imports of win32more
from the code, pylint doesn't occur the F0002
, as the pictures shows.
I've searched for similar issues by the search pattern of win32more
.
Thanks a lot for your effort!
Metadata
Metadata
Assignees
Labels
Crash 💥A bug that makes pylint crashA bug that makes pylint crashNeeds astroid updateNeeds an astroid update (probably a release too) before being mergableNeeds an astroid update (probably a release too) before being mergableNeeds investigation 🔬A bug or crash where it's not immediately obvious what is happenningA bug or crash where it's not immediately obvious what is happenning