Added exists() helper in package namespace and added test for priority scheduling

This commit is contained in:
nocturn9x 2021-12-29 13:15:51 +01:00
parent 2c3458120f
commit 91f1e6b5a0
2 changed files with 45 additions and 0 deletions

View File

@ -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",
]

36
tests/priority.py Normal file
View File

@ -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())