feat: eliminate async_timeout dep on python less than 3.11 (#1500) · python-zeroconf/python-zeroconf@44457be
@@ -53,7 +53,7 @@ class AsyncEngine:
5353"loop",
5454"protocols",
5555"readers",
56-"running_event",
56+"running_future",
5757"senders",
5858"zc",
5959 )
@@ -69,7 +69,7 @@ def __init__(
6969self.protocols: list[AsyncListener] = []
7070self.readers: list[_WrappedTransport] = []
7171self.senders: list[_WrappedTransport] = []
72-self.running_event: asyncio.Event | None = None
72+self.running_future: asyncio.Future[bool | None] | None = None
7373self._listen_socket = listen_socket
7474self._respond_sockets = respond_sockets
7575self._cleanup_timer: asyncio.TimerHandle | None = None
@@ -81,15 +81,15 @@ def setup(
8181 ) -> None:
8282"""Set up the instance."""
8383self.loop = loop
84-self.running_event = asyncio.Event()
84+self.running_future = loop.create_future()
8585self.loop.create_task(self._async_setup(loop_thread_ready))
86868787async def _async_setup(self, loop_thread_ready: threading.Event | None) -> None:
8888"""Set up the instance."""
8989self._async_schedule_next_cache_cleanup()
9090await self._async_create_endpoints()
91-assert self.running_event is not None
92-self.running_event.set()
91+assert self.running_future is not None
92+self.running_future.set_result(True)
9393if loop_thread_ready:
9494loop_thread_ready.set()
9595@@ -142,8 +142,9 @@ async def _async_close(self) -> None:
142142143143def _async_shutdown(self) -> None:
144144"""Shutdown transports and sockets."""
145-assert self.running_event is not None
146-self.running_event.clear()
145+assert self.running_future is not None
146+assert self.loop is not None
147+self.running_future = self.loop.create_future()
147148for wrapped_transport in itertools.chain(self.senders, self.readers):
148149wrapped_transport.transport.close()
149150