kivy/kivy — pull request #484 by knappador (2012-05-11 01:53:33+00:00)
Title: kivy.interactive

Contains two classes

InteractiveLauncher will launch any App instance (assuming pygame, but the EventLoopBase.idle override should provide broad coverage) and run it in a thread

InteractiveLauncher can create membranes (by default it returns a thread-safe membrane to it App instance) that continue spitting out thread-safe objects, so App.root.foo.foo.foo.bar() continues to be thread-safe.

SafeMembrane is a Membrane that thread-safes all attribute setting and method calls. This behavior will probably break down for dictionaries and lists without ~20 more lines.

Try out the test code (commented at bottom) and let me know if I should improve upon it or what =)