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__(

6969

self.protocols: list[AsyncListener] = []

7070

self.readers: list[_WrappedTransport] = []

7171

self.senders: list[_WrappedTransport] = []

72-

self.running_event: asyncio.Event | None = None

72+

self.running_future: asyncio.Future[bool | None] | None = None

7373

self._listen_socket = listen_socket

7474

self._respond_sockets = respond_sockets

7575

self._cleanup_timer: asyncio.TimerHandle | None = None

@@ -81,15 +81,15 @@ def setup(

8181

) -> None:

8282

"""Set up the instance."""

8383

self.loop = loop

84-

self.running_event = asyncio.Event()

84+

self.running_future = loop.create_future()

8585

self.loop.create_task(self._async_setup(loop_thread_ready))

86868787

async def _async_setup(self, loop_thread_ready: threading.Event | None) -> None:

8888

"""Set up the instance."""

8989

self._async_schedule_next_cache_cleanup()

9090

await 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)

9393

if loop_thread_ready:

9494

loop_thread_ready.set()

9595

@@ -142,8 +142,9 @@ async def _async_close(self) -> None:

142142143143

def _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()

147148

for wrapped_transport in itertools.chain(self.senders, self.readers):

148149

wrapped_transport.transport.close()

149150