Skip to content

Commit

Permalink
Add type annotations to messageloop.py.
Browse files Browse the repository at this point in the history
  • Loading branch information
junkmd committed Feb 25, 2025
1 parent 364e2b2 commit b471692
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions comtypes/messageloop.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
import ctypes
from ctypes import WinDLL, WinError, byref
from ctypes.wintypes import MSG
from typing import TYPE_CHECKING, List, SupportsIndex

if TYPE_CHECKING:
from ctypes import _CArgObject
from typing import Any, Callable, Iterable

_FilterCallable = Callable[["_CArgObject"], Iterable[Any]] # type: ignore

_user32 = WinDLL("user32")

Expand All @@ -11,16 +18,16 @@


class _MessageLoop(object):
def __init__(self):
self._filters = []
def __init__(self) -> None:
self._filters: List["_FilterCallable"] = []

def insert_filter(self, obj, index=-1):
def insert_filter(self, obj: "_FilterCallable", index: SupportsIndex = -1) -> None:
self._filters.insert(index, obj)

def remove_filter(self, obj):
def remove_filter(self, obj: "_FilterCallable") -> None:
self._filters.remove(obj)

def run(self):
def run(self) -> None:
msg = MSG()
lpmsg = byref(msg)
while 1:
Expand All @@ -33,7 +40,7 @@ def run(self):
TranslateMessage(lpmsg)
DispatchMessage(lpmsg)

def filter_message(self, lpmsg):
def filter_message(self, lpmsg: "_CArgObject") -> bool:
return any(list(filter(lpmsg)) for filter in self._filters)


Expand Down

0 comments on commit b471692

Please # to comment.