Skip to content

Commit abc114f

Browse files
Fix type errors in pywin32 using types-pywin32 (#13844)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent a4282ec commit abc114f

7 files changed

Lines changed: 29 additions & 9 deletions

File tree

stubs/pywin32/_win32typing.pyi

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,9 @@ class PyHANDLE: # type: ignore[type-var]
10441044
def Close(self) -> None: ...
10451045
def close(self) -> None: ...
10461046
def Detach(self) -> Self: ...
1047+
def __bool__(self) -> bool: ...
10471048
def __int__(self) -> int: ...
1049+
# PyHANDLE sets a lot more dunder methods, only to make them all raise with `TypeError: bad operand type`
10481050

10491051
@final
10501052
class PyHDESK:
@@ -5279,7 +5281,7 @@ class PyCDocTemplate:
52795281
) -> None: ...
52805282
def SetContainerInfo(self, _id, /) -> None: ...
52815283
def SetDocStrings(self, docStrings: str, /) -> None: ...
5282-
def OpenDocumentFile(self, filename: str, bMakeVisible: int = ..., /) -> None: ...
5284+
def OpenDocumentFile(self, filename: str, bMakeVisible: int = ..., /) -> PyCDocument | None: ...
52835285

52845286
class PyCDockContext:
52855287
@property
@@ -6009,7 +6011,7 @@ class PyCWinApp:
60096011
def LoadOEMCursor(self, cursorId, /): ...
60106012
def LoadIcon(self, idResource: int, /) -> int: ...
60116013
def LoadStandardIcon(self, resourceName: PyResourceId, /): ...
6012-
def OpenDocumentFile(self, fileName: str, /) -> None: ...
6014+
def OpenDocumentFile(self, fileName: str, /) -> PyCDocument | None: ...
60136015
def OnFileNew(self) -> None: ...
60146016
def OnFileOpen(self) -> None: ...
60156017
def RemoveDocTemplate(self, template: PyCDocTemplate | DocTemplate, /) -> None: ...

stubs/pywin32/pythonwin/win32ui.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def FullPath(path: str, /) -> str: ...
9797
def GetActiveWindow() -> _win32typing.PyCWnd: ...
9898
def GetApp() -> _win32typing.PyCWinApp: ...
9999
def GetAppName(): ...
100-
def GetAppRegistryKey() -> None: ...
100+
def GetAppRegistryKey() -> _win32typing.PyHKEY: ...
101101
def GetBytes(address, size, /) -> str: ...
102102
def GetCommandLine() -> str: ...
103103
def GetDeviceCaps(hdc, index, /): ...

stubs/pywin32/win32/win32api.pyi

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,12 @@ def CloseHandle(handle: int, /) -> None: ...
7777
def CopyFile(src, dest: str, bFailOnExist: int = ..., /) -> None: ...
7878
def DebugBreak() -> None: ...
7979
def DeleteFile(fileName: str, /) -> None: ...
80-
def DragQueryFile(hDrop, fileNum: int = ..., /) -> str: ...
80+
81+
@overload
82+
def DragQueryFile(hDrop, fileNum: Literal[-1] = -1, /) -> int: ... # type: ignore[overload-overlap]
83+
@overload
84+
def DragQueryFile(hDrop, fileNum: int, /) -> str: ...
85+
8186
def DragFinish(hDrop, /) -> None: ...
8287
def DuplicateHandle(
8388
hSourceProcess: int, hSource: int, hTargetProcessHandle: int, desiredAccess: int, bInheritHandle: int, options: int, /

stubs/pywin32/win32/win32event.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def CreateEvent(
1111
Name: str | None,
1212
/,
1313
) -> int: ...
14-
def CreateMutex(MutexAttributes: _win32typing.PySECURITY_ATTRIBUTES, InitialOwner, Name: str, /) -> int: ...
14+
def CreateMutex(MutexAttributes: _win32typing.PySECURITY_ATTRIBUTES, InitialOwner, Name: str, /) -> _win32typing.PyHANDLE: ...
1515
def CreateSemaphore(
1616
SemaphoreAttributes: _win32typing.PySECURITY_ATTRIBUTES, InitialCount, MaximumCount, SemaphoreName, /
1717
) -> int: ...

stubs/pywin32/win32/win32gui.pyi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,10 @@ def IsChild(hWndParent: int, hWnd: int, /) -> int: ...
406406
def ReleaseCapture() -> None: ...
407407
def GetCapture(): ...
408408
def SetCapture() -> None: ...
409+
410+
# Exists and is documented as a wrapper around TrackMouseEvent
411+
# See https://learn.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-_trackmouseevent
412+
def _TrackMouseEvent(tme: tuple[int, int, int], /) -> _win32typing.TRACKMOUSEEVENT: ...
409413
def ReleaseDC(hWnd: int | _win32typing.PyHANDLE | None, hDC: int | _win32typing.PyHANDLE | None, /) -> Literal[0, 1]: ...
410414
def CreateCaret(hWnd: int, hBitmap: _win32typing.PyGdiHANDLE, nWidth, nHeight, /) -> None: ...
411415
def DestroyCaret() -> None: ...

stubs/pywin32/win32/win32pdh.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def OpenQuery(DataSource: Incomplete | None = ..., userData: int = ..., /): ...
1212
def CloseQuery(handle, /) -> None: ...
1313
def MakeCounterPath(
1414
elements: tuple[Incomplete, Incomplete, Incomplete, Incomplete, Incomplete, Incomplete], flags=..., /
15-
) -> None: ...
15+
) -> str: ...
1616
def GetCounterInfo(handle, bRetrieveExplainText, /) -> None: ...
1717
def GetFormattedCounterValue(handle, _format, /) -> tuple[Incomplete, Incomplete]: ...
1818
def CollectQueryData(hQuery, /) -> None: ...

stubs/pywin32/win32comext/shell/shell.pyi

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from _typeshed import Incomplete
2-
from typing import TypeAlias
2+
from typing import Literal, TypeAlias, overload
33

44
import _win32typing
55
from win32.lib.pywintypes import com_error
@@ -8,8 +8,17 @@ error: TypeAlias = com_error # noqa: Y042
88

99
def AssocCreate() -> _win32typing.PyIQueryAssociations: ...
1010
def AssocCreateForClasses() -> _win32typing.PyIUnknown: ...
11-
def DragQueryFile(hglobal: int, index, /) -> str: ...
12-
def DragQueryFileW(hglobal: int, index, /) -> str: ...
11+
12+
@overload
13+
def DragQueryFile(hglobal: int | _win32typing.PyHANDLE | None, index: Literal[-1] = -1, /) -> int: ... # type: ignore[overload-overlap]
14+
@overload
15+
def DragQueryFile(hglobal: int | _win32typing.PyHANDLE | None, index: int, /) -> str: ...
16+
17+
@overload
18+
def DragQueryFileW(hglobal: int | _win32typing.PyHANDLE | None, index: Literal[-1] = -1, /) -> int: ... # type: ignore[overload-overlap]
19+
@overload
20+
def DragQueryFileW(hglobal: int | _win32typing.PyHANDLE | None, index: int, /) -> str: ...
21+
1322
def DragQueryPoint(hglobal: int, /) -> tuple[Incomplete, Incomplete, Incomplete]: ...
1423
def IsUserAnAdmin() -> bool: ...
1524
def SHCreateDataObject(

0 commit comments

Comments
 (0)