![](https://secure.gravatar.com/avatar/bff91e6384fa1818f0f231adf6f7e809.jpg?s=120&d=mm&r=g)
The right way to do it was presented in PEP343. The implementation was correct and the API was simple.
Raymond's persuaded me that he's right on the API part at the very least. The current API was a mechanical replacement of the initial __context__ based API with a normal method, whereas I should have reverted back to the module-level localcontext() function from PEP343 and thrown the method on Context objects away entirely.
I can fix it on the trunk (and add those missing tests!), but I'll need Anthony and/or Neal's permission to backport it and remove the get_manager() method from Python 2.5 before we get stuck with it forever.
I committed this fix as 51664 on the trunk (although the docstrings are still example free because doctest doesn't understand __future__ statements).
Thanks for getting this done. Please make the following changes: * rename ContextManger to _ContextManger and remove it from the __all__ listing * move the copy() step from localcontext() to _ContextManager() * make the trivial updates the whatsnew25 example Once those nits are fixed, I recommend this patch be backported to the Py2.5 release. Raymond