Skip to content

Commit d928f9e

Browse files
authored
[pynput] Fix annotations for event callbacks (#15857)
They are designed to accept any number of arguments up to the maximum amount, so `on_click()` and `on_click(x, y)` are both perfectly valid callbacks. Also fix callback return types. Technically they accept any return type, but as the only effect is returning `False` stops the iteration, then it makes sense to limit it to `bool | None`.
1 parent 5f301d6 commit d928f9e

2 files changed

Lines changed: 37 additions & 5 deletions

File tree

stubs/pynput/pynput/keyboard/_base.pyi

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,18 @@ class Controller:
127127
class Listener(AbstractListener):
128128
def __init__(
129129
self,
130-
on_press: Callable[[Key | KeyCode | None], None] | None = None,
131-
on_release: Callable[[Key | KeyCode | None], None] | None = None,
130+
on_press: (
131+
Callable[[], bool | None]
132+
| Callable[[Key | KeyCode | None], bool | None]
133+
| Callable[[Key | KeyCode | None, bool], bool | None]
134+
| None
135+
) = None,
136+
on_release: (
137+
Callable[[], bool | None]
138+
| Callable[[Key | KeyCode | None], bool | None]
139+
| Callable[[Key | KeyCode | None, bool], bool | None]
140+
| None
141+
) = None,
132142
suppress: bool = False,
133143
**kwargs: Any,
134144
) -> None: ...

stubs/pynput/pynput/mouse/_base.pyi

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,31 @@ class Listener(AbstractListener):
8888

8989
def __init__(
9090
self,
91-
on_move: Callable[[int, int], bool | None] | None = None,
92-
on_click: Callable[[int, int, Button, bool], bool | None] | None = None,
93-
on_scroll: Callable[[int, int, int, int], bool | None] | None = None,
91+
on_move: (
92+
Callable[[], bool | None]
93+
| Callable[[int], bool | None]
94+
| Callable[[int, int], bool | None]
95+
| Callable[[int, int, bool], bool | None]
96+
| None
97+
) = None,
98+
on_click: (
99+
Callable[[], bool | None]
100+
| Callable[[int], bool | None]
101+
| Callable[[int, int], bool | None]
102+
| Callable[[int, int, Button], bool | None]
103+
| Callable[[int, int, Button, bool], bool | None]
104+
| Callable[[int, int, Button, bool, bool], bool | None]
105+
| None
106+
) = None,
107+
on_scroll: (
108+
Callable[[], bool | None]
109+
| Callable[[int], bool | None]
110+
| Callable[[int, int], bool | None]
111+
| Callable[[int, int, int], bool | None]
112+
| Callable[[int, int, int, int], bool | None]
113+
| Callable[[int, int, int, int, bool], bool | None]
114+
| None
115+
) = None,
94116
suppress: bool = False,
95117
**kwargs: Any,
96118
) -> None: ...

0 commit comments

Comments
 (0)