I already did https://mail.python.org/pipermail/cryptography-dev/2013-September/000072.html, I've gotten no response so far though so I figured I'd try it out to see how well it worked and I think it worked pretty well TBH.

The reason for the different APIs is either you have an API that returns an iterator (to support streaming) or you make it more awkward when you don't want to or don't care to stream (the bulk of cases).