Skip to content

Commit de29554

Browse files
committed
fix: make Signal.fire keyword-only to type the dispatch contract
1 parent 18cf00e commit de29554

3 files changed

Lines changed: 5 additions & 25 deletions

File tree

‎src/zeroconf/__init__.py‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
from ._services import ( # noqa # import needed for backwards compat
5555
ServiceListener,
5656
ServiceStateChange,
57-
ServiceStateChangeHandler,
5857
Signal,
5958
SignalRegistrationInterface,
6059
)
@@ -113,7 +112,6 @@
113112
"ServiceListener",
114113
"ServiceNameAlreadyRegistered",
115114
"ServiceStateChange",
116-
"ServiceStateChangeHandler",
117115
"Zeroconf",
118116
"ZeroconfServiceTypes",
119117
"__version__",

‎src/zeroconf/_services/__init__.py‎

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import enum
2626
from collections.abc import Callable
27-
from typing import TYPE_CHECKING, Protocol, cast
27+
from typing import TYPE_CHECKING
2828

2929
if TYPE_CHECKING:
3030
from .._core import Zeroconf
@@ -48,24 +48,11 @@ def update_service(self, zc: Zeroconf, type_: str, name: str) -> None:
4848
raise NotImplementedError
4949

5050

51-
class ServiceStateChangeHandler(Protocol):
52-
"""Callback contract dispatched by :class:`Signal` to service-state listeners."""
53-
54-
def __call__(
55-
self,
56-
*,
57-
zeroconf: Zeroconf,
58-
service_type: str,
59-
name: str,
60-
state_change: ServiceStateChange,
61-
) -> None: ...
62-
63-
6451
class Signal:
6552
__slots__ = ("_handlers",)
6653

6754
def __init__(self) -> None:
68-
self._handlers: list[ServiceStateChangeHandler] = []
55+
self._handlers: list[Callable[..., None]] = []
6956

7057
def fire(
7158
self,
@@ -91,13 +78,13 @@ def registration_interface(self) -> SignalRegistrationInterface:
9178
class SignalRegistrationInterface:
9279
__slots__ = ("_handlers",)
9380

94-
def __init__(self, handlers: list[ServiceStateChangeHandler]) -> None:
81+
def __init__(self, handlers: list[Callable[..., None]]) -> None:
9582
self._handlers = handlers
9683

9784
def register_handler(self, handler: Callable[..., None]) -> SignalRegistrationInterface:
98-
self._handlers.append(cast("ServiceStateChangeHandler", handler))
85+
self._handlers.append(handler)
9986
return self
10087

10188
def unregister_handler(self, handler: Callable[..., None]) -> SignalRegistrationInterface:
102-
self._handlers.remove(cast("ServiceStateChangeHandler", handler))
89+
self._handlers.remove(handler)
10390
return self

‎tests/test_services.py‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,8 +329,3 @@ def test_signal_fire_rejects_positional_args():
329329
"x._http._tcp.local.",
330330
r.ServiceStateChange.Added,
331331
)
332-
333-
334-
def test_service_state_change_handler_protocol_exported():
335-
"""The handler Protocol is part of the public package surface."""
336-
assert hasattr(r, "ServiceStateChangeHandler")

0 commit comments

Comments
 (0)