Fix if_single on Python 3.11 (#669)

* Wrap coroutine in task.

This is required in Python 3.11.

* Support None handlers in if_single.

* black

---------

Co-authored-by: Gabriel Ebner <gebner@gebner.org>
pull/709/head
jonasBoss 1 year ago committed by GitHub
parent 486d33acb4
commit 15eb0e9653
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -676,7 +676,10 @@ class Macro:
resolved_timeout = _resolve(timeout, allowed_types=[int, float, None])
await asyncio.wait(
[listener_done.wait(), self._trigger_release_event.wait()],
[
asyncio.Task(listener_done.wait()),
asyncio.Task(self._trigger_release_event.wait()),
],
timeout=resolved_timeout / 1000 if resolved_timeout else None,
return_when=asyncio.FIRST_COMPLETED,
)
@ -684,9 +687,11 @@ class Macro:
self.context.listeners.remove(listener)
if not listener_done.is_set() and self._trigger_release_event.is_set():
await then.run(handler) # was trigger release
if then:
await then.run(handler) # was trigger release
else:
await else_.run(handler)
if else_:
await else_.run(handler)
self.tasks.append(task)

Loading…
Cancel
Save