##// 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:

r5390:c82649ea
r10962:f96aac3a
Show More
codeutil.py
42 lines | 1.6 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""Utilities to enable code objects to be pickled.
Any process that import this module will be able to pickle code objects. This
includes the func_code attribute of any function. Once unpickled, new
functions can be built using new.function(code, globals()). Eventually
we need to automate all of this so that functions themselves can be pickled.
Reference: A. Tremols, P Cogolo, "Python Cookbook," p 302-305
"""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008-2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import sys
import types, copy_reg
def code_ctor(*args):
return types.CodeType(*args)
def reduce_code(co):
if co.co_freevars or co.co_cellvars:
raise ValueError("Sorry, cannot pickle code objects with closures")
args = [co.co_argcount, co.co_nlocals, co.co_stacksize,
co.co_flags, co.co_code, co.co_consts, co.co_names,
co.co_varnames, co.co_filename, co.co_name, co.co_firstlineno,
co.co_lnotab]
if sys.version_info[0] >= 3:
args.insert(1, co.co_kwonlyargcount)
return code_ctor, tuple(args)
copy_reg.pickle(types.CodeType, reduce_code)