I've made a patch that I believe should cover all three cases, including tests.
In addition to the pickling behavior, I've made two other changes:
1. methodcaller verifies during construction that the name is a string (PyUnicode), and interns it; attrgetter did this already, and I tweaked methodcaller to match for correctness and performance reasons
2. I added proper repr functionality to all three objects. Partially this is just to make it look nicer, but it was also a decent way to spot verify that the pickle/unpickle sequence behaved correctly
Anyone care to review? |