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

Type hints for QObject.disconnect do not accept Connection

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P4: Low
    • None
    • 6.8.2
    • Type hints
    • None

    Description

      Code works: clicking the button does not close the app:

      from PySide6.QtWidgets import QApplication, QPushButton
      
      app = QApplication()
      button = QPushButton("Hello World!")
      connection = button.clicked.connect(app.closeAllWindows)
      button.disconnect(connection)
      button.show()
      app.exec()
      

      mypy 1.14.1:

      bug5.py:6: error: No overload variant of "disconnect" of "QObject" matches argument type "Connection"  [call-overload]
      bug5.py:6: note: Possible overload variants:
      bug5.py:6: note:     def disconnect(self, QObject, /, member: bytes | bytearray | memoryview[int] | None = ...) -> bool
      bug5.py:6: note:     def disconnect(self, bytes | bytearray | memoryview[int], QObject, bytes | bytearray | memoryview[int], /) -> bool
      bug5.py:6: note:     def disconnect(self, bytes | bytearray | memoryview[int], Callable[..., Any], /) -> bool
      bug5.py:6: note: See https://mypy.rtfd.io/en/stable/_refs.html#code-call-overload for more info
      Found 1 error in 1 file (checked 1 source file)
      
          @staticmethod
          def disconnect(sender: PySide6.QtCore.QObject, signal_index: int, receiver: PySide6.QtCore.QObject, method_index: int, /) -> bool: ...
          @staticmethod
          def disconnectOne(sender: PySide6.QtCore.QObject, signal_index: int, receiver: PySide6.QtCore.QObject, method_index: int, /) -> bool: ...
      

      from

      "6:PySide6.QtCore.QObject.disconnect(connection:PySide6.QtCore.QMetaObject.Connection)->bool",
          "5:PySide6.QtCore.QObject.disconnect(self,receiver:PySide6.QtCore.QObject,member:char*=nullptr)->bool",
          "4:PySide6.QtCore.QObject.disconnect(sender:PySide6.QtCore.QObject,signal:PySide6.QtCore.QMetaMethod,receiver:PySide6.QtCore.QObject,member:PySide6.QtCore.QMetaMethod)->bool",
          "3:PySide6.QtCore.QObject.disconnect(sender:PySide6.QtCore.QObject,signal:char*,functor:PyCallable)->bool",
          "2:PySide6.QtCore.QObject.disconnect(sender:PySide6.QtCore.QObject,signal:char*,receiver:PySide6.QtCore.QObject,member:char*)->bool",
          "1:PySide6.QtCore.QObject.disconnect(self,signal:char*,functor:PyCallable)->bool",
          "0:PySide6.QtCore.QObject.disconnect(self,signal:char*,receiver:PySide6.QtCore.QObject,member:char*)->bool",
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            ctismer Christian Tismer
            bers bers bers
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes