This is pretty sweet stuff but I think a little more sugar can't hurt. I have found the following to be useful because such automations can be quite brittle:
def t_wait_for(item, dt = 0.1):
while not t.present(item):
t.wait(0.1)
Then again, it strikes me that many of the actions could benefit from having a wait
keyword argument to indicate whether to have this done before the relevant action.
Furthermore, time outs can be included as yet another keyword argument. (There already is an implicit time out of 0, why not customise it?)
What do you think?