##// END OF EJS Templates
Add -q option (suppress print upon creation) to %macro...
Add -q option (suppress print upon creation) to %macro Macros are very, very useful and "Matlab" like (as well as other similar math computing environs). Often I (or my students) use a macro to load long complex code from a url -- e.g., large data sets, simulated data, preprocessing of data, special plotting commands, grading routines... Currently, this requires defining the macro at the end of the notebook so when the "print upon creation" occurs it doesn't overwhelm the notebook (except at the end). The -q option suppresses the print contents upon creation. Example with a Matplotlib example: In[1]: %macro tmp http://matplotlib.org/mpl_examples/api/date_demo.py Macro `tmp` created. To execute, type its name (without quotes). === Macro contents: === """ Show how to make date plots in matplotlib using date tick locators and formatters. See major_minor_demo1.py for more information on controlling major and minor ticks ... In[2]: %macro -q tmp2 http://matplotlib.org/mpl_examples/api/date_demo.py (nothing) Perhaps, though, the first line should print -- e.g., Macro `tmp` created. To execute, type its name (without quotes). In the docstraing, I also fixed a typo (an "as" that should be an "at") and clarified how to produce an example output.

File last commit:

r9244:666fdfa8
r10962:f96aac3a
Show More
nested_context.py
50 lines | 1.5 KiB | text/x-python | PythonLexer
"""Backwards compatibility - we use contextlib.nested to support Python 2.6,
but it's removed in Python 3.2."""
# TODO : Remove this once we drop support for Python 2.6, and use
# "with a, b:" instead.
import sys
from contextlib import contextmanager
@contextmanager
def nested(*managers):
"""Combine multiple context managers into a single nested context manager.
This function has been deprecated in favour of the multiple manager form
of the with statement.
The one advantage of this function over the multiple manager form of the
with statement is that argument unpacking allows it to be
used with a variable number of context managers as follows::
with nested(*managers):
do_something()
"""
exits = []
vars = []
exc = (None, None, None)
try:
for mgr in managers:
exit = mgr.__exit__
enter = mgr.__enter__
vars.append(enter())
exits.append(exit)
yield vars
except:
exc = sys.exc_info()
finally:
while exits:
exit = exits.pop()
try:
if exit(*exc):
exc = (None, None, None)
except:
exc = sys.exc_info()
if exc != (None, None, None):
# Don't rely on sys.exc_info() still containing
# the right information. Another exception may
# have been raised and caught by an exit method
raise exc[0], exc[1], exc[2]