Sometimes though, it's just a bit too low level. So I created SPW, which add a very light interface over the pygame drawing and blitting functions. This interface provides a canvas which handles scaling and translations, enabling you to easily scroll across a drawing, or zoom in and out. It also looks after dirty rectangle updates. This is what it looks like:
from spw import gui
with gui.Context() as canvas:
The context manager tracks the dirty rectangles, and does a screen.update when it exits. I've put it on google code, and it can also be installed using easy_install.