Uploaded image for project: 'Qt for Python'
  1. Qt for Python
  2. PYSIDE-3089

pyside6-metaobjectdump crashes when using @Slot(result=None)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3: Somewhat important
    • 6.9.1, 6.10.0
    • 6.9
    • PySide
    • None
    • All
    • 64a0e8bad (dev), 1f1f4e719 (6.9)

    Description

      Hello, I hope you are doing fine! 🥺

      If a user writes a method decorated with @Slot specifying the result argument to None, the pyside6-metaobjectdump script crashes. Minimal reproducible example:

      from PySide6.QtCore import Slot
      class A:  
          @Slot(result=None)
          def decorated_slot(self):
              print("decorated_slot")

      When the script is executed:

      > pyside6-metaobjectdump <path to file>
      

      The following crash occurs:

       

      Error parsing C:\pyside-setup\test.py: 'Constant' object has no attribute 'id'
      Traceback (most recent call last):
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 444, in <module>
          json_data = parse_file(file, context, args.suppress_file)
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 404, in parse_file
          visitor.visit(ast_tree)
          ~~~~~~~~~~~~~^^^^^^^^^^
        File "C:\Program Files\Python313\Lib\ast.py", line 428, in visit
          return visitor(node)
        File "C:\Program Files\Python313\Lib\ast.py", line 436, in generic_visit
          self.visit(item)
          ~~~~~~~~~~^^^^^^
        File "C:\Program Files\Python313\Lib\ast.py", line 428, in visit
          return visitor(node)
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 236, in visit_ClassDef
          self.visit(b)
          ~~~~~~~~~~^^^
        File "C:\Program Files\Python313\Lib\ast.py", line 428, in visit
          return visitor(node)
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 254, in visit_FunctionDef
          self._parse_function_decorator(node.name, d)
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 337, in _parse_function_decorator
          self._slots.append(_parse_slot(func_name, node))
                             ~~~~~~~~~~~^^^^^^^^^^^^^^^^^
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 130, in _parse_slot
          return_type = _python_to_cpp_type(_name(kwarg.value))
                                            ~~~~~^^^^^^^^^^^^^
        File "C:\pyside-setup\venv\Lib\site-packages\PySide6\scripts\metaobjectdump.py", line 79, in _name
          return node.id
                 ^^^^^^^
      AttributeError: 'Constant' object has no attribute 'id' 

       

      Attachments

        For Gerrit Dashboard: PYSIDE-3089
        # Subject Branch Project Status CR V

        Activity

          People

            jaime_02 Jaime Resano
            jaime_02 Jaime Resano
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes