Python3

Hi @craigcitro, not sure if you ever got a chance to look at my branch, so I'm creating a pull request for you to look over.  Let me know if there are any updates that are needed.  Thanks!
Use `with` statement.