Thanks for sharing that. I've looked over it, and my initial comment still stands. In the github repo, around lines 180 - 225, you are doing all of your updating and drawing in the same block of code, all of which is at the mercy of the pyglet clock.
The pyglet clock, and all software timers are inaccurate, no matter if it is python, or C, and you need to decouple your updates from your drawing. My recommendation is to move all the drawing functions to a callback from window.on_draw. For your updating code, you can build a function with that and schedule it using the clock.
After that you should use pyglet.app.run(). The pyglet app has some platform-dependent code that may help smooth out your framerate by allowing the program to sleep, too. Please see the following code from the pyglet docs to see how to get code called from window.on_draw:
This type of event oriented programming is a common way to get smooth framerates. Hope that helps.