Skip to content

Crash (possibly caused by win32more) Building error when trying to create ast representation of module 'src.ui.mainwindow' #10474

@youzi-3222

Description

@youzi-3222

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.

Pictures Image Image

I've searched for similar issues by the search pattern of win32more.

Thanks a lot for your effort!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Crash 💥A bug that makes pylint crashNeeds astroid updateNeeds an astroid update (probably a release too) before being mergableNeeds investigation 🔬A bug or crash where it's not immediately obvious what is happenning

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions