Just to be clear, my proposal is to replace all such get/set options patterns throughout Python's standard library.

On Wednesday, September 11, 2013 5:13:55 PM UTC-4, Neil Girdhar wrote:
With numpy, the usual pattern is to get_printoptions, set some of them, and then restore the old options.  Why not expose the options in a ChainMap as numpy.printoptions?  ChainMap could then expose a context manager that pushes a new dictionary on entry and pops it on exit via, say, child_context that accepts a dictionary.  Now, instead of:

saved_precision = np.get_printoptions()['precision']
np.set_printoptions(precision=23)
do_something()
np.set_printoptions(precision=saved_precision)

You can do the same with a context manager, which I think is stylistically better (as it's impossible to forget to reset the option, and no explicit temporary invades the local variables):

with np.printoptions.child_context({'precision', 23}):
    do_something()

Best,

Neil