def run(self, fname = '_state_start', announce = False):
        '''
            Enter into the state machine here. called run to
            simply because it ties in w/ threading module
            
            fname   - override the beginning state
            announce - print state name as you enter state
        '''
        self.state_trace = []

        while 'None' != fname:
            if announce:
                print '\n\n    %s' % fname.upper().center(60, '*')
            self.state_trace.append(fname)
            ret     = getattr(self, fname)()
            fname   = self.state_machine[fname][ret]

            Enter into the state machine here. called run to
            simply because it ties in w/ threading module
            
            fname   - override the beginning state
            announce - print state name as you enter state
        
recipes/Python/577693_Dynamically_Generated_PythState/recipe-577693.py