TIMER and DEADLINE
Import: from stbass import TIMER, DEADLINE
Also: from stbass.timer import TimerExpired
TIMER
Fires after a duration:
t = TIMER(seconds=5.0)
t = TIMER(seconds=0.5, name="agent_timeout")| Parameter | Type | Description |
|-----------|------|-------------|
| seconds | float | Duration in seconds |
| name | str \| None | Optional name (auto-generated if omitted) |
DEADLINE
Fires at a specific point in time:
from datetime import datetime, timedelta
target = datetime.now() + timedelta(minutes=5)
d = DEADLINE(target, name="hard_deadline")
print(d.remaining) # timedelta until deadline| Parameter | Type | Description |
|-----------|------|-------------|
| target | datetime | When to fire |
| name | str \| None | Optional name |
| Property | Type | Description |
|----------|------|-------------|
| remaining | timedelta | Time remaining until deadline |
| seconds | float | Remaining seconds (for ALT integration) |
Using Timers in ALT
result = await PRI_ALT(
Guard(data_channel, handler=lambda v: v),
Guard(TIMER(seconds=10.0), handler=lambda v: "timed_out"),
)When a timer fires, the handler receives a TimerExpired value.
TimerExpired
Import: from stbass.timer import TimerExpired
Frozen dataclass produced when a timer or deadline fires.
| Field | Type | Description |
|-------|------|-------------|
| started_at | datetime | When the ALT began waiting |
| deadline | datetime | When the timer/deadline was set to fire |
| elapsed | timedelta | Actual elapsed time |
| timer_name | str | Name of the timer |
| last_checkpoint | Any \| None | Last checkpoint if applicable |