def input(self, datum, *a, **kw):
        if datum == NOTHING:
            return
        try:
            output, newstate = self.states[self.state][datum]
        except __HOLE__:
            self.invalidInput(datum)
        else:
            OLDSTATE = self.state.upper()
            NEWSTATE = newstate.upper()
            DATUM = datum.upper()
            self.transition(OLDSTATE, NEWSTATE, DATUM, *a, **kw)
            self.output(output, *a, **kw)
dataset/ETHPy150Open twisted/vertex/vertex/statemachine.py/StateMachine.input