[Python-ideas] Replace option set/get methods through the standard library with a ChainMap; add a context manager to ChainMap

Neil Girdhar mistersheik at gmail.com
Thu Sep 12 00:18:01 CEST 2013


With numpy print options, for example, the usual pattern is to save some of 
the print options, set some of them, and then restore the old options.  Why 
not expose the options as a ChainMap called 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130911/8d776369/attachment.html>


More information about the Python-ideas mailing list