Skip to content

Triggering and Queries

Fire Triggers

  • Sync: sm.fire(trigger, *args)
  • Async: await sm.fire_async(trigger, *args)

Check Trigger Availability

  • Sync: sm.can_fire(trigger, *args)
  • Async: await sm.can_fire_async(trigger, *args)

List Permitted Triggers

  • Sync: sm.get_permitted_triggers(*args)
  • Async: await sm.get_permitted_triggers_async(*args)

In sync mode, triggers requiring async guard evaluation are not considered fireable.

Unhandled Trigger Hooks

Register custom handling when no transition is valid.

def on_unhandled(state, trigger, args):
    ...

sm.on_unhandled_trigger(on_unhandled)

Async variant:

async def on_unhandled_async(state, trigger, args):
    ...

sm.on_unhandled_trigger_async(on_unhandled_async)

Without a handler, unhandled triggers raise InvalidTransitionError.

Trigger Parameter Metadata

sm.set_trigger_parameters(Trigger.ASSIGN, int, str)

This stores type metadata used by introspection models. It does not enforce runtime argument validation.