StateMachine
Backward compatibility wrapper - moved to DIRACCommon
This module has been moved to DIRACCommon.Core.Utilities.StateMachine to avoid circular dependencies and allow DiracX to use these utilities without triggering DIRAC’s global state initialization.
All exports are maintained for backward compatibility.
- class DIRAC.Core.Utilities.StateMachine.StateMachine(state=None)
Bases:
StateMachineBackward compatibility wrapper - moved to DIRACCommon
- __init__(state=None)
Constructor.
- getLevelOfState(state)
Given a state name, it returns its level (integer), which defines the hierarchy.
>>> sm0.getLevelOfState('Nirvana') 100 >>> sm0.getLevelOfState('AnotherState') -1
- Parameters:
state (str) – name of the state, it should be on <self.states> key set
- Returns:
int || -1 (if not in <self.states>)
- getNextState(candidateState)
Method that gets the next state, given the proposed transition to candidateState. If candidateState is not on the state map <self.states>, it is rejected. If it is not the case, we have two options: if <self.state> is None, then the next state will be <candidateState>. Otherwise, the current state is using its own transition rule to decide.
Examples
>>> sm0.getNextState(None) S_OK(None) >>> sm0.getNextState('NextState') S_OK('NextState')
- Parameters:
candidateState (str) – name of the next state
- Returns:
S_OK(nextState) || S_ERROR
- getStates()
Returns all possible states in the state map
Examples
>>> sm0.getStates() [ 'Nirvana' ]
- Returns:
list(stateNames)
- setState(candidateState, noWarn=False)
- Makes sure the state is either None or known to the machine, and that it is a valid state to move into.
Final states are also checked.
Examples
>>> sm0.setState(None)['OK'] True >>> sm0.setState('Nirvana')['OK'] True >>> sm0.setState('AnotherState')['OK'] False
- Parameters:
state (None or str) – state which will be set as current state of the StateMachine
- Returns:
S_OK || S_ERROR