[PyQt] Various issues with PyQt stubs
Florian Bruhin
me at the-compiler.org
Wed May 18 21:47:29 BST 2016
Hi,
I tried to start using mypy now that PyQt has stubs.
Since I can't easily install stubs currently I opted to add them to a
repo (copied out after I ran configure.py in the PyQt repo). When I
then run mypy with --check-untyped-defs and MYPYDIR set to the stubs
dir, I get various issues mypy reports about the stub files.
The first one is obvious, a QtGui import is missing from various stub
files:
misc/stubs/PyQt5/QtPrintSupport.pyi: note: In function "metric":
misc/stubs/PyQt5/QtPrintSupport.pyi:177: error: Name 'QtGui' is not defined
misc/stubs/PyQt5/QtPrintSupport.pyi: note: At top level:
misc/stubs/PyQt5/QtPrintSupport.pyi:184a version with stubs : error: Name 'QtGui' is not defined
[...]
I fixed this for the stub modules I use, but more might be affected:
https://github.com/The-Compiler/qutebrowser/commit/f372644124793467865b9a324a3ce77f9f0ff358
The same happens for QtNetwork in QtWebKitWidgets.pyi:
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "load":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:105: error: Name 'QtNetwork' is not defined
misc/stubs/PyQt5/QtWebKitWidgets.pyi:229: error: Name 'QtNetwork' is not defined
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "acceptNavigationRequest":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:497: error: Invalid type "QtNetwork"
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "downloadRequested":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:501: error: Invalid type "QtNetwork"
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "unsupportedContent":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:502: error: Invalid type "QtNetwork"
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "networkAccessManager":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:542: error: Invalid type "QtNetwork"
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "setNetworkAccessManager":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:543: error: Invalid type "QtNetwork"
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In function "load":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:619: error: Name 'QtNetwork' is not defined
With that fixed, there are still a lot of errors about incompatible
types. I've looked into the first one:
misc/stubs/PyQt5/QtGui.pyi: note: In class "QPixmap":
misc/stubs/PyQt5/QtGui.pyi:181: error: Return type of "devicePixelRatio" incompatible with supertype "QPaintDevice"
Looking at the Qt documentation, it seems indeed like there's
QPaintDevice::devicePixelRatio which returns an int, which is
overridden by QPixmap::devicePixelRatio returning a qreal (aka float)?
Not sure how that'd best be expressed in the stubs, but it seems like
MyPy doesn't like how it looks currently...
The others:
misc/stubs/PyQt5/QtGui.pyi: note: In class "QBitmap":
misc/stubs/PyQt5/QtGui.pyi:255: error: Argument 1 of "swap" incompatible with supertype "QPixmap"
misc/stubs/PyQt5/QtGui.pyi:256: error: Signature of "transformed" incompatible with supertype "QPixmap"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QImage":
misc/stubs/PyQt5/QtGui.pyi:2077: error: Return type of "devicePixelRatio" incompatible with supertype "QPaintDevice"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QMatrix4x4":
misc/stubs/PyQt5/QtGui.pyi:2543: error: Overloaded function signatures 1 and 2 overlap with incompatible return types
misc/stubs/PyQt5/QtGui.pyi: note: In class "QWindow":
misc/stubs/PyQt5/QtGui.pyi:3933: error: Argument 1 of "setParent" incompatible with supertype "QObject"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QPaintDeviceWindow":
misc/stubs/PyQt5/QtGui.pyi:3942: error: Definition of "devicePixelRatio" in base class "QWindow" is incompatible with definition in base class "QPaintDevice"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QPdfWriter":
misc/stubs/PyQt5/QtGui.pyi:5309: error: Signature of "setPageSize" incompatible with supertype "QPagedPaintDevice"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QTextList":
misc/stubs/PyQt5/QtGui.pyi:7378: error: Argument 1 of "setFormat" incompatible with supertype "QTextObject"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QTextTable":
misc/stubs/PyQt5/QtGui.pyi:7591: error: Argument 1 of "setFormat" incompatible with supertype "QTextObject"
misc/stubs/PyQt5/QtGui.pyi: note: In class "QTransform":
misc/stubs/PyQt5/QtGui.pyi:7712: error: Overloaded function signatures 3 and 4 overlap with incompatible return types
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QWidget":
misc/stubs/PyQt5/QtWidgets.pyi:195: error: Signature of "setParent" incompatible with supertype "QObject"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QAbstractItemView":
misc/stubs/PyQt5/QtWidgets.pyi:721: error: Signature of "update" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QApplication":
misc/stubs/PyQt5/QtWidgets.pyi:1102: error: Signature of "topLevelAt" incompatible with supertype "QGuiApplication"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QFileSystemModel":
misc/stubs/PyQt5/QtWidgets.pyi:3139: error: Signature of "parent" incompatible with supertype "QAbstractItemModel"
misc/stubs/PyQt5/QtWidgets.pyi:3139: error: Signature of "parent" incompatible with supertype "QObject"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QGraphicsPixmapItem":
misc/stubs/PyQt5/QtWidgets.pyi:4288: error: Signature of "paint" incompatible with supertype "QGraphicsItem"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QGraphicsSimpleTextItem":
misc/stubs/PyQt5/QtWidgets.pyi:4313: error: Signature of "paint" incompatible with supertype "QGraphicsItem"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QGraphicsTextItem":
misc/stubs/PyQt5/QtWidgets.pyi:4399: error: Signature of "paint" incompatible with supertype "QGraphicsItem"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QGraphicsProxyWidget":
misc/stubs/PyQt5/QtWidgets.pyi:4570: error: Signature of "paint" incompatible with supertype "QGraphicsWidget"
misc/stubs/PyQt5/QtWidgets.pyi:4570: error: Signature of "paint" incompatible with supertype "QGraphicsItem"
misc/stubs/PyQt5/QtWidgets.pyi:4571: error: Signature of "setGeometry" incompatible with supertype "QGraphicsWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QGraphicsView":
misc/stubs/PyQt5/QtWidgets.pyi:5027: error: Signature of "render" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QHeaderView":
misc/stubs/PyQt5/QtWidgets.pyi:5191: error: Argument 1 of "initStyleOption" incompatible with supertype "QFrame"
misc/stubs/PyQt5/QtWidgets.pyi:5216: error: Signature of "scrollTo" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QListWidget":
misc/stubs/PyQt5/QtWidgets.pyi:5901: error: Argument 1 of "closePersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi:5902: error: Argument 1 of "openPersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QPlainTextEdit":
misc/stubs/PyQt5/QtWidgets.pyi:6592: error: Signature of "find" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QProxyStyle":
misc/stubs/PyQt5/QtWidgets.pyi:6732: error: Signature of "polish" incompatible with supertype "QCommonStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6732: error: Signature of "polish" incompatible with supertype "QStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6740: error: Signature of "standardPixmap" incompatible with supertype "QCommonStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6740: error: Signature of "standardPixmap" incompatible with supertype "QStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6748: error: Signature of "subControlRect" incompatible with supertype "QCommonStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6748: error: Signature of "subControlRect" incompatible with supertype "QStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6749: error: Signature of "subElementRect" incompatible with supertype "QCommonStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6749: error: Signature of "subElementRect" incompatible with supertype "QStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6750: error: Signature of "sizeFromContents" incompatible with supertype "QCommonStyle"
misc/stubs/PyQt5/QtWidgets.pyi:6750: error: Signature of "sizeFromContents" incompatible with supertype "QStyle"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QRubberBand":
misc/stubs/PyQt5/QtWidgets.pyi:6791: error: Signature of "resize" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QSplashScreen":
misc/stubs/PyQt5/QtWidgets.pyi:7180: error: Signature of "repaint" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QStackedLayout":
misc/stubs/PyQt5/QtWidgets.pyi:7284: error: Return type of "addWidget" incompatible with supertype "QLayout"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QStylePainter":
misc/stubs/PyQt5/QtWidgets.pyi:8174: error: Signature of "begin" incompatible with supertype "QPainter"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QTableWidget":
misc/stubs/PyQt5/QtWidgets.pyi:8528: error: Argument 1 of "closePersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi:8529: error: Argument 1 of "openPersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QTextEdit":
misc/stubs/PyQt5/QtWidgets.pyi:8783: error: Signature of "find" incompatible with supertype "QWidget"
misc/stubs/PyQt5/QtWidgets.pyi: note: In class "QTreeWidget":
misc/stubs/PyQt5/QtWidgets.pyi:9256: error: Signature of "closePersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtWidgets.pyi:9257: error: Signature of "openPersistentEditor" incompatible with supertype "QAbstractItemView"
misc/stubs/PyQt5/QtCore.pyi: note: In class "QAbstractTableModel":
misc/stubs/PyQt5/QtCore.pyi:1899: error: Signature of "parent" incompatible with supertype "QAbstractItemModel"
misc/stubs/PyQt5/QtCore.pyi: note: In class "QAbstractListModel":
misc/stubs/PyQt5/QtCore.pyi:1910: error: Signature of "parent" incompatible with supertype "QAbstractItemModel"
misc/stubs/PyQt5/QtCore.pyi: note: In class "QIdentityProxyModel":
misc/stubs/PyQt5/QtCore.pyi:3746: error: Signature of "parent" incompatible with supertype "QAbstractItemModel"
misc/stubs/PyQt5/QtCore.pyi:3746: error: Signature of "parent" incompatible with supertype "QObject"
misc/stubs/PyQt5/QtCore.pyi: note: In class "QStringListModel":
misc/stubs/PyQt5/QtCore.pyi:6911: error: Signature of "data" incompatible with supertype "QAbstractItemModel"
misc/stubs/PyQt5/QtCore.pyi: note: In class "QTemporaryFile":
misc/stubs/PyQt5/QtCore.pyi:6975: error: Signature of "open" incompatible with supertype "QFile"
misc/stubs/PyQt5/QtCore.pyi:6975: error: Signature of "open" incompatible with supertype "QIODevice"
misc/stubs/PyQt5/QtPrintSupport.pyi: note: In class "QPrinter":
misc/stubs/PyQt5/QtPrintSupport.pyi:264: error: Signature of "setPageMargins" incompatible with supertype "QPagedPaintDevice"
misc/stubs/PyQt5/QtNetwork.pyi: note: In class "QHostAddress":
misc/stubs/PyQt5/QtNetwork.pyi:415: error: Overloaded function signatures 2 and 3 overlap with incompatible return types
misc/stubs/PyQt5/QtNetwork.pyi: note: In class "QSslSocket":
misc/stubs/PyQt5/QtNetwork.pyi:1605: error: Signature of "connectToHost" incompatible with supertype "QAbstractSocket"
misc/stubs/PyQt5/QtNetwork.pyi:1654: error: Overloaded function signatures 1 and 2 overlap with incompatible return types
misc/stubs/PyQt5/QtNetwork.pyi:1662: error: Overloaded function signatures 1 and 2 overlap with incompatible return types
misc/stubs/PyQt5/QtWebKit.pyi: note: In function "webFrame":
misc/stubs/PyQt5/QtWebKit.pyi:111: error: Name 'QWebFrame' is not defined
misc/stubs/PyQt5/QtWebKitWidgets.pyi: note: In class "QGraphicsWebView":
misc/stubs/PyQt5/QtWebKitWidgets.pyi:89: error: Signature of "sizeHint" incompatible with supertype "QGraphicsWidget"
misc/stubs/PyQt5/QtWebKitWidgets.pyi:89: error: Signature of "sizeHint" incompatible with supertype "QGraphicsLayoutItem"
misc/stubs/PyQt5/QtWebKitWidgets.pyi:94: error: Signature of "setGeometry" incompatible with supertype "QGraphicsWidget"
Florian
--
http://www.the-compiler.org | me at the-compiler.org (Mail/XMPP)
GPG: 916E B0C8 FD55 A072 | http://the-compiler.org/pubkey.asc
I love long mails! | http://email.is-not-s.ms/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20160518/b9573271/attachment.sig>
More information about the PyQt
mailing list