<div dir="ltr">Just to be clear, my proposal is to replace all such get/set options patterns throughout Python's standard library.<br><br>On Wednesday, September 11, 2013 5:13:55 PM UTC-4, Neil Girdhar wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir="ltr">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:<div><br></div><div>saved_precision = np.get_printoptions()['<wbr>precision']</div><div>np.set_printoptions(precision=<wbr>23)</div><div>do_something()</div><div>np.set_printoptions(precision=<wbr>saved_precision)</div><div><br></div><div>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):</div><div><br></div><div>with np.printoptions.child_context(<wbr>{'precision', 23}):</div><div>    do_something()</div><div><br></div><div>Best,</div><div><br></div><div>Neil</div></div></blockquote></div>