    def step(self):
        # type: () -> None
        '''
        Performs a step in the state machine.
        Each step iterates over the current state's `during` function then checks all
        possible transition paths, evaluates their condition, and transitions if possible.
        The next state is which transition condition was true first or the current state
        if no conditions were true.
        '''
        self.state.during()

        for transition in self._transitions[self.state.name]:
            if transition.condition():
                logging.debug('Transitioning: {0}'.format(transition))
                transition.action()
                self.state.on_exit()
                self.state = transition.dest
                self.state.on_enter()
                break
Performs a step in the state machine.
Each step iterates over the current state's `during` function then checks all
possible transition paths, evaluates their condition, and transitions if possible.
The next state is which transition condition was true first or the current state
if no conditions were true.
securitybot/state_machine.py