Quickstart

The most typical usage is in tests, when you have a scenario that requires waiting for something to happen:

from busypie import wait

def test_event_should_be_dispatched():
    dispatcher.dispatch(event)
    wait().until(event_dispatched)

Using it inside an async function is almost the same:

from busypie import wait

async def create_user():
    dispatch_user_create_command()
    await wait().until_async(lambda: user_created_dispatched)

You can also wait while a condition remains true:

from busypie import wait, MINUTE

def test_event_should_be_dispatched():
    dispatcher.dispatch(event)
    wait().at_most(2 * MINUTE).during(event_not_dispatched)

As with until, async support is available for during as well:

from busypie import wait

async def create_user():
    dispatch_user_create_command()
    await wait().during_async(lambda: not app.has_user(user))