Skip to content

Misc type fixes #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions PySide6-stubs/QtGui.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6112,9 +6112,9 @@ class QPixmap(PySide6.QtGui.QPaintDevice):
def isQBitmap(self) -> bool: ...
def load(self, fileName: str, format: Union[bytes, bytearray, memoryview, NoneType] = ..., flags: PySide6.QtCore.Qt.ImageConversionFlag = ...) -> bool: ...
@overload
def loadFromData(self, buf: Union[bytes, bytearray, memoryview], format: Union[bytes, bytearray, memoryview, NoneType] = ..., flags: PySide6.QtCore.Qt.ImageConversionFlag = ...) -> bool: ...
def loadFromData(self, buf: Union[bytes, bytearray, memoryview], format: Union[bytes, bytearray, memoryview, str, NoneType] = ..., flags: PySide6.QtCore.Qt.ImageConversionFlag = ...) -> bool: ...
@overload
def loadFromData(self, data: Union[PySide6.QtCore.QByteArray, bytes, bytearray, memoryview], format: Union[bytes, bytearray, memoryview, NoneType] = ..., flags: PySide6.QtCore.Qt.ImageConversionFlag = ...) -> bool: ...
def loadFromData(self, data: Union[PySide6.QtCore.QByteArray, bytes, bytearray, memoryview], format: Union[bytes, bytearray, memoryview, str, NoneType] = ..., flags: PySide6.QtCore.Qt.ImageConversionFlag = ...) -> bool: ...
def mask(self) -> PySide6.QtGui.QBitmap: ...
def metric(self, arg__1: PySide6.QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
def paintEngine(self) -> PySide6.QtGui.QPaintEngine: ...
Expand Down Expand Up @@ -6796,7 +6796,7 @@ class QRegularExpressionValidator(PySide6.QtGui.QValidator):

def regularExpression(self) -> PySide6.QtCore.QRegularExpression: ...
def setRegularExpression(self, re: Union[PySide6.QtCore.QRegularExpression, str]) -> None: ...
def validate(self, input: str, pos: int) -> object: ...
def validate(self, input: str, pos: int) -> tuple[PySide6.QtGui.QValidator.State, str, int]: ...


class QResizeEvent(PySide6.QtCore.QEvent):
Expand Down
16 changes: 8 additions & 8 deletions PySide6-stubs/QtWidgets.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -4349,7 +4349,7 @@ class QLayout(PySide6.QtCore.QObject, PySide6.QtWidgets.QLayoutItem):
def invalidate(self) -> None: ...
def isEmpty(self) -> bool: ...
def isEnabled(self) -> bool: ...
def itemAt(self, index: int) -> PySide6.QtWidgets.QLayoutItem: ...
def itemAt(self, index: int) -> Optional[PySide6.QtWidgets.QLayoutItem]: ...
def layout(self) -> PySide6.QtWidgets.QLayout: ...
def maximumSize(self) -> PySide6.QtCore.QSize: ...
def menuBar(self) -> PySide6.QtWidgets.QWidget: ...
Expand All @@ -4375,7 +4375,7 @@ class QLayout(PySide6.QtCore.QObject, PySide6.QtWidgets.QLayoutItem):
def setSpacing(self, arg__1: int) -> None: ...
def sizeConstraint(self) -> PySide6.QtWidgets.QLayout.SizeConstraint: ...
def spacing(self) -> int: ...
def takeAt(self, index: int) -> PySide6.QtWidgets.QLayoutItem: ...
def takeAt(self, index: int) -> Optional[PySide6.QtWidgets.QLayoutItem]: ...
def totalHeightForWidth(self, w: int) -> int: ...
def totalMaximumSize(self) -> PySide6.QtCore.QSize: ...
def totalMinimumHeightForWidth(self, w: int) -> int: ...
Expand Down Expand Up @@ -4718,9 +4718,9 @@ class QListWidget(PySide6.QtWidgets.QListView):
def scrollToItem(self, item: PySide6.QtWidgets.QListWidgetItem, hint: PySide6.QtWidgets.QAbstractItemView.ScrollHint = ...) -> None: ...
def selectedItems(self) -> List[PySide6.QtWidgets.QListWidgetItem]: ...
@overload
def setCurrentItem(self, item: PySide6.QtWidgets.QListWidgetItem) -> None: ...
def setCurrentItem(self, item: Optional[PySide6.QtWidgets.QListWidgetItem]) -> None: ...
@overload
def setCurrentItem(self, item: PySide6.QtWidgets.QListWidgetItem, command: PySide6.QtCore.QItemSelectionModel.SelectionFlag) -> None: ...
def setCurrentItem(self, item: Optional[PySide6.QtWidgets.QListWidgetItem], command: PySide6.QtCore.QItemSelectionModel.SelectionFlag) -> None: ...
@overload
def setCurrentRow(self, row: int) -> None: ...
@overload
Expand Down Expand Up @@ -8940,7 +8940,7 @@ class QTreeWidget(PySide6.QtWidgets.QTreeView):
def collapseItem(self, item: PySide6.QtWidgets.QTreeWidgetItem) -> None: ...
def columnCount(self) -> int: ...
def currentColumn(self) -> int: ...
def currentItem(self) -> PySide6.QtWidgets.QTreeWidgetItem: ...
def currentItem(self) -> Optional[PySide6.QtWidgets.QTreeWidgetItem]: ...
def dropEvent(self, event: PySide6.QtGui.QDropEvent) -> None: ...
def dropMimeData(self, parent: PySide6.QtWidgets.QTreeWidgetItem, index: int, data: PySide6.QtCore.QMimeData, action: PySide6.QtCore.Qt.DropAction) -> bool: ...
def editItem(self, item: PySide6.QtWidgets.QTreeWidgetItem, column: int = ...) -> None: ...
Expand Down Expand Up @@ -8970,9 +8970,9 @@ class QTreeWidget(PySide6.QtWidgets.QTreeView):
def selectedItems(self) -> List[PySide6.QtWidgets.QTreeWidgetItem]: ...
def setColumnCount(self, columns: int) -> None: ...
@overload
def setCurrentItem(self, item: PySide6.QtWidgets.QTreeWidgetItem) -> None: ...
def setCurrentItem(self, item: Optional[PySide6.QtWidgets.QTreeWidgetItem]) -> None: ...
@overload
def setCurrentItem(self, item: PySide6.QtWidgets.QTreeWidgetItem, column: int) -> None: ...
def setCurrentItem(self, item: Optional[PySide6.QtWidgets.QTreeWidgetItem], column: int) -> None: ...
@overload
def setCurrentItem(self, item: PySide6.QtWidgets.QTreeWidgetItem, column: int, command: PySide6.QtCore.QItemSelectionModel.SelectionFlag) -> None: ...
def setHeaderItem(self, item: PySide6.QtWidgets.QTreeWidgetItem) -> None: ...
Expand Down Expand Up @@ -9048,7 +9048,7 @@ class QTreeWidgetItem(Shiboken.Object):
def isFirstColumnSpanned(self) -> bool: ...
def isHidden(self) -> bool: ...
def isSelected(self) -> bool: ...
def parent(self) -> PySide6.QtWidgets.QTreeWidgetItem: ...
def parent(self) -> Optional[PySide6.QtWidgets.QTreeWidgetItem]: ...
def read(self, in_: PySide6.QtCore.QDataStream) -> None: ...
def removeChild(self, child: PySide6.QtWidgets.QTreeWidgetItem) -> None: ...
def setBackground(self, column: int, brush: Union[PySide6.QtGui.QBrush, PySide6.QtCore.Qt.BrushStyle, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor, PySide6.QtGui.QGradient, PySide6.QtGui.QImage, PySide6.QtGui.QPixmap]) -> None: ...
Expand Down
16 changes: 15 additions & 1 deletion tests/qlayout.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
from PySide6.QtWidgets import QGridLayout, QHBoxLayout, QVBoxLayout, QLayout
from typing_extensions import override
from PySide6.QtWidgets import QGridLayout, QHBoxLayout, QVBoxLayout, QLayout, QLayoutItem

a = QGridLayout(parent=None)
b = QHBoxLayout(parent=None)
c = QVBoxLayout(parent=None)

class TestLayout(QLayout):
# These can return None
@override
def itemAt(self, index: int) -> 'QLayoutItem | None':
return super().itemAt(index)

@override
def takeAt(self, index: int) -> 'QLayoutItem | None':
return super().takeAt(index)

assert a.itemAt(0) is None
assert a.takeAt(0) is None
7 changes: 6 additions & 1 deletion tests/qpixmap.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from PySide6.QtCore import Qt
from PySide6.QtCore import QByteArray, Qt
from PySide6.QtGui import QPixmap

emptyPixmap = QPixmap(16, 16)
emptyPixmap.fill(Qt.GlobalColor.transparent)
emptyPixmap.fill('white')
emptyPixmap.fill(0xFFFFFF)

# Should accept str for format
worlds_smallest_png = QByteArray.fromBase64(b"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQAAAAA3bvkkAAAACklEQVR4AWNgAAAAAgABc3UBGAAAAABJRU5ErkJggg==")
load_pixmap = QPixmap()
load_pixmap.loadFromData(worlds_smallest_png, "PNG")
10 changes: 10 additions & 0 deletions tests/qregularexpressionvalidator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from PySide6.QtGui import QRegularExpressionValidator, QValidator


v = QRegularExpressionValidator()

valid_info: tuple[QValidator.State, str, int] = v.validate("", 0)
assert isinstance(valid_info, tuple)
assert isinstance(valid_info[0], QValidator.State)
assert isinstance(valid_info[1], str)
assert isinstance(valid_info[2], int)
3 changes: 3 additions & 0 deletions tests/qtreewidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@
# default type returned by topLevelItem() should allow None value
topItem = None

t.setCurrentItem(None)
current_item = t.currentItem()
current_item = None