That's right. The only shortcoming is that in Python 2, you get a not very user friendly error message. But, i guess we can live with that?  Yes, you are right about changing the API, I failed to account for the use case you just mentioned. I just had the invocation as a class method in mind. 

I will upload a fresh patch.