You have Pyglet. You've got Rabbyt. But who do your sprites go to for advice? Owyl, of course.
GoalsThe goal of Owyl: provide a fast and flexible Behavior Tree framework implemented in python. Owyl trees use nested generators to iterate through your behaviors. The root of the tree always works just like a normal python iterator. If you know how to work with iterators, you know how to work with an Owyl tree. Because Owyl is small and behavior trees are easy to grasp, it's easy to control and extend your AI behaviors.
Trees as IteratorsTrees as iterators give you total control over how a behavior tree integrates with your code: use a for loop, a list comprehension, a generator expression, or manual calls to tree.next(). Run the tree one step, five, or fifty with every frame.
ExtendingWriting new behaviors is simple and easy (and soon to be documented!). Any object that corresponds to python's iterator interface and a few simple rules for yielded values will work. Owyl's core behaviors are written as simple generator functions.
More InformationFor more information on Behavior Trees, see these articles. Remember: AI isn't about math, it's about getting things done.
For more information on python generators, see this introduction to generators.