As far a 1, I'd recommend just use functools.partial or make an object with all the extra stuff u want and have that object provide a __call__ method.

As far as 2, you might have to subclass the FSM baseclass and add those into the internal data-structure (same for 3 I think); ie this one @ https://github.com/openstack/automaton/blob/master/automaton/machines.py#L186-L191


Of course feel free to do it differently and submit a patch that folks (myself and others) can review.

-Josh

Kwan, Louie wrote:
https://github.com/openstack/automaton

Friendly state machines for python.

A few questions about automaton.

1.I would like to know can we addition parameters on on_enter or on_exit
callbacks. Right now, it seems it only allows state and triggered_event.

a.I have many FSM running for different objects and it is much easier if
I can pass on the some sort of ID back to the callbacks.

2.Can we or how can we store extra attribute like last state change
*timestamp*?

3.Can we store additional identify info for the FSM object? Would like
to add an */UUID/*

Thanks.

Louie

def print_on_enter(new_state, triggered_event):

print("Entered '%s' due to '%s'" % (new_state, triggered_event))

def print_on_exit(old_state, triggered_event):

print("Exiting '%s' due to '%s'" % (old_state, triggered_event))

# This will contain all the states and transitions that our machine will

# allow, the format is relatively simple and designed to be easy to use.

state_space = [

{

'name': 'stopped',

'next_states': {

# On event 'play' transition to the 'playing' state.

'play': 'playing',

'open_close': 'opened',

'stop': 'stopped',

},

'on_enter': print_on_enter,

'on_exit': print_on_exit,

},

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to