/solid

A state machine implementation for Python --- which *isn't* solely designed to parse strings!

Primary LanguagePython

solid

A state machine implementation for Python --- which isn't solely designed to parse strings!

why state machines?

They're cool! Also, easy to reason about --- a state machine design enables you to compartmentalize responsibilites in a way that functions simply don't.

why "solid"?

It's a convoluted name: it's a state machine library written in python; snake is another word for python that sounds like state --- and Solid Snake is a fairly well known character who kicks serious butt. Thus, "solid".

hello, world

Let's define a super-simple state machine with two states: one that prints "Hello" and one that prints "World":

from solid.machines import BaseMachine
from solid.states import BaseState, is_entry_state
from solid.transition import to


class HelloMachine(BaseMachine):

  @is_entry_state
  class Hello(BaseState):
    def body(self):
      print "Hello"

      return to(HelloMachine.World)

  class World(BaseState):
    def body(self):
      print "World"

From an intertpreter (or whatever):

>>> h = HelloMachine()
>>> h.start()
Hello
World
>>>

and that's pretty much all there is to it.