Added exists() helper in package namespace and added test for priority scheduling
This commit is contained in:
parent
2c3458120f
commit
91f1e6b5a0
|
@ -67,6 +67,14 @@ async def emit(event: str, block: bool = True):
|
|||
await get_current_emitter().emit(event, block)
|
||||
|
||||
|
||||
async def exists(event: str):
|
||||
"""
|
||||
Shorthand for get_current_emitter().exists(event)
|
||||
"""
|
||||
|
||||
return get_current_emitter().exists(event)
|
||||
|
||||
|
||||
def on_event(event: str, priority: int = 0, emitter: AsyncEventEmitter = get_current_emitter(), oneshot: bool = False):
|
||||
"""
|
||||
Decorator shorthand of emitter.register_event(event, f, priority, oneshot)
|
||||
|
@ -94,6 +102,7 @@ __all__ = [
|
|||
"on_event",
|
||||
"emit",
|
||||
"wait",
|
||||
"exists",
|
||||
"get_current_emitter",
|
||||
"set_current_emitter",
|
||||
]
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
import asyncio
|
||||
from asyncevents import on_event, emit, wait
|
||||
|
||||
|
||||
@on_event("event") # Priority defaults to 0, hence highest
|
||||
async def first(_, event: str):
|
||||
print(f"Ran first for {event!r}!")
|
||||
|
||||
|
||||
@on_event("event", priority=1) # Higher number = lower priority
|
||||
async def second(_, event: str):
|
||||
print(f"Ran second for {event!r}!")
|
||||
|
||||
|
||||
@on_event("event", priority=1) # You can add as many handlers as you want at a given priority level
|
||||
async def also_second(_, event: str):
|
||||
print(f"Ran second too for {event!r}!")
|
||||
|
||||
|
||||
@on_event("event", priority=2) # Higher number = lower priority
|
||||
async def third(_, event: str):
|
||||
print(f"Ran third for {event!r}!")
|
||||
|
||||
|
||||
async def main():
|
||||
print("Firing blocking event 'event'")
|
||||
await emit("event")
|
||||
print("Handlers for event 'event' have exited")
|
||||
print("Firing non-blocking event 'event'")
|
||||
await emit("event", block=False)
|
||||
print("Non-blocking event 'event' fired, waiting on it")
|
||||
await wait("event")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
Loading…
Reference in New Issue