Details
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 |
641382,3 | Fix pyside6-metaobjectdump crash when using @Slot(result=None) | dev | pyside/pyside-setup | Status: MERGED | +2 | 0 |
641862,2 | Fix pyside6-metaobjectdump crash when using @Slot(result=None) | 6.9 | pyside/pyside-setup | Status: MERGED | +2 | 0 |