2525import random
2626import threading
2727import warnings
28+ from functools import partial
2829from types import TracebackType # noqa # used in type hints
2930from typing import (
3031 TYPE_CHECKING ,
@@ -187,6 +188,17 @@ def generate_service_query(
187188 return _group_ptr_queries_with_known_answers (now , multicast , questions_with_known_answers )
188189
189190
191+ def _on_change_dispatcher (
192+ listener : ServiceListener ,
193+ zeroconf : 'Zeroconf' ,
194+ service_type : str ,
195+ name : str ,
196+ state_change : ServiceStateChange ,
197+ ) -> None :
198+ """Dispatch a service state change to a listener."""
199+ getattr (listener , _ON_CHANGE_DISPATCH [state_change ])(zeroconf , service_type , name )
200+
201+
190202def _service_state_changed_from_listener (listener : ServiceListener ) -> Callable [..., None ]:
191203 """Generate a service_state_changed handlers from a listener."""
192204 assert listener is not None
@@ -196,13 +208,7 @@ def _service_state_changed_from_listener(listener: ServiceListener) -> Callable[
196208 "don't care about the updates), it'll become mandatory." % (listener ,),
197209 FutureWarning ,
198210 )
199-
200- def on_change (
201- zeroconf : 'Zeroconf' , service_type : str , name : str , state_change : ServiceStateChange
202- ) -> None :
203- getattr (listener , _ON_CHANGE_DISPATCH [state_change ])(zeroconf , service_type , name )
204-
205- return on_change
211+ return partial (_on_change_dispatcher , listener )
206212
207213
208214class QueryScheduler :
0 commit comments