##// END OF EJS Templates
Kirill Smelkov patch: try to use 'cProfile' instead of the slower pure python 'profile' module
vivainio -
Show More
@@ -1,3067 +1,3072 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Magic functions for InteractiveShell.
2 """Magic functions for InteractiveShell.
3
3
4 $Id: Magic.py 1922 2006-11-21 20:56:48Z vivainio $"""
4 $Id: Magic.py 1927 2006-11-24 15:37:21Z vivainio $"""
5
5
6 #*****************************************************************************
6 #*****************************************************************************
7 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
7 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 #
9 #
10 # Distributed under the terms of the BSD License. The full license is in
10 # Distributed under the terms of the BSD License. The full license is in
11 # the file COPYING, distributed as part of this software.
11 # the file COPYING, distributed as part of this software.
12 #*****************************************************************************
12 #*****************************************************************************
13
13
14 #****************************************************************************
14 #****************************************************************************
15 # Modules and globals
15 # Modules and globals
16
16
17 from IPython import Release
17 from IPython import Release
18 __author__ = '%s <%s>\n%s <%s>' % \
18 __author__ = '%s <%s>\n%s <%s>' % \
19 ( Release.authors['Janko'] + Release.authors['Fernando'] )
19 ( Release.authors['Janko'] + Release.authors['Fernando'] )
20 __license__ = Release.license
20 __license__ = Release.license
21
21
22 # Python standard modules
22 # Python standard modules
23 import __builtin__
23 import __builtin__
24 import bdb
24 import bdb
25 import inspect
25 import inspect
26 import os
26 import os
27 import pdb
27 import pdb
28 import pydoc
28 import pydoc
29 import sys
29 import sys
30 import re
30 import re
31 import tempfile
31 import tempfile
32 import time
32 import time
33 import cPickle as pickle
33 import cPickle as pickle
34 import textwrap
34 import textwrap
35 from cStringIO import StringIO
35 from cStringIO import StringIO
36 from getopt import getopt,GetoptError
36 from getopt import getopt,GetoptError
37 from pprint import pprint, pformat
37 from pprint import pprint, pformat
38
38
39 # profile isn't bundled by default in Debian for license reasons
39 # cProfile was added in Python2.5
40 try:
40 try:
41 import profile,pstats
41 import cProfile as profile
42 import pstats
42 except ImportError:
43 except ImportError:
43 profile = pstats = None
44 # profile isn't bundled by default in Debian for license reasons
45 try:
46 import profile,pstats
47 except ImportError:
48 profile = pstats = None
44
49
45 # Homebrewed
50 # Homebrewed
46 import IPython
51 import IPython
47 from IPython import Debugger, OInspect, wildcard
52 from IPython import Debugger, OInspect, wildcard
48 from IPython.FakeModule import FakeModule
53 from IPython.FakeModule import FakeModule
49 from IPython.Itpl import Itpl, itpl, printpl,itplns
54 from IPython.Itpl import Itpl, itpl, printpl,itplns
50 from IPython.PyColorize import Parser
55 from IPython.PyColorize import Parser
51 from IPython.ipstruct import Struct
56 from IPython.ipstruct import Struct
52 from IPython.macro import Macro
57 from IPython.macro import Macro
53 from IPython.genutils import *
58 from IPython.genutils import *
54 from IPython import platutils
59 from IPython import platutils
55
60
56 #***************************************************************************
61 #***************************************************************************
57 # Utility functions
62 # Utility functions
58 def on_off(tag):
63 def on_off(tag):
59 """Return an ON/OFF string for a 1/0 input. Simple utility function."""
64 """Return an ON/OFF string for a 1/0 input. Simple utility function."""
60 return ['OFF','ON'][tag]
65 return ['OFF','ON'][tag]
61
66
62 class Bunch: pass
67 class Bunch: pass
63
68
64 #***************************************************************************
69 #***************************************************************************
65 # Main class implementing Magic functionality
70 # Main class implementing Magic functionality
66 class Magic:
71 class Magic:
67 """Magic functions for InteractiveShell.
72 """Magic functions for InteractiveShell.
68
73
69 Shell functions which can be reached as %function_name. All magic
74 Shell functions which can be reached as %function_name. All magic
70 functions should accept a string, which they can parse for their own
75 functions should accept a string, which they can parse for their own
71 needs. This can make some functions easier to type, eg `%cd ../`
76 needs. This can make some functions easier to type, eg `%cd ../`
72 vs. `%cd("../")`
77 vs. `%cd("../")`
73
78
74 ALL definitions MUST begin with the prefix magic_. The user won't need it
79 ALL definitions MUST begin with the prefix magic_. The user won't need it
75 at the command line, but it is is needed in the definition. """
80 at the command line, but it is is needed in the definition. """
76
81
77 # class globals
82 # class globals
78 auto_status = ['Automagic is OFF, % prefix IS needed for magic functions.',
83 auto_status = ['Automagic is OFF, % prefix IS needed for magic functions.',
79 'Automagic is ON, % prefix NOT needed for magic functions.']
84 'Automagic is ON, % prefix NOT needed for magic functions.']
80
85
81 #......................................................................
86 #......................................................................
82 # some utility functions
87 # some utility functions
83
88
84 def __init__(self,shell):
89 def __init__(self,shell):
85
90
86 self.options_table = {}
91 self.options_table = {}
87 if profile is None:
92 if profile is None:
88 self.magic_prun = self.profile_missing_notice
93 self.magic_prun = self.profile_missing_notice
89 self.shell = shell
94 self.shell = shell
90
95
91 # namespace for holding state we may need
96 # namespace for holding state we may need
92 self._magic_state = Bunch()
97 self._magic_state = Bunch()
93
98
94 def profile_missing_notice(self, *args, **kwargs):
99 def profile_missing_notice(self, *args, **kwargs):
95 error("""\
100 error("""\
96 The profile module could not be found. If you are a Debian user,
101 The profile module could not be found. If you are a Debian user,
97 it has been removed from the standard Debian package because of its non-free
102 it has been removed from the standard Debian package because of its non-free
98 license. To use profiling, please install"python2.3-profiler" from non-free.""")
103 license. To use profiling, please install"python2.3-profiler" from non-free.""")
99
104
100 def default_option(self,fn,optstr):
105 def default_option(self,fn,optstr):
101 """Make an entry in the options_table for fn, with value optstr"""
106 """Make an entry in the options_table for fn, with value optstr"""
102
107
103 if fn not in self.lsmagic():
108 if fn not in self.lsmagic():
104 error("%s is not a magic function" % fn)
109 error("%s is not a magic function" % fn)
105 self.options_table[fn] = optstr
110 self.options_table[fn] = optstr
106
111
107 def lsmagic(self):
112 def lsmagic(self):
108 """Return a list of currently available magic functions.
113 """Return a list of currently available magic functions.
109
114
110 Gives a list of the bare names after mangling (['ls','cd', ...], not
115 Gives a list of the bare names after mangling (['ls','cd', ...], not
111 ['magic_ls','magic_cd',...]"""
116 ['magic_ls','magic_cd',...]"""
112
117
113 # FIXME. This needs a cleanup, in the way the magics list is built.
118 # FIXME. This needs a cleanup, in the way the magics list is built.
114
119
115 # magics in class definition
120 # magics in class definition
116 class_magic = lambda fn: fn.startswith('magic_') and \
121 class_magic = lambda fn: fn.startswith('magic_') and \
117 callable(Magic.__dict__[fn])
122 callable(Magic.__dict__[fn])
118 # in instance namespace (run-time user additions)
123 # in instance namespace (run-time user additions)
119 inst_magic = lambda fn: fn.startswith('magic_') and \
124 inst_magic = lambda fn: fn.startswith('magic_') and \
120 callable(self.__dict__[fn])
125 callable(self.__dict__[fn])
121 # and bound magics by user (so they can access self):
126 # and bound magics by user (so they can access self):
122 inst_bound_magic = lambda fn: fn.startswith('magic_') and \
127 inst_bound_magic = lambda fn: fn.startswith('magic_') and \
123 callable(self.__class__.__dict__[fn])
128 callable(self.__class__.__dict__[fn])
124 magics = filter(class_magic,Magic.__dict__.keys()) + \
129 magics = filter(class_magic,Magic.__dict__.keys()) + \
125 filter(inst_magic,self.__dict__.keys()) + \
130 filter(inst_magic,self.__dict__.keys()) + \
126 filter(inst_bound_magic,self.__class__.__dict__.keys())
131 filter(inst_bound_magic,self.__class__.__dict__.keys())
127 out = []
132 out = []
128 for fn in magics:
133 for fn in magics:
129 out.append(fn.replace('magic_','',1))
134 out.append(fn.replace('magic_','',1))
130 out.sort()
135 out.sort()
131 return out
136 return out
132
137
133 def extract_input_slices(self,slices,raw=False):
138 def extract_input_slices(self,slices,raw=False):
134 """Return as a string a set of input history slices.
139 """Return as a string a set of input history slices.
135
140
136 Inputs:
141 Inputs:
137
142
138 - slices: the set of slices is given as a list of strings (like
143 - slices: the set of slices is given as a list of strings (like
139 ['1','4:8','9'], since this function is for use by magic functions
144 ['1','4:8','9'], since this function is for use by magic functions
140 which get their arguments as strings.
145 which get their arguments as strings.
141
146
142 Optional inputs:
147 Optional inputs:
143
148
144 - raw(False): by default, the processed input is used. If this is
149 - raw(False): by default, the processed input is used. If this is
145 true, the raw input history is used instead.
150 true, the raw input history is used instead.
146
151
147 Note that slices can be called with two notations:
152 Note that slices can be called with two notations:
148
153
149 N:M -> standard python form, means including items N...(M-1).
154 N:M -> standard python form, means including items N...(M-1).
150
155
151 N-M -> include items N..M (closed endpoint)."""
156 N-M -> include items N..M (closed endpoint)."""
152
157
153 if raw:
158 if raw:
154 hist = self.shell.input_hist_raw
159 hist = self.shell.input_hist_raw
155 else:
160 else:
156 hist = self.shell.input_hist
161 hist = self.shell.input_hist
157
162
158 cmds = []
163 cmds = []
159 for chunk in slices:
164 for chunk in slices:
160 if ':' in chunk:
165 if ':' in chunk:
161 ini,fin = map(int,chunk.split(':'))
166 ini,fin = map(int,chunk.split(':'))
162 elif '-' in chunk:
167 elif '-' in chunk:
163 ini,fin = map(int,chunk.split('-'))
168 ini,fin = map(int,chunk.split('-'))
164 fin += 1
169 fin += 1
165 else:
170 else:
166 ini = int(chunk)
171 ini = int(chunk)
167 fin = ini+1
172 fin = ini+1
168 cmds.append(hist[ini:fin])
173 cmds.append(hist[ini:fin])
169 return cmds
174 return cmds
170
175
171 def _ofind(self, oname, namespaces=None):
176 def _ofind(self, oname, namespaces=None):
172 """Find an object in the available namespaces.
177 """Find an object in the available namespaces.
173
178
174 self._ofind(oname) -> dict with keys: found,obj,ospace,ismagic
179 self._ofind(oname) -> dict with keys: found,obj,ospace,ismagic
175
180
176 Has special code to detect magic functions.
181 Has special code to detect magic functions.
177 """
182 """
178
183
179 oname = oname.strip()
184 oname = oname.strip()
180
185
181 alias_ns = None
186 alias_ns = None
182 if namespaces is None:
187 if namespaces is None:
183 # Namespaces to search in:
188 # Namespaces to search in:
184 # Put them in a list. The order is important so that we
189 # Put them in a list. The order is important so that we
185 # find things in the same order that Python finds them.
190 # find things in the same order that Python finds them.
186 namespaces = [ ('Interactive', self.shell.user_ns),
191 namespaces = [ ('Interactive', self.shell.user_ns),
187 ('IPython internal', self.shell.internal_ns),
192 ('IPython internal', self.shell.internal_ns),
188 ('Python builtin', __builtin__.__dict__),
193 ('Python builtin', __builtin__.__dict__),
189 ('Alias', self.shell.alias_table),
194 ('Alias', self.shell.alias_table),
190 ]
195 ]
191 alias_ns = self.shell.alias_table
196 alias_ns = self.shell.alias_table
192
197
193 # initialize results to 'null'
198 # initialize results to 'null'
194 found = 0; obj = None; ospace = None; ds = None;
199 found = 0; obj = None; ospace = None; ds = None;
195 ismagic = 0; isalias = 0; parent = None
200 ismagic = 0; isalias = 0; parent = None
196
201
197 # Look for the given name by splitting it in parts. If the head is
202 # Look for the given name by splitting it in parts. If the head is
198 # found, then we look for all the remaining parts as members, and only
203 # found, then we look for all the remaining parts as members, and only
199 # declare success if we can find them all.
204 # declare success if we can find them all.
200 oname_parts = oname.split('.')
205 oname_parts = oname.split('.')
201 oname_head, oname_rest = oname_parts[0],oname_parts[1:]
206 oname_head, oname_rest = oname_parts[0],oname_parts[1:]
202 for nsname,ns in namespaces:
207 for nsname,ns in namespaces:
203 try:
208 try:
204 obj = ns[oname_head]
209 obj = ns[oname_head]
205 except KeyError:
210 except KeyError:
206 continue
211 continue
207 else:
212 else:
208 for part in oname_rest:
213 for part in oname_rest:
209 try:
214 try:
210 parent = obj
215 parent = obj
211 obj = getattr(obj,part)
216 obj = getattr(obj,part)
212 except:
217 except:
213 # Blanket except b/c some badly implemented objects
218 # Blanket except b/c some badly implemented objects
214 # allow __getattr__ to raise exceptions other than
219 # allow __getattr__ to raise exceptions other than
215 # AttributeError, which then crashes IPython.
220 # AttributeError, which then crashes IPython.
216 break
221 break
217 else:
222 else:
218 # If we finish the for loop (no break), we got all members
223 # If we finish the for loop (no break), we got all members
219 found = 1
224 found = 1
220 ospace = nsname
225 ospace = nsname
221 if ns == alias_ns:
226 if ns == alias_ns:
222 isalias = 1
227 isalias = 1
223 break # namespace loop
228 break # namespace loop
224
229
225 # Try to see if it's magic
230 # Try to see if it's magic
226 if not found:
231 if not found:
227 if oname.startswith(self.shell.ESC_MAGIC):
232 if oname.startswith(self.shell.ESC_MAGIC):
228 oname = oname[1:]
233 oname = oname[1:]
229 obj = getattr(self,'magic_'+oname,None)
234 obj = getattr(self,'magic_'+oname,None)
230 if obj is not None:
235 if obj is not None:
231 found = 1
236 found = 1
232 ospace = 'IPython internal'
237 ospace = 'IPython internal'
233 ismagic = 1
238 ismagic = 1
234
239
235 # Last try: special-case some literals like '', [], {}, etc:
240 # Last try: special-case some literals like '', [], {}, etc:
236 if not found and oname_head in ["''",'""','[]','{}','()']:
241 if not found and oname_head in ["''",'""','[]','{}','()']:
237 obj = eval(oname_head)
242 obj = eval(oname_head)
238 found = 1
243 found = 1
239 ospace = 'Interactive'
244 ospace = 'Interactive'
240
245
241 return {'found':found, 'obj':obj, 'namespace':ospace,
246 return {'found':found, 'obj':obj, 'namespace':ospace,
242 'ismagic':ismagic, 'isalias':isalias, 'parent':parent}
247 'ismagic':ismagic, 'isalias':isalias, 'parent':parent}
243
248
244 def arg_err(self,func):
249 def arg_err(self,func):
245 """Print docstring if incorrect arguments were passed"""
250 """Print docstring if incorrect arguments were passed"""
246 print 'Error in arguments:'
251 print 'Error in arguments:'
247 print OInspect.getdoc(func)
252 print OInspect.getdoc(func)
248
253
249 def format_latex(self,strng):
254 def format_latex(self,strng):
250 """Format a string for latex inclusion."""
255 """Format a string for latex inclusion."""
251
256
252 # Characters that need to be escaped for latex:
257 # Characters that need to be escaped for latex:
253 escape_re = re.compile(r'(%|_|\$|#|&)',re.MULTILINE)
258 escape_re = re.compile(r'(%|_|\$|#|&)',re.MULTILINE)
254 # Magic command names as headers:
259 # Magic command names as headers:
255 cmd_name_re = re.compile(r'^(%s.*?):' % self.shell.ESC_MAGIC,
260 cmd_name_re = re.compile(r'^(%s.*?):' % self.shell.ESC_MAGIC,
256 re.MULTILINE)
261 re.MULTILINE)
257 # Magic commands
262 # Magic commands
258 cmd_re = re.compile(r'(?P<cmd>%s.+?\b)(?!\}\}:)' % self.shell.ESC_MAGIC,
263 cmd_re = re.compile(r'(?P<cmd>%s.+?\b)(?!\}\}:)' % self.shell.ESC_MAGIC,
259 re.MULTILINE)
264 re.MULTILINE)
260 # Paragraph continue
265 # Paragraph continue
261 par_re = re.compile(r'\\$',re.MULTILINE)
266 par_re = re.compile(r'\\$',re.MULTILINE)
262
267
263 # The "\n" symbol
268 # The "\n" symbol
264 newline_re = re.compile(r'\\n')
269 newline_re = re.compile(r'\\n')
265
270
266 # Now build the string for output:
271 # Now build the string for output:
267 #strng = cmd_name_re.sub(r'\n\\texttt{\\textsl{\\large \1}}:',strng)
272 #strng = cmd_name_re.sub(r'\n\\texttt{\\textsl{\\large \1}}:',strng)
268 strng = cmd_name_re.sub(r'\n\\bigskip\n\\texttt{\\textbf{ \1}}:',
273 strng = cmd_name_re.sub(r'\n\\bigskip\n\\texttt{\\textbf{ \1}}:',
269 strng)
274 strng)
270 strng = cmd_re.sub(r'\\texttt{\g<cmd>}',strng)
275 strng = cmd_re.sub(r'\\texttt{\g<cmd>}',strng)
271 strng = par_re.sub(r'\\\\',strng)
276 strng = par_re.sub(r'\\\\',strng)
272 strng = escape_re.sub(r'\\\1',strng)
277 strng = escape_re.sub(r'\\\1',strng)
273 strng = newline_re.sub(r'\\textbackslash{}n',strng)
278 strng = newline_re.sub(r'\\textbackslash{}n',strng)
274 return strng
279 return strng
275
280
276 def format_screen(self,strng):
281 def format_screen(self,strng):
277 """Format a string for screen printing.
282 """Format a string for screen printing.
278
283
279 This removes some latex-type format codes."""
284 This removes some latex-type format codes."""
280 # Paragraph continue
285 # Paragraph continue
281 par_re = re.compile(r'\\$',re.MULTILINE)
286 par_re = re.compile(r'\\$',re.MULTILINE)
282 strng = par_re.sub('',strng)
287 strng = par_re.sub('',strng)
283 return strng
288 return strng
284
289
285 def parse_options(self,arg_str,opt_str,*long_opts,**kw):
290 def parse_options(self,arg_str,opt_str,*long_opts,**kw):
286 """Parse options passed to an argument string.
291 """Parse options passed to an argument string.
287
292
288 The interface is similar to that of getopt(), but it returns back a
293 The interface is similar to that of getopt(), but it returns back a
289 Struct with the options as keys and the stripped argument string still
294 Struct with the options as keys and the stripped argument string still
290 as a string.
295 as a string.
291
296
292 arg_str is quoted as a true sys.argv vector by using shlex.split.
297 arg_str is quoted as a true sys.argv vector by using shlex.split.
293 This allows us to easily expand variables, glob files, quote
298 This allows us to easily expand variables, glob files, quote
294 arguments, etc.
299 arguments, etc.
295
300
296 Options:
301 Options:
297 -mode: default 'string'. If given as 'list', the argument string is
302 -mode: default 'string'. If given as 'list', the argument string is
298 returned as a list (split on whitespace) instead of a string.
303 returned as a list (split on whitespace) instead of a string.
299
304
300 -list_all: put all option values in lists. Normally only options
305 -list_all: put all option values in lists. Normally only options
301 appearing more than once are put in a list.
306 appearing more than once are put in a list.
302
307
303 -posix (True): whether to split the input line in POSIX mode or not,
308 -posix (True): whether to split the input line in POSIX mode or not,
304 as per the conventions outlined in the shlex module from the
309 as per the conventions outlined in the shlex module from the
305 standard library."""
310 standard library."""
306
311
307 # inject default options at the beginning of the input line
312 # inject default options at the beginning of the input line
308 caller = sys._getframe(1).f_code.co_name.replace('magic_','')
313 caller = sys._getframe(1).f_code.co_name.replace('magic_','')
309 arg_str = '%s %s' % (self.options_table.get(caller,''),arg_str)
314 arg_str = '%s %s' % (self.options_table.get(caller,''),arg_str)
310
315
311 mode = kw.get('mode','string')
316 mode = kw.get('mode','string')
312 if mode not in ['string','list']:
317 if mode not in ['string','list']:
313 raise ValueError,'incorrect mode given: %s' % mode
318 raise ValueError,'incorrect mode given: %s' % mode
314 # Get options
319 # Get options
315 list_all = kw.get('list_all',0)
320 list_all = kw.get('list_all',0)
316 posix = kw.get('posix',True)
321 posix = kw.get('posix',True)
317
322
318 # Check if we have more than one argument to warrant extra processing:
323 # Check if we have more than one argument to warrant extra processing:
319 odict = {} # Dictionary with options
324 odict = {} # Dictionary with options
320 args = arg_str.split()
325 args = arg_str.split()
321 if len(args) >= 1:
326 if len(args) >= 1:
322 # If the list of inputs only has 0 or 1 thing in it, there's no
327 # If the list of inputs only has 0 or 1 thing in it, there's no
323 # need to look for options
328 # need to look for options
324 argv = arg_split(arg_str,posix)
329 argv = arg_split(arg_str,posix)
325 # Do regular option processing
330 # Do regular option processing
326 try:
331 try:
327 opts,args = getopt(argv,opt_str,*long_opts)
332 opts,args = getopt(argv,opt_str,*long_opts)
328 except GetoptError,e:
333 except GetoptError,e:
329 raise GetoptError('%s ( allowed: "%s" %s)' % (e.msg,opt_str,
334 raise GetoptError('%s ( allowed: "%s" %s)' % (e.msg,opt_str,
330 " ".join(long_opts)))
335 " ".join(long_opts)))
331 for o,a in opts:
336 for o,a in opts:
332 if o.startswith('--'):
337 if o.startswith('--'):
333 o = o[2:]
338 o = o[2:]
334 else:
339 else:
335 o = o[1:]
340 o = o[1:]
336 try:
341 try:
337 odict[o].append(a)
342 odict[o].append(a)
338 except AttributeError:
343 except AttributeError:
339 odict[o] = [odict[o],a]
344 odict[o] = [odict[o],a]
340 except KeyError:
345 except KeyError:
341 if list_all:
346 if list_all:
342 odict[o] = [a]
347 odict[o] = [a]
343 else:
348 else:
344 odict[o] = a
349 odict[o] = a
345
350
346 # Prepare opts,args for return
351 # Prepare opts,args for return
347 opts = Struct(odict)
352 opts = Struct(odict)
348 if mode == 'string':
353 if mode == 'string':
349 args = ' '.join(args)
354 args = ' '.join(args)
350
355
351 return opts,args
356 return opts,args
352
357
353 #......................................................................
358 #......................................................................
354 # And now the actual magic functions
359 # And now the actual magic functions
355
360
356 # Functions for IPython shell work (vars,funcs, config, etc)
361 # Functions for IPython shell work (vars,funcs, config, etc)
357 def magic_lsmagic(self, parameter_s = ''):
362 def magic_lsmagic(self, parameter_s = ''):
358 """List currently available magic functions."""
363 """List currently available magic functions."""
359 mesc = self.shell.ESC_MAGIC
364 mesc = self.shell.ESC_MAGIC
360 print 'Available magic functions:\n'+mesc+\
365 print 'Available magic functions:\n'+mesc+\
361 (' '+mesc).join(self.lsmagic())
366 (' '+mesc).join(self.lsmagic())
362 print '\n' + Magic.auto_status[self.shell.rc.automagic]
367 print '\n' + Magic.auto_status[self.shell.rc.automagic]
363 return None
368 return None
364
369
365 def magic_magic(self, parameter_s = ''):
370 def magic_magic(self, parameter_s = ''):
366 """Print information about the magic function system."""
371 """Print information about the magic function system."""
367
372
368 mode = ''
373 mode = ''
369 try:
374 try:
370 if parameter_s.split()[0] == '-latex':
375 if parameter_s.split()[0] == '-latex':
371 mode = 'latex'
376 mode = 'latex'
372 if parameter_s.split()[0] == '-brief':
377 if parameter_s.split()[0] == '-brief':
373 mode = 'brief'
378 mode = 'brief'
374 except:
379 except:
375 pass
380 pass
376
381
377 magic_docs = []
382 magic_docs = []
378 for fname in self.lsmagic():
383 for fname in self.lsmagic():
379 mname = 'magic_' + fname
384 mname = 'magic_' + fname
380 for space in (Magic,self,self.__class__):
385 for space in (Magic,self,self.__class__):
381 try:
386 try:
382 fn = space.__dict__[mname]
387 fn = space.__dict__[mname]
383 except KeyError:
388 except KeyError:
384 pass
389 pass
385 else:
390 else:
386 break
391 break
387 if mode == 'brief':
392 if mode == 'brief':
388 # only first line
393 # only first line
389 fndoc = fn.__doc__.split('\n',1)[0]
394 fndoc = fn.__doc__.split('\n',1)[0]
390 else:
395 else:
391 fndoc = fn.__doc__
396 fndoc = fn.__doc__
392
397
393 magic_docs.append('%s%s:\n\t%s\n' %(self.shell.ESC_MAGIC,
398 magic_docs.append('%s%s:\n\t%s\n' %(self.shell.ESC_MAGIC,
394 fname,fndoc))
399 fname,fndoc))
395 magic_docs = ''.join(magic_docs)
400 magic_docs = ''.join(magic_docs)
396
401
397 if mode == 'latex':
402 if mode == 'latex':
398 print self.format_latex(magic_docs)
403 print self.format_latex(magic_docs)
399 return
404 return
400 else:
405 else:
401 magic_docs = self.format_screen(magic_docs)
406 magic_docs = self.format_screen(magic_docs)
402 if mode == 'brief':
407 if mode == 'brief':
403 return magic_docs
408 return magic_docs
404
409
405 outmsg = """
410 outmsg = """
406 IPython's 'magic' functions
411 IPython's 'magic' functions
407 ===========================
412 ===========================
408
413
409 The magic function system provides a series of functions which allow you to
414 The magic function system provides a series of functions which allow you to
410 control the behavior of IPython itself, plus a lot of system-type
415 control the behavior of IPython itself, plus a lot of system-type
411 features. All these functions are prefixed with a % character, but parameters
416 features. All these functions are prefixed with a % character, but parameters
412 are given without parentheses or quotes.
417 are given without parentheses or quotes.
413
418
414 NOTE: If you have 'automagic' enabled (via the command line option or with the
419 NOTE: If you have 'automagic' enabled (via the command line option or with the
415 %automagic function), you don't need to type in the % explicitly. By default,
420 %automagic function), you don't need to type in the % explicitly. By default,
416 IPython ships with automagic on, so you should only rarely need the % escape.
421 IPython ships with automagic on, so you should only rarely need the % escape.
417
422
418 Example: typing '%cd mydir' (without the quotes) changes you working directory
423 Example: typing '%cd mydir' (without the quotes) changes you working directory
419 to 'mydir', if it exists.
424 to 'mydir', if it exists.
420
425
421 You can define your own magic functions to extend the system. See the supplied
426 You can define your own magic functions to extend the system. See the supplied
422 ipythonrc and example-magic.py files for details (in your ipython
427 ipythonrc and example-magic.py files for details (in your ipython
423 configuration directory, typically $HOME/.ipython/).
428 configuration directory, typically $HOME/.ipython/).
424
429
425 You can also define your own aliased names for magic functions. In your
430 You can also define your own aliased names for magic functions. In your
426 ipythonrc file, placing a line like:
431 ipythonrc file, placing a line like:
427
432
428 execute __IPYTHON__.magic_pf = __IPYTHON__.magic_profile
433 execute __IPYTHON__.magic_pf = __IPYTHON__.magic_profile
429
434
430 will define %pf as a new name for %profile.
435 will define %pf as a new name for %profile.
431
436
432 You can also call magics in code using the ipmagic() function, which IPython
437 You can also call magics in code using the ipmagic() function, which IPython
433 automatically adds to the builtin namespace. Type 'ipmagic?' for details.
438 automatically adds to the builtin namespace. Type 'ipmagic?' for details.
434
439
435 For a list of the available magic functions, use %lsmagic. For a description
440 For a list of the available magic functions, use %lsmagic. For a description
436 of any of them, type %magic_name?, e.g. '%cd?'.
441 of any of them, type %magic_name?, e.g. '%cd?'.
437
442
438 Currently the magic system has the following functions:\n"""
443 Currently the magic system has the following functions:\n"""
439
444
440 mesc = self.shell.ESC_MAGIC
445 mesc = self.shell.ESC_MAGIC
441 outmsg = ("%s\n%s\n\nSummary of magic functions (from %slsmagic):"
446 outmsg = ("%s\n%s\n\nSummary of magic functions (from %slsmagic):"
442 "\n\n%s%s\n\n%s" % (outmsg,
447 "\n\n%s%s\n\n%s" % (outmsg,
443 magic_docs,mesc,mesc,
448 magic_docs,mesc,mesc,
444 (' '+mesc).join(self.lsmagic()),
449 (' '+mesc).join(self.lsmagic()),
445 Magic.auto_status[self.shell.rc.automagic] ) )
450 Magic.auto_status[self.shell.rc.automagic] ) )
446
451
447 page(outmsg,screen_lines=self.shell.rc.screen_length)
452 page(outmsg,screen_lines=self.shell.rc.screen_length)
448
453
449 def magic_automagic(self, parameter_s = ''):
454 def magic_automagic(self, parameter_s = ''):
450 """Make magic functions callable without having to type the initial %.
455 """Make magic functions callable without having to type the initial %.
451
456
452 Toggles on/off (when off, you must call it as %automagic, of
457 Toggles on/off (when off, you must call it as %automagic, of
453 course). Note that magic functions have lowest priority, so if there's
458 course). Note that magic functions have lowest priority, so if there's
454 a variable whose name collides with that of a magic fn, automagic
459 a variable whose name collides with that of a magic fn, automagic
455 won't work for that function (you get the variable instead). However,
460 won't work for that function (you get the variable instead). However,
456 if you delete the variable (del var), the previously shadowed magic
461 if you delete the variable (del var), the previously shadowed magic
457 function becomes visible to automagic again."""
462 function becomes visible to automagic again."""
458
463
459 rc = self.shell.rc
464 rc = self.shell.rc
460 rc.automagic = not rc.automagic
465 rc.automagic = not rc.automagic
461 print '\n' + Magic.auto_status[rc.automagic]
466 print '\n' + Magic.auto_status[rc.automagic]
462
467
463 def magic_autocall(self, parameter_s = ''):
468 def magic_autocall(self, parameter_s = ''):
464 """Make functions callable without having to type parentheses.
469 """Make functions callable without having to type parentheses.
465
470
466 Usage:
471 Usage:
467
472
468 %autocall [mode]
473 %autocall [mode]
469
474
470 The mode can be one of: 0->Off, 1->Smart, 2->Full. If not given, the
475 The mode can be one of: 0->Off, 1->Smart, 2->Full. If not given, the
471 value is toggled on and off (remembering the previous state)."""
476 value is toggled on and off (remembering the previous state)."""
472
477
473 rc = self.shell.rc
478 rc = self.shell.rc
474
479
475 if parameter_s:
480 if parameter_s:
476 arg = int(parameter_s)
481 arg = int(parameter_s)
477 else:
482 else:
478 arg = 'toggle'
483 arg = 'toggle'
479
484
480 if not arg in (0,1,2,'toggle'):
485 if not arg in (0,1,2,'toggle'):
481 error('Valid modes: (0->Off, 1->Smart, 2->Full')
486 error('Valid modes: (0->Off, 1->Smart, 2->Full')
482 return
487 return
483
488
484 if arg in (0,1,2):
489 if arg in (0,1,2):
485 rc.autocall = arg
490 rc.autocall = arg
486 else: # toggle
491 else: # toggle
487 if rc.autocall:
492 if rc.autocall:
488 self._magic_state.autocall_save = rc.autocall
493 self._magic_state.autocall_save = rc.autocall
489 rc.autocall = 0
494 rc.autocall = 0
490 else:
495 else:
491 try:
496 try:
492 rc.autocall = self._magic_state.autocall_save
497 rc.autocall = self._magic_state.autocall_save
493 except AttributeError:
498 except AttributeError:
494 rc.autocall = self._magic_state.autocall_save = 1
499 rc.autocall = self._magic_state.autocall_save = 1
495
500
496 print "Automatic calling is:",['OFF','Smart','Full'][rc.autocall]
501 print "Automatic calling is:",['OFF','Smart','Full'][rc.autocall]
497
502
498 def magic_autoindent(self, parameter_s = ''):
503 def magic_autoindent(self, parameter_s = ''):
499 """Toggle autoindent on/off (if available)."""
504 """Toggle autoindent on/off (if available)."""
500
505
501 self.shell.set_autoindent()
506 self.shell.set_autoindent()
502 print "Automatic indentation is:",['OFF','ON'][self.shell.autoindent]
507 print "Automatic indentation is:",['OFF','ON'][self.shell.autoindent]
503
508
504 def magic_system_verbose(self, parameter_s = ''):
509 def magic_system_verbose(self, parameter_s = ''):
505 """Set verbose printing of system calls.
510 """Set verbose printing of system calls.
506
511
507 If called without an argument, act as a toggle"""
512 If called without an argument, act as a toggle"""
508
513
509 if parameter_s:
514 if parameter_s:
510 val = bool(eval(parameter_s))
515 val = bool(eval(parameter_s))
511 else:
516 else:
512 val = None
517 val = None
513
518
514 self.shell.rc_set_toggle('system_verbose',val)
519 self.shell.rc_set_toggle('system_verbose',val)
515 print "System verbose printing is:",\
520 print "System verbose printing is:",\
516 ['OFF','ON'][self.shell.rc.system_verbose]
521 ['OFF','ON'][self.shell.rc.system_verbose]
517
522
518 def magic_history(self, parameter_s = ''):
523 def magic_history(self, parameter_s = ''):
519 """Print input history (_i<n> variables), with most recent last.
524 """Print input history (_i<n> variables), with most recent last.
520
525
521 %history -> print at most 40 inputs (some may be multi-line)\\
526 %history -> print at most 40 inputs (some may be multi-line)\\
522 %history n -> print at most n inputs\\
527 %history n -> print at most n inputs\\
523 %history n1 n2 -> print inputs between n1 and n2 (n2 not included)\\
528 %history n1 n2 -> print inputs between n1 and n2 (n2 not included)\\
524
529
525 Each input's number <n> is shown, and is accessible as the
530 Each input's number <n> is shown, and is accessible as the
526 automatically generated variable _i<n>. Multi-line statements are
531 automatically generated variable _i<n>. Multi-line statements are
527 printed starting at a new line for easy copy/paste.
532 printed starting at a new line for easy copy/paste.
528
533
529
534
530 Options:
535 Options:
531
536
532 -n: do NOT print line numbers. This is useful if you want to get a
537 -n: do NOT print line numbers. This is useful if you want to get a
533 printout of many lines which can be directly pasted into a text
538 printout of many lines which can be directly pasted into a text
534 editor.
539 editor.
535
540
536 This feature is only available if numbered prompts are in use.
541 This feature is only available if numbered prompts are in use.
537
542
538 -r: print the 'raw' history. IPython filters your input and
543 -r: print the 'raw' history. IPython filters your input and
539 converts it all into valid Python source before executing it (things
544 converts it all into valid Python source before executing it (things
540 like magics or aliases are turned into function calls, for
545 like magics or aliases are turned into function calls, for
541 example). With this option, you'll see the unfiltered history
546 example). With this option, you'll see the unfiltered history
542 instead of the filtered version: '%cd /' will be seen as '%cd /'
547 instead of the filtered version: '%cd /' will be seen as '%cd /'
543 instead of '_ip.magic("%cd /")'.
548 instead of '_ip.magic("%cd /")'.
544 """
549 """
545
550
546 shell = self.shell
551 shell = self.shell
547 if not shell.outputcache.do_full_cache:
552 if not shell.outputcache.do_full_cache:
548 print 'This feature is only available if numbered prompts are in use.'
553 print 'This feature is only available if numbered prompts are in use.'
549 return
554 return
550 opts,args = self.parse_options(parameter_s,'nr',mode='list')
555 opts,args = self.parse_options(parameter_s,'nr',mode='list')
551
556
552 if opts.has_key('r'):
557 if opts.has_key('r'):
553 input_hist = shell.input_hist_raw
558 input_hist = shell.input_hist_raw
554 else:
559 else:
555 input_hist = shell.input_hist
560 input_hist = shell.input_hist
556
561
557 default_length = 40
562 default_length = 40
558 if len(args) == 0:
563 if len(args) == 0:
559 final = len(input_hist)
564 final = len(input_hist)
560 init = max(1,final-default_length)
565 init = max(1,final-default_length)
561 elif len(args) == 1:
566 elif len(args) == 1:
562 final = len(input_hist)
567 final = len(input_hist)
563 init = max(1,final-int(args[0]))
568 init = max(1,final-int(args[0]))
564 elif len(args) == 2:
569 elif len(args) == 2:
565 init,final = map(int,args)
570 init,final = map(int,args)
566 else:
571 else:
567 warn('%hist takes 0, 1 or 2 arguments separated by spaces.')
572 warn('%hist takes 0, 1 or 2 arguments separated by spaces.')
568 print self.magic_hist.__doc__
573 print self.magic_hist.__doc__
569 return
574 return
570 width = len(str(final))
575 width = len(str(final))
571 line_sep = ['','\n']
576 line_sep = ['','\n']
572 print_nums = not opts.has_key('n')
577 print_nums = not opts.has_key('n')
573 for in_num in range(init,final):
578 for in_num in range(init,final):
574 inline = input_hist[in_num]
579 inline = input_hist[in_num]
575 multiline = int(inline.count('\n') > 1)
580 multiline = int(inline.count('\n') > 1)
576 if print_nums:
581 if print_nums:
577 print '%s:%s' % (str(in_num).ljust(width),line_sep[multiline]),
582 print '%s:%s' % (str(in_num).ljust(width),line_sep[multiline]),
578 print inline,
583 print inline,
579
584
580 def magic_hist(self, parameter_s=''):
585 def magic_hist(self, parameter_s=''):
581 """Alternate name for %history."""
586 """Alternate name for %history."""
582 return self.magic_history(parameter_s)
587 return self.magic_history(parameter_s)
583
588
584 def magic_p(self, parameter_s=''):
589 def magic_p(self, parameter_s=''):
585 """Just a short alias for Python's 'print'."""
590 """Just a short alias for Python's 'print'."""
586 exec 'print ' + parameter_s in self.shell.user_ns
591 exec 'print ' + parameter_s in self.shell.user_ns
587
592
588 def magic_r(self, parameter_s=''):
593 def magic_r(self, parameter_s=''):
589 """Repeat previous input.
594 """Repeat previous input.
590
595
591 If given an argument, repeats the previous command which starts with
596 If given an argument, repeats the previous command which starts with
592 the same string, otherwise it just repeats the previous input.
597 the same string, otherwise it just repeats the previous input.
593
598
594 Shell escaped commands (with ! as first character) are not recognized
599 Shell escaped commands (with ! as first character) are not recognized
595 by this system, only pure python code and magic commands.
600 by this system, only pure python code and magic commands.
596 """
601 """
597
602
598 start = parameter_s.strip()
603 start = parameter_s.strip()
599 esc_magic = self.shell.ESC_MAGIC
604 esc_magic = self.shell.ESC_MAGIC
600 # Identify magic commands even if automagic is on (which means
605 # Identify magic commands even if automagic is on (which means
601 # the in-memory version is different from that typed by the user).
606 # the in-memory version is different from that typed by the user).
602 if self.shell.rc.automagic:
607 if self.shell.rc.automagic:
603 start_magic = esc_magic+start
608 start_magic = esc_magic+start
604 else:
609 else:
605 start_magic = start
610 start_magic = start
606 # Look through the input history in reverse
611 # Look through the input history in reverse
607 for n in range(len(self.shell.input_hist)-2,0,-1):
612 for n in range(len(self.shell.input_hist)-2,0,-1):
608 input = self.shell.input_hist[n]
613 input = self.shell.input_hist[n]
609 # skip plain 'r' lines so we don't recurse to infinity
614 # skip plain 'r' lines so we don't recurse to infinity
610 if input != '_ip.magic("r")\n' and \
615 if input != '_ip.magic("r")\n' and \
611 (input.startswith(start) or input.startswith(start_magic)):
616 (input.startswith(start) or input.startswith(start_magic)):
612 #print 'match',`input` # dbg
617 #print 'match',`input` # dbg
613 print 'Executing:',input,
618 print 'Executing:',input,
614 self.shell.runlines(input)
619 self.shell.runlines(input)
615 return
620 return
616 print 'No previous input matching `%s` found.' % start
621 print 'No previous input matching `%s` found.' % start
617
622
618 def magic_page(self, parameter_s=''):
623 def magic_page(self, parameter_s=''):
619 """Pretty print the object and display it through a pager.
624 """Pretty print the object and display it through a pager.
620
625
621 %page [options] OBJECT
626 %page [options] OBJECT
622
627
623 If no object is given, use _ (last output).
628 If no object is given, use _ (last output).
624
629
625 Options:
630 Options:
626
631
627 -r: page str(object), don't pretty-print it."""
632 -r: page str(object), don't pretty-print it."""
628
633
629 # After a function contributed by Olivier Aubert, slightly modified.
634 # After a function contributed by Olivier Aubert, slightly modified.
630
635
631 # Process options/args
636 # Process options/args
632 opts,args = self.parse_options(parameter_s,'r')
637 opts,args = self.parse_options(parameter_s,'r')
633 raw = 'r' in opts
638 raw = 'r' in opts
634
639
635 oname = args and args or '_'
640 oname = args and args or '_'
636 info = self._ofind(oname)
641 info = self._ofind(oname)
637 if info['found']:
642 if info['found']:
638 txt = (raw and str or pformat)( info['obj'] )
643 txt = (raw and str or pformat)( info['obj'] )
639 page(txt)
644 page(txt)
640 else:
645 else:
641 print 'Object `%s` not found' % oname
646 print 'Object `%s` not found' % oname
642
647
643 def magic_profile(self, parameter_s=''):
648 def magic_profile(self, parameter_s=''):
644 """Print your currently active IPyhton profile."""
649 """Print your currently active IPyhton profile."""
645 if self.shell.rc.profile:
650 if self.shell.rc.profile:
646 printpl('Current IPython profile: $self.shell.rc.profile.')
651 printpl('Current IPython profile: $self.shell.rc.profile.')
647 else:
652 else:
648 print 'No profile active.'
653 print 'No profile active.'
649
654
650 def _inspect(self,meth,oname,namespaces=None,**kw):
655 def _inspect(self,meth,oname,namespaces=None,**kw):
651 """Generic interface to the inspector system.
656 """Generic interface to the inspector system.
652
657
653 This function is meant to be called by pdef, pdoc & friends."""
658 This function is meant to be called by pdef, pdoc & friends."""
654
659
655 oname = oname.strip()
660 oname = oname.strip()
656 info = Struct(self._ofind(oname, namespaces))
661 info = Struct(self._ofind(oname, namespaces))
657
662
658 if info.found:
663 if info.found:
659 # Get the docstring of the class property if it exists.
664 # Get the docstring of the class property if it exists.
660 path = oname.split('.')
665 path = oname.split('.')
661 root = '.'.join(path[:-1])
666 root = '.'.join(path[:-1])
662 if info.parent is not None:
667 if info.parent is not None:
663 try:
668 try:
664 target = getattr(info.parent, '__class__')
669 target = getattr(info.parent, '__class__')
665 # The object belongs to a class instance.
670 # The object belongs to a class instance.
666 try:
671 try:
667 target = getattr(target, path[-1])
672 target = getattr(target, path[-1])
668 # The class defines the object.
673 # The class defines the object.
669 if isinstance(target, property):
674 if isinstance(target, property):
670 oname = root + '.__class__.' + path[-1]
675 oname = root + '.__class__.' + path[-1]
671 info = Struct(self._ofind(oname))
676 info = Struct(self._ofind(oname))
672 except AttributeError: pass
677 except AttributeError: pass
673 except AttributeError: pass
678 except AttributeError: pass
674
679
675 pmethod = getattr(self.shell.inspector,meth)
680 pmethod = getattr(self.shell.inspector,meth)
676 formatter = info.ismagic and self.format_screen or None
681 formatter = info.ismagic and self.format_screen or None
677 if meth == 'pdoc':
682 if meth == 'pdoc':
678 pmethod(info.obj,oname,formatter)
683 pmethod(info.obj,oname,formatter)
679 elif meth == 'pinfo':
684 elif meth == 'pinfo':
680 pmethod(info.obj,oname,formatter,info,**kw)
685 pmethod(info.obj,oname,formatter,info,**kw)
681 else:
686 else:
682 pmethod(info.obj,oname)
687 pmethod(info.obj,oname)
683 else:
688 else:
684 print 'Object `%s` not found.' % oname
689 print 'Object `%s` not found.' % oname
685 return 'not found' # so callers can take other action
690 return 'not found' # so callers can take other action
686
691
687 def magic_pdef(self, parameter_s='', namespaces=None):
692 def magic_pdef(self, parameter_s='', namespaces=None):
688 """Print the definition header for any callable object.
693 """Print the definition header for any callable object.
689
694
690 If the object is a class, print the constructor information."""
695 If the object is a class, print the constructor information."""
691 print "+++"
696 print "+++"
692 self._inspect('pdef',parameter_s, namespaces)
697 self._inspect('pdef',parameter_s, namespaces)
693
698
694 def magic_pdoc(self, parameter_s='', namespaces=None):
699 def magic_pdoc(self, parameter_s='', namespaces=None):
695 """Print the docstring for an object.
700 """Print the docstring for an object.
696
701
697 If the given object is a class, it will print both the class and the
702 If the given object is a class, it will print both the class and the
698 constructor docstrings."""
703 constructor docstrings."""
699 self._inspect('pdoc',parameter_s, namespaces)
704 self._inspect('pdoc',parameter_s, namespaces)
700
705
701 def magic_psource(self, parameter_s='', namespaces=None):
706 def magic_psource(self, parameter_s='', namespaces=None):
702 """Print (or run through pager) the source code for an object."""
707 """Print (or run through pager) the source code for an object."""
703 self._inspect('psource',parameter_s, namespaces)
708 self._inspect('psource',parameter_s, namespaces)
704
709
705 def magic_pfile(self, parameter_s=''):
710 def magic_pfile(self, parameter_s=''):
706 """Print (or run through pager) the file where an object is defined.
711 """Print (or run through pager) the file where an object is defined.
707
712
708 The file opens at the line where the object definition begins. IPython
713 The file opens at the line where the object definition begins. IPython
709 will honor the environment variable PAGER if set, and otherwise will
714 will honor the environment variable PAGER if set, and otherwise will
710 do its best to print the file in a convenient form.
715 do its best to print the file in a convenient form.
711
716
712 If the given argument is not an object currently defined, IPython will
717 If the given argument is not an object currently defined, IPython will
713 try to interpret it as a filename (automatically adding a .py extension
718 try to interpret it as a filename (automatically adding a .py extension
714 if needed). You can thus use %pfile as a syntax highlighting code
719 if needed). You can thus use %pfile as a syntax highlighting code
715 viewer."""
720 viewer."""
716
721
717 # first interpret argument as an object name
722 # first interpret argument as an object name
718 out = self._inspect('pfile',parameter_s)
723 out = self._inspect('pfile',parameter_s)
719 # if not, try the input as a filename
724 # if not, try the input as a filename
720 if out == 'not found':
725 if out == 'not found':
721 try:
726 try:
722 filename = get_py_filename(parameter_s)
727 filename = get_py_filename(parameter_s)
723 except IOError,msg:
728 except IOError,msg:
724 print msg
729 print msg
725 return
730 return
726 page(self.shell.inspector.format(file(filename).read()))
731 page(self.shell.inspector.format(file(filename).read()))
727
732
728 def magic_pinfo(self, parameter_s='', namespaces=None):
733 def magic_pinfo(self, parameter_s='', namespaces=None):
729 """Provide detailed information about an object.
734 """Provide detailed information about an object.
730
735
731 '%pinfo object' is just a synonym for object? or ?object."""
736 '%pinfo object' is just a synonym for object? or ?object."""
732
737
733 #print 'pinfo par: <%s>' % parameter_s # dbg
738 #print 'pinfo par: <%s>' % parameter_s # dbg
734
739
735 # detail_level: 0 -> obj? , 1 -> obj??
740 # detail_level: 0 -> obj? , 1 -> obj??
736 detail_level = 0
741 detail_level = 0
737 # We need to detect if we got called as 'pinfo pinfo foo', which can
742 # We need to detect if we got called as 'pinfo pinfo foo', which can
738 # happen if the user types 'pinfo foo?' at the cmd line.
743 # happen if the user types 'pinfo foo?' at the cmd line.
739 pinfo,qmark1,oname,qmark2 = \
744 pinfo,qmark1,oname,qmark2 = \
740 re.match('(pinfo )?(\?*)(.*?)(\??$)',parameter_s).groups()
745 re.match('(pinfo )?(\?*)(.*?)(\??$)',parameter_s).groups()
741 if pinfo or qmark1 or qmark2:
746 if pinfo or qmark1 or qmark2:
742 detail_level = 1
747 detail_level = 1
743 if "*" in oname:
748 if "*" in oname:
744 self.magic_psearch(oname)
749 self.magic_psearch(oname)
745 else:
750 else:
746 self._inspect('pinfo', oname, detail_level=detail_level,
751 self._inspect('pinfo', oname, detail_level=detail_level,
747 namespaces=namespaces)
752 namespaces=namespaces)
748
753
749 def magic_psearch(self, parameter_s=''):
754 def magic_psearch(self, parameter_s=''):
750 """Search for object in namespaces by wildcard.
755 """Search for object in namespaces by wildcard.
751
756
752 %psearch [options] PATTERN [OBJECT TYPE]
757 %psearch [options] PATTERN [OBJECT TYPE]
753
758
754 Note: ? can be used as a synonym for %psearch, at the beginning or at
759 Note: ? can be used as a synonym for %psearch, at the beginning or at
755 the end: both a*? and ?a* are equivalent to '%psearch a*'. Still, the
760 the end: both a*? and ?a* are equivalent to '%psearch a*'. Still, the
756 rest of the command line must be unchanged (options come first), so
761 rest of the command line must be unchanged (options come first), so
757 for example the following forms are equivalent
762 for example the following forms are equivalent
758
763
759 %psearch -i a* function
764 %psearch -i a* function
760 -i a* function?
765 -i a* function?
761 ?-i a* function
766 ?-i a* function
762
767
763 Arguments:
768 Arguments:
764
769
765 PATTERN
770 PATTERN
766
771
767 where PATTERN is a string containing * as a wildcard similar to its
772 where PATTERN is a string containing * as a wildcard similar to its
768 use in a shell. The pattern is matched in all namespaces on the
773 use in a shell. The pattern is matched in all namespaces on the
769 search path. By default objects starting with a single _ are not
774 search path. By default objects starting with a single _ are not
770 matched, many IPython generated objects have a single
775 matched, many IPython generated objects have a single
771 underscore. The default is case insensitive matching. Matching is
776 underscore. The default is case insensitive matching. Matching is
772 also done on the attributes of objects and not only on the objects
777 also done on the attributes of objects and not only on the objects
773 in a module.
778 in a module.
774
779
775 [OBJECT TYPE]
780 [OBJECT TYPE]
776
781
777 Is the name of a python type from the types module. The name is
782 Is the name of a python type from the types module. The name is
778 given in lowercase without the ending type, ex. StringType is
783 given in lowercase without the ending type, ex. StringType is
779 written string. By adding a type here only objects matching the
784 written string. By adding a type here only objects matching the
780 given type are matched. Using all here makes the pattern match all
785 given type are matched. Using all here makes the pattern match all
781 types (this is the default).
786 types (this is the default).
782
787
783 Options:
788 Options:
784
789
785 -a: makes the pattern match even objects whose names start with a
790 -a: makes the pattern match even objects whose names start with a
786 single underscore. These names are normally ommitted from the
791 single underscore. These names are normally ommitted from the
787 search.
792 search.
788
793
789 -i/-c: make the pattern case insensitive/sensitive. If neither of
794 -i/-c: make the pattern case insensitive/sensitive. If neither of
790 these options is given, the default is read from your ipythonrc
795 these options is given, the default is read from your ipythonrc
791 file. The option name which sets this value is
796 file. The option name which sets this value is
792 'wildcards_case_sensitive'. If this option is not specified in your
797 'wildcards_case_sensitive'. If this option is not specified in your
793 ipythonrc file, IPython's internal default is to do a case sensitive
798 ipythonrc file, IPython's internal default is to do a case sensitive
794 search.
799 search.
795
800
796 -e/-s NAMESPACE: exclude/search a given namespace. The pattern you
801 -e/-s NAMESPACE: exclude/search a given namespace. The pattern you
797 specifiy can be searched in any of the following namespaces:
802 specifiy can be searched in any of the following namespaces:
798 'builtin', 'user', 'user_global','internal', 'alias', where
803 'builtin', 'user', 'user_global','internal', 'alias', where
799 'builtin' and 'user' are the search defaults. Note that you should
804 'builtin' and 'user' are the search defaults. Note that you should
800 not use quotes when specifying namespaces.
805 not use quotes when specifying namespaces.
801
806
802 'Builtin' contains the python module builtin, 'user' contains all
807 'Builtin' contains the python module builtin, 'user' contains all
803 user data, 'alias' only contain the shell aliases and no python
808 user data, 'alias' only contain the shell aliases and no python
804 objects, 'internal' contains objects used by IPython. The
809 objects, 'internal' contains objects used by IPython. The
805 'user_global' namespace is only used by embedded IPython instances,
810 'user_global' namespace is only used by embedded IPython instances,
806 and it contains module-level globals. You can add namespaces to the
811 and it contains module-level globals. You can add namespaces to the
807 search with -s or exclude them with -e (these options can be given
812 search with -s or exclude them with -e (these options can be given
808 more than once).
813 more than once).
809
814
810 Examples:
815 Examples:
811
816
812 %psearch a* -> objects beginning with an a
817 %psearch a* -> objects beginning with an a
813 %psearch -e builtin a* -> objects NOT in the builtin space starting in a
818 %psearch -e builtin a* -> objects NOT in the builtin space starting in a
814 %psearch a* function -> all functions beginning with an a
819 %psearch a* function -> all functions beginning with an a
815 %psearch re.e* -> objects beginning with an e in module re
820 %psearch re.e* -> objects beginning with an e in module re
816 %psearch r*.e* -> objects that start with e in modules starting in r
821 %psearch r*.e* -> objects that start with e in modules starting in r
817 %psearch r*.* string -> all strings in modules beginning with r
822 %psearch r*.* string -> all strings in modules beginning with r
818
823
819 Case sensitve search:
824 Case sensitve search:
820
825
821 %psearch -c a* list all object beginning with lower case a
826 %psearch -c a* list all object beginning with lower case a
822
827
823 Show objects beginning with a single _:
828 Show objects beginning with a single _:
824
829
825 %psearch -a _* list objects beginning with a single underscore"""
830 %psearch -a _* list objects beginning with a single underscore"""
826
831
827 # default namespaces to be searched
832 # default namespaces to be searched
828 def_search = ['user','builtin']
833 def_search = ['user','builtin']
829
834
830 # Process options/args
835 # Process options/args
831 opts,args = self.parse_options(parameter_s,'cias:e:',list_all=True)
836 opts,args = self.parse_options(parameter_s,'cias:e:',list_all=True)
832 opt = opts.get
837 opt = opts.get
833 shell = self.shell
838 shell = self.shell
834 psearch = shell.inspector.psearch
839 psearch = shell.inspector.psearch
835
840
836 # select case options
841 # select case options
837 if opts.has_key('i'):
842 if opts.has_key('i'):
838 ignore_case = True
843 ignore_case = True
839 elif opts.has_key('c'):
844 elif opts.has_key('c'):
840 ignore_case = False
845 ignore_case = False
841 else:
846 else:
842 ignore_case = not shell.rc.wildcards_case_sensitive
847 ignore_case = not shell.rc.wildcards_case_sensitive
843
848
844 # Build list of namespaces to search from user options
849 # Build list of namespaces to search from user options
845 def_search.extend(opt('s',[]))
850 def_search.extend(opt('s',[]))
846 ns_exclude = ns_exclude=opt('e',[])
851 ns_exclude = ns_exclude=opt('e',[])
847 ns_search = [nm for nm in def_search if nm not in ns_exclude]
852 ns_search = [nm for nm in def_search if nm not in ns_exclude]
848
853
849 # Call the actual search
854 # Call the actual search
850 try:
855 try:
851 psearch(args,shell.ns_table,ns_search,
856 psearch(args,shell.ns_table,ns_search,
852 show_all=opt('a'),ignore_case=ignore_case)
857 show_all=opt('a'),ignore_case=ignore_case)
853 except:
858 except:
854 shell.showtraceback()
859 shell.showtraceback()
855
860
856 def magic_who_ls(self, parameter_s=''):
861 def magic_who_ls(self, parameter_s=''):
857 """Return a sorted list of all interactive variables.
862 """Return a sorted list of all interactive variables.
858
863
859 If arguments are given, only variables of types matching these
864 If arguments are given, only variables of types matching these
860 arguments are returned."""
865 arguments are returned."""
861
866
862 user_ns = self.shell.user_ns
867 user_ns = self.shell.user_ns
863 internal_ns = self.shell.internal_ns
868 internal_ns = self.shell.internal_ns
864 user_config_ns = self.shell.user_config_ns
869 user_config_ns = self.shell.user_config_ns
865 out = []
870 out = []
866 typelist = parameter_s.split()
871 typelist = parameter_s.split()
867
872
868 for i in user_ns:
873 for i in user_ns:
869 if not (i.startswith('_') or i.startswith('_i')) \
874 if not (i.startswith('_') or i.startswith('_i')) \
870 and not (i in internal_ns or i in user_config_ns):
875 and not (i in internal_ns or i in user_config_ns):
871 if typelist:
876 if typelist:
872 if type(user_ns[i]).__name__ in typelist:
877 if type(user_ns[i]).__name__ in typelist:
873 out.append(i)
878 out.append(i)
874 else:
879 else:
875 out.append(i)
880 out.append(i)
876 out.sort()
881 out.sort()
877 return out
882 return out
878
883
879 def magic_who(self, parameter_s=''):
884 def magic_who(self, parameter_s=''):
880 """Print all interactive variables, with some minimal formatting.
885 """Print all interactive variables, with some minimal formatting.
881
886
882 If any arguments are given, only variables whose type matches one of
887 If any arguments are given, only variables whose type matches one of
883 these are printed. For example:
888 these are printed. For example:
884
889
885 %who function str
890 %who function str
886
891
887 will only list functions and strings, excluding all other types of
892 will only list functions and strings, excluding all other types of
888 variables. To find the proper type names, simply use type(var) at a
893 variables. To find the proper type names, simply use type(var) at a
889 command line to see how python prints type names. For example:
894 command line to see how python prints type names. For example:
890
895
891 In [1]: type('hello')\\
896 In [1]: type('hello')\\
892 Out[1]: <type 'str'>
897 Out[1]: <type 'str'>
893
898
894 indicates that the type name for strings is 'str'.
899 indicates that the type name for strings is 'str'.
895
900
896 %who always excludes executed names loaded through your configuration
901 %who always excludes executed names loaded through your configuration
897 file and things which are internal to IPython.
902 file and things which are internal to IPython.
898
903
899 This is deliberate, as typically you may load many modules and the
904 This is deliberate, as typically you may load many modules and the
900 purpose of %who is to show you only what you've manually defined."""
905 purpose of %who is to show you only what you've manually defined."""
901
906
902 varlist = self.magic_who_ls(parameter_s)
907 varlist = self.magic_who_ls(parameter_s)
903 if not varlist:
908 if not varlist:
904 print 'Interactive namespace is empty.'
909 print 'Interactive namespace is empty.'
905 return
910 return
906
911
907 # if we have variables, move on...
912 # if we have variables, move on...
908
913
909 # stupid flushing problem: when prompts have no separators, stdout is
914 # stupid flushing problem: when prompts have no separators, stdout is
910 # getting lost. I'm starting to think this is a python bug. I'm having
915 # getting lost. I'm starting to think this is a python bug. I'm having
911 # to force a flush with a print because even a sys.stdout.flush
916 # to force a flush with a print because even a sys.stdout.flush
912 # doesn't seem to do anything!
917 # doesn't seem to do anything!
913
918
914 count = 0
919 count = 0
915 for i in varlist:
920 for i in varlist:
916 print i+'\t',
921 print i+'\t',
917 count += 1
922 count += 1
918 if count > 8:
923 if count > 8:
919 count = 0
924 count = 0
920 print
925 print
921 sys.stdout.flush() # FIXME. Why the hell isn't this flushing???
926 sys.stdout.flush() # FIXME. Why the hell isn't this flushing???
922
927
923 print # well, this does force a flush at the expense of an extra \n
928 print # well, this does force a flush at the expense of an extra \n
924
929
925 def magic_whos(self, parameter_s=''):
930 def magic_whos(self, parameter_s=''):
926 """Like %who, but gives some extra information about each variable.
931 """Like %who, but gives some extra information about each variable.
927
932
928 The same type filtering of %who can be applied here.
933 The same type filtering of %who can be applied here.
929
934
930 For all variables, the type is printed. Additionally it prints:
935 For all variables, the type is printed. Additionally it prints:
931
936
932 - For {},[],(): their length.
937 - For {},[],(): their length.
933
938
934 - For Numeric arrays, a summary with shape, number of elements,
939 - For Numeric arrays, a summary with shape, number of elements,
935 typecode and size in memory.
940 typecode and size in memory.
936
941
937 - Everything else: a string representation, snipping their middle if
942 - Everything else: a string representation, snipping their middle if
938 too long."""
943 too long."""
939
944
940 varnames = self.magic_who_ls(parameter_s)
945 varnames = self.magic_who_ls(parameter_s)
941 if not varnames:
946 if not varnames:
942 print 'Interactive namespace is empty.'
947 print 'Interactive namespace is empty.'
943 return
948 return
944
949
945 # if we have variables, move on...
950 # if we have variables, move on...
946
951
947 # for these types, show len() instead of data:
952 # for these types, show len() instead of data:
948 seq_types = [types.DictType,types.ListType,types.TupleType]
953 seq_types = [types.DictType,types.ListType,types.TupleType]
949
954
950 # for Numeric arrays, display summary info
955 # for Numeric arrays, display summary info
951 try:
956 try:
952 import Numeric
957 import Numeric
953 except ImportError:
958 except ImportError:
954 array_type = None
959 array_type = None
955 else:
960 else:
956 array_type = Numeric.ArrayType.__name__
961 array_type = Numeric.ArrayType.__name__
957
962
958 # Find all variable names and types so we can figure out column sizes
963 # Find all variable names and types so we can figure out column sizes
959 get_vars = lambda i: self.shell.user_ns[i]
964 get_vars = lambda i: self.shell.user_ns[i]
960 type_name = lambda v: type(v).__name__
965 type_name = lambda v: type(v).__name__
961 varlist = map(get_vars,varnames)
966 varlist = map(get_vars,varnames)
962
967
963 typelist = []
968 typelist = []
964 for vv in varlist:
969 for vv in varlist:
965 tt = type_name(vv)
970 tt = type_name(vv)
966 if tt=='instance':
971 if tt=='instance':
967 typelist.append(str(vv.__class__))
972 typelist.append(str(vv.__class__))
968 else:
973 else:
969 typelist.append(tt)
974 typelist.append(tt)
970
975
971 # column labels and # of spaces as separator
976 # column labels and # of spaces as separator
972 varlabel = 'Variable'
977 varlabel = 'Variable'
973 typelabel = 'Type'
978 typelabel = 'Type'
974 datalabel = 'Data/Info'
979 datalabel = 'Data/Info'
975 colsep = 3
980 colsep = 3
976 # variable format strings
981 # variable format strings
977 vformat = "$vname.ljust(varwidth)$vtype.ljust(typewidth)"
982 vformat = "$vname.ljust(varwidth)$vtype.ljust(typewidth)"
978 vfmt_short = '$vstr[:25]<...>$vstr[-25:]'
983 vfmt_short = '$vstr[:25]<...>$vstr[-25:]'
979 aformat = "%s: %s elems, type `%s`, %s bytes"
984 aformat = "%s: %s elems, type `%s`, %s bytes"
980 # find the size of the columns to format the output nicely
985 # find the size of the columns to format the output nicely
981 varwidth = max(max(map(len,varnames)), len(varlabel)) + colsep
986 varwidth = max(max(map(len,varnames)), len(varlabel)) + colsep
982 typewidth = max(max(map(len,typelist)), len(typelabel)) + colsep
987 typewidth = max(max(map(len,typelist)), len(typelabel)) + colsep
983 # table header
988 # table header
984 print varlabel.ljust(varwidth) + typelabel.ljust(typewidth) + \
989 print varlabel.ljust(varwidth) + typelabel.ljust(typewidth) + \
985 ' '+datalabel+'\n' + '-'*(varwidth+typewidth+len(datalabel)+1)
990 ' '+datalabel+'\n' + '-'*(varwidth+typewidth+len(datalabel)+1)
986 # and the table itself
991 # and the table itself
987 kb = 1024
992 kb = 1024
988 Mb = 1048576 # kb**2
993 Mb = 1048576 # kb**2
989 for vname,var,vtype in zip(varnames,varlist,typelist):
994 for vname,var,vtype in zip(varnames,varlist,typelist):
990 print itpl(vformat),
995 print itpl(vformat),
991 if vtype in seq_types:
996 if vtype in seq_types:
992 print len(var)
997 print len(var)
993 elif vtype==array_type:
998 elif vtype==array_type:
994 vshape = str(var.shape).replace(',','').replace(' ','x')[1:-1]
999 vshape = str(var.shape).replace(',','').replace(' ','x')[1:-1]
995 vsize = Numeric.size(var)
1000 vsize = Numeric.size(var)
996 vbytes = vsize*var.itemsize()
1001 vbytes = vsize*var.itemsize()
997 if vbytes < 100000:
1002 if vbytes < 100000:
998 print aformat % (vshape,vsize,var.typecode(),vbytes)
1003 print aformat % (vshape,vsize,var.typecode(),vbytes)
999 else:
1004 else:
1000 print aformat % (vshape,vsize,var.typecode(),vbytes),
1005 print aformat % (vshape,vsize,var.typecode(),vbytes),
1001 if vbytes < Mb:
1006 if vbytes < Mb:
1002 print '(%s kb)' % (vbytes/kb,)
1007 print '(%s kb)' % (vbytes/kb,)
1003 else:
1008 else:
1004 print '(%s Mb)' % (vbytes/Mb,)
1009 print '(%s Mb)' % (vbytes/Mb,)
1005 else:
1010 else:
1006 vstr = str(var).replace('\n','\\n')
1011 vstr = str(var).replace('\n','\\n')
1007 if len(vstr) < 50:
1012 if len(vstr) < 50:
1008 print vstr
1013 print vstr
1009 else:
1014 else:
1010 printpl(vfmt_short)
1015 printpl(vfmt_short)
1011
1016
1012 def magic_reset(self, parameter_s=''):
1017 def magic_reset(self, parameter_s=''):
1013 """Resets the namespace by removing all names defined by the user.
1018 """Resets the namespace by removing all names defined by the user.
1014
1019
1015 Input/Output history are left around in case you need them."""
1020 Input/Output history are left around in case you need them."""
1016
1021
1017 ans = self.shell.ask_yes_no(
1022 ans = self.shell.ask_yes_no(
1018 "Once deleted, variables cannot be recovered. Proceed (y/[n])? ")
1023 "Once deleted, variables cannot be recovered. Proceed (y/[n])? ")
1019 if not ans:
1024 if not ans:
1020 print 'Nothing done.'
1025 print 'Nothing done.'
1021 return
1026 return
1022 user_ns = self.shell.user_ns
1027 user_ns = self.shell.user_ns
1023 for i in self.magic_who_ls():
1028 for i in self.magic_who_ls():
1024 del(user_ns[i])
1029 del(user_ns[i])
1025
1030
1026 def magic_config(self,parameter_s=''):
1031 def magic_config(self,parameter_s=''):
1027 """Handle IPython's internal configuration.
1032 """Handle IPython's internal configuration.
1028
1033
1029 If called without arguments, it will print IPython's complete internal
1034 If called without arguments, it will print IPython's complete internal
1030 configuration.
1035 configuration.
1031
1036
1032 If called with one argument, it will print the value of that key in
1037 If called with one argument, it will print the value of that key in
1033 the configuration.
1038 the configuration.
1034
1039
1035 If called with more than one argument, the first is interpreted as a
1040 If called with more than one argument, the first is interpreted as a
1036 key and the rest as a Python expression which gets eval()'d.
1041 key and the rest as a Python expression which gets eval()'d.
1037
1042
1038 Examples:
1043 Examples:
1039
1044
1040 In [1]: s='A Python string'
1045 In [1]: s='A Python string'
1041
1046
1042 In [2]: !echo $s
1047 In [2]: !echo $s
1043 A Python string
1048 A Python string
1044
1049
1045 In [3]: config system_verbose True
1050 In [3]: config system_verbose True
1046
1051
1047 In [4]: !echo $s
1052 In [4]: !echo $s
1048 IPython system call: echo A Python string
1053 IPython system call: echo A Python string
1049 A Python string
1054 A Python string
1050
1055
1051 In [5]: %config system_header 'sys> '
1056 In [5]: %config system_header 'sys> '
1052
1057
1053 In [6]: !echo $s
1058 In [6]: !echo $s
1054 sys> echo A Python string
1059 sys> echo A Python string
1055 A Python string
1060 A Python string
1056
1061
1057 # Notice the extra quotes to protect the string after interpolation:
1062 # Notice the extra quotes to protect the string after interpolation:
1058 In [7]: header = "'sys2> '"
1063 In [7]: header = "'sys2> '"
1059
1064
1060 In [8]: %config system_header $header
1065 In [8]: %config system_header $header
1061
1066
1062 In [9]: !echo $s
1067 In [9]: !echo $s
1063 sys2> echo A Python string
1068 sys2> echo A Python string
1064 A Python string
1069 A Python string
1065 """
1070 """
1066
1071
1067 args = parameter_s.split(None,1)
1072 args = parameter_s.split(None,1)
1068 key = args[0]
1073 key = args[0]
1069 if len(args)==1:
1074 if len(args)==1:
1070 self.shell.ipconfig(key)
1075 self.shell.ipconfig(key)
1071 else:
1076 else:
1072 self.shell.ipconfig(key,eval(args[1]))
1077 self.shell.ipconfig(key,eval(args[1]))
1073
1078
1074 def magic_logstart(self,parameter_s=''):
1079 def magic_logstart(self,parameter_s=''):
1075 """Start logging anywhere in a session.
1080 """Start logging anywhere in a session.
1076
1081
1077 %logstart [-o|-r|-t] [log_name [log_mode]]
1082 %logstart [-o|-r|-t] [log_name [log_mode]]
1078
1083
1079 If no name is given, it defaults to a file named 'ipython_log.py' in your
1084 If no name is given, it defaults to a file named 'ipython_log.py' in your
1080 current directory, in 'rotate' mode (see below).
1085 current directory, in 'rotate' mode (see below).
1081
1086
1082 '%logstart name' saves to file 'name' in 'backup' mode. It saves your
1087 '%logstart name' saves to file 'name' in 'backup' mode. It saves your
1083 history up to that point and then continues logging.
1088 history up to that point and then continues logging.
1084
1089
1085 %logstart takes a second optional parameter: logging mode. This can be one
1090 %logstart takes a second optional parameter: logging mode. This can be one
1086 of (note that the modes are given unquoted):\\
1091 of (note that the modes are given unquoted):\\
1087 append: well, that says it.\\
1092 append: well, that says it.\\
1088 backup: rename (if exists) to name~ and start name.\\
1093 backup: rename (if exists) to name~ and start name.\\
1089 global: single logfile in your home dir, appended to.\\
1094 global: single logfile in your home dir, appended to.\\
1090 over : overwrite existing log.\\
1095 over : overwrite existing log.\\
1091 rotate: create rotating logs name.1~, name.2~, etc.
1096 rotate: create rotating logs name.1~, name.2~, etc.
1092
1097
1093 Options:
1098 Options:
1094
1099
1095 -o: log also IPython's output. In this mode, all commands which
1100 -o: log also IPython's output. In this mode, all commands which
1096 generate an Out[NN] prompt are recorded to the logfile, right after
1101 generate an Out[NN] prompt are recorded to the logfile, right after
1097 their corresponding input line. The output lines are always
1102 their corresponding input line. The output lines are always
1098 prepended with a '#[Out]# ' marker, so that the log remains valid
1103 prepended with a '#[Out]# ' marker, so that the log remains valid
1099 Python code.
1104 Python code.
1100
1105
1101 Since this marker is always the same, filtering only the output from
1106 Since this marker is always the same, filtering only the output from
1102 a log is very easy, using for example a simple awk call:
1107 a log is very easy, using for example a simple awk call:
1103
1108
1104 awk -F'#\\[Out\\]# ' '{if($2) {print $2}}' ipython_log.py
1109 awk -F'#\\[Out\\]# ' '{if($2) {print $2}}' ipython_log.py
1105
1110
1106 -r: log 'raw' input. Normally, IPython's logs contain the processed
1111 -r: log 'raw' input. Normally, IPython's logs contain the processed
1107 input, so that user lines are logged in their final form, converted
1112 input, so that user lines are logged in their final form, converted
1108 into valid Python. For example, %Exit is logged as
1113 into valid Python. For example, %Exit is logged as
1109 '_ip.magic("Exit"). If the -r flag is given, all input is logged
1114 '_ip.magic("Exit"). If the -r flag is given, all input is logged
1110 exactly as typed, with no transformations applied.
1115 exactly as typed, with no transformations applied.
1111
1116
1112 -t: put timestamps before each input line logged (these are put in
1117 -t: put timestamps before each input line logged (these are put in
1113 comments)."""
1118 comments)."""
1114
1119
1115 opts,par = self.parse_options(parameter_s,'ort')
1120 opts,par = self.parse_options(parameter_s,'ort')
1116 log_output = 'o' in opts
1121 log_output = 'o' in opts
1117 log_raw_input = 'r' in opts
1122 log_raw_input = 'r' in opts
1118 timestamp = 't' in opts
1123 timestamp = 't' in opts
1119
1124
1120 rc = self.shell.rc
1125 rc = self.shell.rc
1121 logger = self.shell.logger
1126 logger = self.shell.logger
1122
1127
1123 # if no args are given, the defaults set in the logger constructor by
1128 # if no args are given, the defaults set in the logger constructor by
1124 # ipytohn remain valid
1129 # ipytohn remain valid
1125 if par:
1130 if par:
1126 try:
1131 try:
1127 logfname,logmode = par.split()
1132 logfname,logmode = par.split()
1128 except:
1133 except:
1129 logfname = par
1134 logfname = par
1130 logmode = 'backup'
1135 logmode = 'backup'
1131 else:
1136 else:
1132 logfname = logger.logfname
1137 logfname = logger.logfname
1133 logmode = logger.logmode
1138 logmode = logger.logmode
1134 # put logfname into rc struct as if it had been called on the command
1139 # put logfname into rc struct as if it had been called on the command
1135 # line, so it ends up saved in the log header Save it in case we need
1140 # line, so it ends up saved in the log header Save it in case we need
1136 # to restore it...
1141 # to restore it...
1137 old_logfile = rc.opts.get('logfile','')
1142 old_logfile = rc.opts.get('logfile','')
1138 if logfname:
1143 if logfname:
1139 logfname = os.path.expanduser(logfname)
1144 logfname = os.path.expanduser(logfname)
1140 rc.opts.logfile = logfname
1145 rc.opts.logfile = logfname
1141 loghead = self.shell.loghead_tpl % (rc.opts,rc.args)
1146 loghead = self.shell.loghead_tpl % (rc.opts,rc.args)
1142 try:
1147 try:
1143 started = logger.logstart(logfname,loghead,logmode,
1148 started = logger.logstart(logfname,loghead,logmode,
1144 log_output,timestamp,log_raw_input)
1149 log_output,timestamp,log_raw_input)
1145 except:
1150 except:
1146 rc.opts.logfile = old_logfile
1151 rc.opts.logfile = old_logfile
1147 warn("Couldn't start log: %s" % sys.exc_info()[1])
1152 warn("Couldn't start log: %s" % sys.exc_info()[1])
1148 else:
1153 else:
1149 # log input history up to this point, optionally interleaving
1154 # log input history up to this point, optionally interleaving
1150 # output if requested
1155 # output if requested
1151
1156
1152 if timestamp:
1157 if timestamp:
1153 # disable timestamping for the previous history, since we've
1158 # disable timestamping for the previous history, since we've
1154 # lost those already (no time machine here).
1159 # lost those already (no time machine here).
1155 logger.timestamp = False
1160 logger.timestamp = False
1156
1161
1157 if log_raw_input:
1162 if log_raw_input:
1158 input_hist = self.shell.input_hist_raw
1163 input_hist = self.shell.input_hist_raw
1159 else:
1164 else:
1160 input_hist = self.shell.input_hist
1165 input_hist = self.shell.input_hist
1161
1166
1162 if log_output:
1167 if log_output:
1163 log_write = logger.log_write
1168 log_write = logger.log_write
1164 output_hist = self.shell.output_hist
1169 output_hist = self.shell.output_hist
1165 for n in range(1,len(input_hist)-1):
1170 for n in range(1,len(input_hist)-1):
1166 log_write(input_hist[n].rstrip())
1171 log_write(input_hist[n].rstrip())
1167 if n in output_hist:
1172 if n in output_hist:
1168 log_write(repr(output_hist[n]),'output')
1173 log_write(repr(output_hist[n]),'output')
1169 else:
1174 else:
1170 logger.log_write(input_hist[1:])
1175 logger.log_write(input_hist[1:])
1171 if timestamp:
1176 if timestamp:
1172 # re-enable timestamping
1177 # re-enable timestamping
1173 logger.timestamp = True
1178 logger.timestamp = True
1174
1179
1175 print ('Activating auto-logging. '
1180 print ('Activating auto-logging. '
1176 'Current session state plus future input saved.')
1181 'Current session state plus future input saved.')
1177 logger.logstate()
1182 logger.logstate()
1178
1183
1179 def magic_logoff(self,parameter_s=''):
1184 def magic_logoff(self,parameter_s=''):
1180 """Temporarily stop logging.
1185 """Temporarily stop logging.
1181
1186
1182 You must have previously started logging."""
1187 You must have previously started logging."""
1183 self.shell.logger.switch_log(0)
1188 self.shell.logger.switch_log(0)
1184
1189
1185 def magic_logon(self,parameter_s=''):
1190 def magic_logon(self,parameter_s=''):
1186 """Restart logging.
1191 """Restart logging.
1187
1192
1188 This function is for restarting logging which you've temporarily
1193 This function is for restarting logging which you've temporarily
1189 stopped with %logoff. For starting logging for the first time, you
1194 stopped with %logoff. For starting logging for the first time, you
1190 must use the %logstart function, which allows you to specify an
1195 must use the %logstart function, which allows you to specify an
1191 optional log filename."""
1196 optional log filename."""
1192
1197
1193 self.shell.logger.switch_log(1)
1198 self.shell.logger.switch_log(1)
1194
1199
1195 def magic_logstate(self,parameter_s=''):
1200 def magic_logstate(self,parameter_s=''):
1196 """Print the status of the logging system."""
1201 """Print the status of the logging system."""
1197
1202
1198 self.shell.logger.logstate()
1203 self.shell.logger.logstate()
1199
1204
1200 def magic_pdb(self, parameter_s=''):
1205 def magic_pdb(self, parameter_s=''):
1201 """Control the calling of the pdb interactive debugger.
1206 """Control the calling of the pdb interactive debugger.
1202
1207
1203 Call as '%pdb on', '%pdb 1', '%pdb off' or '%pdb 0'. If called without
1208 Call as '%pdb on', '%pdb 1', '%pdb off' or '%pdb 0'. If called without
1204 argument it works as a toggle.
1209 argument it works as a toggle.
1205
1210
1206 When an exception is triggered, IPython can optionally call the
1211 When an exception is triggered, IPython can optionally call the
1207 interactive pdb debugger after the traceback printout. %pdb toggles
1212 interactive pdb debugger after the traceback printout. %pdb toggles
1208 this feature on and off."""
1213 this feature on and off."""
1209
1214
1210 par = parameter_s.strip().lower()
1215 par = parameter_s.strip().lower()
1211
1216
1212 if par:
1217 if par:
1213 try:
1218 try:
1214 new_pdb = {'off':0,'0':0,'on':1,'1':1}[par]
1219 new_pdb = {'off':0,'0':0,'on':1,'1':1}[par]
1215 except KeyError:
1220 except KeyError:
1216 print ('Incorrect argument. Use on/1, off/0, '
1221 print ('Incorrect argument. Use on/1, off/0, '
1217 'or nothing for a toggle.')
1222 'or nothing for a toggle.')
1218 return
1223 return
1219 else:
1224 else:
1220 # toggle
1225 # toggle
1221 new_pdb = not self.shell.InteractiveTB.call_pdb
1226 new_pdb = not self.shell.InteractiveTB.call_pdb
1222
1227
1223 # set on the shell
1228 # set on the shell
1224 self.shell.call_pdb = new_pdb
1229 self.shell.call_pdb = new_pdb
1225 print 'Automatic pdb calling has been turned',on_off(new_pdb)
1230 print 'Automatic pdb calling has been turned',on_off(new_pdb)
1226
1231
1227 def magic_prun(self, parameter_s ='',user_mode=1,
1232 def magic_prun(self, parameter_s ='',user_mode=1,
1228 opts=None,arg_lst=None,prog_ns=None):
1233 opts=None,arg_lst=None,prog_ns=None):
1229
1234
1230 """Run a statement through the python code profiler.
1235 """Run a statement through the python code profiler.
1231
1236
1232 Usage:\\
1237 Usage:\\
1233 %prun [options] statement
1238 %prun [options] statement
1234
1239
1235 The given statement (which doesn't require quote marks) is run via the
1240 The given statement (which doesn't require quote marks) is run via the
1236 python profiler in a manner similar to the profile.run() function.
1241 python profiler in a manner similar to the profile.run() function.
1237 Namespaces are internally managed to work correctly; profile.run
1242 Namespaces are internally managed to work correctly; profile.run
1238 cannot be used in IPython because it makes certain assumptions about
1243 cannot be used in IPython because it makes certain assumptions about
1239 namespaces which do not hold under IPython.
1244 namespaces which do not hold under IPython.
1240
1245
1241 Options:
1246 Options:
1242
1247
1243 -l <limit>: you can place restrictions on what or how much of the
1248 -l <limit>: you can place restrictions on what or how much of the
1244 profile gets printed. The limit value can be:
1249 profile gets printed. The limit value can be:
1245
1250
1246 * A string: only information for function names containing this string
1251 * A string: only information for function names containing this string
1247 is printed.
1252 is printed.
1248
1253
1249 * An integer: only these many lines are printed.
1254 * An integer: only these many lines are printed.
1250
1255
1251 * A float (between 0 and 1): this fraction of the report is printed
1256 * A float (between 0 and 1): this fraction of the report is printed
1252 (for example, use a limit of 0.4 to see the topmost 40% only).
1257 (for example, use a limit of 0.4 to see the topmost 40% only).
1253
1258
1254 You can combine several limits with repeated use of the option. For
1259 You can combine several limits with repeated use of the option. For
1255 example, '-l __init__ -l 5' will print only the topmost 5 lines of
1260 example, '-l __init__ -l 5' will print only the topmost 5 lines of
1256 information about class constructors.
1261 information about class constructors.
1257
1262
1258 -r: return the pstats.Stats object generated by the profiling. This
1263 -r: return the pstats.Stats object generated by the profiling. This
1259 object has all the information about the profile in it, and you can
1264 object has all the information about the profile in it, and you can
1260 later use it for further analysis or in other functions.
1265 later use it for further analysis or in other functions.
1261
1266
1262 -s <key>: sort profile by given key. You can provide more than one key
1267 -s <key>: sort profile by given key. You can provide more than one key
1263 by using the option several times: '-s key1 -s key2 -s key3...'. The
1268 by using the option several times: '-s key1 -s key2 -s key3...'. The
1264 default sorting key is 'time'.
1269 default sorting key is 'time'.
1265
1270
1266 The following is copied verbatim from the profile documentation
1271 The following is copied verbatim from the profile documentation
1267 referenced below:
1272 referenced below:
1268
1273
1269 When more than one key is provided, additional keys are used as
1274 When more than one key is provided, additional keys are used as
1270 secondary criteria when the there is equality in all keys selected
1275 secondary criteria when the there is equality in all keys selected
1271 before them.
1276 before them.
1272
1277
1273 Abbreviations can be used for any key names, as long as the
1278 Abbreviations can be used for any key names, as long as the
1274 abbreviation is unambiguous. The following are the keys currently
1279 abbreviation is unambiguous. The following are the keys currently
1275 defined:
1280 defined:
1276
1281
1277 Valid Arg Meaning\\
1282 Valid Arg Meaning\\
1278 "calls" call count\\
1283 "calls" call count\\
1279 "cumulative" cumulative time\\
1284 "cumulative" cumulative time\\
1280 "file" file name\\
1285 "file" file name\\
1281 "module" file name\\
1286 "module" file name\\
1282 "pcalls" primitive call count\\
1287 "pcalls" primitive call count\\
1283 "line" line number\\
1288 "line" line number\\
1284 "name" function name\\
1289 "name" function name\\
1285 "nfl" name/file/line\\
1290 "nfl" name/file/line\\
1286 "stdname" standard name\\
1291 "stdname" standard name\\
1287 "time" internal time
1292 "time" internal time
1288
1293
1289 Note that all sorts on statistics are in descending order (placing
1294 Note that all sorts on statistics are in descending order (placing
1290 most time consuming items first), where as name, file, and line number
1295 most time consuming items first), where as name, file, and line number
1291 searches are in ascending order (i.e., alphabetical). The subtle
1296 searches are in ascending order (i.e., alphabetical). The subtle
1292 distinction between "nfl" and "stdname" is that the standard name is a
1297 distinction between "nfl" and "stdname" is that the standard name is a
1293 sort of the name as printed, which means that the embedded line
1298 sort of the name as printed, which means that the embedded line
1294 numbers get compared in an odd way. For example, lines 3, 20, and 40
1299 numbers get compared in an odd way. For example, lines 3, 20, and 40
1295 would (if the file names were the same) appear in the string order
1300 would (if the file names were the same) appear in the string order
1296 "20" "3" and "40". In contrast, "nfl" does a numeric compare of the
1301 "20" "3" and "40". In contrast, "nfl" does a numeric compare of the
1297 line numbers. In fact, sort_stats("nfl") is the same as
1302 line numbers. In fact, sort_stats("nfl") is the same as
1298 sort_stats("name", "file", "line").
1303 sort_stats("name", "file", "line").
1299
1304
1300 -T <filename>: save profile results as shown on screen to a text
1305 -T <filename>: save profile results as shown on screen to a text
1301 file. The profile is still shown on screen.
1306 file. The profile is still shown on screen.
1302
1307
1303 -D <filename>: save (via dump_stats) profile statistics to given
1308 -D <filename>: save (via dump_stats) profile statistics to given
1304 filename. This data is in a format understod by the pstats module, and
1309 filename. This data is in a format understod by the pstats module, and
1305 is generated by a call to the dump_stats() method of profile
1310 is generated by a call to the dump_stats() method of profile
1306 objects. The profile is still shown on screen.
1311 objects. The profile is still shown on screen.
1307
1312
1308 If you want to run complete programs under the profiler's control, use
1313 If you want to run complete programs under the profiler's control, use
1309 '%run -p [prof_opts] filename.py [args to program]' where prof_opts
1314 '%run -p [prof_opts] filename.py [args to program]' where prof_opts
1310 contains profiler specific options as described here.
1315 contains profiler specific options as described here.
1311
1316
1312 You can read the complete documentation for the profile module with:\\
1317 You can read the complete documentation for the profile module with:\\
1313 In [1]: import profile; profile.help() """
1318 In [1]: import profile; profile.help() """
1314
1319
1315 opts_def = Struct(D=[''],l=[],s=['time'],T=[''])
1320 opts_def = Struct(D=[''],l=[],s=['time'],T=[''])
1316 # protect user quote marks
1321 # protect user quote marks
1317 parameter_s = parameter_s.replace('"',r'\"').replace("'",r"\'")
1322 parameter_s = parameter_s.replace('"',r'\"').replace("'",r"\'")
1318
1323
1319 if user_mode: # regular user call
1324 if user_mode: # regular user call
1320 opts,arg_str = self.parse_options(parameter_s,'D:l:rs:T:',
1325 opts,arg_str = self.parse_options(parameter_s,'D:l:rs:T:',
1321 list_all=1)
1326 list_all=1)
1322 namespace = self.shell.user_ns
1327 namespace = self.shell.user_ns
1323 else: # called to run a program by %run -p
1328 else: # called to run a program by %run -p
1324 try:
1329 try:
1325 filename = get_py_filename(arg_lst[0])
1330 filename = get_py_filename(arg_lst[0])
1326 except IOError,msg:
1331 except IOError,msg:
1327 error(msg)
1332 error(msg)
1328 return
1333 return
1329
1334
1330 arg_str = 'execfile(filename,prog_ns)'
1335 arg_str = 'execfile(filename,prog_ns)'
1331 namespace = locals()
1336 namespace = locals()
1332
1337
1333 opts.merge(opts_def)
1338 opts.merge(opts_def)
1334
1339
1335 prof = profile.Profile()
1340 prof = profile.Profile()
1336 try:
1341 try:
1337 prof = prof.runctx(arg_str,namespace,namespace)
1342 prof = prof.runctx(arg_str,namespace,namespace)
1338 sys_exit = ''
1343 sys_exit = ''
1339 except SystemExit:
1344 except SystemExit:
1340 sys_exit = """*** SystemExit exception caught in code being profiled."""
1345 sys_exit = """*** SystemExit exception caught in code being profiled."""
1341
1346
1342 stats = pstats.Stats(prof).strip_dirs().sort_stats(*opts.s)
1347 stats = pstats.Stats(prof).strip_dirs().sort_stats(*opts.s)
1343
1348
1344 lims = opts.l
1349 lims = opts.l
1345 if lims:
1350 if lims:
1346 lims = [] # rebuild lims with ints/floats/strings
1351 lims = [] # rebuild lims with ints/floats/strings
1347 for lim in opts.l:
1352 for lim in opts.l:
1348 try:
1353 try:
1349 lims.append(int(lim))
1354 lims.append(int(lim))
1350 except ValueError:
1355 except ValueError:
1351 try:
1356 try:
1352 lims.append(float(lim))
1357 lims.append(float(lim))
1353 except ValueError:
1358 except ValueError:
1354 lims.append(lim)
1359 lims.append(lim)
1355
1360
1356 # trap output
1361 # trap output
1357 sys_stdout = sys.stdout
1362 sys_stdout = sys.stdout
1358 stdout_trap = StringIO()
1363 stdout_trap = StringIO()
1359 try:
1364 try:
1360 sys.stdout = stdout_trap
1365 sys.stdout = stdout_trap
1361 stats.print_stats(*lims)
1366 stats.print_stats(*lims)
1362 finally:
1367 finally:
1363 sys.stdout = sys_stdout
1368 sys.stdout = sys_stdout
1364 output = stdout_trap.getvalue()
1369 output = stdout_trap.getvalue()
1365 output = output.rstrip()
1370 output = output.rstrip()
1366
1371
1367 page(output,screen_lines=self.shell.rc.screen_length)
1372 page(output,screen_lines=self.shell.rc.screen_length)
1368 print sys_exit,
1373 print sys_exit,
1369
1374
1370 dump_file = opts.D[0]
1375 dump_file = opts.D[0]
1371 text_file = opts.T[0]
1376 text_file = opts.T[0]
1372 if dump_file:
1377 if dump_file:
1373 prof.dump_stats(dump_file)
1378 prof.dump_stats(dump_file)
1374 print '\n*** Profile stats marshalled to file',\
1379 print '\n*** Profile stats marshalled to file',\
1375 `dump_file`+'.',sys_exit
1380 `dump_file`+'.',sys_exit
1376 if text_file:
1381 if text_file:
1377 file(text_file,'w').write(output)
1382 file(text_file,'w').write(output)
1378 print '\n*** Profile printout saved to text file',\
1383 print '\n*** Profile printout saved to text file',\
1379 `text_file`+'.',sys_exit
1384 `text_file`+'.',sys_exit
1380
1385
1381 if opts.has_key('r'):
1386 if opts.has_key('r'):
1382 return stats
1387 return stats
1383 else:
1388 else:
1384 return None
1389 return None
1385
1390
1386 def magic_run(self, parameter_s ='',runner=None):
1391 def magic_run(self, parameter_s ='',runner=None):
1387 """Run the named file inside IPython as a program.
1392 """Run the named file inside IPython as a program.
1388
1393
1389 Usage:\\
1394 Usage:\\
1390 %run [-n -i -t [-N<N>] -d [-b<N>] -p [profile options]] file [args]
1395 %run [-n -i -t [-N<N>] -d [-b<N>] -p [profile options]] file [args]
1391
1396
1392 Parameters after the filename are passed as command-line arguments to
1397 Parameters after the filename are passed as command-line arguments to
1393 the program (put in sys.argv). Then, control returns to IPython's
1398 the program (put in sys.argv). Then, control returns to IPython's
1394 prompt.
1399 prompt.
1395
1400
1396 This is similar to running at a system prompt:\\
1401 This is similar to running at a system prompt:\\
1397 $ python file args\\
1402 $ python file args\\
1398 but with the advantage of giving you IPython's tracebacks, and of
1403 but with the advantage of giving you IPython's tracebacks, and of
1399 loading all variables into your interactive namespace for further use
1404 loading all variables into your interactive namespace for further use
1400 (unless -p is used, see below).
1405 (unless -p is used, see below).
1401
1406
1402 The file is executed in a namespace initially consisting only of
1407 The file is executed in a namespace initially consisting only of
1403 __name__=='__main__' and sys.argv constructed as indicated. It thus
1408 __name__=='__main__' and sys.argv constructed as indicated. It thus
1404 sees its environment as if it were being run as a stand-alone
1409 sees its environment as if it were being run as a stand-alone
1405 program. But after execution, the IPython interactive namespace gets
1410 program. But after execution, the IPython interactive namespace gets
1406 updated with all variables defined in the program (except for __name__
1411 updated with all variables defined in the program (except for __name__
1407 and sys.argv). This allows for very convenient loading of code for
1412 and sys.argv). This allows for very convenient loading of code for
1408 interactive work, while giving each program a 'clean sheet' to run in.
1413 interactive work, while giving each program a 'clean sheet' to run in.
1409
1414
1410 Options:
1415 Options:
1411
1416
1412 -n: __name__ is NOT set to '__main__', but to the running file's name
1417 -n: __name__ is NOT set to '__main__', but to the running file's name
1413 without extension (as python does under import). This allows running
1418 without extension (as python does under import). This allows running
1414 scripts and reloading the definitions in them without calling code
1419 scripts and reloading the definitions in them without calling code
1415 protected by an ' if __name__ == "__main__" ' clause.
1420 protected by an ' if __name__ == "__main__" ' clause.
1416
1421
1417 -i: run the file in IPython's namespace instead of an empty one. This
1422 -i: run the file in IPython's namespace instead of an empty one. This
1418 is useful if you are experimenting with code written in a text editor
1423 is useful if you are experimenting with code written in a text editor
1419 which depends on variables defined interactively.
1424 which depends on variables defined interactively.
1420
1425
1421 -e: ignore sys.exit() calls or SystemExit exceptions in the script
1426 -e: ignore sys.exit() calls or SystemExit exceptions in the script
1422 being run. This is particularly useful if IPython is being used to
1427 being run. This is particularly useful if IPython is being used to
1423 run unittests, which always exit with a sys.exit() call. In such
1428 run unittests, which always exit with a sys.exit() call. In such
1424 cases you are interested in the output of the test results, not in
1429 cases you are interested in the output of the test results, not in
1425 seeing a traceback of the unittest module.
1430 seeing a traceback of the unittest module.
1426
1431
1427 -t: print timing information at the end of the run. IPython will give
1432 -t: print timing information at the end of the run. IPython will give
1428 you an estimated CPU time consumption for your script, which under
1433 you an estimated CPU time consumption for your script, which under
1429 Unix uses the resource module to avoid the wraparound problems of
1434 Unix uses the resource module to avoid the wraparound problems of
1430 time.clock(). Under Unix, an estimate of time spent on system tasks
1435 time.clock(). Under Unix, an estimate of time spent on system tasks
1431 is also given (for Windows platforms this is reported as 0.0).
1436 is also given (for Windows platforms this is reported as 0.0).
1432
1437
1433 If -t is given, an additional -N<N> option can be given, where <N>
1438 If -t is given, an additional -N<N> option can be given, where <N>
1434 must be an integer indicating how many times you want the script to
1439 must be an integer indicating how many times you want the script to
1435 run. The final timing report will include total and per run results.
1440 run. The final timing report will include total and per run results.
1436
1441
1437 For example (testing the script uniq_stable.py):
1442 For example (testing the script uniq_stable.py):
1438
1443
1439 In [1]: run -t uniq_stable
1444 In [1]: run -t uniq_stable
1440
1445
1441 IPython CPU timings (estimated):\\
1446 IPython CPU timings (estimated):\\
1442 User : 0.19597 s.\\
1447 User : 0.19597 s.\\
1443 System: 0.0 s.\\
1448 System: 0.0 s.\\
1444
1449
1445 In [2]: run -t -N5 uniq_stable
1450 In [2]: run -t -N5 uniq_stable
1446
1451
1447 IPython CPU timings (estimated):\\
1452 IPython CPU timings (estimated):\\
1448 Total runs performed: 5\\
1453 Total runs performed: 5\\
1449 Times : Total Per run\\
1454 Times : Total Per run\\
1450 User : 0.910862 s, 0.1821724 s.\\
1455 User : 0.910862 s, 0.1821724 s.\\
1451 System: 0.0 s, 0.0 s.
1456 System: 0.0 s, 0.0 s.
1452
1457
1453 -d: run your program under the control of pdb, the Python debugger.
1458 -d: run your program under the control of pdb, the Python debugger.
1454 This allows you to execute your program step by step, watch variables,
1459 This allows you to execute your program step by step, watch variables,
1455 etc. Internally, what IPython does is similar to calling:
1460 etc. Internally, what IPython does is similar to calling:
1456
1461
1457 pdb.run('execfile("YOURFILENAME")')
1462 pdb.run('execfile("YOURFILENAME")')
1458
1463
1459 with a breakpoint set on line 1 of your file. You can change the line
1464 with a breakpoint set on line 1 of your file. You can change the line
1460 number for this automatic breakpoint to be <N> by using the -bN option
1465 number for this automatic breakpoint to be <N> by using the -bN option
1461 (where N must be an integer). For example:
1466 (where N must be an integer). For example:
1462
1467
1463 %run -d -b40 myscript
1468 %run -d -b40 myscript
1464
1469
1465 will set the first breakpoint at line 40 in myscript.py. Note that
1470 will set the first breakpoint at line 40 in myscript.py. Note that
1466 the first breakpoint must be set on a line which actually does
1471 the first breakpoint must be set on a line which actually does
1467 something (not a comment or docstring) for it to stop execution.
1472 something (not a comment or docstring) for it to stop execution.
1468
1473
1469 When the pdb debugger starts, you will see a (Pdb) prompt. You must
1474 When the pdb debugger starts, you will see a (Pdb) prompt. You must
1470 first enter 'c' (without qoutes) to start execution up to the first
1475 first enter 'c' (without qoutes) to start execution up to the first
1471 breakpoint.
1476 breakpoint.
1472
1477
1473 Entering 'help' gives information about the use of the debugger. You
1478 Entering 'help' gives information about the use of the debugger. You
1474 can easily see pdb's full documentation with "import pdb;pdb.help()"
1479 can easily see pdb's full documentation with "import pdb;pdb.help()"
1475 at a prompt.
1480 at a prompt.
1476
1481
1477 -p: run program under the control of the Python profiler module (which
1482 -p: run program under the control of the Python profiler module (which
1478 prints a detailed report of execution times, function calls, etc).
1483 prints a detailed report of execution times, function calls, etc).
1479
1484
1480 You can pass other options after -p which affect the behavior of the
1485 You can pass other options after -p which affect the behavior of the
1481 profiler itself. See the docs for %prun for details.
1486 profiler itself. See the docs for %prun for details.
1482
1487
1483 In this mode, the program's variables do NOT propagate back to the
1488 In this mode, the program's variables do NOT propagate back to the
1484 IPython interactive namespace (because they remain in the namespace
1489 IPython interactive namespace (because they remain in the namespace
1485 where the profiler executes them).
1490 where the profiler executes them).
1486
1491
1487 Internally this triggers a call to %prun, see its documentation for
1492 Internally this triggers a call to %prun, see its documentation for
1488 details on the options available specifically for profiling."""
1493 details on the options available specifically for profiling."""
1489
1494
1490 # get arguments and set sys.argv for program to be run.
1495 # get arguments and set sys.argv for program to be run.
1491 opts,arg_lst = self.parse_options(parameter_s,'nidtN:b:pD:l:rs:T:e',
1496 opts,arg_lst = self.parse_options(parameter_s,'nidtN:b:pD:l:rs:T:e',
1492 mode='list',list_all=1)
1497 mode='list',list_all=1)
1493
1498
1494 try:
1499 try:
1495 filename = get_py_filename(arg_lst[0])
1500 filename = get_py_filename(arg_lst[0])
1496 except IndexError:
1501 except IndexError:
1497 warn('you must provide at least a filename.')
1502 warn('you must provide at least a filename.')
1498 print '\n%run:\n',OInspect.getdoc(self.magic_run)
1503 print '\n%run:\n',OInspect.getdoc(self.magic_run)
1499 return
1504 return
1500 except IOError,msg:
1505 except IOError,msg:
1501 error(msg)
1506 error(msg)
1502 return
1507 return
1503
1508
1504 # Control the response to exit() calls made by the script being run
1509 # Control the response to exit() calls made by the script being run
1505 exit_ignore = opts.has_key('e')
1510 exit_ignore = opts.has_key('e')
1506
1511
1507 # Make sure that the running script gets a proper sys.argv as if it
1512 # Make sure that the running script gets a proper sys.argv as if it
1508 # were run from a system shell.
1513 # were run from a system shell.
1509 save_argv = sys.argv # save it for later restoring
1514 save_argv = sys.argv # save it for later restoring
1510 sys.argv = [filename]+ arg_lst[1:] # put in the proper filename
1515 sys.argv = [filename]+ arg_lst[1:] # put in the proper filename
1511
1516
1512 if opts.has_key('i'):
1517 if opts.has_key('i'):
1513 prog_ns = self.shell.user_ns
1518 prog_ns = self.shell.user_ns
1514 __name__save = self.shell.user_ns['__name__']
1519 __name__save = self.shell.user_ns['__name__']
1515 prog_ns['__name__'] = '__main__'
1520 prog_ns['__name__'] = '__main__'
1516 else:
1521 else:
1517 if opts.has_key('n'):
1522 if opts.has_key('n'):
1518 name = os.path.splitext(os.path.basename(filename))[0]
1523 name = os.path.splitext(os.path.basename(filename))[0]
1519 else:
1524 else:
1520 name = '__main__'
1525 name = '__main__'
1521 prog_ns = {'__name__':name}
1526 prog_ns = {'__name__':name}
1522
1527
1523 # Since '%run foo' emulates 'python foo.py' at the cmd line, we must
1528 # Since '%run foo' emulates 'python foo.py' at the cmd line, we must
1524 # set the __file__ global in the script's namespace
1529 # set the __file__ global in the script's namespace
1525 prog_ns['__file__'] = filename
1530 prog_ns['__file__'] = filename
1526
1531
1527 # pickle fix. See iplib for an explanation. But we need to make sure
1532 # pickle fix. See iplib for an explanation. But we need to make sure
1528 # that, if we overwrite __main__, we replace it at the end
1533 # that, if we overwrite __main__, we replace it at the end
1529 if prog_ns['__name__'] == '__main__':
1534 if prog_ns['__name__'] == '__main__':
1530 restore_main = sys.modules['__main__']
1535 restore_main = sys.modules['__main__']
1531 else:
1536 else:
1532 restore_main = False
1537 restore_main = False
1533
1538
1534 sys.modules[prog_ns['__name__']] = FakeModule(prog_ns)
1539 sys.modules[prog_ns['__name__']] = FakeModule(prog_ns)
1535
1540
1536 stats = None
1541 stats = None
1537 try:
1542 try:
1538 if self.shell.has_readline:
1543 if self.shell.has_readline:
1539 self.shell.savehist()
1544 self.shell.savehist()
1540
1545
1541 if opts.has_key('p'):
1546 if opts.has_key('p'):
1542 stats = self.magic_prun('',0,opts,arg_lst,prog_ns)
1547 stats = self.magic_prun('',0,opts,arg_lst,prog_ns)
1543 else:
1548 else:
1544 if opts.has_key('d'):
1549 if opts.has_key('d'):
1545 deb = Debugger.Pdb(self.shell.rc.colors)
1550 deb = Debugger.Pdb(self.shell.rc.colors)
1546 # reset Breakpoint state, which is moronically kept
1551 # reset Breakpoint state, which is moronically kept
1547 # in a class
1552 # in a class
1548 bdb.Breakpoint.next = 1
1553 bdb.Breakpoint.next = 1
1549 bdb.Breakpoint.bplist = {}
1554 bdb.Breakpoint.bplist = {}
1550 bdb.Breakpoint.bpbynumber = [None]
1555 bdb.Breakpoint.bpbynumber = [None]
1551 # Set an initial breakpoint to stop execution
1556 # Set an initial breakpoint to stop execution
1552 maxtries = 10
1557 maxtries = 10
1553 bp = int(opts.get('b',[1])[0])
1558 bp = int(opts.get('b',[1])[0])
1554 checkline = deb.checkline(filename,bp)
1559 checkline = deb.checkline(filename,bp)
1555 if not checkline:
1560 if not checkline:
1556 for bp in range(bp+1,bp+maxtries+1):
1561 for bp in range(bp+1,bp+maxtries+1):
1557 if deb.checkline(filename,bp):
1562 if deb.checkline(filename,bp):
1558 break
1563 break
1559 else:
1564 else:
1560 msg = ("\nI failed to find a valid line to set "
1565 msg = ("\nI failed to find a valid line to set "
1561 "a breakpoint\n"
1566 "a breakpoint\n"
1562 "after trying up to line: %s.\n"
1567 "after trying up to line: %s.\n"
1563 "Please set a valid breakpoint manually "
1568 "Please set a valid breakpoint manually "
1564 "with the -b option." % bp)
1569 "with the -b option." % bp)
1565 error(msg)
1570 error(msg)
1566 return
1571 return
1567 # if we find a good linenumber, set the breakpoint
1572 # if we find a good linenumber, set the breakpoint
1568 deb.do_break('%s:%s' % (filename,bp))
1573 deb.do_break('%s:%s' % (filename,bp))
1569 # Start file run
1574 # Start file run
1570 print "NOTE: Enter 'c' at the",
1575 print "NOTE: Enter 'c' at the",
1571 print "%s prompt to start your script." % deb.prompt
1576 print "%s prompt to start your script." % deb.prompt
1572 try:
1577 try:
1573 deb.run('execfile("%s")' % filename,prog_ns)
1578 deb.run('execfile("%s")' % filename,prog_ns)
1574
1579
1575 except:
1580 except:
1576 etype, value, tb = sys.exc_info()
1581 etype, value, tb = sys.exc_info()
1577 # Skip three frames in the traceback: the %run one,
1582 # Skip three frames in the traceback: the %run one,
1578 # one inside bdb.py, and the command-line typed by the
1583 # one inside bdb.py, and the command-line typed by the
1579 # user (run by exec in pdb itself).
1584 # user (run by exec in pdb itself).
1580 self.shell.InteractiveTB(etype,value,tb,tb_offset=3)
1585 self.shell.InteractiveTB(etype,value,tb,tb_offset=3)
1581 else:
1586 else:
1582 if runner is None:
1587 if runner is None:
1583 runner = self.shell.safe_execfile
1588 runner = self.shell.safe_execfile
1584 if opts.has_key('t'):
1589 if opts.has_key('t'):
1585 try:
1590 try:
1586 nruns = int(opts['N'][0])
1591 nruns = int(opts['N'][0])
1587 if nruns < 1:
1592 if nruns < 1:
1588 error('Number of runs must be >=1')
1593 error('Number of runs must be >=1')
1589 return
1594 return
1590 except (KeyError):
1595 except (KeyError):
1591 nruns = 1
1596 nruns = 1
1592 if nruns == 1:
1597 if nruns == 1:
1593 t0 = clock2()
1598 t0 = clock2()
1594 runner(filename,prog_ns,prog_ns,
1599 runner(filename,prog_ns,prog_ns,
1595 exit_ignore=exit_ignore)
1600 exit_ignore=exit_ignore)
1596 t1 = clock2()
1601 t1 = clock2()
1597 t_usr = t1[0]-t0[0]
1602 t_usr = t1[0]-t0[0]
1598 t_sys = t1[1]-t1[1]
1603 t_sys = t1[1]-t1[1]
1599 print "\nIPython CPU timings (estimated):"
1604 print "\nIPython CPU timings (estimated):"
1600 print " User : %10s s." % t_usr
1605 print " User : %10s s." % t_usr
1601 print " System: %10s s." % t_sys
1606 print " System: %10s s." % t_sys
1602 else:
1607 else:
1603 runs = range(nruns)
1608 runs = range(nruns)
1604 t0 = clock2()
1609 t0 = clock2()
1605 for nr in runs:
1610 for nr in runs:
1606 runner(filename,prog_ns,prog_ns,
1611 runner(filename,prog_ns,prog_ns,
1607 exit_ignore=exit_ignore)
1612 exit_ignore=exit_ignore)
1608 t1 = clock2()
1613 t1 = clock2()
1609 t_usr = t1[0]-t0[0]
1614 t_usr = t1[0]-t0[0]
1610 t_sys = t1[1]-t1[1]
1615 t_sys = t1[1]-t1[1]
1611 print "\nIPython CPU timings (estimated):"
1616 print "\nIPython CPU timings (estimated):"
1612 print "Total runs performed:",nruns
1617 print "Total runs performed:",nruns
1613 print " Times : %10s %10s" % ('Total','Per run')
1618 print " Times : %10s %10s" % ('Total','Per run')
1614 print " User : %10s s, %10s s." % (t_usr,t_usr/nruns)
1619 print " User : %10s s, %10s s." % (t_usr,t_usr/nruns)
1615 print " System: %10s s, %10s s." % (t_sys,t_sys/nruns)
1620 print " System: %10s s, %10s s." % (t_sys,t_sys/nruns)
1616
1621
1617 else:
1622 else:
1618 runner(filename,prog_ns,prog_ns,exit_ignore=exit_ignore)
1623 runner(filename,prog_ns,prog_ns,exit_ignore=exit_ignore)
1619 if opts.has_key('i'):
1624 if opts.has_key('i'):
1620 self.shell.user_ns['__name__'] = __name__save
1625 self.shell.user_ns['__name__'] = __name__save
1621 else:
1626 else:
1622 # update IPython interactive namespace
1627 # update IPython interactive namespace
1623 del prog_ns['__name__']
1628 del prog_ns['__name__']
1624 self.shell.user_ns.update(prog_ns)
1629 self.shell.user_ns.update(prog_ns)
1625 finally:
1630 finally:
1626 sys.argv = save_argv
1631 sys.argv = save_argv
1627 if restore_main:
1632 if restore_main:
1628 sys.modules['__main__'] = restore_main
1633 sys.modules['__main__'] = restore_main
1629 if self.shell.has_readline:
1634 if self.shell.has_readline:
1630 self.shell.readline.read_history_file(self.shell.histfile)
1635 self.shell.readline.read_history_file(self.shell.histfile)
1631
1636
1632 return stats
1637 return stats
1633
1638
1634 def magic_runlog(self, parameter_s =''):
1639 def magic_runlog(self, parameter_s =''):
1635 """Run files as logs.
1640 """Run files as logs.
1636
1641
1637 Usage:\\
1642 Usage:\\
1638 %runlog file1 file2 ...
1643 %runlog file1 file2 ...
1639
1644
1640 Run the named files (treating them as log files) in sequence inside
1645 Run the named files (treating them as log files) in sequence inside
1641 the interpreter, and return to the prompt. This is much slower than
1646 the interpreter, and return to the prompt. This is much slower than
1642 %run because each line is executed in a try/except block, but it
1647 %run because each line is executed in a try/except block, but it
1643 allows running files with syntax errors in them.
1648 allows running files with syntax errors in them.
1644
1649
1645 Normally IPython will guess when a file is one of its own logfiles, so
1650 Normally IPython will guess when a file is one of its own logfiles, so
1646 you can typically use %run even for logs. This shorthand allows you to
1651 you can typically use %run even for logs. This shorthand allows you to
1647 force any file to be treated as a log file."""
1652 force any file to be treated as a log file."""
1648
1653
1649 for f in parameter_s.split():
1654 for f in parameter_s.split():
1650 self.shell.safe_execfile(f,self.shell.user_ns,
1655 self.shell.safe_execfile(f,self.shell.user_ns,
1651 self.shell.user_ns,islog=1)
1656 self.shell.user_ns,islog=1)
1652
1657
1653 def magic_timeit(self, parameter_s =''):
1658 def magic_timeit(self, parameter_s =''):
1654 """Time execution of a Python statement or expression
1659 """Time execution of a Python statement or expression
1655
1660
1656 Usage:\\
1661 Usage:\\
1657 %timeit [-n<N> -r<R> [-t|-c]] statement
1662 %timeit [-n<N> -r<R> [-t|-c]] statement
1658
1663
1659 Time execution of a Python statement or expression using the timeit
1664 Time execution of a Python statement or expression using the timeit
1660 module.
1665 module.
1661
1666
1662 Options:
1667 Options:
1663 -n<N>: execute the given statement <N> times in a loop. If this value
1668 -n<N>: execute the given statement <N> times in a loop. If this value
1664 is not given, a fitting value is chosen.
1669 is not given, a fitting value is chosen.
1665
1670
1666 -r<R>: repeat the loop iteration <R> times and take the best result.
1671 -r<R>: repeat the loop iteration <R> times and take the best result.
1667 Default: 3
1672 Default: 3
1668
1673
1669 -t: use time.time to measure the time, which is the default on Unix.
1674 -t: use time.time to measure the time, which is the default on Unix.
1670 This function measures wall time.
1675 This function measures wall time.
1671
1676
1672 -c: use time.clock to measure the time, which is the default on
1677 -c: use time.clock to measure the time, which is the default on
1673 Windows and measures wall time. On Unix, resource.getrusage is used
1678 Windows and measures wall time. On Unix, resource.getrusage is used
1674 instead and returns the CPU user time.
1679 instead and returns the CPU user time.
1675
1680
1676 -p<P>: use a precision of <P> digits to display the timing result.
1681 -p<P>: use a precision of <P> digits to display the timing result.
1677 Default: 3
1682 Default: 3
1678
1683
1679
1684
1680 Examples:\\
1685 Examples:\\
1681 In [1]: %timeit pass
1686 In [1]: %timeit pass
1682 10000000 loops, best of 3: 53.3 ns per loop
1687 10000000 loops, best of 3: 53.3 ns per loop
1683
1688
1684 In [2]: u = None
1689 In [2]: u = None
1685
1690
1686 In [3]: %timeit u is None
1691 In [3]: %timeit u is None
1687 10000000 loops, best of 3: 184 ns per loop
1692 10000000 loops, best of 3: 184 ns per loop
1688
1693
1689 In [4]: %timeit -r 4 u == None
1694 In [4]: %timeit -r 4 u == None
1690 1000000 loops, best of 4: 242 ns per loop
1695 1000000 loops, best of 4: 242 ns per loop
1691
1696
1692 In [5]: import time
1697 In [5]: import time
1693
1698
1694 In [6]: %timeit -n1 time.sleep(2)
1699 In [6]: %timeit -n1 time.sleep(2)
1695 1 loops, best of 3: 2 s per loop
1700 1 loops, best of 3: 2 s per loop
1696
1701
1697
1702
1698 The times reported by %timeit will be slightly higher than those
1703 The times reported by %timeit will be slightly higher than those
1699 reported by the timeit.py script when variables are accessed. This is
1704 reported by the timeit.py script when variables are accessed. This is
1700 due to the fact that %timeit executes the statement in the namespace
1705 due to the fact that %timeit executes the statement in the namespace
1701 of the shell, compared with timeit.py, which uses a single setup
1706 of the shell, compared with timeit.py, which uses a single setup
1702 statement to import function or create variables. Generally, the bias
1707 statement to import function or create variables. Generally, the bias
1703 does not matter as long as results from timeit.py are not mixed with
1708 does not matter as long as results from timeit.py are not mixed with
1704 those from %timeit."""
1709 those from %timeit."""
1705
1710
1706 import timeit
1711 import timeit
1707 import math
1712 import math
1708
1713
1709 units = ["s", "ms", "\xc2\xb5s", "ns"]
1714 units = ["s", "ms", "\xc2\xb5s", "ns"]
1710 scaling = [1, 1e3, 1e6, 1e9]
1715 scaling = [1, 1e3, 1e6, 1e9]
1711
1716
1712 opts, stmt = self.parse_options(parameter_s,'n:r:tcp:',
1717 opts, stmt = self.parse_options(parameter_s,'n:r:tcp:',
1713 posix=False)
1718 posix=False)
1714 if stmt == "":
1719 if stmt == "":
1715 return
1720 return
1716 timefunc = timeit.default_timer
1721 timefunc = timeit.default_timer
1717 number = int(getattr(opts, "n", 0))
1722 number = int(getattr(opts, "n", 0))
1718 repeat = int(getattr(opts, "r", timeit.default_repeat))
1723 repeat = int(getattr(opts, "r", timeit.default_repeat))
1719 precision = int(getattr(opts, "p", 3))
1724 precision = int(getattr(opts, "p", 3))
1720 if hasattr(opts, "t"):
1725 if hasattr(opts, "t"):
1721 timefunc = time.time
1726 timefunc = time.time
1722 if hasattr(opts, "c"):
1727 if hasattr(opts, "c"):
1723 timefunc = clock
1728 timefunc = clock
1724
1729
1725 timer = timeit.Timer(timer=timefunc)
1730 timer = timeit.Timer(timer=timefunc)
1726 # this code has tight coupling to the inner workings of timeit.Timer,
1731 # this code has tight coupling to the inner workings of timeit.Timer,
1727 # but is there a better way to achieve that the code stmt has access
1732 # but is there a better way to achieve that the code stmt has access
1728 # to the shell namespace?
1733 # to the shell namespace?
1729
1734
1730 src = timeit.template % {'stmt': timeit.reindent(stmt, 8),
1735 src = timeit.template % {'stmt': timeit.reindent(stmt, 8),
1731 'setup': "pass"}
1736 'setup': "pass"}
1732 code = compile(src, "<magic-timeit>", "exec")
1737 code = compile(src, "<magic-timeit>", "exec")
1733 ns = {}
1738 ns = {}
1734 exec code in self.shell.user_ns, ns
1739 exec code in self.shell.user_ns, ns
1735 timer.inner = ns["inner"]
1740 timer.inner = ns["inner"]
1736
1741
1737 if number == 0:
1742 if number == 0:
1738 # determine number so that 0.2 <= total time < 2.0
1743 # determine number so that 0.2 <= total time < 2.0
1739 number = 1
1744 number = 1
1740 for i in range(1, 10):
1745 for i in range(1, 10):
1741 number *= 10
1746 number *= 10
1742 if timer.timeit(number) >= 0.2:
1747 if timer.timeit(number) >= 0.2:
1743 break
1748 break
1744
1749
1745 best = min(timer.repeat(repeat, number)) / number
1750 best = min(timer.repeat(repeat, number)) / number
1746
1751
1747 if best > 0.0:
1752 if best > 0.0:
1748 order = min(-int(math.floor(math.log10(best)) // 3), 3)
1753 order = min(-int(math.floor(math.log10(best)) // 3), 3)
1749 else:
1754 else:
1750 order = 3
1755 order = 3
1751 print "%d loops, best of %d: %.*g %s per loop" % (number, repeat,
1756 print "%d loops, best of %d: %.*g %s per loop" % (number, repeat,
1752 precision,
1757 precision,
1753 best * scaling[order],
1758 best * scaling[order],
1754 units[order])
1759 units[order])
1755
1760
1756 def magic_time(self,parameter_s = ''):
1761 def magic_time(self,parameter_s = ''):
1757 """Time execution of a Python statement or expression.
1762 """Time execution of a Python statement or expression.
1758
1763
1759 The CPU and wall clock times are printed, and the value of the
1764 The CPU and wall clock times are printed, and the value of the
1760 expression (if any) is returned. Note that under Win32, system time
1765 expression (if any) is returned. Note that under Win32, system time
1761 is always reported as 0, since it can not be measured.
1766 is always reported as 0, since it can not be measured.
1762
1767
1763 This function provides very basic timing functionality. In Python
1768 This function provides very basic timing functionality. In Python
1764 2.3, the timeit module offers more control and sophistication, so this
1769 2.3, the timeit module offers more control and sophistication, so this
1765 could be rewritten to use it (patches welcome).
1770 could be rewritten to use it (patches welcome).
1766
1771
1767 Some examples:
1772 Some examples:
1768
1773
1769 In [1]: time 2**128
1774 In [1]: time 2**128
1770 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1775 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1771 Wall time: 0.00
1776 Wall time: 0.00
1772 Out[1]: 340282366920938463463374607431768211456L
1777 Out[1]: 340282366920938463463374607431768211456L
1773
1778
1774 In [2]: n = 1000000
1779 In [2]: n = 1000000
1775
1780
1776 In [3]: time sum(range(n))
1781 In [3]: time sum(range(n))
1777 CPU times: user 1.20 s, sys: 0.05 s, total: 1.25 s
1782 CPU times: user 1.20 s, sys: 0.05 s, total: 1.25 s
1778 Wall time: 1.37
1783 Wall time: 1.37
1779 Out[3]: 499999500000L
1784 Out[3]: 499999500000L
1780
1785
1781 In [4]: time print 'hello world'
1786 In [4]: time print 'hello world'
1782 hello world
1787 hello world
1783 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1788 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1784 Wall time: 0.00
1789 Wall time: 0.00
1785 """
1790 """
1786
1791
1787 # fail immediately if the given expression can't be compiled
1792 # fail immediately if the given expression can't be compiled
1788 try:
1793 try:
1789 mode = 'eval'
1794 mode = 'eval'
1790 code = compile(parameter_s,'<timed eval>',mode)
1795 code = compile(parameter_s,'<timed eval>',mode)
1791 except SyntaxError:
1796 except SyntaxError:
1792 mode = 'exec'
1797 mode = 'exec'
1793 code = compile(parameter_s,'<timed exec>',mode)
1798 code = compile(parameter_s,'<timed exec>',mode)
1794 # skew measurement as little as possible
1799 # skew measurement as little as possible
1795 glob = self.shell.user_ns
1800 glob = self.shell.user_ns
1796 clk = clock2
1801 clk = clock2
1797 wtime = time.time
1802 wtime = time.time
1798 # time execution
1803 # time execution
1799 wall_st = wtime()
1804 wall_st = wtime()
1800 if mode=='eval':
1805 if mode=='eval':
1801 st = clk()
1806 st = clk()
1802 out = eval(code,glob)
1807 out = eval(code,glob)
1803 end = clk()
1808 end = clk()
1804 else:
1809 else:
1805 st = clk()
1810 st = clk()
1806 exec code in glob
1811 exec code in glob
1807 end = clk()
1812 end = clk()
1808 out = None
1813 out = None
1809 wall_end = wtime()
1814 wall_end = wtime()
1810 # Compute actual times and report
1815 # Compute actual times and report
1811 wall_time = wall_end-wall_st
1816 wall_time = wall_end-wall_st
1812 cpu_user = end[0]-st[0]
1817 cpu_user = end[0]-st[0]
1813 cpu_sys = end[1]-st[1]
1818 cpu_sys = end[1]-st[1]
1814 cpu_tot = cpu_user+cpu_sys
1819 cpu_tot = cpu_user+cpu_sys
1815 print "CPU times: user %.2f s, sys: %.2f s, total: %.2f s" % \
1820 print "CPU times: user %.2f s, sys: %.2f s, total: %.2f s" % \
1816 (cpu_user,cpu_sys,cpu_tot)
1821 (cpu_user,cpu_sys,cpu_tot)
1817 print "Wall time: %.2f" % wall_time
1822 print "Wall time: %.2f" % wall_time
1818 return out
1823 return out
1819
1824
1820 def magic_macro(self,parameter_s = ''):
1825 def magic_macro(self,parameter_s = ''):
1821 """Define a set of input lines as a macro for future re-execution.
1826 """Define a set of input lines as a macro for future re-execution.
1822
1827
1823 Usage:\\
1828 Usage:\\
1824 %macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
1829 %macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
1825
1830
1826 Options:
1831 Options:
1827
1832
1828 -r: use 'raw' input. By default, the 'processed' history is used,
1833 -r: use 'raw' input. By default, the 'processed' history is used,
1829 so that magics are loaded in their transformed version to valid
1834 so that magics are loaded in their transformed version to valid
1830 Python. If this option is given, the raw input as typed as the
1835 Python. If this option is given, the raw input as typed as the
1831 command line is used instead.
1836 command line is used instead.
1832
1837
1833 This will define a global variable called `name` which is a string
1838 This will define a global variable called `name` which is a string
1834 made of joining the slices and lines you specify (n1,n2,... numbers
1839 made of joining the slices and lines you specify (n1,n2,... numbers
1835 above) from your input history into a single string. This variable
1840 above) from your input history into a single string. This variable
1836 acts like an automatic function which re-executes those lines as if
1841 acts like an automatic function which re-executes those lines as if
1837 you had typed them. You just type 'name' at the prompt and the code
1842 you had typed them. You just type 'name' at the prompt and the code
1838 executes.
1843 executes.
1839
1844
1840 The notation for indicating number ranges is: n1-n2 means 'use line
1845 The notation for indicating number ranges is: n1-n2 means 'use line
1841 numbers n1,...n2' (the endpoint is included). That is, '5-7' means
1846 numbers n1,...n2' (the endpoint is included). That is, '5-7' means
1842 using the lines numbered 5,6 and 7.
1847 using the lines numbered 5,6 and 7.
1843
1848
1844 Note: as a 'hidden' feature, you can also use traditional python slice
1849 Note: as a 'hidden' feature, you can also use traditional python slice
1845 notation, where N:M means numbers N through M-1.
1850 notation, where N:M means numbers N through M-1.
1846
1851
1847 For example, if your history contains (%hist prints it):
1852 For example, if your history contains (%hist prints it):
1848
1853
1849 44: x=1\\
1854 44: x=1\\
1850 45: y=3\\
1855 45: y=3\\
1851 46: z=x+y\\
1856 46: z=x+y\\
1852 47: print x\\
1857 47: print x\\
1853 48: a=5\\
1858 48: a=5\\
1854 49: print 'x',x,'y',y\\
1859 49: print 'x',x,'y',y\\
1855
1860
1856 you can create a macro with lines 44 through 47 (included) and line 49
1861 you can create a macro with lines 44 through 47 (included) and line 49
1857 called my_macro with:
1862 called my_macro with:
1858
1863
1859 In [51]: %macro my_macro 44-47 49
1864 In [51]: %macro my_macro 44-47 49
1860
1865
1861 Now, typing `my_macro` (without quotes) will re-execute all this code
1866 Now, typing `my_macro` (without quotes) will re-execute all this code
1862 in one pass.
1867 in one pass.
1863
1868
1864 You don't need to give the line-numbers in order, and any given line
1869 You don't need to give the line-numbers in order, and any given line
1865 number can appear multiple times. You can assemble macros with any
1870 number can appear multiple times. You can assemble macros with any
1866 lines from your input history in any order.
1871 lines from your input history in any order.
1867
1872
1868 The macro is a simple object which holds its value in an attribute,
1873 The macro is a simple object which holds its value in an attribute,
1869 but IPython's display system checks for macros and executes them as
1874 but IPython's display system checks for macros and executes them as
1870 code instead of printing them when you type their name.
1875 code instead of printing them when you type their name.
1871
1876
1872 You can view a macro's contents by explicitly printing it with:
1877 You can view a macro's contents by explicitly printing it with:
1873
1878
1874 'print macro_name'.
1879 'print macro_name'.
1875
1880
1876 For one-off cases which DON'T contain magic function calls in them you
1881 For one-off cases which DON'T contain magic function calls in them you
1877 can obtain similar results by explicitly executing slices from your
1882 can obtain similar results by explicitly executing slices from your
1878 input history with:
1883 input history with:
1879
1884
1880 In [60]: exec In[44:48]+In[49]"""
1885 In [60]: exec In[44:48]+In[49]"""
1881
1886
1882 opts,args = self.parse_options(parameter_s,'r',mode='list')
1887 opts,args = self.parse_options(parameter_s,'r',mode='list')
1883 name,ranges = args[0], args[1:]
1888 name,ranges = args[0], args[1:]
1884 #print 'rng',ranges # dbg
1889 #print 'rng',ranges # dbg
1885 lines = self.extract_input_slices(ranges,opts.has_key('r'))
1890 lines = self.extract_input_slices(ranges,opts.has_key('r'))
1886 macro = Macro(lines)
1891 macro = Macro(lines)
1887 self.shell.user_ns.update({name:macro})
1892 self.shell.user_ns.update({name:macro})
1888 print 'Macro `%s` created. To execute, type its name (without quotes).' % name
1893 print 'Macro `%s` created. To execute, type its name (without quotes).' % name
1889 print 'Macro contents:'
1894 print 'Macro contents:'
1890 print macro,
1895 print macro,
1891
1896
1892 def magic_save(self,parameter_s = ''):
1897 def magic_save(self,parameter_s = ''):
1893 """Save a set of lines to a given filename.
1898 """Save a set of lines to a given filename.
1894
1899
1895 Usage:\\
1900 Usage:\\
1896 %save [options] filename n1-n2 n3-n4 ... n5 .. n6 ...
1901 %save [options] filename n1-n2 n3-n4 ... n5 .. n6 ...
1897
1902
1898 Options:
1903 Options:
1899
1904
1900 -r: use 'raw' input. By default, the 'processed' history is used,
1905 -r: use 'raw' input. By default, the 'processed' history is used,
1901 so that magics are loaded in their transformed version to valid
1906 so that magics are loaded in their transformed version to valid
1902 Python. If this option is given, the raw input as typed as the
1907 Python. If this option is given, the raw input as typed as the
1903 command line is used instead.
1908 command line is used instead.
1904
1909
1905 This function uses the same syntax as %macro for line extraction, but
1910 This function uses the same syntax as %macro for line extraction, but
1906 instead of creating a macro it saves the resulting string to the
1911 instead of creating a macro it saves the resulting string to the
1907 filename you specify.
1912 filename you specify.
1908
1913
1909 It adds a '.py' extension to the file if you don't do so yourself, and
1914 It adds a '.py' extension to the file if you don't do so yourself, and
1910 it asks for confirmation before overwriting existing files."""
1915 it asks for confirmation before overwriting existing files."""
1911
1916
1912 opts,args = self.parse_options(parameter_s,'r',mode='list')
1917 opts,args = self.parse_options(parameter_s,'r',mode='list')
1913 fname,ranges = args[0], args[1:]
1918 fname,ranges = args[0], args[1:]
1914 if not fname.endswith('.py'):
1919 if not fname.endswith('.py'):
1915 fname += '.py'
1920 fname += '.py'
1916 if os.path.isfile(fname):
1921 if os.path.isfile(fname):
1917 ans = raw_input('File `%s` exists. Overwrite (y/[N])? ' % fname)
1922 ans = raw_input('File `%s` exists. Overwrite (y/[N])? ' % fname)
1918 if ans.lower() not in ['y','yes']:
1923 if ans.lower() not in ['y','yes']:
1919 print 'Operation cancelled.'
1924 print 'Operation cancelled.'
1920 return
1925 return
1921 cmds = ''.join(self.extract_input_slices(ranges,opts.has_key('r')))
1926 cmds = ''.join(self.extract_input_slices(ranges,opts.has_key('r')))
1922 f = file(fname,'w')
1927 f = file(fname,'w')
1923 f.write(cmds)
1928 f.write(cmds)
1924 f.close()
1929 f.close()
1925 print 'The following commands were written to file `%s`:' % fname
1930 print 'The following commands were written to file `%s`:' % fname
1926 print cmds
1931 print cmds
1927
1932
1928 def _edit_macro(self,mname,macro):
1933 def _edit_macro(self,mname,macro):
1929 """open an editor with the macro data in a file"""
1934 """open an editor with the macro data in a file"""
1930 filename = self.shell.mktempfile(macro.value)
1935 filename = self.shell.mktempfile(macro.value)
1931 self.shell.hooks.editor(filename)
1936 self.shell.hooks.editor(filename)
1932
1937
1933 # and make a new macro object, to replace the old one
1938 # and make a new macro object, to replace the old one
1934 mfile = open(filename)
1939 mfile = open(filename)
1935 mvalue = mfile.read()
1940 mvalue = mfile.read()
1936 mfile.close()
1941 mfile.close()
1937 self.shell.user_ns[mname] = Macro(mvalue)
1942 self.shell.user_ns[mname] = Macro(mvalue)
1938
1943
1939 def magic_ed(self,parameter_s=''):
1944 def magic_ed(self,parameter_s=''):
1940 """Alias to %edit."""
1945 """Alias to %edit."""
1941 return self.magic_edit(parameter_s)
1946 return self.magic_edit(parameter_s)
1942
1947
1943 def magic_edit(self,parameter_s='',last_call=['','']):
1948 def magic_edit(self,parameter_s='',last_call=['','']):
1944 """Bring up an editor and execute the resulting code.
1949 """Bring up an editor and execute the resulting code.
1945
1950
1946 Usage:
1951 Usage:
1947 %edit [options] [args]
1952 %edit [options] [args]
1948
1953
1949 %edit runs IPython's editor hook. The default version of this hook is
1954 %edit runs IPython's editor hook. The default version of this hook is
1950 set to call the __IPYTHON__.rc.editor command. This is read from your
1955 set to call the __IPYTHON__.rc.editor command. This is read from your
1951 environment variable $EDITOR. If this isn't found, it will default to
1956 environment variable $EDITOR. If this isn't found, it will default to
1952 vi under Linux/Unix and to notepad under Windows. See the end of this
1957 vi under Linux/Unix and to notepad under Windows. See the end of this
1953 docstring for how to change the editor hook.
1958 docstring for how to change the editor hook.
1954
1959
1955 You can also set the value of this editor via the command line option
1960 You can also set the value of this editor via the command line option
1956 '-editor' or in your ipythonrc file. This is useful if you wish to use
1961 '-editor' or in your ipythonrc file. This is useful if you wish to use
1957 specifically for IPython an editor different from your typical default
1962 specifically for IPython an editor different from your typical default
1958 (and for Windows users who typically don't set environment variables).
1963 (and for Windows users who typically don't set environment variables).
1959
1964
1960 This command allows you to conveniently edit multi-line code right in
1965 This command allows you to conveniently edit multi-line code right in
1961 your IPython session.
1966 your IPython session.
1962
1967
1963 If called without arguments, %edit opens up an empty editor with a
1968 If called without arguments, %edit opens up an empty editor with a
1964 temporary file and will execute the contents of this file when you
1969 temporary file and will execute the contents of this file when you
1965 close it (don't forget to save it!).
1970 close it (don't forget to save it!).
1966
1971
1967
1972
1968 Options:
1973 Options:
1969
1974
1970 -n <number>: open the editor at a specified line number. By default,
1975 -n <number>: open the editor at a specified line number. By default,
1971 the IPython editor hook uses the unix syntax 'editor +N filename', but
1976 the IPython editor hook uses the unix syntax 'editor +N filename', but
1972 you can configure this by providing your own modified hook if your
1977 you can configure this by providing your own modified hook if your
1973 favorite editor supports line-number specifications with a different
1978 favorite editor supports line-number specifications with a different
1974 syntax.
1979 syntax.
1975
1980
1976 -p: this will call the editor with the same data as the previous time
1981 -p: this will call the editor with the same data as the previous time
1977 it was used, regardless of how long ago (in your current session) it
1982 it was used, regardless of how long ago (in your current session) it
1978 was.
1983 was.
1979
1984
1980 -r: use 'raw' input. This option only applies to input taken from the
1985 -r: use 'raw' input. This option only applies to input taken from the
1981 user's history. By default, the 'processed' history is used, so that
1986 user's history. By default, the 'processed' history is used, so that
1982 magics are loaded in their transformed version to valid Python. If
1987 magics are loaded in their transformed version to valid Python. If
1983 this option is given, the raw input as typed as the command line is
1988 this option is given, the raw input as typed as the command line is
1984 used instead. When you exit the editor, it will be executed by
1989 used instead. When you exit the editor, it will be executed by
1985 IPython's own processor.
1990 IPython's own processor.
1986
1991
1987 -x: do not execute the edited code immediately upon exit. This is
1992 -x: do not execute the edited code immediately upon exit. This is
1988 mainly useful if you are editing programs which need to be called with
1993 mainly useful if you are editing programs which need to be called with
1989 command line arguments, which you can then do using %run.
1994 command line arguments, which you can then do using %run.
1990
1995
1991
1996
1992 Arguments:
1997 Arguments:
1993
1998
1994 If arguments are given, the following possibilites exist:
1999 If arguments are given, the following possibilites exist:
1995
2000
1996 - The arguments are numbers or pairs of colon-separated numbers (like
2001 - The arguments are numbers or pairs of colon-separated numbers (like
1997 1 4:8 9). These are interpreted as lines of previous input to be
2002 1 4:8 9). These are interpreted as lines of previous input to be
1998 loaded into the editor. The syntax is the same of the %macro command.
2003 loaded into the editor. The syntax is the same of the %macro command.
1999
2004
2000 - If the argument doesn't start with a number, it is evaluated as a
2005 - If the argument doesn't start with a number, it is evaluated as a
2001 variable and its contents loaded into the editor. You can thus edit
2006 variable and its contents loaded into the editor. You can thus edit
2002 any string which contains python code (including the result of
2007 any string which contains python code (including the result of
2003 previous edits).
2008 previous edits).
2004
2009
2005 - If the argument is the name of an object (other than a string),
2010 - If the argument is the name of an object (other than a string),
2006 IPython will try to locate the file where it was defined and open the
2011 IPython will try to locate the file where it was defined and open the
2007 editor at the point where it is defined. You can use `%edit function`
2012 editor at the point where it is defined. You can use `%edit function`
2008 to load an editor exactly at the point where 'function' is defined,
2013 to load an editor exactly at the point where 'function' is defined,
2009 edit it and have the file be executed automatically.
2014 edit it and have the file be executed automatically.
2010
2015
2011 If the object is a macro (see %macro for details), this opens up your
2016 If the object is a macro (see %macro for details), this opens up your
2012 specified editor with a temporary file containing the macro's data.
2017 specified editor with a temporary file containing the macro's data.
2013 Upon exit, the macro is reloaded with the contents of the file.
2018 Upon exit, the macro is reloaded with the contents of the file.
2014
2019
2015 Note: opening at an exact line is only supported under Unix, and some
2020 Note: opening at an exact line is only supported under Unix, and some
2016 editors (like kedit and gedit up to Gnome 2.8) do not understand the
2021 editors (like kedit and gedit up to Gnome 2.8) do not understand the
2017 '+NUMBER' parameter necessary for this feature. Good editors like
2022 '+NUMBER' parameter necessary for this feature. Good editors like
2018 (X)Emacs, vi, jed, pico and joe all do.
2023 (X)Emacs, vi, jed, pico and joe all do.
2019
2024
2020 - If the argument is not found as a variable, IPython will look for a
2025 - If the argument is not found as a variable, IPython will look for a
2021 file with that name (adding .py if necessary) and load it into the
2026 file with that name (adding .py if necessary) and load it into the
2022 editor. It will execute its contents with execfile() when you exit,
2027 editor. It will execute its contents with execfile() when you exit,
2023 loading any code in the file into your interactive namespace.
2028 loading any code in the file into your interactive namespace.
2024
2029
2025 After executing your code, %edit will return as output the code you
2030 After executing your code, %edit will return as output the code you
2026 typed in the editor (except when it was an existing file). This way
2031 typed in the editor (except when it was an existing file). This way
2027 you can reload the code in further invocations of %edit as a variable,
2032 you can reload the code in further invocations of %edit as a variable,
2028 via _<NUMBER> or Out[<NUMBER>], where <NUMBER> is the prompt number of
2033 via _<NUMBER> or Out[<NUMBER>], where <NUMBER> is the prompt number of
2029 the output.
2034 the output.
2030
2035
2031 Note that %edit is also available through the alias %ed.
2036 Note that %edit is also available through the alias %ed.
2032
2037
2033 This is an example of creating a simple function inside the editor and
2038 This is an example of creating a simple function inside the editor and
2034 then modifying it. First, start up the editor:
2039 then modifying it. First, start up the editor:
2035
2040
2036 In [1]: ed\\
2041 In [1]: ed\\
2037 Editing... done. Executing edited code...\\
2042 Editing... done. Executing edited code...\\
2038 Out[1]: 'def foo():\\n print "foo() was defined in an editing session"\\n'
2043 Out[1]: 'def foo():\\n print "foo() was defined in an editing session"\\n'
2039
2044
2040 We can then call the function foo():
2045 We can then call the function foo():
2041
2046
2042 In [2]: foo()\\
2047 In [2]: foo()\\
2043 foo() was defined in an editing session
2048 foo() was defined in an editing session
2044
2049
2045 Now we edit foo. IPython automatically loads the editor with the
2050 Now we edit foo. IPython automatically loads the editor with the
2046 (temporary) file where foo() was previously defined:
2051 (temporary) file where foo() was previously defined:
2047
2052
2048 In [3]: ed foo\\
2053 In [3]: ed foo\\
2049 Editing... done. Executing edited code...
2054 Editing... done. Executing edited code...
2050
2055
2051 And if we call foo() again we get the modified version:
2056 And if we call foo() again we get the modified version:
2052
2057
2053 In [4]: foo()\\
2058 In [4]: foo()\\
2054 foo() has now been changed!
2059 foo() has now been changed!
2055
2060
2056 Here is an example of how to edit a code snippet successive
2061 Here is an example of how to edit a code snippet successive
2057 times. First we call the editor:
2062 times. First we call the editor:
2058
2063
2059 In [8]: ed\\
2064 In [8]: ed\\
2060 Editing... done. Executing edited code...\\
2065 Editing... done. Executing edited code...\\
2061 hello\\
2066 hello\\
2062 Out[8]: "print 'hello'\\n"
2067 Out[8]: "print 'hello'\\n"
2063
2068
2064 Now we call it again with the previous output (stored in _):
2069 Now we call it again with the previous output (stored in _):
2065
2070
2066 In [9]: ed _\\
2071 In [9]: ed _\\
2067 Editing... done. Executing edited code...\\
2072 Editing... done. Executing edited code...\\
2068 hello world\\
2073 hello world\\
2069 Out[9]: "print 'hello world'\\n"
2074 Out[9]: "print 'hello world'\\n"
2070
2075
2071 Now we call it with the output #8 (stored in _8, also as Out[8]):
2076 Now we call it with the output #8 (stored in _8, also as Out[8]):
2072
2077
2073 In [10]: ed _8\\
2078 In [10]: ed _8\\
2074 Editing... done. Executing edited code...\\
2079 Editing... done. Executing edited code...\\
2075 hello again\\
2080 hello again\\
2076 Out[10]: "print 'hello again'\\n"
2081 Out[10]: "print 'hello again'\\n"
2077
2082
2078
2083
2079 Changing the default editor hook:
2084 Changing the default editor hook:
2080
2085
2081 If you wish to write your own editor hook, you can put it in a
2086 If you wish to write your own editor hook, you can put it in a
2082 configuration file which you load at startup time. The default hook
2087 configuration file which you load at startup time. The default hook
2083 is defined in the IPython.hooks module, and you can use that as a
2088 is defined in the IPython.hooks module, and you can use that as a
2084 starting example for further modifications. That file also has
2089 starting example for further modifications. That file also has
2085 general instructions on how to set a new hook for use once you've
2090 general instructions on how to set a new hook for use once you've
2086 defined it."""
2091 defined it."""
2087
2092
2088 # FIXME: This function has become a convoluted mess. It needs a
2093 # FIXME: This function has become a convoluted mess. It needs a
2089 # ground-up rewrite with clean, simple logic.
2094 # ground-up rewrite with clean, simple logic.
2090
2095
2091 def make_filename(arg):
2096 def make_filename(arg):
2092 "Make a filename from the given args"
2097 "Make a filename from the given args"
2093 try:
2098 try:
2094 filename = get_py_filename(arg)
2099 filename = get_py_filename(arg)
2095 except IOError:
2100 except IOError:
2096 if args.endswith('.py'):
2101 if args.endswith('.py'):
2097 filename = arg
2102 filename = arg
2098 else:
2103 else:
2099 filename = None
2104 filename = None
2100 return filename
2105 return filename
2101
2106
2102 # custom exceptions
2107 # custom exceptions
2103 class DataIsObject(Exception): pass
2108 class DataIsObject(Exception): pass
2104
2109
2105 opts,args = self.parse_options(parameter_s,'prxn:')
2110 opts,args = self.parse_options(parameter_s,'prxn:')
2106 # Set a few locals from the options for convenience:
2111 # Set a few locals from the options for convenience:
2107 opts_p = opts.has_key('p')
2112 opts_p = opts.has_key('p')
2108 opts_r = opts.has_key('r')
2113 opts_r = opts.has_key('r')
2109
2114
2110 # Default line number value
2115 # Default line number value
2111 lineno = opts.get('n',None)
2116 lineno = opts.get('n',None)
2112
2117
2113 if opts_p:
2118 if opts_p:
2114 args = '_%s' % last_call[0]
2119 args = '_%s' % last_call[0]
2115 if not self.shell.user_ns.has_key(args):
2120 if not self.shell.user_ns.has_key(args):
2116 args = last_call[1]
2121 args = last_call[1]
2117
2122
2118 # use last_call to remember the state of the previous call, but don't
2123 # use last_call to remember the state of the previous call, but don't
2119 # let it be clobbered by successive '-p' calls.
2124 # let it be clobbered by successive '-p' calls.
2120 try:
2125 try:
2121 last_call[0] = self.shell.outputcache.prompt_count
2126 last_call[0] = self.shell.outputcache.prompt_count
2122 if not opts_p:
2127 if not opts_p:
2123 last_call[1] = parameter_s
2128 last_call[1] = parameter_s
2124 except:
2129 except:
2125 pass
2130 pass
2126
2131
2127 # by default this is done with temp files, except when the given
2132 # by default this is done with temp files, except when the given
2128 # arg is a filename
2133 # arg is a filename
2129 use_temp = 1
2134 use_temp = 1
2130
2135
2131 if re.match(r'\d',args):
2136 if re.match(r'\d',args):
2132 # Mode where user specifies ranges of lines, like in %macro.
2137 # Mode where user specifies ranges of lines, like in %macro.
2133 # This means that you can't edit files whose names begin with
2138 # This means that you can't edit files whose names begin with
2134 # numbers this way. Tough.
2139 # numbers this way. Tough.
2135 ranges = args.split()
2140 ranges = args.split()
2136 data = ''.join(self.extract_input_slices(ranges,opts_r))
2141 data = ''.join(self.extract_input_slices(ranges,opts_r))
2137 elif args.endswith('.py'):
2142 elif args.endswith('.py'):
2138 filename = make_filename(args)
2143 filename = make_filename(args)
2139 data = ''
2144 data = ''
2140 use_temp = 0
2145 use_temp = 0
2141 elif args:
2146 elif args:
2142 try:
2147 try:
2143 # Load the parameter given as a variable. If not a string,
2148 # Load the parameter given as a variable. If not a string,
2144 # process it as an object instead (below)
2149 # process it as an object instead (below)
2145
2150
2146 #print '*** args',args,'type',type(args) # dbg
2151 #print '*** args',args,'type',type(args) # dbg
2147 data = eval(args,self.shell.user_ns)
2152 data = eval(args,self.shell.user_ns)
2148 if not type(data) in StringTypes:
2153 if not type(data) in StringTypes:
2149 raise DataIsObject
2154 raise DataIsObject
2150
2155
2151 except (NameError,SyntaxError):
2156 except (NameError,SyntaxError):
2152 # given argument is not a variable, try as a filename
2157 # given argument is not a variable, try as a filename
2153 filename = make_filename(args)
2158 filename = make_filename(args)
2154 if filename is None:
2159 if filename is None:
2155 warn("Argument given (%s) can't be found as a variable "
2160 warn("Argument given (%s) can't be found as a variable "
2156 "or as a filename." % args)
2161 "or as a filename." % args)
2157 return
2162 return
2158
2163
2159 data = ''
2164 data = ''
2160 use_temp = 0
2165 use_temp = 0
2161 except DataIsObject:
2166 except DataIsObject:
2162
2167
2163 # macros have a special edit function
2168 # macros have a special edit function
2164 if isinstance(data,Macro):
2169 if isinstance(data,Macro):
2165 self._edit_macro(args,data)
2170 self._edit_macro(args,data)
2166 return
2171 return
2167
2172
2168 # For objects, try to edit the file where they are defined
2173 # For objects, try to edit the file where they are defined
2169 try:
2174 try:
2170 filename = inspect.getabsfile(data)
2175 filename = inspect.getabsfile(data)
2171 datafile = 1
2176 datafile = 1
2172 except TypeError:
2177 except TypeError:
2173 filename = make_filename(args)
2178 filename = make_filename(args)
2174 datafile = 1
2179 datafile = 1
2175 warn('Could not find file where `%s` is defined.\n'
2180 warn('Could not find file where `%s` is defined.\n'
2176 'Opening a file named `%s`' % (args,filename))
2181 'Opening a file named `%s`' % (args,filename))
2177 # Now, make sure we can actually read the source (if it was in
2182 # Now, make sure we can actually read the source (if it was in
2178 # a temp file it's gone by now).
2183 # a temp file it's gone by now).
2179 if datafile:
2184 if datafile:
2180 try:
2185 try:
2181 if lineno is None:
2186 if lineno is None:
2182 lineno = inspect.getsourcelines(data)[1]
2187 lineno = inspect.getsourcelines(data)[1]
2183 except IOError:
2188 except IOError:
2184 filename = make_filename(args)
2189 filename = make_filename(args)
2185 if filename is None:
2190 if filename is None:
2186 warn('The file `%s` where `%s` was defined cannot '
2191 warn('The file `%s` where `%s` was defined cannot '
2187 'be read.' % (filename,data))
2192 'be read.' % (filename,data))
2188 return
2193 return
2189 use_temp = 0
2194 use_temp = 0
2190 else:
2195 else:
2191 data = ''
2196 data = ''
2192
2197
2193 if use_temp:
2198 if use_temp:
2194 filename = self.shell.mktempfile(data)
2199 filename = self.shell.mktempfile(data)
2195 print 'IPython will make a temporary file named:',filename
2200 print 'IPython will make a temporary file named:',filename
2196
2201
2197 # do actual editing here
2202 # do actual editing here
2198 print 'Editing...',
2203 print 'Editing...',
2199 sys.stdout.flush()
2204 sys.stdout.flush()
2200 self.shell.hooks.editor(filename,lineno)
2205 self.shell.hooks.editor(filename,lineno)
2201 if opts.has_key('x'): # -x prevents actual execution
2206 if opts.has_key('x'): # -x prevents actual execution
2202 print
2207 print
2203 else:
2208 else:
2204 print 'done. Executing edited code...'
2209 print 'done. Executing edited code...'
2205 if opts_r:
2210 if opts_r:
2206 self.shell.runlines(file_read(filename))
2211 self.shell.runlines(file_read(filename))
2207 else:
2212 else:
2208 self.shell.safe_execfile(filename,self.shell.user_ns)
2213 self.shell.safe_execfile(filename,self.shell.user_ns)
2209 if use_temp:
2214 if use_temp:
2210 try:
2215 try:
2211 return open(filename).read()
2216 return open(filename).read()
2212 except IOError,msg:
2217 except IOError,msg:
2213 if msg.filename == filename:
2218 if msg.filename == filename:
2214 warn('File not found. Did you forget to save?')
2219 warn('File not found. Did you forget to save?')
2215 return
2220 return
2216 else:
2221 else:
2217 self.shell.showtraceback()
2222 self.shell.showtraceback()
2218
2223
2219 def magic_xmode(self,parameter_s = ''):
2224 def magic_xmode(self,parameter_s = ''):
2220 """Switch modes for the exception handlers.
2225 """Switch modes for the exception handlers.
2221
2226
2222 Valid modes: Plain, Context and Verbose.
2227 Valid modes: Plain, Context and Verbose.
2223
2228
2224 If called without arguments, acts as a toggle."""
2229 If called without arguments, acts as a toggle."""
2225
2230
2226 def xmode_switch_err(name):
2231 def xmode_switch_err(name):
2227 warn('Error changing %s exception modes.\n%s' %
2232 warn('Error changing %s exception modes.\n%s' %
2228 (name,sys.exc_info()[1]))
2233 (name,sys.exc_info()[1]))
2229
2234
2230 shell = self.shell
2235 shell = self.shell
2231 new_mode = parameter_s.strip().capitalize()
2236 new_mode = parameter_s.strip().capitalize()
2232 try:
2237 try:
2233 shell.InteractiveTB.set_mode(mode=new_mode)
2238 shell.InteractiveTB.set_mode(mode=new_mode)
2234 print 'Exception reporting mode:',shell.InteractiveTB.mode
2239 print 'Exception reporting mode:',shell.InteractiveTB.mode
2235 except:
2240 except:
2236 xmode_switch_err('user')
2241 xmode_switch_err('user')
2237
2242
2238 # threaded shells use a special handler in sys.excepthook
2243 # threaded shells use a special handler in sys.excepthook
2239 if shell.isthreaded:
2244 if shell.isthreaded:
2240 try:
2245 try:
2241 shell.sys_excepthook.set_mode(mode=new_mode)
2246 shell.sys_excepthook.set_mode(mode=new_mode)
2242 except:
2247 except:
2243 xmode_switch_err('threaded')
2248 xmode_switch_err('threaded')
2244
2249
2245 def magic_colors(self,parameter_s = ''):
2250 def magic_colors(self,parameter_s = ''):
2246 """Switch color scheme for prompts, info system and exception handlers.
2251 """Switch color scheme for prompts, info system and exception handlers.
2247
2252
2248 Currently implemented schemes: NoColor, Linux, LightBG.
2253 Currently implemented schemes: NoColor, Linux, LightBG.
2249
2254
2250 Color scheme names are not case-sensitive."""
2255 Color scheme names are not case-sensitive."""
2251
2256
2252 def color_switch_err(name):
2257 def color_switch_err(name):
2253 warn('Error changing %s color schemes.\n%s' %
2258 warn('Error changing %s color schemes.\n%s' %
2254 (name,sys.exc_info()[1]))
2259 (name,sys.exc_info()[1]))
2255
2260
2256
2261
2257 new_scheme = parameter_s.strip()
2262 new_scheme = parameter_s.strip()
2258 if not new_scheme:
2263 if not new_scheme:
2259 print 'You must specify a color scheme.'
2264 print 'You must specify a color scheme.'
2260 return
2265 return
2261 import IPython.rlineimpl as readline
2266 import IPython.rlineimpl as readline
2262 if not readline.have_readline:
2267 if not readline.have_readline:
2263 msg = """\
2268 msg = """\
2264 Proper color support under MS Windows requires the pyreadline library.
2269 Proper color support under MS Windows requires the pyreadline library.
2265 You can find it at:
2270 You can find it at:
2266 http://ipython.scipy.org/moin/PyReadline/Intro
2271 http://ipython.scipy.org/moin/PyReadline/Intro
2267 Gary's readline needs the ctypes module, from:
2272 Gary's readline needs the ctypes module, from:
2268 http://starship.python.net/crew/theller/ctypes
2273 http://starship.python.net/crew/theller/ctypes
2269 (Note that ctypes is already part of Python versions 2.5 and newer).
2274 (Note that ctypes is already part of Python versions 2.5 and newer).
2270
2275
2271 Defaulting color scheme to 'NoColor'"""
2276 Defaulting color scheme to 'NoColor'"""
2272 new_scheme = 'NoColor'
2277 new_scheme = 'NoColor'
2273 warn(msg)
2278 warn(msg)
2274 # local shortcut
2279 # local shortcut
2275 shell = self.shell
2280 shell = self.shell
2276
2281
2277 # Set prompt colors
2282 # Set prompt colors
2278 try:
2283 try:
2279 shell.outputcache.set_colors(new_scheme)
2284 shell.outputcache.set_colors(new_scheme)
2280 except:
2285 except:
2281 color_switch_err('prompt')
2286 color_switch_err('prompt')
2282 else:
2287 else:
2283 shell.rc.colors = \
2288 shell.rc.colors = \
2284 shell.outputcache.color_table.active_scheme_name
2289 shell.outputcache.color_table.active_scheme_name
2285 # Set exception colors
2290 # Set exception colors
2286 try:
2291 try:
2287 shell.InteractiveTB.set_colors(scheme = new_scheme)
2292 shell.InteractiveTB.set_colors(scheme = new_scheme)
2288 shell.SyntaxTB.set_colors(scheme = new_scheme)
2293 shell.SyntaxTB.set_colors(scheme = new_scheme)
2289 except:
2294 except:
2290 color_switch_err('exception')
2295 color_switch_err('exception')
2291
2296
2292 # threaded shells use a verbose traceback in sys.excepthook
2297 # threaded shells use a verbose traceback in sys.excepthook
2293 if shell.isthreaded:
2298 if shell.isthreaded:
2294 try:
2299 try:
2295 shell.sys_excepthook.set_colors(scheme=new_scheme)
2300 shell.sys_excepthook.set_colors(scheme=new_scheme)
2296 except:
2301 except:
2297 color_switch_err('system exception handler')
2302 color_switch_err('system exception handler')
2298
2303
2299 # Set info (for 'object?') colors
2304 # Set info (for 'object?') colors
2300 if shell.rc.color_info:
2305 if shell.rc.color_info:
2301 try:
2306 try:
2302 shell.inspector.set_active_scheme(new_scheme)
2307 shell.inspector.set_active_scheme(new_scheme)
2303 except:
2308 except:
2304 color_switch_err('object inspector')
2309 color_switch_err('object inspector')
2305 else:
2310 else:
2306 shell.inspector.set_active_scheme('NoColor')
2311 shell.inspector.set_active_scheme('NoColor')
2307
2312
2308 def magic_color_info(self,parameter_s = ''):
2313 def magic_color_info(self,parameter_s = ''):
2309 """Toggle color_info.
2314 """Toggle color_info.
2310
2315
2311 The color_info configuration parameter controls whether colors are
2316 The color_info configuration parameter controls whether colors are
2312 used for displaying object details (by things like %psource, %pfile or
2317 used for displaying object details (by things like %psource, %pfile or
2313 the '?' system). This function toggles this value with each call.
2318 the '?' system). This function toggles this value with each call.
2314
2319
2315 Note that unless you have a fairly recent pager (less works better
2320 Note that unless you have a fairly recent pager (less works better
2316 than more) in your system, using colored object information displays
2321 than more) in your system, using colored object information displays
2317 will not work properly. Test it and see."""
2322 will not work properly. Test it and see."""
2318
2323
2319 self.shell.rc.color_info = 1 - self.shell.rc.color_info
2324 self.shell.rc.color_info = 1 - self.shell.rc.color_info
2320 self.magic_colors(self.shell.rc.colors)
2325 self.magic_colors(self.shell.rc.colors)
2321 print 'Object introspection functions have now coloring:',
2326 print 'Object introspection functions have now coloring:',
2322 print ['OFF','ON'][self.shell.rc.color_info]
2327 print ['OFF','ON'][self.shell.rc.color_info]
2323
2328
2324 def magic_Pprint(self, parameter_s=''):
2329 def magic_Pprint(self, parameter_s=''):
2325 """Toggle pretty printing on/off."""
2330 """Toggle pretty printing on/off."""
2326
2331
2327 self.shell.rc.pprint = 1 - self.shell.rc.pprint
2332 self.shell.rc.pprint = 1 - self.shell.rc.pprint
2328 print 'Pretty printing has been turned', \
2333 print 'Pretty printing has been turned', \
2329 ['OFF','ON'][self.shell.rc.pprint]
2334 ['OFF','ON'][self.shell.rc.pprint]
2330
2335
2331 def magic_exit(self, parameter_s=''):
2336 def magic_exit(self, parameter_s=''):
2332 """Exit IPython, confirming if configured to do so.
2337 """Exit IPython, confirming if configured to do so.
2333
2338
2334 You can configure whether IPython asks for confirmation upon exit by
2339 You can configure whether IPython asks for confirmation upon exit by
2335 setting the confirm_exit flag in the ipythonrc file."""
2340 setting the confirm_exit flag in the ipythonrc file."""
2336
2341
2337 self.shell.exit()
2342 self.shell.exit()
2338
2343
2339 def magic_quit(self, parameter_s=''):
2344 def magic_quit(self, parameter_s=''):
2340 """Exit IPython, confirming if configured to do so (like %exit)"""
2345 """Exit IPython, confirming if configured to do so (like %exit)"""
2341
2346
2342 self.shell.exit()
2347 self.shell.exit()
2343
2348
2344 def magic_Exit(self, parameter_s=''):
2349 def magic_Exit(self, parameter_s=''):
2345 """Exit IPython without confirmation."""
2350 """Exit IPython without confirmation."""
2346
2351
2347 self.shell.exit_now = True
2352 self.shell.exit_now = True
2348
2353
2349 def magic_Quit(self, parameter_s=''):
2354 def magic_Quit(self, parameter_s=''):
2350 """Exit IPython without confirmation (like %Exit)."""
2355 """Exit IPython without confirmation (like %Exit)."""
2351
2356
2352 self.shell.exit_now = True
2357 self.shell.exit_now = True
2353
2358
2354 #......................................................................
2359 #......................................................................
2355 # Functions to implement unix shell-type things
2360 # Functions to implement unix shell-type things
2356
2361
2357 def magic_alias(self, parameter_s = ''):
2362 def magic_alias(self, parameter_s = ''):
2358 """Define an alias for a system command.
2363 """Define an alias for a system command.
2359
2364
2360 '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
2365 '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
2361
2366
2362 Then, typing 'alias_name params' will execute the system command 'cmd
2367 Then, typing 'alias_name params' will execute the system command 'cmd
2363 params' (from your underlying operating system).
2368 params' (from your underlying operating system).
2364
2369
2365 Aliases have lower precedence than magic functions and Python normal
2370 Aliases have lower precedence than magic functions and Python normal
2366 variables, so if 'foo' is both a Python variable and an alias, the
2371 variables, so if 'foo' is both a Python variable and an alias, the
2367 alias can not be executed until 'del foo' removes the Python variable.
2372 alias can not be executed until 'del foo' removes the Python variable.
2368
2373
2369 You can use the %l specifier in an alias definition to represent the
2374 You can use the %l specifier in an alias definition to represent the
2370 whole line when the alias is called. For example:
2375 whole line when the alias is called. For example:
2371
2376
2372 In [2]: alias all echo "Input in brackets: <%l>"\\
2377 In [2]: alias all echo "Input in brackets: <%l>"\\
2373 In [3]: all hello world\\
2378 In [3]: all hello world\\
2374 Input in brackets: <hello world>
2379 Input in brackets: <hello world>
2375
2380
2376 You can also define aliases with parameters using %s specifiers (one
2381 You can also define aliases with parameters using %s specifiers (one
2377 per parameter):
2382 per parameter):
2378
2383
2379 In [1]: alias parts echo first %s second %s\\
2384 In [1]: alias parts echo first %s second %s\\
2380 In [2]: %parts A B\\
2385 In [2]: %parts A B\\
2381 first A second B\\
2386 first A second B\\
2382 In [3]: %parts A\\
2387 In [3]: %parts A\\
2383 Incorrect number of arguments: 2 expected.\\
2388 Incorrect number of arguments: 2 expected.\\
2384 parts is an alias to: 'echo first %s second %s'
2389 parts is an alias to: 'echo first %s second %s'
2385
2390
2386 Note that %l and %s are mutually exclusive. You can only use one or
2391 Note that %l and %s are mutually exclusive. You can only use one or
2387 the other in your aliases.
2392 the other in your aliases.
2388
2393
2389 Aliases expand Python variables just like system calls using ! or !!
2394 Aliases expand Python variables just like system calls using ! or !!
2390 do: all expressions prefixed with '$' get expanded. For details of
2395 do: all expressions prefixed with '$' get expanded. For details of
2391 the semantic rules, see PEP-215:
2396 the semantic rules, see PEP-215:
2392 http://www.python.org/peps/pep-0215.html. This is the library used by
2397 http://www.python.org/peps/pep-0215.html. This is the library used by
2393 IPython for variable expansion. If you want to access a true shell
2398 IPython for variable expansion. If you want to access a true shell
2394 variable, an extra $ is necessary to prevent its expansion by IPython:
2399 variable, an extra $ is necessary to prevent its expansion by IPython:
2395
2400
2396 In [6]: alias show echo\\
2401 In [6]: alias show echo\\
2397 In [7]: PATH='A Python string'\\
2402 In [7]: PATH='A Python string'\\
2398 In [8]: show $PATH\\
2403 In [8]: show $PATH\\
2399 A Python string\\
2404 A Python string\\
2400 In [9]: show $$PATH\\
2405 In [9]: show $$PATH\\
2401 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2406 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2402
2407
2403 You can use the alias facility to acess all of $PATH. See the %rehash
2408 You can use the alias facility to acess all of $PATH. See the %rehash
2404 and %rehashx functions, which automatically create aliases for the
2409 and %rehashx functions, which automatically create aliases for the
2405 contents of your $PATH.
2410 contents of your $PATH.
2406
2411
2407 If called with no parameters, %alias prints the current alias table."""
2412 If called with no parameters, %alias prints the current alias table."""
2408
2413
2409 par = parameter_s.strip()
2414 par = parameter_s.strip()
2410 if not par:
2415 if not par:
2411 stored = self.db.get('stored_aliases', {} )
2416 stored = self.db.get('stored_aliases', {} )
2412 atab = self.shell.alias_table
2417 atab = self.shell.alias_table
2413 aliases = atab.keys()
2418 aliases = atab.keys()
2414 aliases.sort()
2419 aliases.sort()
2415 res = []
2420 res = []
2416 showlast = []
2421 showlast = []
2417 for alias in aliases:
2422 for alias in aliases:
2418 tgt = atab[alias][1]
2423 tgt = atab[alias][1]
2419 # 'interesting' aliases
2424 # 'interesting' aliases
2420 if (alias in stored or
2425 if (alias in stored or
2421 alias != os.path.splitext(tgt)[0] or
2426 alias != os.path.splitext(tgt)[0] or
2422 ' ' in tgt):
2427 ' ' in tgt):
2423 showlast.append((alias, tgt))
2428 showlast.append((alias, tgt))
2424 else:
2429 else:
2425 res.append((alias, tgt ))
2430 res.append((alias, tgt ))
2426
2431
2427 # show most interesting aliases last
2432 # show most interesting aliases last
2428 res.extend(showlast)
2433 res.extend(showlast)
2429 print "Total number of aliases:",len(aliases)
2434 print "Total number of aliases:",len(aliases)
2430 return res
2435 return res
2431 try:
2436 try:
2432 alias,cmd = par.split(None,1)
2437 alias,cmd = par.split(None,1)
2433 except:
2438 except:
2434 print OInspect.getdoc(self.magic_alias)
2439 print OInspect.getdoc(self.magic_alias)
2435 else:
2440 else:
2436 nargs = cmd.count('%s')
2441 nargs = cmd.count('%s')
2437 if nargs>0 and cmd.find('%l')>=0:
2442 if nargs>0 and cmd.find('%l')>=0:
2438 error('The %s and %l specifiers are mutually exclusive '
2443 error('The %s and %l specifiers are mutually exclusive '
2439 'in alias definitions.')
2444 'in alias definitions.')
2440 else: # all looks OK
2445 else: # all looks OK
2441 self.shell.alias_table[alias] = (nargs,cmd)
2446 self.shell.alias_table[alias] = (nargs,cmd)
2442 self.shell.alias_table_validate(verbose=0)
2447 self.shell.alias_table_validate(verbose=0)
2443 # end magic_alias
2448 # end magic_alias
2444
2449
2445 def magic_unalias(self, parameter_s = ''):
2450 def magic_unalias(self, parameter_s = ''):
2446 """Remove an alias"""
2451 """Remove an alias"""
2447
2452
2448 aname = parameter_s.strip()
2453 aname = parameter_s.strip()
2449 if aname in self.shell.alias_table:
2454 if aname in self.shell.alias_table:
2450 del self.shell.alias_table[aname]
2455 del self.shell.alias_table[aname]
2451 stored = self.db.get('stored_aliases', {} )
2456 stored = self.db.get('stored_aliases', {} )
2452 if aname in stored:
2457 if aname in stored:
2453 print "Removing %stored alias",aname
2458 print "Removing %stored alias",aname
2454 del stored[aname]
2459 del stored[aname]
2455 self.db['stored_aliases'] = stored
2460 self.db['stored_aliases'] = stored
2456
2461
2457 def magic_rehash(self, parameter_s = ''):
2462 def magic_rehash(self, parameter_s = ''):
2458 """Update the alias table with all entries in $PATH.
2463 """Update the alias table with all entries in $PATH.
2459
2464
2460 This version does no checks on execute permissions or whether the
2465 This version does no checks on execute permissions or whether the
2461 contents of $PATH are truly files (instead of directories or something
2466 contents of $PATH are truly files (instead of directories or something
2462 else). For such a safer (but slower) version, use %rehashx."""
2467 else). For such a safer (but slower) version, use %rehashx."""
2463
2468
2464 # This function (and rehashx) manipulate the alias_table directly
2469 # This function (and rehashx) manipulate the alias_table directly
2465 # rather than calling magic_alias, for speed reasons. A rehash on a
2470 # rather than calling magic_alias, for speed reasons. A rehash on a
2466 # typical Linux box involves several thousand entries, so efficiency
2471 # typical Linux box involves several thousand entries, so efficiency
2467 # here is a top concern.
2472 # here is a top concern.
2468
2473
2469 path = filter(os.path.isdir,os.environ['PATH'].split(os.pathsep))
2474 path = filter(os.path.isdir,os.environ['PATH'].split(os.pathsep))
2470 alias_table = self.shell.alias_table
2475 alias_table = self.shell.alias_table
2471 for pdir in path:
2476 for pdir in path:
2472 for ff in os.listdir(pdir):
2477 for ff in os.listdir(pdir):
2473 # each entry in the alias table must be (N,name), where
2478 # each entry in the alias table must be (N,name), where
2474 # N is the number of positional arguments of the alias.
2479 # N is the number of positional arguments of the alias.
2475 alias_table[ff] = (0,ff)
2480 alias_table[ff] = (0,ff)
2476 # Make sure the alias table doesn't contain keywords or builtins
2481 # Make sure the alias table doesn't contain keywords or builtins
2477 self.shell.alias_table_validate()
2482 self.shell.alias_table_validate()
2478 # Call again init_auto_alias() so we get 'rm -i' and other modified
2483 # Call again init_auto_alias() so we get 'rm -i' and other modified
2479 # aliases since %rehash will probably clobber them
2484 # aliases since %rehash will probably clobber them
2480 self.shell.init_auto_alias()
2485 self.shell.init_auto_alias()
2481
2486
2482 def magic_rehashx(self, parameter_s = ''):
2487 def magic_rehashx(self, parameter_s = ''):
2483 """Update the alias table with all executable files in $PATH.
2488 """Update the alias table with all executable files in $PATH.
2484
2489
2485 This version explicitly checks that every entry in $PATH is a file
2490 This version explicitly checks that every entry in $PATH is a file
2486 with execute access (os.X_OK), so it is much slower than %rehash.
2491 with execute access (os.X_OK), so it is much slower than %rehash.
2487
2492
2488 Under Windows, it checks executability as a match agains a
2493 Under Windows, it checks executability as a match agains a
2489 '|'-separated string of extensions, stored in the IPython config
2494 '|'-separated string of extensions, stored in the IPython config
2490 variable win_exec_ext. This defaults to 'exe|com|bat'. """
2495 variable win_exec_ext. This defaults to 'exe|com|bat'. """
2491
2496
2492 path = [os.path.abspath(os.path.expanduser(p)) for p in
2497 path = [os.path.abspath(os.path.expanduser(p)) for p in
2493 os.environ['PATH'].split(os.pathsep)]
2498 os.environ['PATH'].split(os.pathsep)]
2494 path = filter(os.path.isdir,path)
2499 path = filter(os.path.isdir,path)
2495
2500
2496 alias_table = self.shell.alias_table
2501 alias_table = self.shell.alias_table
2497 syscmdlist = []
2502 syscmdlist = []
2498 if os.name == 'posix':
2503 if os.name == 'posix':
2499 isexec = lambda fname:os.path.isfile(fname) and \
2504 isexec = lambda fname:os.path.isfile(fname) and \
2500 os.access(fname,os.X_OK)
2505 os.access(fname,os.X_OK)
2501 else:
2506 else:
2502
2507
2503 try:
2508 try:
2504 winext = os.environ['pathext'].replace(';','|').replace('.','')
2509 winext = os.environ['pathext'].replace(';','|').replace('.','')
2505 except KeyError:
2510 except KeyError:
2506 winext = 'exe|com|bat|py'
2511 winext = 'exe|com|bat|py'
2507 if 'py' not in winext:
2512 if 'py' not in winext:
2508 winext += '|py'
2513 winext += '|py'
2509 execre = re.compile(r'(.*)\.(%s)$' % winext,re.IGNORECASE)
2514 execre = re.compile(r'(.*)\.(%s)$' % winext,re.IGNORECASE)
2510 isexec = lambda fname:os.path.isfile(fname) and execre.match(fname)
2515 isexec = lambda fname:os.path.isfile(fname) and execre.match(fname)
2511 savedir = os.getcwd()
2516 savedir = os.getcwd()
2512 try:
2517 try:
2513 # write the whole loop for posix/Windows so we don't have an if in
2518 # write the whole loop for posix/Windows so we don't have an if in
2514 # the innermost part
2519 # the innermost part
2515 if os.name == 'posix':
2520 if os.name == 'posix':
2516 for pdir in path:
2521 for pdir in path:
2517 os.chdir(pdir)
2522 os.chdir(pdir)
2518 for ff in os.listdir(pdir):
2523 for ff in os.listdir(pdir):
2519 if isexec(ff) and ff not in self.shell.no_alias:
2524 if isexec(ff) and ff not in self.shell.no_alias:
2520 # each entry in the alias table must be (N,name),
2525 # each entry in the alias table must be (N,name),
2521 # where N is the number of positional arguments of the
2526 # where N is the number of positional arguments of the
2522 # alias.
2527 # alias.
2523 alias_table[ff] = (0,ff)
2528 alias_table[ff] = (0,ff)
2524 syscmdlist.append(ff)
2529 syscmdlist.append(ff)
2525 else:
2530 else:
2526 for pdir in path:
2531 for pdir in path:
2527 os.chdir(pdir)
2532 os.chdir(pdir)
2528 for ff in os.listdir(pdir):
2533 for ff in os.listdir(pdir):
2529 if isexec(ff) and os.path.splitext(ff)[0] not in self.shell.no_alias:
2534 if isexec(ff) and os.path.splitext(ff)[0] not in self.shell.no_alias:
2530 alias_table[execre.sub(r'\1',ff)] = (0,ff)
2535 alias_table[execre.sub(r'\1',ff)] = (0,ff)
2531 syscmdlist.append(ff)
2536 syscmdlist.append(ff)
2532 # Make sure the alias table doesn't contain keywords or builtins
2537 # Make sure the alias table doesn't contain keywords or builtins
2533 self.shell.alias_table_validate()
2538 self.shell.alias_table_validate()
2534 # Call again init_auto_alias() so we get 'rm -i' and other
2539 # Call again init_auto_alias() so we get 'rm -i' and other
2535 # modified aliases since %rehashx will probably clobber them
2540 # modified aliases since %rehashx will probably clobber them
2536 self.shell.init_auto_alias()
2541 self.shell.init_auto_alias()
2537 db = self.getapi().db
2542 db = self.getapi().db
2538 db['syscmdlist'] = syscmdlist
2543 db['syscmdlist'] = syscmdlist
2539 finally:
2544 finally:
2540 os.chdir(savedir)
2545 os.chdir(savedir)
2541
2546
2542 def magic_pwd(self, parameter_s = ''):
2547 def magic_pwd(self, parameter_s = ''):
2543 """Return the current working directory path."""
2548 """Return the current working directory path."""
2544 return os.getcwd()
2549 return os.getcwd()
2545
2550
2546 def magic_cd(self, parameter_s=''):
2551 def magic_cd(self, parameter_s=''):
2547 """Change the current working directory.
2552 """Change the current working directory.
2548
2553
2549 This command automatically maintains an internal list of directories
2554 This command automatically maintains an internal list of directories
2550 you visit during your IPython session, in the variable _dh. The
2555 you visit during your IPython session, in the variable _dh. The
2551 command %dhist shows this history nicely formatted.
2556 command %dhist shows this history nicely formatted.
2552
2557
2553 Usage:
2558 Usage:
2554
2559
2555 cd 'dir': changes to directory 'dir'.
2560 cd 'dir': changes to directory 'dir'.
2556
2561
2557 cd -: changes to the last visited directory.
2562 cd -: changes to the last visited directory.
2558
2563
2559 cd -<n>: changes to the n-th directory in the directory history.
2564 cd -<n>: changes to the n-th directory in the directory history.
2560
2565
2561 cd -b <bookmark_name>: jump to a bookmark set by %bookmark
2566 cd -b <bookmark_name>: jump to a bookmark set by %bookmark
2562 (note: cd <bookmark_name> is enough if there is no
2567 (note: cd <bookmark_name> is enough if there is no
2563 directory <bookmark_name>, but a bookmark with the name exists.)
2568 directory <bookmark_name>, but a bookmark with the name exists.)
2564
2569
2565 Options:
2570 Options:
2566
2571
2567 -q: quiet. Do not print the working directory after the cd command is
2572 -q: quiet. Do not print the working directory after the cd command is
2568 executed. By default IPython's cd command does print this directory,
2573 executed. By default IPython's cd command does print this directory,
2569 since the default prompts do not display path information.
2574 since the default prompts do not display path information.
2570
2575
2571 Note that !cd doesn't work for this purpose because the shell where
2576 Note that !cd doesn't work for this purpose because the shell where
2572 !command runs is immediately discarded after executing 'command'."""
2577 !command runs is immediately discarded after executing 'command'."""
2573
2578
2574 parameter_s = parameter_s.strip()
2579 parameter_s = parameter_s.strip()
2575 #bkms = self.shell.persist.get("bookmarks",{})
2580 #bkms = self.shell.persist.get("bookmarks",{})
2576
2581
2577 numcd = re.match(r'(-)(\d+)$',parameter_s)
2582 numcd = re.match(r'(-)(\d+)$',parameter_s)
2578 # jump in directory history by number
2583 # jump in directory history by number
2579 if numcd:
2584 if numcd:
2580 nn = int(numcd.group(2))
2585 nn = int(numcd.group(2))
2581 try:
2586 try:
2582 ps = self.shell.user_ns['_dh'][nn]
2587 ps = self.shell.user_ns['_dh'][nn]
2583 except IndexError:
2588 except IndexError:
2584 print 'The requested directory does not exist in history.'
2589 print 'The requested directory does not exist in history.'
2585 return
2590 return
2586 else:
2591 else:
2587 opts = {}
2592 opts = {}
2588 else:
2593 else:
2589 #turn all non-space-escaping backslashes to slashes,
2594 #turn all non-space-escaping backslashes to slashes,
2590 # for c:\windows\directory\names\
2595 # for c:\windows\directory\names\
2591 parameter_s = re.sub(r'\\(?! )','/', parameter_s)
2596 parameter_s = re.sub(r'\\(?! )','/', parameter_s)
2592 opts,ps = self.parse_options(parameter_s,'qb',mode='string')
2597 opts,ps = self.parse_options(parameter_s,'qb',mode='string')
2593 # jump to previous
2598 # jump to previous
2594 if ps == '-':
2599 if ps == '-':
2595 try:
2600 try:
2596 ps = self.shell.user_ns['_dh'][-2]
2601 ps = self.shell.user_ns['_dh'][-2]
2597 except IndexError:
2602 except IndexError:
2598 print 'No previous directory to change to.'
2603 print 'No previous directory to change to.'
2599 return
2604 return
2600 # jump to bookmark if needed
2605 # jump to bookmark if needed
2601 else:
2606 else:
2602 if not os.path.isdir(ps) or opts.has_key('b'):
2607 if not os.path.isdir(ps) or opts.has_key('b'):
2603 bkms = self.db.get('bookmarks', {})
2608 bkms = self.db.get('bookmarks', {})
2604
2609
2605 if bkms.has_key(ps):
2610 if bkms.has_key(ps):
2606 target = bkms[ps]
2611 target = bkms[ps]
2607 print '(bookmark:%s) -> %s' % (ps,target)
2612 print '(bookmark:%s) -> %s' % (ps,target)
2608 ps = target
2613 ps = target
2609 else:
2614 else:
2610 if opts.has_key('b'):
2615 if opts.has_key('b'):
2611 error("Bookmark '%s' not found. "
2616 error("Bookmark '%s' not found. "
2612 "Use '%%bookmark -l' to see your bookmarks." % ps)
2617 "Use '%%bookmark -l' to see your bookmarks." % ps)
2613 return
2618 return
2614
2619
2615 # at this point ps should point to the target dir
2620 # at this point ps should point to the target dir
2616 if ps:
2621 if ps:
2617 try:
2622 try:
2618 os.chdir(os.path.expanduser(ps))
2623 os.chdir(os.path.expanduser(ps))
2619 ttitle = ("IPy:" + (
2624 ttitle = ("IPy:" + (
2620 os.getcwd() == '/' and '/' or os.path.basename(os.getcwd())))
2625 os.getcwd() == '/' and '/' or os.path.basename(os.getcwd())))
2621 platutils.set_term_title(ttitle)
2626 platutils.set_term_title(ttitle)
2622 except OSError:
2627 except OSError:
2623 print sys.exc_info()[1]
2628 print sys.exc_info()[1]
2624 else:
2629 else:
2625 self.shell.user_ns['_dh'].append(os.getcwd())
2630 self.shell.user_ns['_dh'].append(os.getcwd())
2626 else:
2631 else:
2627 os.chdir(self.shell.home_dir)
2632 os.chdir(self.shell.home_dir)
2628 platutils.set_term_title("IPy:~")
2633 platutils.set_term_title("IPy:~")
2629 self.shell.user_ns['_dh'].append(os.getcwd())
2634 self.shell.user_ns['_dh'].append(os.getcwd())
2630 if not 'q' in opts:
2635 if not 'q' in opts:
2631 print self.shell.user_ns['_dh'][-1]
2636 print self.shell.user_ns['_dh'][-1]
2632
2637
2633 def magic_dhist(self, parameter_s=''):
2638 def magic_dhist(self, parameter_s=''):
2634 """Print your history of visited directories.
2639 """Print your history of visited directories.
2635
2640
2636 %dhist -> print full history\\
2641 %dhist -> print full history\\
2637 %dhist n -> print last n entries only\\
2642 %dhist n -> print last n entries only\\
2638 %dhist n1 n2 -> print entries between n1 and n2 (n1 not included)\\
2643 %dhist n1 n2 -> print entries between n1 and n2 (n1 not included)\\
2639
2644
2640 This history is automatically maintained by the %cd command, and
2645 This history is automatically maintained by the %cd command, and
2641 always available as the global list variable _dh. You can use %cd -<n>
2646 always available as the global list variable _dh. You can use %cd -<n>
2642 to go to directory number <n>."""
2647 to go to directory number <n>."""
2643
2648
2644 dh = self.shell.user_ns['_dh']
2649 dh = self.shell.user_ns['_dh']
2645 if parameter_s:
2650 if parameter_s:
2646 try:
2651 try:
2647 args = map(int,parameter_s.split())
2652 args = map(int,parameter_s.split())
2648 except:
2653 except:
2649 self.arg_err(Magic.magic_dhist)
2654 self.arg_err(Magic.magic_dhist)
2650 return
2655 return
2651 if len(args) == 1:
2656 if len(args) == 1:
2652 ini,fin = max(len(dh)-(args[0]),0),len(dh)
2657 ini,fin = max(len(dh)-(args[0]),0),len(dh)
2653 elif len(args) == 2:
2658 elif len(args) == 2:
2654 ini,fin = args
2659 ini,fin = args
2655 else:
2660 else:
2656 self.arg_err(Magic.magic_dhist)
2661 self.arg_err(Magic.magic_dhist)
2657 return
2662 return
2658 else:
2663 else:
2659 ini,fin = 0,len(dh)
2664 ini,fin = 0,len(dh)
2660 nlprint(dh,
2665 nlprint(dh,
2661 header = 'Directory history (kept in _dh)',
2666 header = 'Directory history (kept in _dh)',
2662 start=ini,stop=fin)
2667 start=ini,stop=fin)
2663
2668
2664 def magic_env(self, parameter_s=''):
2669 def magic_env(self, parameter_s=''):
2665 """List environment variables."""
2670 """List environment variables."""
2666
2671
2667 return os.environ.data
2672 return os.environ.data
2668
2673
2669 def magic_pushd(self, parameter_s=''):
2674 def magic_pushd(self, parameter_s=''):
2670 """Place the current dir on stack and change directory.
2675 """Place the current dir on stack and change directory.
2671
2676
2672 Usage:\\
2677 Usage:\\
2673 %pushd ['dirname']
2678 %pushd ['dirname']
2674
2679
2675 %pushd with no arguments does a %pushd to your home directory.
2680 %pushd with no arguments does a %pushd to your home directory.
2676 """
2681 """
2677 if parameter_s == '': parameter_s = '~'
2682 if parameter_s == '': parameter_s = '~'
2678 dir_s = self.shell.dir_stack
2683 dir_s = self.shell.dir_stack
2679 if len(dir_s)>0 and os.path.expanduser(parameter_s) != \
2684 if len(dir_s)>0 and os.path.expanduser(parameter_s) != \
2680 os.path.expanduser(self.shell.dir_stack[0]):
2685 os.path.expanduser(self.shell.dir_stack[0]):
2681 try:
2686 try:
2682 self.magic_cd(parameter_s)
2687 self.magic_cd(parameter_s)
2683 dir_s.insert(0,os.getcwd().replace(self.home_dir,'~'))
2688 dir_s.insert(0,os.getcwd().replace(self.home_dir,'~'))
2684 self.magic_dirs()
2689 self.magic_dirs()
2685 except:
2690 except:
2686 print 'Invalid directory'
2691 print 'Invalid directory'
2687 else:
2692 else:
2688 print 'You are already there!'
2693 print 'You are already there!'
2689
2694
2690 def magic_popd(self, parameter_s=''):
2695 def magic_popd(self, parameter_s=''):
2691 """Change to directory popped off the top of the stack.
2696 """Change to directory popped off the top of the stack.
2692 """
2697 """
2693 if len (self.shell.dir_stack) > 1:
2698 if len (self.shell.dir_stack) > 1:
2694 self.shell.dir_stack.pop(0)
2699 self.shell.dir_stack.pop(0)
2695 self.magic_cd(self.shell.dir_stack[0])
2700 self.magic_cd(self.shell.dir_stack[0])
2696 print self.shell.dir_stack[0]
2701 print self.shell.dir_stack[0]
2697 else:
2702 else:
2698 print "You can't remove the starting directory from the stack:",\
2703 print "You can't remove the starting directory from the stack:",\
2699 self.shell.dir_stack
2704 self.shell.dir_stack
2700
2705
2701 def magic_dirs(self, parameter_s=''):
2706 def magic_dirs(self, parameter_s=''):
2702 """Return the current directory stack."""
2707 """Return the current directory stack."""
2703
2708
2704 return self.shell.dir_stack[:]
2709 return self.shell.dir_stack[:]
2705
2710
2706 def magic_sc(self, parameter_s=''):
2711 def magic_sc(self, parameter_s=''):
2707 """Shell capture - execute a shell command and capture its output.
2712 """Shell capture - execute a shell command and capture its output.
2708
2713
2709 DEPRECATED. Suboptimal, retained for backwards compatibility.
2714 DEPRECATED. Suboptimal, retained for backwards compatibility.
2710
2715
2711 You should use the form 'var = !command' instead. Example:
2716 You should use the form 'var = !command' instead. Example:
2712
2717
2713 "%sc -l myfiles = ls ~" should now be written as
2718 "%sc -l myfiles = ls ~" should now be written as
2714
2719
2715 "myfiles = !ls ~"
2720 "myfiles = !ls ~"
2716
2721
2717 myfiles.s, myfiles.l and myfiles.n still apply as documented
2722 myfiles.s, myfiles.l and myfiles.n still apply as documented
2718 below.
2723 below.
2719
2724
2720 --
2725 --
2721 %sc [options] varname=command
2726 %sc [options] varname=command
2722
2727
2723 IPython will run the given command using commands.getoutput(), and
2728 IPython will run the given command using commands.getoutput(), and
2724 will then update the user's interactive namespace with a variable
2729 will then update the user's interactive namespace with a variable
2725 called varname, containing the value of the call. Your command can
2730 called varname, containing the value of the call. Your command can
2726 contain shell wildcards, pipes, etc.
2731 contain shell wildcards, pipes, etc.
2727
2732
2728 The '=' sign in the syntax is mandatory, and the variable name you
2733 The '=' sign in the syntax is mandatory, and the variable name you
2729 supply must follow Python's standard conventions for valid names.
2734 supply must follow Python's standard conventions for valid names.
2730
2735
2731 (A special format without variable name exists for internal use)
2736 (A special format without variable name exists for internal use)
2732
2737
2733 Options:
2738 Options:
2734
2739
2735 -l: list output. Split the output on newlines into a list before
2740 -l: list output. Split the output on newlines into a list before
2736 assigning it to the given variable. By default the output is stored
2741 assigning it to the given variable. By default the output is stored
2737 as a single string.
2742 as a single string.
2738
2743
2739 -v: verbose. Print the contents of the variable.
2744 -v: verbose. Print the contents of the variable.
2740
2745
2741 In most cases you should not need to split as a list, because the
2746 In most cases you should not need to split as a list, because the
2742 returned value is a special type of string which can automatically
2747 returned value is a special type of string which can automatically
2743 provide its contents either as a list (split on newlines) or as a
2748 provide its contents either as a list (split on newlines) or as a
2744 space-separated string. These are convenient, respectively, either
2749 space-separated string. These are convenient, respectively, either
2745 for sequential processing or to be passed to a shell command.
2750 for sequential processing or to be passed to a shell command.
2746
2751
2747 For example:
2752 For example:
2748
2753
2749 # Capture into variable a
2754 # Capture into variable a
2750 In [9]: sc a=ls *py
2755 In [9]: sc a=ls *py
2751
2756
2752 # a is a string with embedded newlines
2757 # a is a string with embedded newlines
2753 In [10]: a
2758 In [10]: a
2754 Out[10]: 'setup.py\nwin32_manual_post_install.py'
2759 Out[10]: 'setup.py\nwin32_manual_post_install.py'
2755
2760
2756 # which can be seen as a list:
2761 # which can be seen as a list:
2757 In [11]: a.l
2762 In [11]: a.l
2758 Out[11]: ['setup.py', 'win32_manual_post_install.py']
2763 Out[11]: ['setup.py', 'win32_manual_post_install.py']
2759
2764
2760 # or as a whitespace-separated string:
2765 # or as a whitespace-separated string:
2761 In [12]: a.s
2766 In [12]: a.s
2762 Out[12]: 'setup.py win32_manual_post_install.py'
2767 Out[12]: 'setup.py win32_manual_post_install.py'
2763
2768
2764 # a.s is useful to pass as a single command line:
2769 # a.s is useful to pass as a single command line:
2765 In [13]: !wc -l $a.s
2770 In [13]: !wc -l $a.s
2766 146 setup.py
2771 146 setup.py
2767 130 win32_manual_post_install.py
2772 130 win32_manual_post_install.py
2768 276 total
2773 276 total
2769
2774
2770 # while the list form is useful to loop over:
2775 # while the list form is useful to loop over:
2771 In [14]: for f in a.l:
2776 In [14]: for f in a.l:
2772 ....: !wc -l $f
2777 ....: !wc -l $f
2773 ....:
2778 ....:
2774 146 setup.py
2779 146 setup.py
2775 130 win32_manual_post_install.py
2780 130 win32_manual_post_install.py
2776
2781
2777 Similiarly, the lists returned by the -l option are also special, in
2782 Similiarly, the lists returned by the -l option are also special, in
2778 the sense that you can equally invoke the .s attribute on them to
2783 the sense that you can equally invoke the .s attribute on them to
2779 automatically get a whitespace-separated string from their contents:
2784 automatically get a whitespace-separated string from their contents:
2780
2785
2781 In [1]: sc -l b=ls *py
2786 In [1]: sc -l b=ls *py
2782
2787
2783 In [2]: b
2788 In [2]: b
2784 Out[2]: ['setup.py', 'win32_manual_post_install.py']
2789 Out[2]: ['setup.py', 'win32_manual_post_install.py']
2785
2790
2786 In [3]: b.s
2791 In [3]: b.s
2787 Out[3]: 'setup.py win32_manual_post_install.py'
2792 Out[3]: 'setup.py win32_manual_post_install.py'
2788
2793
2789 In summary, both the lists and strings used for ouptut capture have
2794 In summary, both the lists and strings used for ouptut capture have
2790 the following special attributes:
2795 the following special attributes:
2791
2796
2792 .l (or .list) : value as list.
2797 .l (or .list) : value as list.
2793 .n (or .nlstr): value as newline-separated string.
2798 .n (or .nlstr): value as newline-separated string.
2794 .s (or .spstr): value as space-separated string.
2799 .s (or .spstr): value as space-separated string.
2795 """
2800 """
2796
2801
2797 opts,args = self.parse_options(parameter_s,'lv')
2802 opts,args = self.parse_options(parameter_s,'lv')
2798 # Try to get a variable name and command to run
2803 # Try to get a variable name and command to run
2799 try:
2804 try:
2800 # the variable name must be obtained from the parse_options
2805 # the variable name must be obtained from the parse_options
2801 # output, which uses shlex.split to strip options out.
2806 # output, which uses shlex.split to strip options out.
2802 var,_ = args.split('=',1)
2807 var,_ = args.split('=',1)
2803 var = var.strip()
2808 var = var.strip()
2804 # But the the command has to be extracted from the original input
2809 # But the the command has to be extracted from the original input
2805 # parameter_s, not on what parse_options returns, to avoid the
2810 # parameter_s, not on what parse_options returns, to avoid the
2806 # quote stripping which shlex.split performs on it.
2811 # quote stripping which shlex.split performs on it.
2807 _,cmd = parameter_s.split('=',1)
2812 _,cmd = parameter_s.split('=',1)
2808 except ValueError:
2813 except ValueError:
2809 var,cmd = '',''
2814 var,cmd = '',''
2810 # If all looks ok, proceed
2815 # If all looks ok, proceed
2811 out,err = self.shell.getoutputerror(cmd)
2816 out,err = self.shell.getoutputerror(cmd)
2812 if err:
2817 if err:
2813 print >> Term.cerr,err
2818 print >> Term.cerr,err
2814 if opts.has_key('l'):
2819 if opts.has_key('l'):
2815 out = SList(out.split('\n'))
2820 out = SList(out.split('\n'))
2816 else:
2821 else:
2817 out = LSString(out)
2822 out = LSString(out)
2818 if opts.has_key('v'):
2823 if opts.has_key('v'):
2819 print '%s ==\n%s' % (var,pformat(out))
2824 print '%s ==\n%s' % (var,pformat(out))
2820 if var:
2825 if var:
2821 self.shell.user_ns.update({var:out})
2826 self.shell.user_ns.update({var:out})
2822 else:
2827 else:
2823 return out
2828 return out
2824
2829
2825 def magic_sx(self, parameter_s=''):
2830 def magic_sx(self, parameter_s=''):
2826 """Shell execute - run a shell command and capture its output.
2831 """Shell execute - run a shell command and capture its output.
2827
2832
2828 %sx command
2833 %sx command
2829
2834
2830 IPython will run the given command using commands.getoutput(), and
2835 IPython will run the given command using commands.getoutput(), and
2831 return the result formatted as a list (split on '\\n'). Since the
2836 return the result formatted as a list (split on '\\n'). Since the
2832 output is _returned_, it will be stored in ipython's regular output
2837 output is _returned_, it will be stored in ipython's regular output
2833 cache Out[N] and in the '_N' automatic variables.
2838 cache Out[N] and in the '_N' automatic variables.
2834
2839
2835 Notes:
2840 Notes:
2836
2841
2837 1) If an input line begins with '!!', then %sx is automatically
2842 1) If an input line begins with '!!', then %sx is automatically
2838 invoked. That is, while:
2843 invoked. That is, while:
2839 !ls
2844 !ls
2840 causes ipython to simply issue system('ls'), typing
2845 causes ipython to simply issue system('ls'), typing
2841 !!ls
2846 !!ls
2842 is a shorthand equivalent to:
2847 is a shorthand equivalent to:
2843 %sx ls
2848 %sx ls
2844
2849
2845 2) %sx differs from %sc in that %sx automatically splits into a list,
2850 2) %sx differs from %sc in that %sx automatically splits into a list,
2846 like '%sc -l'. The reason for this is to make it as easy as possible
2851 like '%sc -l'. The reason for this is to make it as easy as possible
2847 to process line-oriented shell output via further python commands.
2852 to process line-oriented shell output via further python commands.
2848 %sc is meant to provide much finer control, but requires more
2853 %sc is meant to provide much finer control, but requires more
2849 typing.
2854 typing.
2850
2855
2851 3) Just like %sc -l, this is a list with special attributes:
2856 3) Just like %sc -l, this is a list with special attributes:
2852
2857
2853 .l (or .list) : value as list.
2858 .l (or .list) : value as list.
2854 .n (or .nlstr): value as newline-separated string.
2859 .n (or .nlstr): value as newline-separated string.
2855 .s (or .spstr): value as whitespace-separated string.
2860 .s (or .spstr): value as whitespace-separated string.
2856
2861
2857 This is very useful when trying to use such lists as arguments to
2862 This is very useful when trying to use such lists as arguments to
2858 system commands."""
2863 system commands."""
2859
2864
2860 if parameter_s:
2865 if parameter_s:
2861 out,err = self.shell.getoutputerror(parameter_s)
2866 out,err = self.shell.getoutputerror(parameter_s)
2862 if err:
2867 if err:
2863 print >> Term.cerr,err
2868 print >> Term.cerr,err
2864 return SList(out.split('\n'))
2869 return SList(out.split('\n'))
2865
2870
2866 def magic_bg(self, parameter_s=''):
2871 def magic_bg(self, parameter_s=''):
2867 """Run a job in the background, in a separate thread.
2872 """Run a job in the background, in a separate thread.
2868
2873
2869 For example,
2874 For example,
2870
2875
2871 %bg myfunc(x,y,z=1)
2876 %bg myfunc(x,y,z=1)
2872
2877
2873 will execute 'myfunc(x,y,z=1)' in a background thread. As soon as the
2878 will execute 'myfunc(x,y,z=1)' in a background thread. As soon as the
2874 execution starts, a message will be printed indicating the job
2879 execution starts, a message will be printed indicating the job
2875 number. If your job number is 5, you can use
2880 number. If your job number is 5, you can use
2876
2881
2877 myvar = jobs.result(5) or myvar = jobs[5].result
2882 myvar = jobs.result(5) or myvar = jobs[5].result
2878
2883
2879 to assign this result to variable 'myvar'.
2884 to assign this result to variable 'myvar'.
2880
2885
2881 IPython has a job manager, accessible via the 'jobs' object. You can
2886 IPython has a job manager, accessible via the 'jobs' object. You can
2882 type jobs? to get more information about it, and use jobs.<TAB> to see
2887 type jobs? to get more information about it, and use jobs.<TAB> to see
2883 its attributes. All attributes not starting with an underscore are
2888 its attributes. All attributes not starting with an underscore are
2884 meant for public use.
2889 meant for public use.
2885
2890
2886 In particular, look at the jobs.new() method, which is used to create
2891 In particular, look at the jobs.new() method, which is used to create
2887 new jobs. This magic %bg function is just a convenience wrapper
2892 new jobs. This magic %bg function is just a convenience wrapper
2888 around jobs.new(), for expression-based jobs. If you want to create a
2893 around jobs.new(), for expression-based jobs. If you want to create a
2889 new job with an explicit function object and arguments, you must call
2894 new job with an explicit function object and arguments, you must call
2890 jobs.new() directly.
2895 jobs.new() directly.
2891
2896
2892 The jobs.new docstring also describes in detail several important
2897 The jobs.new docstring also describes in detail several important
2893 caveats associated with a thread-based model for background job
2898 caveats associated with a thread-based model for background job
2894 execution. Type jobs.new? for details.
2899 execution. Type jobs.new? for details.
2895
2900
2896 You can check the status of all jobs with jobs.status().
2901 You can check the status of all jobs with jobs.status().
2897
2902
2898 The jobs variable is set by IPython into the Python builtin namespace.
2903 The jobs variable is set by IPython into the Python builtin namespace.
2899 If you ever declare a variable named 'jobs', you will shadow this
2904 If you ever declare a variable named 'jobs', you will shadow this
2900 name. You can either delete your global jobs variable to regain
2905 name. You can either delete your global jobs variable to regain
2901 access to the job manager, or make a new name and assign it manually
2906 access to the job manager, or make a new name and assign it manually
2902 to the manager (stored in IPython's namespace). For example, to
2907 to the manager (stored in IPython's namespace). For example, to
2903 assign the job manager to the Jobs name, use:
2908 assign the job manager to the Jobs name, use:
2904
2909
2905 Jobs = __builtins__.jobs"""
2910 Jobs = __builtins__.jobs"""
2906
2911
2907 self.shell.jobs.new(parameter_s,self.shell.user_ns)
2912 self.shell.jobs.new(parameter_s,self.shell.user_ns)
2908
2913
2909
2914
2910 def magic_bookmark(self, parameter_s=''):
2915 def magic_bookmark(self, parameter_s=''):
2911 """Manage IPython's bookmark system.
2916 """Manage IPython's bookmark system.
2912
2917
2913 %bookmark <name> - set bookmark to current dir
2918 %bookmark <name> - set bookmark to current dir
2914 %bookmark <name> <dir> - set bookmark to <dir>
2919 %bookmark <name> <dir> - set bookmark to <dir>
2915 %bookmark -l - list all bookmarks
2920 %bookmark -l - list all bookmarks
2916 %bookmark -d <name> - remove bookmark
2921 %bookmark -d <name> - remove bookmark
2917 %bookmark -r - remove all bookmarks
2922 %bookmark -r - remove all bookmarks
2918
2923
2919 You can later on access a bookmarked folder with:
2924 You can later on access a bookmarked folder with:
2920 %cd -b <name>
2925 %cd -b <name>
2921 or simply '%cd <name>' if there is no directory called <name> AND
2926 or simply '%cd <name>' if there is no directory called <name> AND
2922 there is such a bookmark defined.
2927 there is such a bookmark defined.
2923
2928
2924 Your bookmarks persist through IPython sessions, but they are
2929 Your bookmarks persist through IPython sessions, but they are
2925 associated with each profile."""
2930 associated with each profile."""
2926
2931
2927 opts,args = self.parse_options(parameter_s,'drl',mode='list')
2932 opts,args = self.parse_options(parameter_s,'drl',mode='list')
2928 if len(args) > 2:
2933 if len(args) > 2:
2929 error('You can only give at most two arguments')
2934 error('You can only give at most two arguments')
2930 return
2935 return
2931
2936
2932 bkms = self.db.get('bookmarks',{})
2937 bkms = self.db.get('bookmarks',{})
2933
2938
2934 if opts.has_key('d'):
2939 if opts.has_key('d'):
2935 try:
2940 try:
2936 todel = args[0]
2941 todel = args[0]
2937 except IndexError:
2942 except IndexError:
2938 error('You must provide a bookmark to delete')
2943 error('You must provide a bookmark to delete')
2939 else:
2944 else:
2940 try:
2945 try:
2941 del bkms[todel]
2946 del bkms[todel]
2942 except:
2947 except:
2943 error("Can't delete bookmark '%s'" % todel)
2948 error("Can't delete bookmark '%s'" % todel)
2944 elif opts.has_key('r'):
2949 elif opts.has_key('r'):
2945 bkms = {}
2950 bkms = {}
2946 elif opts.has_key('l'):
2951 elif opts.has_key('l'):
2947 bks = bkms.keys()
2952 bks = bkms.keys()
2948 bks.sort()
2953 bks.sort()
2949 if bks:
2954 if bks:
2950 size = max(map(len,bks))
2955 size = max(map(len,bks))
2951 else:
2956 else:
2952 size = 0
2957 size = 0
2953 fmt = '%-'+str(size)+'s -> %s'
2958 fmt = '%-'+str(size)+'s -> %s'
2954 print 'Current bookmarks:'
2959 print 'Current bookmarks:'
2955 for bk in bks:
2960 for bk in bks:
2956 print fmt % (bk,bkms[bk])
2961 print fmt % (bk,bkms[bk])
2957 else:
2962 else:
2958 if not args:
2963 if not args:
2959 error("You must specify the bookmark name")
2964 error("You must specify the bookmark name")
2960 elif len(args)==1:
2965 elif len(args)==1:
2961 bkms[args[0]] = os.getcwd()
2966 bkms[args[0]] = os.getcwd()
2962 elif len(args)==2:
2967 elif len(args)==2:
2963 bkms[args[0]] = args[1]
2968 bkms[args[0]] = args[1]
2964 self.db['bookmarks'] = bkms
2969 self.db['bookmarks'] = bkms
2965
2970
2966 def magic_pycat(self, parameter_s=''):
2971 def magic_pycat(self, parameter_s=''):
2967 """Show a syntax-highlighted file through a pager.
2972 """Show a syntax-highlighted file through a pager.
2968
2973
2969 This magic is similar to the cat utility, but it will assume the file
2974 This magic is similar to the cat utility, but it will assume the file
2970 to be Python source and will show it with syntax highlighting. """
2975 to be Python source and will show it with syntax highlighting. """
2971
2976
2972 try:
2977 try:
2973 filename = get_py_filename(parameter_s)
2978 filename = get_py_filename(parameter_s)
2974 cont = file_read(filename)
2979 cont = file_read(filename)
2975 except IOError:
2980 except IOError:
2976 try:
2981 try:
2977 cont = eval(parameter_s,self.user_ns)
2982 cont = eval(parameter_s,self.user_ns)
2978 except NameError:
2983 except NameError:
2979 cont = None
2984 cont = None
2980 if cont is None:
2985 if cont is None:
2981 print "Error: no such file or variable"
2986 print "Error: no such file or variable"
2982 return
2987 return
2983
2988
2984 page(self.shell.pycolorize(cont),
2989 page(self.shell.pycolorize(cont),
2985 screen_lines=self.shell.rc.screen_length)
2990 screen_lines=self.shell.rc.screen_length)
2986
2991
2987 def magic_cpaste(self, parameter_s=''):
2992 def magic_cpaste(self, parameter_s=''):
2988 """Allows you to paste & execute a pre-formatted code block from clipboard
2993 """Allows you to paste & execute a pre-formatted code block from clipboard
2989
2994
2990 You must terminate the block with '--' (two minus-signs) alone on the
2995 You must terminate the block with '--' (two minus-signs) alone on the
2991 line. You can also provide your own sentinel with '%paste -s %%' ('%%'
2996 line. You can also provide your own sentinel with '%paste -s %%' ('%%'
2992 is the new sentinel for this operation)
2997 is the new sentinel for this operation)
2993
2998
2994 The block is dedented prior to execution to enable execution of
2999 The block is dedented prior to execution to enable execution of
2995 method definitions. '>' characters at the beginning of a line is
3000 method definitions. '>' characters at the beginning of a line is
2996 ignored, to allow pasting directly from e-mails. The executed block
3001 ignored, to allow pasting directly from e-mails. The executed block
2997 is also assigned to variable named 'pasted_block' for later editing
3002 is also assigned to variable named 'pasted_block' for later editing
2998 with '%edit pasted_block'.
3003 with '%edit pasted_block'.
2999
3004
3000 You can also pass a variable name as an argument, e.g. '%cpaste foo'.
3005 You can also pass a variable name as an argument, e.g. '%cpaste foo'.
3001 This assigns the pasted block to variable 'foo' as string, without
3006 This assigns the pasted block to variable 'foo' as string, without
3002 dedenting or executing it.
3007 dedenting or executing it.
3003
3008
3004 Do not be alarmed by garbled output on Windows (it's a readline bug).
3009 Do not be alarmed by garbled output on Windows (it's a readline bug).
3005 Just press enter and type -- (and press enter again) and the block
3010 Just press enter and type -- (and press enter again) and the block
3006 will be what was just pasted.
3011 will be what was just pasted.
3007
3012
3008 IPython statements (magics, shell escapes) are not supported (yet).
3013 IPython statements (magics, shell escapes) are not supported (yet).
3009 """
3014 """
3010 opts,args = self.parse_options(parameter_s,'s:',mode='string')
3015 opts,args = self.parse_options(parameter_s,'s:',mode='string')
3011 par = args.strip()
3016 par = args.strip()
3012 sentinel = opts.get('s','--')
3017 sentinel = opts.get('s','--')
3013
3018
3014 from IPython import iplib
3019 from IPython import iplib
3015 lines = []
3020 lines = []
3016 print "Pasting code; enter '%s' alone on the line to stop." % sentinel
3021 print "Pasting code; enter '%s' alone on the line to stop." % sentinel
3017 while 1:
3022 while 1:
3018 l = iplib.raw_input_original(':')
3023 l = iplib.raw_input_original(':')
3019 if l ==sentinel:
3024 if l ==sentinel:
3020 break
3025 break
3021 lines.append(l.lstrip('>'))
3026 lines.append(l.lstrip('>'))
3022 block = "\n".join(lines) + '\n'
3027 block = "\n".join(lines) + '\n'
3023 #print "block:\n",block
3028 #print "block:\n",block
3024 if not par:
3029 if not par:
3025 b = textwrap.dedent(block)
3030 b = textwrap.dedent(block)
3026 exec b in self.user_ns
3031 exec b in self.user_ns
3027 self.user_ns['pasted_block'] = b
3032 self.user_ns['pasted_block'] = b
3028 else:
3033 else:
3029 self.user_ns[par] = block
3034 self.user_ns[par] = block
3030 print "Block assigned to '%s'" % par
3035 print "Block assigned to '%s'" % par
3031
3036
3032 def magic_quickref(self,arg):
3037 def magic_quickref(self,arg):
3033 """ Show a quick reference sheet """
3038 """ Show a quick reference sheet """
3034 import IPython.usage
3039 import IPython.usage
3035 qr = IPython.usage.quick_reference + self.magic_magic('-brief')
3040 qr = IPython.usage.quick_reference + self.magic_magic('-brief')
3036
3041
3037 page(qr)
3042 page(qr)
3038
3043
3039 def magic_upgrade(self,arg):
3044 def magic_upgrade(self,arg):
3040 """ Upgrade your IPython installation
3045 """ Upgrade your IPython installation
3041
3046
3042 This will copy the config files that don't yet exist in your
3047 This will copy the config files that don't yet exist in your
3043 ipython dir from the system config dir. Use this after upgrading
3048 ipython dir from the system config dir. Use this after upgrading
3044 IPython if you don't wish to delete your .ipython dir.
3049 IPython if you don't wish to delete your .ipython dir.
3045
3050
3046 Call with -nolegacy to get rid of ipythonrc* files (recommended for
3051 Call with -nolegacy to get rid of ipythonrc* files (recommended for
3047 new users)
3052 new users)
3048
3053
3049 """
3054 """
3050 ip = self.getapi()
3055 ip = self.getapi()
3051 ipinstallation = path(IPython.__file__).dirname()
3056 ipinstallation = path(IPython.__file__).dirname()
3052 upgrade_script = '%s "%s"' % (sys.executable,ipinstallation / 'upgrade_dir.py')
3057 upgrade_script = '%s "%s"' % (sys.executable,ipinstallation / 'upgrade_dir.py')
3053 src_config = ipinstallation / 'UserConfig'
3058 src_config = ipinstallation / 'UserConfig'
3054 userdir = path(ip.options.ipythondir)
3059 userdir = path(ip.options.ipythondir)
3055 cmd = '%s "%s" "%s"' % (upgrade_script, src_config, userdir)
3060 cmd = '%s "%s" "%s"' % (upgrade_script, src_config, userdir)
3056 print ">",cmd
3061 print ">",cmd
3057 shell(cmd)
3062 shell(cmd)
3058 if arg == '-nolegacy':
3063 if arg == '-nolegacy':
3059 legacy = userdir.files('ipythonrc*')
3064 legacy = userdir.files('ipythonrc*')
3060 print "Nuking legacy files:",legacy
3065 print "Nuking legacy files:",legacy
3061
3066
3062 [p.remove() for p in legacy]
3067 [p.remove() for p in legacy]
3063 suffix = (sys.platform == 'win32' and '.ini' or '')
3068 suffix = (sys.platform == 'win32' and '.ini' or '')
3064 (userdir / ('ipythonrc' + suffix)).write_text('# Empty, see ipy_user_conf.py\n')
3069 (userdir / ('ipythonrc' + suffix)).write_text('# Empty, see ipy_user_conf.py\n')
3065
3070
3066
3071
3067 # end Magic
3072 # end Magic
@@ -1,9545 +1,9549 b''
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 221
2 \lyxformat 221
3 \textclass article
3 \textclass article
4 \begin_preamble
4 \begin_preamble
5 %\usepackage{ae,aecompl}
5 %\usepackage{ae,aecompl}
6 \usepackage{color}
6 \usepackage{color}
7
7
8 % A few colors to replace the defaults for certain link types
8 % A few colors to replace the defaults for certain link types
9 \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
9 \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
10 \definecolor{darkorange}{rgb}{.71,0.21,0.01}
10 \definecolor{darkorange}{rgb}{.71,0.21,0.01}
11 \definecolor{darkred}{rgb}{.52,0.08,0.01}
11 \definecolor{darkred}{rgb}{.52,0.08,0.01}
12 \definecolor{darkgreen}{rgb}{.12,.54,.11}
12 \definecolor{darkgreen}{rgb}{.12,.54,.11}
13
13
14 % Use and configure listings package for nicely formatted code
14 % Use and configure listings package for nicely formatted code
15 \usepackage{listings}
15 \usepackage{listings}
16 \lstset{
16 \lstset{
17 language=Python,
17 language=Python,
18 basicstyle=\small\ttfamily,
18 basicstyle=\small\ttfamily,
19 commentstyle=\ttfamily\color{blue},
19 commentstyle=\ttfamily\color{blue},
20 stringstyle=\ttfamily\color{darkorange},
20 stringstyle=\ttfamily\color{darkorange},
21 showstringspaces=false,
21 showstringspaces=false,
22 breaklines=true,
22 breaklines=true,
23 postbreak = \space\dots
23 postbreak = \space\dots
24 }
24 }
25
25
26 \usepackage[%pdftex, % needed for pdflatex
26 \usepackage[%pdftex, % needed for pdflatex
27 breaklinks=true, % so long urls are correctly broken across lines
27 breaklinks=true, % so long urls are correctly broken across lines
28 colorlinks=true,
28 colorlinks=true,
29 urlcolor=blue,
29 urlcolor=blue,
30 linkcolor=darkred,
30 linkcolor=darkred,
31 citecolor=darkgreen,
31 citecolor=darkgreen,
32 ]{hyperref}
32 ]{hyperref}
33
33
34 \usepackage{html}
34 \usepackage{html}
35
35
36 % This helps prevent overly long lines that stretch beyond the margins
36 % This helps prevent overly long lines that stretch beyond the margins
37 \sloppy
37 \sloppy
38
38
39 % Define a \codelist command which either uses listings for latex, or
39 % Define a \codelist command which either uses listings for latex, or
40 % plain verbatim for html (since latex2html doesn't understand the
40 % plain verbatim for html (since latex2html doesn't understand the
41 % listings package).
41 % listings package).
42 \usepackage{verbatim}
42 \usepackage{verbatim}
43 \newcommand{\codelist}[1] {
43 \newcommand{\codelist}[1] {
44 \latex{\lstinputlisting{#1}}
44 \latex{\lstinputlisting{#1}}
45 \html{\verbatiminput{#1}}
45 \html{\verbatiminput{#1}}
46 }
46 }
47 \end_preamble
47 \end_preamble
48 \language english
48 \language english
49 \inputencoding latin1
49 \inputencoding latin1
50 \fontscheme palatino
50 \fontscheme palatino
51 \graphics default
51 \graphics default
52 \paperfontsize 11
52 \paperfontsize 11
53 \spacing single
53 \spacing single
54 \papersize Default
54 \papersize Default
55 \paperpackage a4
55 \paperpackage a4
56 \use_geometry 1
56 \use_geometry 1
57 \use_amsmath 0
57 \use_amsmath 0
58 \use_natbib 0
58 \use_natbib 0
59 \use_numerical_citations 0
59 \use_numerical_citations 0
60 \paperorientation portrait
60 \paperorientation portrait
61 \leftmargin 1in
61 \leftmargin 1in
62 \topmargin 1in
62 \topmargin 1in
63 \rightmargin 1in
63 \rightmargin 1in
64 \bottommargin 1in
64 \bottommargin 1in
65 \secnumdepth 3
65 \secnumdepth 3
66 \tocdepth 3
66 \tocdepth 3
67 \paragraph_separation skip
67 \paragraph_separation skip
68 \defskip medskip
68 \defskip medskip
69 \quotes_language english
69 \quotes_language english
70 \quotes_times 2
70 \quotes_times 2
71 \papercolumns 1
71 \papercolumns 1
72 \papersides 2
72 \papersides 2
73 \paperpagestyle fancy
73 \paperpagestyle fancy
74
74
75 \layout Title
75 \layout Title
76
76
77 IPython
77 IPython
78 \newline
78 \newline
79
79
80 \size larger
80 \size larger
81 An enhanced Interactive Python
81 An enhanced Interactive Python
82 \size large
82 \size large
83
83
84 \newline
84 \newline
85 User Manual, v.
85 User Manual, v.
86 __version__
86 __version__
87 \layout Author
87 \layout Author
88
88
89 Fernando PοΏ½rez
89 Fernando PοΏ½rez
90 \begin_inset Foot
90 \begin_inset Foot
91 collapsed true
91 collapsed true
92
92
93 \layout Standard
93 \layout Standard
94
94
95
95
96 \size scriptsize
96 \size scriptsize
97 Department of Applied Mathematics, University of Colorado at Boulder.
97 Department of Applied Mathematics, University of Colorado at Boulder.
98
98
99 \family typewriter
99 \family typewriter
100 <Fernando.Perez@colorado.edu>
100 <Fernando.Perez@colorado.edu>
101 \end_inset
101 \end_inset
102
102
103
103
104 \layout Standard
104 \layout Standard
105
105
106
106
107 \begin_inset ERT
107 \begin_inset ERT
108 status Collapsed
108 status Collapsed
109
109
110 \layout Standard
110 \layout Standard
111
111
112 \backslash
112 \backslash
113 latex{
113 latex{
114 \end_inset
114 \end_inset
115
115
116
116
117 \begin_inset LatexCommand \tableofcontents{}
117 \begin_inset LatexCommand \tableofcontents{}
118
118
119 \end_inset
119 \end_inset
120
120
121
121
122 \begin_inset ERT
122 \begin_inset ERT
123 status Collapsed
123 status Collapsed
124
124
125 \layout Standard
125 \layout Standard
126 }
126 }
127 \end_inset
127 \end_inset
128
128
129
129
130 \layout Standard
130 \layout Standard
131
131
132
132
133 \begin_inset ERT
133 \begin_inset ERT
134 status Open
134 status Open
135
135
136 \layout Standard
136 \layout Standard
137
137
138 \backslash
138 \backslash
139 html{
139 html{
140 \backslash
140 \backslash
141 bodytext{bgcolor=#ffffff}}
141 bodytext{bgcolor=#ffffff}}
142 \end_inset
142 \end_inset
143
143
144
144
145 \layout Section
145 \layout Section
146 \pagebreak_top
146 \pagebreak_top
147 Overview
147 Overview
148 \layout Standard
148 \layout Standard
149
149
150 One of Python's most useful features is its interactive interpreter.
150 One of Python's most useful features is its interactive interpreter.
151 This system allows very fast testing of ideas without the overhead of creating
151 This system allows very fast testing of ideas without the overhead of creating
152 test files as is typical in most programming languages.
152 test files as is typical in most programming languages.
153 However, the interpreter supplied with the standard Python distribution
153 However, the interpreter supplied with the standard Python distribution
154 is somewhat limited for extended interactive use.
154 is somewhat limited for extended interactive use.
155 \layout Standard
155 \layout Standard
156
156
157 IPython is a free software project (released under the BSD license) which
157 IPython is a free software project (released under the BSD license) which
158 tries to:
158 tries to:
159 \layout Enumerate
159 \layout Enumerate
160
160
161 Provide an interactive shell superior to Python's default.
161 Provide an interactive shell superior to Python's default.
162 IPython has many features for object introspection, system shell access,
162 IPython has many features for object introspection, system shell access,
163 and its own special command system for adding functionality when working
163 and its own special command system for adding functionality when working
164 interactively.
164 interactively.
165 It tries to be a very efficient environment both for Python code development
165 It tries to be a very efficient environment both for Python code development
166 and for exploration of problems using Python objects (in situations like
166 and for exploration of problems using Python objects (in situations like
167 data analysis).
167 data analysis).
168 \layout Enumerate
168 \layout Enumerate
169
169
170 Serve as an embeddable, ready to use interpreter for your own programs.
170 Serve as an embeddable, ready to use interpreter for your own programs.
171 IPython can be started with a single call from inside another program,
171 IPython can be started with a single call from inside another program,
172 providing access to the current namespace.
172 providing access to the current namespace.
173 This can be very useful both for debugging purposes and for situations
173 This can be very useful both for debugging purposes and for situations
174 where a blend of batch-processing and interactive exploration are needed.
174 where a blend of batch-processing and interactive exploration are needed.
175 \layout Enumerate
175 \layout Enumerate
176
176
177 Offer a flexible framework which can be used as the base environment for
177 Offer a flexible framework which can be used as the base environment for
178 other systems with Python as the underlying language.
178 other systems with Python as the underlying language.
179 Specifically scientific environments like Mathematica, IDL and Matlab inspired
179 Specifically scientific environments like Mathematica, IDL and Matlab inspired
180 its design, but similar ideas can be useful in many fields.
180 its design, but similar ideas can be useful in many fields.
181 \layout Enumerate
181 \layout Enumerate
182
182
183 Allow interactive testing of threaded graphical toolkits.
183 Allow interactive testing of threaded graphical toolkits.
184 IPython has support for interactive, non-blocking control of GTK, Qt and
184 IPython has support for interactive, non-blocking control of GTK, Qt and
185 WX applications via special threading flags.
185 WX applications via special threading flags.
186 The normal Python shell can only do this for Tkinter applications.
186 The normal Python shell can only do this for Tkinter applications.
187 \layout Subsection
187 \layout Subsection
188
188
189 Main features
189 Main features
190 \layout Itemize
190 \layout Itemize
191
191
192 Dynamic object introspection.
192 Dynamic object introspection.
193 One can access docstrings, function definition prototypes, source code,
193 One can access docstrings, function definition prototypes, source code,
194 source files and other details of any object accessible to the interpreter
194 source files and other details of any object accessible to the interpreter
195 with a single keystroke (`
195 with a single keystroke (`
196 \family typewriter
196 \family typewriter
197 ?
197 ?
198 \family default
198 \family default
199 ', and using `
199 ', and using `
200 \family typewriter
200 \family typewriter
201 ??
201 ??
202 \family default
202 \family default
203 ' provides additional detail).
203 ' provides additional detail).
204 \layout Itemize
204 \layout Itemize
205
205
206 Searching through modules and namespaces with `
206 Searching through modules and namespaces with `
207 \family typewriter
207 \family typewriter
208 *
208 *
209 \family default
209 \family default
210 ' wildcards, both when using the `
210 ' wildcards, both when using the `
211 \family typewriter
211 \family typewriter
212 ?
212 ?
213 \family default
213 \family default
214 ' system and via the
214 ' system and via the
215 \family typewriter
215 \family typewriter
216 %psearch
216 %psearch
217 \family default
217 \family default
218 command.
218 command.
219 \layout Itemize
219 \layout Itemize
220
220
221 Completion in the local namespace, by typing TAB at the prompt.
221 Completion in the local namespace, by typing TAB at the prompt.
222 This works for keywords, methods, variables and files in the current directory.
222 This works for keywords, methods, variables and files in the current directory.
223 This is supported via the readline library, and full access to configuring
223 This is supported via the readline library, and full access to configuring
224 readline's behavior is provided.
224 readline's behavior is provided.
225 \layout Itemize
225 \layout Itemize
226
226
227 Numbered input/output prompts with command history (persistent across sessions
227 Numbered input/output prompts with command history (persistent across sessions
228 and tied to each profile), full searching in this history and caching of
228 and tied to each profile), full searching in this history and caching of
229 all input and output.
229 all input and output.
230 \layout Itemize
230 \layout Itemize
231
231
232 User-extensible `magic' commands.
232 User-extensible `magic' commands.
233 A set of commands prefixed with
233 A set of commands prefixed with
234 \family typewriter
234 \family typewriter
235 %
235 %
236 \family default
236 \family default
237 is available for controlling IPython itself and provides directory control,
237 is available for controlling IPython itself and provides directory control,
238 namespace information and many aliases to common system shell commands.
238 namespace information and many aliases to common system shell commands.
239 \layout Itemize
239 \layout Itemize
240
240
241 Alias facility for defining your own system aliases.
241 Alias facility for defining your own system aliases.
242 \layout Itemize
242 \layout Itemize
243
243
244 Complete system shell access.
244 Complete system shell access.
245 Lines starting with ! are passed directly to the system shell, and using
245 Lines starting with ! are passed directly to the system shell, and using
246 !! captures shell output into python variables for further use.
246 !! captures shell output into python variables for further use.
247 \layout Itemize
247 \layout Itemize
248
248
249 Background execution of Python commands in a separate thread.
249 Background execution of Python commands in a separate thread.
250 IPython has an internal job manager called
250 IPython has an internal job manager called
251 \family typewriter
251 \family typewriter
252 jobs
252 jobs
253 \family default
253 \family default
254 , and a conveninence backgrounding magic function called
254 , and a conveninence backgrounding magic function called
255 \family typewriter
255 \family typewriter
256 %bg
256 %bg
257 \family default
257 \family default
258 .
258 .
259 \layout Itemize
259 \layout Itemize
260
260
261 The ability to expand python variables when calling the system shell.
261 The ability to expand python variables when calling the system shell.
262 In a shell command, any python variable prefixed with
262 In a shell command, any python variable prefixed with
263 \family typewriter
263 \family typewriter
264 $
264 $
265 \family default
265 \family default
266 is expanded.
266 is expanded.
267 A double
267 A double
268 \family typewriter
268 \family typewriter
269 $$
269 $$
270 \family default
270 \family default
271 allows passing a literal
271 allows passing a literal
272 \family typewriter
272 \family typewriter
273 $
273 $
274 \family default
274 \family default
275 to the shell (for access to shell and environment variables like
275 to the shell (for access to shell and environment variables like
276 \family typewriter
276 \family typewriter
277 $PATH
277 $PATH
278 \family default
278 \family default
279 ).
279 ).
280 \layout Itemize
280 \layout Itemize
281
281
282 Filesystem navigation, via a magic
282 Filesystem navigation, via a magic
283 \family typewriter
283 \family typewriter
284 %cd
284 %cd
285 \family default
285 \family default
286 command, along with a persistent bookmark system (using
286 command, along with a persistent bookmark system (using
287 \family typewriter
287 \family typewriter
288 %bookmark
288 %bookmark
289 \family default
289 \family default
290 ) for fast access to frequently visited directories.
290 ) for fast access to frequently visited directories.
291 \layout Itemize
291 \layout Itemize
292
292
293 A lightweight persistence framework via the
293 A lightweight persistence framework via the
294 \family typewriter
294 \family typewriter
295 %store
295 %store
296 \family default
296 \family default
297 command, which allows you to save arbitrary Python variables.
297 command, which allows you to save arbitrary Python variables.
298 These get restored automatically when your session restarts.
298 These get restored automatically when your session restarts.
299 \layout Itemize
299 \layout Itemize
300
300
301 Automatic indentation (optional) of code as you type (through the readline
301 Automatic indentation (optional) of code as you type (through the readline
302 library).
302 library).
303 \layout Itemize
303 \layout Itemize
304
304
305 Macro system for quickly re-executing multiple lines of previous input with
305 Macro system for quickly re-executing multiple lines of previous input with
306 a single name.
306 a single name.
307 Macros can be stored persistently via
307 Macros can be stored persistently via
308 \family typewriter
308 \family typewriter
309 %store
309 %store
310 \family default
310 \family default
311 and edited via
311 and edited via
312 \family typewriter
312 \family typewriter
313 %edit
313 %edit
314 \family default
314 \family default
315 .
315 .
316
316
317 \layout Itemize
317 \layout Itemize
318
318
319 Session logging (you can then later use these logs as code in your programs).
319 Session logging (you can then later use these logs as code in your programs).
320 Logs can optionally timestamp all input, and also store session output
320 Logs can optionally timestamp all input, and also store session output
321 (marked as comments, so the log remains valid Python source code).
321 (marked as comments, so the log remains valid Python source code).
322 \layout Itemize
322 \layout Itemize
323
323
324 Session restoring: logs can be replayed to restore a previous session to
324 Session restoring: logs can be replayed to restore a previous session to
325 the state where you left it.
325 the state where you left it.
326 \layout Itemize
326 \layout Itemize
327
327
328 Verbose and colored exception traceback printouts.
328 Verbose and colored exception traceback printouts.
329 Easier to parse visually, and in verbose mode they produce a lot of useful
329 Easier to parse visually, and in verbose mode they produce a lot of useful
330 debugging information (basically a terminal version of the cgitb module).
330 debugging information (basically a terminal version of the cgitb module).
331 \layout Itemize
331 \layout Itemize
332
332
333 Auto-parentheses: callable objects can be executed without parentheses:
333 Auto-parentheses: callable objects can be executed without parentheses:
334
334
335 \family typewriter
335 \family typewriter
336 `sin 3'
336 `sin 3'
337 \family default
337 \family default
338 is automatically converted to
338 is automatically converted to
339 \family typewriter
339 \family typewriter
340 `sin(3)
340 `sin(3)
341 \family default
341 \family default
342 '.
342 '.
343 \layout Itemize
343 \layout Itemize
344
344
345 Auto-quoting: using `
345 Auto-quoting: using `
346 \family typewriter
346 \family typewriter
347 ,
347 ,
348 \family default
348 \family default
349 ' or `
349 ' or `
350 \family typewriter
350 \family typewriter
351 ;
351 ;
352 \family default
352 \family default
353 ' as the first character forces auto-quoting of the rest of the line:
353 ' as the first character forces auto-quoting of the rest of the line:
354 \family typewriter
354 \family typewriter
355 `,my_function a\SpecialChar ~
355 `,my_function a\SpecialChar ~
356 b'
356 b'
357 \family default
357 \family default
358 becomes automatically
358 becomes automatically
359 \family typewriter
359 \family typewriter
360 `my_function("a","b")'
360 `my_function("a","b")'
361 \family default
361 \family default
362 , while
362 , while
363 \family typewriter
363 \family typewriter
364 `;my_function a\SpecialChar ~
364 `;my_function a\SpecialChar ~
365 b'
365 b'
366 \family default
366 \family default
367 becomes
367 becomes
368 \family typewriter
368 \family typewriter
369 `my_function("a b")'
369 `my_function("a b")'
370 \family default
370 \family default
371 .
371 .
372 \layout Itemize
372 \layout Itemize
373
373
374 Extensible input syntax.
374 Extensible input syntax.
375 You can define filters that pre-process user input to simplify input in
375 You can define filters that pre-process user input to simplify input in
376 special situations.
376 special situations.
377 This allows for example pasting multi-line code fragments which start with
377 This allows for example pasting multi-line code fragments which start with
378
378
379 \family typewriter
379 \family typewriter
380 `>>>'
380 `>>>'
381 \family default
381 \family default
382 or
382 or
383 \family typewriter
383 \family typewriter
384 `...'
384 `...'
385 \family default
385 \family default
386 such as those from other python sessions or the standard Python documentation.
386 such as those from other python sessions or the standard Python documentation.
387 \layout Itemize
387 \layout Itemize
388
388
389 Flexible configuration system.
389 Flexible configuration system.
390 It uses a configuration file which allows permanent setting of all command-line
390 It uses a configuration file which allows permanent setting of all command-line
391 options, module loading, code and file execution.
391 options, module loading, code and file execution.
392 The system allows recursive file inclusion, so you can have a base file
392 The system allows recursive file inclusion, so you can have a base file
393 with defaults and layers which load other customizations for particular
393 with defaults and layers which load other customizations for particular
394 projects.
394 projects.
395 \layout Itemize
395 \layout Itemize
396
396
397 Embeddable.
397 Embeddable.
398 You can call IPython as a python shell inside your own python programs.
398 You can call IPython as a python shell inside your own python programs.
399 This can be used both for debugging code or for providing interactive abilities
399 This can be used both for debugging code or for providing interactive abilities
400 to your programs with knowledge about the local namespaces (very useful
400 to your programs with knowledge about the local namespaces (very useful
401 in debugging and data analysis situations).
401 in debugging and data analysis situations).
402 \layout Itemize
402 \layout Itemize
403
403
404 Easy debugger access.
404 Easy debugger access.
405 You can set IPython to call up an enhanced version of the Python debugger
405 You can set IPython to call up an enhanced version of the Python debugger
406 (
406 (
407 \family typewriter
407 \family typewriter
408 pdb
408 pdb
409 \family default
409 \family default
410 ) every time there is an uncaught exception.
410 ) every time there is an uncaught exception.
411 This drops you inside the code which triggered the exception with all the
411 This drops you inside the code which triggered the exception with all the
412 data live and it is possible to navigate the stack to rapidly isolate the
412 data live and it is possible to navigate the stack to rapidly isolate the
413 source of a bug.
413 source of a bug.
414 The
414 The
415 \family typewriter
415 \family typewriter
416 %run
416 %run
417 \family default
417 \family default
418 magic command --with the
418 magic command --with the
419 \family typewriter
419 \family typewriter
420 -d
420 -d
421 \family default
421 \family default
422 option-- can run any script under
422 option-- can run any script under
423 \family typewriter
423 \family typewriter
424 pdb
424 pdb
425 \family default
425 \family default
426 's control, automatically setting initial breakpoints for you.
426 's control, automatically setting initial breakpoints for you.
427 This version of
427 This version of
428 \family typewriter
428 \family typewriter
429 pdb
429 pdb
430 \family default
430 \family default
431 has IPython-specific improvements, including tab-completion and traceback
431 has IPython-specific improvements, including tab-completion and traceback
432 coloring support.
432 coloring support.
433 \layout Itemize
433 \layout Itemize
434
434
435 Profiler support.
435 Profiler support.
436 You can run single statements (similar to
436 You can run single statements (similar to
437 \family typewriter
437 \family typewriter
438 profile.run()
438 profile.run()
439 \family default
439 \family default
440 ) or complete programs under the profiler's control.
440 ) or complete programs under the profiler's control.
441 While this is possible with the standard
441 While this is possible with standard
442 \family typewriter
443 cProfile
444 \family default
445 or
442 \family typewriter
446 \family typewriter
443 profile
447 profile
444 \family default
448 \family default
445 module, IPython wraps this functionality with magic commands (see
449 modules, IPython wraps this functionality with magic commands (see
446 \family typewriter
450 \family typewriter
447 `%prun'
451 `%prun'
448 \family default
452 \family default
449 and
453 and
450 \family typewriter
454 \family typewriter
451 `%run -p
455 `%run -p
452 \family default
456 \family default
453 ') convenient for rapid interactive work.
457 ') convenient for rapid interactive work.
454 \layout Subsection
458 \layout Subsection
455
459
456 Portability and Python requirements
460 Portability and Python requirements
457 \layout Standard
461 \layout Standard
458
462
459
463
460 \series bold
464 \series bold
461 Python requirements:
465 Python requirements:
462 \series default
466 \series default
463 IPython requires with Python version 2.3 or newer.
467 IPython requires with Python version 2.3 or newer.
464 If you are still using Python 2.2 and can not upgrade, the last version
468 If you are still using Python 2.2 and can not upgrade, the last version
465 of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
469 of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
466 that.
470 that.
467 \layout Standard
471 \layout Standard
468
472
469 IPython is developed under
473 IPython is developed under
470 \series bold
474 \series bold
471 Linux
475 Linux
472 \series default
476 \series default
473 , but it should work in any reasonable Unix-type system (tested OK under
477 , but it should work in any reasonable Unix-type system (tested OK under
474 Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
478 Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
475 \layout Standard
479 \layout Standard
476
480
477
481
478 \series bold
482 \series bold
479 Mac OS X
483 Mac OS X
480 \series default
484 \series default
481 : it works, apparently without any problems (thanks to Jim Boyle at Lawrence
485 : it works, apparently without any problems (thanks to Jim Boyle at Lawrence
482 Livermore for the information).
486 Livermore for the information).
483 Thanks to Andrea Riciputi, Fink support is available.
487 Thanks to Andrea Riciputi, Fink support is available.
484 \layout Standard
488 \layout Standard
485
489
486
490
487 \series bold
491 \series bold
488 CygWin
492 CygWin
489 \series default
493 \series default
490 : it works mostly OK, though some users have reported problems with prompt
494 : it works mostly OK, though some users have reported problems with prompt
491 coloring.
495 coloring.
492 No satisfactory solution to this has been found so far, you may want to
496 No satisfactory solution to this has been found so far, you may want to
493 disable colors permanently in the
497 disable colors permanently in the
494 \family typewriter
498 \family typewriter
495 ipythonrc
499 ipythonrc
496 \family default
500 \family default
497 configuration file if you experience problems.
501 configuration file if you experience problems.
498 If you have proper color support under cygwin, please post to the IPython
502 If you have proper color support under cygwin, please post to the IPython
499 mailing list so this issue can be resolved for all users.
503 mailing list so this issue can be resolved for all users.
500 \layout Standard
504 \layout Standard
501
505
502
506
503 \series bold
507 \series bold
504 Windows
508 Windows
505 \series default
509 \series default
506 : it works well under Windows XP/2k, and I suspect NT should behave similarly.
510 : it works well under Windows XP/2k, and I suspect NT should behave similarly.
507 Section\SpecialChar ~
511 Section\SpecialChar ~
508
512
509 \begin_inset LatexCommand \ref{sub:Under-Windows}
513 \begin_inset LatexCommand \ref{sub:Under-Windows}
510
514
511 \end_inset
515 \end_inset
512
516
513 describes installation details for Windows, including some additional tools
517 describes installation details for Windows, including some additional tools
514 needed on this platform.
518 needed on this platform.
515 \layout Standard
519 \layout Standard
516
520
517 Windows 9x support is present, and has been reported to work fine (at least
521 Windows 9x support is present, and has been reported to work fine (at least
518 on WinME).
522 on WinME).
519 \layout Standard
523 \layout Standard
520
524
521 Note, that I have very little access to and experience with Windows development.
525 Note, that I have very little access to and experience with Windows development.
522 However, an excellent group of Win32 users (led by Ville Vainio), consistently
526 However, an excellent group of Win32 users (led by Ville Vainio), consistently
523 contribute bugfixes and platform-specific enhancements, so they more than
527 contribute bugfixes and platform-specific enhancements, so they more than
524 make up for my deficiencies on that front.
528 make up for my deficiencies on that front.
525 In fact, Win32 users report using IPython as a system shell (see Sec.\SpecialChar ~
529 In fact, Win32 users report using IPython as a system shell (see Sec.\SpecialChar ~
526
530
527 \begin_inset LatexCommand \ref{sec:IPython-as-shell}
531 \begin_inset LatexCommand \ref{sec:IPython-as-shell}
528
532
529 \end_inset
533 \end_inset
530
534
531 for details), as it offers a level of control and features which the default
535 for details), as it offers a level of control and features which the default
532
536
533 \family typewriter
537 \family typewriter
534 cmd.exe
538 cmd.exe
535 \family default
539 \family default
536 doesn't provide.
540 doesn't provide.
537 \layout Subsection
541 \layout Subsection
538
542
539 Location
543 Location
540 \layout Standard
544 \layout Standard
541
545
542 IPython is generously hosted at
546 IPython is generously hosted at
543 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
547 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
544
548
545 \end_inset
549 \end_inset
546
550
547 by the Enthought, Inc and the SciPy project.
551 by the Enthought, Inc and the SciPy project.
548 This site offers downloads, subversion access, mailing lists and a bug
552 This site offers downloads, subversion access, mailing lists and a bug
549 tracking system.
553 tracking system.
550 I am very grateful to Enthought (
554 I am very grateful to Enthought (
551 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
555 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
552
556
553 \end_inset
557 \end_inset
554
558
555 ) and all of the SciPy team for their contribution.
559 ) and all of the SciPy team for their contribution.
556 \layout Section
560 \layout Section
557
561
558
562
559 \begin_inset LatexCommand \label{sec:install}
563 \begin_inset LatexCommand \label{sec:install}
560
564
561 \end_inset
565 \end_inset
562
566
563 Installation
567 Installation
564 \layout Subsection
568 \layout Subsection
565
569
566 Instant instructions
570 Instant instructions
567 \layout Standard
571 \layout Standard
568
572
569 If you are of the impatient kind, under Linux/Unix simply untar/unzip the
573 If you are of the impatient kind, under Linux/Unix simply untar/unzip the
570 download, then install with
574 download, then install with
571 \family typewriter
575 \family typewriter
572 `python setup.py install'
576 `python setup.py install'
573 \family default
577 \family default
574 .
578 .
575 Under Windows, double-click on the provided
579 Under Windows, double-click on the provided
576 \family typewriter
580 \family typewriter
577 .exe
581 .exe
578 \family default
582 \family default
579 binary installer.
583 binary installer.
580 \layout Standard
584 \layout Standard
581
585
582 Then, take a look at Sections
586 Then, take a look at Sections
583 \begin_inset LatexCommand \ref{sec:good_config}
587 \begin_inset LatexCommand \ref{sec:good_config}
584
588
585 \end_inset
589 \end_inset
586
590
587 for configuring things optimally and
591 for configuring things optimally and
588 \begin_inset LatexCommand \ref{sec:quick_tips}
592 \begin_inset LatexCommand \ref{sec:quick_tips}
589
593
590 \end_inset
594 \end_inset
591
595
592 for quick tips on efficient use of IPython.
596 for quick tips on efficient use of IPython.
593 You can later refer to the rest of the manual for all the gory details.
597 You can later refer to the rest of the manual for all the gory details.
594 \layout Standard
598 \layout Standard
595
599
596 See the notes in sec.
600 See the notes in sec.
597
601
598 \begin_inset LatexCommand \ref{sec:upgrade}
602 \begin_inset LatexCommand \ref{sec:upgrade}
599
603
600 \end_inset
604 \end_inset
601
605
602 for upgrading IPython versions.
606 for upgrading IPython versions.
603 \layout Subsection
607 \layout Subsection
604
608
605 Detailed Unix instructions (Linux, Mac OS X, etc.)
609 Detailed Unix instructions (Linux, Mac OS X, etc.)
606 \layout Standard
610 \layout Standard
607
611
608 For RPM based systems, simply install the supplied package in the usual
612 For RPM based systems, simply install the supplied package in the usual
609 manner.
613 manner.
610 If you download the tar archive, the process is:
614 If you download the tar archive, the process is:
611 \layout Enumerate
615 \layout Enumerate
612
616
613 Unzip/untar the
617 Unzip/untar the
614 \family typewriter
618 \family typewriter
615 ipython-XXX.tar.gz
619 ipython-XXX.tar.gz
616 \family default
620 \family default
617 file wherever you want (
621 file wherever you want (
618 \family typewriter
622 \family typewriter
619 XXX
623 XXX
620 \family default
624 \family default
621 is the version number).
625 is the version number).
622 It will make a directory called
626 It will make a directory called
623 \family typewriter
627 \family typewriter
624 ipython-XXX.
628 ipython-XXX.
625
629
626 \family default
630 \family default
627 Change into that directory where you will find the files
631 Change into that directory where you will find the files
628 \family typewriter
632 \family typewriter
629 README
633 README
630 \family default
634 \family default
631 and
635 and
632 \family typewriter
636 \family typewriter
633 setup.py
637 setup.py
634 \family default
638 \family default
635 .
639 .
636
640
637 \family typewriter
641 \family typewriter
638 O
642 O
639 \family default
643 \family default
640 nce you've completed the installation, you can safely remove this directory.
644 nce you've completed the installation, you can safely remove this directory.
641
645
642 \layout Enumerate
646 \layout Enumerate
643
647
644 If you are installing over a previous installation of version 0.2.0 or earlier,
648 If you are installing over a previous installation of version 0.2.0 or earlier,
645 first remove your
649 first remove your
646 \family typewriter
650 \family typewriter
647 $HOME/.ipython
651 $HOME/.ipython
648 \family default
652 \family default
649 directory, since the configuration file format has changed somewhat (the
653 directory, since the configuration file format has changed somewhat (the
650 '=' were removed from all option specifications).
654 '=' were removed from all option specifications).
651 Or you can call ipython with the
655 Or you can call ipython with the
652 \family typewriter
656 \family typewriter
653 -upgrade
657 -upgrade
654 \family default
658 \family default
655 option and it will do this automatically for you.
659 option and it will do this automatically for you.
656 \layout Enumerate
660 \layout Enumerate
657
661
658 IPython uses distutils, so you can install it by simply typing at the system
662 IPython uses distutils, so you can install it by simply typing at the system
659 prompt (don't type the
663 prompt (don't type the
660 \family typewriter
664 \family typewriter
661 $
665 $
662 \family default
666 \family default
663 )
667 )
664 \newline
668 \newline
665
669
666 \family typewriter
670 \family typewriter
667 $ python setup.py install
671 $ python setup.py install
668 \family default
672 \family default
669
673
670 \newline
674 \newline
671 Note that this assumes you have root access to your machine.
675 Note that this assumes you have root access to your machine.
672 If you don't have root access or don't want IPython to go in the default
676 If you don't have root access or don't want IPython to go in the default
673 python directories, you'll need to use the
677 python directories, you'll need to use the
674 \begin_inset ERT
678 \begin_inset ERT
675 status Collapsed
679 status Collapsed
676
680
677 \layout Standard
681 \layout Standard
678
682
679 \backslash
683 \backslash
680 verb|--home|
684 verb|--home|
681 \end_inset
685 \end_inset
682
686
683 option (or
687 option (or
684 \begin_inset ERT
688 \begin_inset ERT
685 status Collapsed
689 status Collapsed
686
690
687 \layout Standard
691 \layout Standard
688
692
689 \backslash
693 \backslash
690 verb|--prefix|
694 verb|--prefix|
691 \end_inset
695 \end_inset
692
696
693 ).
697 ).
694 For example:
698 For example:
695 \newline
699 \newline
696
700
697 \begin_inset ERT
701 \begin_inset ERT
698 status Collapsed
702 status Collapsed
699
703
700 \layout Standard
704 \layout Standard
701
705
702 \backslash
706 \backslash
703 verb|$ python setup.py install --home $HOME/local|
707 verb|$ python setup.py install --home $HOME/local|
704 \end_inset
708 \end_inset
705
709
706
710
707 \newline
711 \newline
708 will install IPython into
712 will install IPython into
709 \family typewriter
713 \family typewriter
710 $HOME/local
714 $HOME/local
711 \family default
715 \family default
712 and its subdirectories (creating them if necessary).
716 and its subdirectories (creating them if necessary).
713 \newline
717 \newline
714 You can type
718 You can type
715 \newline
719 \newline
716
720
717 \begin_inset ERT
721 \begin_inset ERT
718 status Collapsed
722 status Collapsed
719
723
720 \layout Standard
724 \layout Standard
721
725
722 \backslash
726 \backslash
723 verb|$ python setup.py --help|
727 verb|$ python setup.py --help|
724 \end_inset
728 \end_inset
725
729
726
730
727 \newline
731 \newline
728 for more details.
732 for more details.
729 \newline
733 \newline
730 Note that if you change the default location for
734 Note that if you change the default location for
731 \begin_inset ERT
735 \begin_inset ERT
732 status Collapsed
736 status Collapsed
733
737
734 \layout Standard
738 \layout Standard
735
739
736 \backslash
740 \backslash
737 verb|--home|
741 verb|--home|
738 \end_inset
742 \end_inset
739
743
740 at installation, IPython may end up installed at a location which is not
744 at installation, IPython may end up installed at a location which is not
741 part of your
745 part of your
742 \family typewriter
746 \family typewriter
743 $PYTHONPATH
747 $PYTHONPATH
744 \family default
748 \family default
745 environment variable.
749 environment variable.
746 In this case, you'll need to configure this variable to include the actual
750 In this case, you'll need to configure this variable to include the actual
747 directory where the
751 directory where the
748 \family typewriter
752 \family typewriter
749 IPython/
753 IPython/
750 \family default
754 \family default
751 directory ended (typically the value you give to
755 directory ended (typically the value you give to
752 \begin_inset ERT
756 \begin_inset ERT
753 status Collapsed
757 status Collapsed
754
758
755 \layout Standard
759 \layout Standard
756
760
757 \backslash
761 \backslash
758 verb|--home|
762 verb|--home|
759 \end_inset
763 \end_inset
760
764
761 plus
765 plus
762 \family typewriter
766 \family typewriter
763 /lib/python
767 /lib/python
764 \family default
768 \family default
765 ).
769 ).
766 \layout Subsubsection
770 \layout Subsubsection
767
771
768 Mac OSX information
772 Mac OSX information
769 \layout Standard
773 \layout Standard
770
774
771 Under OSX, there is a choice you need to make.
775 Under OSX, there is a choice you need to make.
772 Apple ships its own build of Python, which lives in the core OSX filesystem
776 Apple ships its own build of Python, which lives in the core OSX filesystem
773 hierarchy.
777 hierarchy.
774 You can also manually install a separate Python, either purely by hand
778 You can also manually install a separate Python, either purely by hand
775 (typically in
779 (typically in
776 \family typewriter
780 \family typewriter
777 /usr/local
781 /usr/local
778 \family default
782 \family default
779 ) or by using Fink, which puts everything under
783 ) or by using Fink, which puts everything under
780 \family typewriter
784 \family typewriter
781 /sw
785 /sw
782 \family default
786 \family default
783 .
787 .
784 Which route to follow is a matter of personal preference, as I've seen
788 Which route to follow is a matter of personal preference, as I've seen
785 users who favor each of the approaches.
789 users who favor each of the approaches.
786 Here I will simply list the known installation issues under OSX, along
790 Here I will simply list the known installation issues under OSX, along
787 with their solutions.
791 with their solutions.
788 \layout Standard
792 \layout Standard
789
793
790 This page:
794 This page:
791 \begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
795 \begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
792
796
793 \end_inset
797 \end_inset
794
798
795 contains information on this topic, with additional details on how to make
799 contains information on this topic, with additional details on how to make
796 IPython and matplotlib play nicely under OSX.
800 IPython and matplotlib play nicely under OSX.
797 \layout Subsubsection*
801 \layout Subsubsection*
798
802
799 GUI problems
803 GUI problems
800 \layout Standard
804 \layout Standard
801
805
802 The following instructions apply to an install of IPython under OSX from
806 The following instructions apply to an install of IPython under OSX from
803 unpacking the
807 unpacking the
804 \family typewriter
808 \family typewriter
805 .tar.gz
809 .tar.gz
806 \family default
810 \family default
807 distribution and installing it for the default Python interpreter shipped
811 distribution and installing it for the default Python interpreter shipped
808 by Apple.
812 by Apple.
809 If you are using a fink install, fink will take care of these details for
813 If you are using a fink install, fink will take care of these details for
810 you, by installing IPython against fink's Python.
814 you, by installing IPython against fink's Python.
811 \layout Standard
815 \layout Standard
812
816
813 IPython offers various forms of support for interacting with graphical applicati
817 IPython offers various forms of support for interacting with graphical applicati
814 ons from the command line, from simple Tk apps (which are in principle always
818 ons from the command line, from simple Tk apps (which are in principle always
815 supported by Python) to interactive control of WX, Qt and GTK apps.
819 supported by Python) to interactive control of WX, Qt and GTK apps.
816 Under OSX, however, this requires that ipython is installed by calling
820 Under OSX, however, this requires that ipython is installed by calling
817 the special
821 the special
818 \family typewriter
822 \family typewriter
819 pythonw
823 pythonw
820 \family default
824 \family default
821 script at installation time, which takes care of coordinating things with
825 script at installation time, which takes care of coordinating things with
822 Apple's graphical environment.
826 Apple's graphical environment.
823 \layout Standard
827 \layout Standard
824
828
825 So when installing under OSX, it is best to use the following command:
829 So when installing under OSX, it is best to use the following command:
826 \family typewriter
830 \family typewriter
827
831
828 \newline
832 \newline
829
833
830 \family default
834 \family default
831
835
832 \begin_inset ERT
836 \begin_inset ERT
833 status Collapsed
837 status Collapsed
834
838
835 \layout Standard
839 \layout Standard
836
840
837 \backslash
841 \backslash
838 verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
842 verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
839 \end_inset
843 \end_inset
840
844
841
845
842 \newline
846 \newline
843 or
847 or
844 \newline
848 \newline
845
849
846 \begin_inset ERT
850 \begin_inset ERT
847 status Collapsed
851 status Collapsed
848
852
849 \layout Standard
853 \layout Standard
850
854
851 \backslash
855 \backslash
852 verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
856 verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
853 \end_inset
857 \end_inset
854
858
855
859
856 \newline
860 \newline
857 depending on where you like to keep hand-installed executables.
861 depending on where you like to keep hand-installed executables.
858 \layout Standard
862 \layout Standard
859
863
860 The resulting script will have an appropriate shebang line (the first line
864 The resulting script will have an appropriate shebang line (the first line
861 in the script whic begins with
865 in the script whic begins with
862 \family typewriter
866 \family typewriter
863 #!...
867 #!...
864 \family default
868 \family default
865 ) such that the ipython interpreter can interact with the OS X GUI.
869 ) such that the ipython interpreter can interact with the OS X GUI.
866 If the installed version does not work and has a shebang line that points
870 If the installed version does not work and has a shebang line that points
867 to, for example, just
871 to, for example, just
868 \family typewriter
872 \family typewriter
869 /usr/bin/python
873 /usr/bin/python
870 \family default
874 \family default
871 , then you might have a stale, cached version in your
875 , then you might have a stale, cached version in your
872 \family typewriter
876 \family typewriter
873 build/scripts-<python-version>
877 build/scripts-<python-version>
874 \family default
878 \family default
875 directory.
879 directory.
876 Delete that directory and rerun the
880 Delete that directory and rerun the
877 \family typewriter
881 \family typewriter
878 setup.py
882 setup.py
879 \family default
883 \family default
880 .
884 .
881
885
882 \layout Standard
886 \layout Standard
883
887
884 It is also a good idea to use the special flag
888 It is also a good idea to use the special flag
885 \begin_inset ERT
889 \begin_inset ERT
886 status Collapsed
890 status Collapsed
887
891
888 \layout Standard
892 \layout Standard
889
893
890 \backslash
894 \backslash
891 verb|--install-scripts|
895 verb|--install-scripts|
892 \end_inset
896 \end_inset
893
897
894 as indicated above, to ensure that the ipython scripts end up in a location
898 as indicated above, to ensure that the ipython scripts end up in a location
895 which is part of your
899 which is part of your
896 \family typewriter
900 \family typewriter
897 $PATH
901 $PATH
898 \family default
902 \family default
899 .
903 .
900 Otherwise Apple's Python will put the scripts in an internal directory
904 Otherwise Apple's Python will put the scripts in an internal directory
901 not available by default at the command line (if you use
905 not available by default at the command line (if you use
902 \family typewriter
906 \family typewriter
903 /usr/local/bin
907 /usr/local/bin
904 \family default
908 \family default
905 , you need to make sure this is in your
909 , you need to make sure this is in your
906 \family typewriter
910 \family typewriter
907 $PATH
911 $PATH
908 \family default
912 \family default
909 , which may not be true by default).
913 , which may not be true by default).
910 \layout Subsubsection*
914 \layout Subsubsection*
911
915
912 Readline problems
916 Readline problems
913 \layout Standard
917 \layout Standard
914
918
915 By default, the Python version shipped by Apple does
919 By default, the Python version shipped by Apple does
916 \emph on
920 \emph on
917 not
921 not
918 \emph default
922 \emph default
919 include the readline library, so central to IPython's behavior.
923 include the readline library, so central to IPython's behavior.
920 If you install IPython against Apple's Python, you will not have arrow
924 If you install IPython against Apple's Python, you will not have arrow
921 keys, tab completion, etc.
925 keys, tab completion, etc.
922 For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
926 For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
923 \newline
927 \newline
924
928
925 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
929 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
926
930
927 \end_inset
931 \end_inset
928
932
929
933
930 \layout Standard
934 \layout Standard
931
935
932 If you are using OSX 10.4 (Tiger), after installing this package you need
936 If you are using OSX 10.4 (Tiger), after installing this package you need
933 to either:
937 to either:
934 \layout Enumerate
938 \layout Enumerate
935
939
936 move
940 move
937 \family typewriter
941 \family typewriter
938 readline.so
942 readline.so
939 \family default
943 \family default
940 from
944 from
941 \family typewriter
945 \family typewriter
942 /Library/Python/2.3
946 /Library/Python/2.3
943 \family default
947 \family default
944 to
948 to
945 \family typewriter
949 \family typewriter
946 /Library/Python/2.3/site-packages
950 /Library/Python/2.3/site-packages
947 \family default
951 \family default
948 , or
952 , or
949 \layout Enumerate
953 \layout Enumerate
950
954
951 install
955 install
952 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
956 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
953
957
954 \end_inset
958 \end_inset
955
959
956
960
957 \layout Standard
961 \layout Standard
958
962
959 Users installing against Fink's Python or a properly hand-built one should
963 Users installing against Fink's Python or a properly hand-built one should
960 not have this problem.
964 not have this problem.
961 \layout Subsubsection*
965 \layout Subsubsection*
962
966
963 DarwinPorts
967 DarwinPorts
964 \layout Standard
968 \layout Standard
965
969
966 I report here a message from an OSX user, who suggests an alternative means
970 I report here a message from an OSX user, who suggests an alternative means
967 of using IPython under this operating system with good results.
971 of using IPython under this operating system with good results.
968 Please let me know of any updates that may be useful for this section.
972 Please let me know of any updates that may be useful for this section.
969 His message is reproduced verbatim below:
973 His message is reproduced verbatim below:
970 \layout Quote
974 \layout Quote
971
975
972 From: Markus Banfi
976 From: Markus Banfi
973 \family typewriter
977 \family typewriter
974 <markus.banfi-AT-mospheira.net>
978 <markus.banfi-AT-mospheira.net>
975 \layout Quote
979 \layout Quote
976
980
977 As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
981 As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
978 of Fink.
982 of Fink.
979 I had no problems installing ipython with DarwinPorts.
983 I had no problems installing ipython with DarwinPorts.
980 It's just:
984 It's just:
981 \layout Quote
985 \layout Quote
982
986
983
987
984 \family typewriter
988 \family typewriter
985 sudo port install py-ipython
989 sudo port install py-ipython
986 \layout Quote
990 \layout Quote
987
991
988 It automatically resolved all dependencies (python24, readline, py-readline).
992 It automatically resolved all dependencies (python24, readline, py-readline).
989 So far I did not encounter any problems with the DarwinPorts port of ipython.
993 So far I did not encounter any problems with the DarwinPorts port of ipython.
990
994
991 \layout Subsection
995 \layout Subsection
992
996
993
997
994 \begin_inset LatexCommand \label{sub:Under-Windows}
998 \begin_inset LatexCommand \label{sub:Under-Windows}
995
999
996 \end_inset
1000 \end_inset
997
1001
998 Windows instructions
1002 Windows instructions
999 \layout Standard
1003 \layout Standard
1000
1004
1001 Some of IPython's very useful features are:
1005 Some of IPython's very useful features are:
1002 \layout Itemize
1006 \layout Itemize
1003
1007
1004 Integrated readline support (Tab-based file, object and attribute completion,
1008 Integrated readline support (Tab-based file, object and attribute completion,
1005 input history across sessions, editable command line, etc.)
1009 input history across sessions, editable command line, etc.)
1006 \layout Itemize
1010 \layout Itemize
1007
1011
1008 Coloring of prompts, code and tracebacks.
1012 Coloring of prompts, code and tracebacks.
1009 \layout Standard
1013 \layout Standard
1010
1014
1011 These, by default, are only available under Unix-like operating systems.
1015 These, by default, are only available under Unix-like operating systems.
1012 However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
1016 However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
1013 from them.
1017 from them.
1014 His readline library originally implemented both GNU readline functionality
1018 His readline library originally implemented both GNU readline functionality
1015 and color support, so that IPython under Windows XP/2k can be as friendly
1019 and color support, so that IPython under Windows XP/2k can be as friendly
1016 and powerful as under Unix-like environments.
1020 and powerful as under Unix-like environments.
1017
1021
1018 \layout Standard
1022 \layout Standard
1019
1023
1020 This library, now named
1024 This library, now named
1021 \family typewriter
1025 \family typewriter
1022 PyReadline
1026 PyReadline
1023 \family default
1027 \family default
1024 , has been absorbed by the IPython team (JοΏ½rgen Stenarson, in particular),
1028 , has been absorbed by the IPython team (JοΏ½rgen Stenarson, in particular),
1025 and it continues to be developed with new features, as well as being distribute
1029 and it continues to be developed with new features, as well as being distribute
1026 d directly from the IPython site.
1030 d directly from the IPython site.
1027 \layout Standard
1031 \layout Standard
1028
1032
1029 The
1033 The
1030 \family typewriter
1034 \family typewriter
1031 PyReadline
1035 PyReadline
1032 \family default
1036 \family default
1033 extension requires
1037 extension requires
1034 \family typewriter
1038 \family typewriter
1035 CTypes
1039 CTypes
1036 \family default
1040 \family default
1037 and the windows IPython installer needs
1041 and the windows IPython installer needs
1038 \family typewriter
1042 \family typewriter
1039 PyWin32
1043 PyWin32
1040 \family default
1044 \family default
1041 , so in all you need:
1045 , so in all you need:
1042 \layout Enumerate
1046 \layout Enumerate
1043
1047
1044
1048
1045 \family typewriter
1049 \family typewriter
1046 PyWin32
1050 PyWin32
1047 \family default
1051 \family default
1048 from
1052 from
1049 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond}
1053 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond}
1050
1054
1051 \end_inset
1055 \end_inset
1052
1056
1053 .
1057 .
1054 \layout Enumerate
1058 \layout Enumerate
1055
1059
1056
1060
1057 \family typewriter
1061 \family typewriter
1058 CTypes
1062 CTypes
1059 \family default
1063 \family default
1060 from
1064 from
1061 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1065 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1062
1066
1063 \end_inset
1067 \end_inset
1064
1068
1065 (you
1069 (you
1066 \emph on
1070 \emph on
1067 must
1071 must
1068 \emph default
1072 \emph default
1069 use version 0.9.1 or newer).
1073 use version 0.9.1 or newer).
1070 \layout Enumerate
1074 \layout Enumerate
1071
1075
1072
1076
1073 \family typewriter
1077 \family typewriter
1074 PyReadline
1078 PyReadline
1075 \family default
1079 \family default
1076 for Windows from
1080 for Windows from
1077 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro}
1081 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro}
1078
1082
1079 \end_inset
1083 \end_inset
1080
1084
1081 .
1085 .
1082 That page contains further details on using and configuring the system
1086 That page contains further details on using and configuring the system
1083 to your liking.
1087 to your liking.
1084 \layout Standard
1088 \layout Standard
1085
1089
1086
1090
1087 \series bold
1091 \series bold
1088 Warning about a broken readline-like library:
1092 Warning about a broken readline-like library:
1089 \series default
1093 \series default
1090 several users have reported problems stemming from using the pseudo-readline
1094 several users have reported problems stemming from using the pseudo-readline
1091 library at
1095 library at
1092 \begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
1096 \begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
1093
1097
1094 \end_inset
1098 \end_inset
1095
1099
1096 .
1100 .
1097 This is a broken library which, while called readline, only implements
1101 This is a broken library which, while called readline, only implements
1098 an incomplete subset of the readline API.
1102 an incomplete subset of the readline API.
1099 Since it is still called readline, it fools IPython's detection mechanisms
1103 Since it is still called readline, it fools IPython's detection mechanisms
1100 and causes unpredictable crashes later.
1104 and causes unpredictable crashes later.
1101 If you wish to use IPython under Windows, you must NOT use this library,
1105 If you wish to use IPython under Windows, you must NOT use this library,
1102 which for all purposes is (at least as of version 1.6) terminally broken.
1106 which for all purposes is (at least as of version 1.6) terminally broken.
1103 \layout Subsubsection
1107 \layout Subsubsection
1104
1108
1105 Installation procedure
1109 Installation procedure
1106 \layout Standard
1110 \layout Standard
1107
1111
1108 Once you have the above installed, from the IPython download directory grab
1112 Once you have the above installed, from the IPython download directory grab
1109 the
1113 the
1110 \family typewriter
1114 \family typewriter
1111 ipython-XXX.win32.exe
1115 ipython-XXX.win32.exe
1112 \family default
1116 \family default
1113 file, where
1117 file, where
1114 \family typewriter
1118 \family typewriter
1115 XXX
1119 XXX
1116 \family default
1120 \family default
1117 represents the version number.
1121 represents the version number.
1118 This is a regular windows executable installer, which you can simply double-cli
1122 This is a regular windows executable installer, which you can simply double-cli
1119 ck to install.
1123 ck to install.
1120 It will add an entry for IPython to your Start Menu, as well as registering
1124 It will add an entry for IPython to your Start Menu, as well as registering
1121 IPython in the Windows list of applications, so you can later uninstall
1125 IPython in the Windows list of applications, so you can later uninstall
1122 it from the Control Panel.
1126 it from the Control Panel.
1123
1127
1124 \layout Standard
1128 \layout Standard
1125
1129
1126 IPython tries to install the configuration information in a directory named
1130 IPython tries to install the configuration information in a directory named
1127
1131
1128 \family typewriter
1132 \family typewriter
1129 .ipython
1133 .ipython
1130 \family default
1134 \family default
1131 (
1135 (
1132 \family typewriter
1136 \family typewriter
1133 _ipython
1137 _ipython
1134 \family default
1138 \family default
1135 under Windows) located in your `home' directory.
1139 under Windows) located in your `home' directory.
1136 IPython sets this directory by looking for a
1140 IPython sets this directory by looking for a
1137 \family typewriter
1141 \family typewriter
1138 HOME
1142 HOME
1139 \family default
1143 \family default
1140 environment variable; if such a variable does not exist, it uses
1144 environment variable; if such a variable does not exist, it uses
1141 \family typewriter
1145 \family typewriter
1142 HOMEDRIVE
1146 HOMEDRIVE
1143 \backslash
1147 \backslash
1144 HOMEPATH
1148 HOMEPATH
1145 \family default
1149 \family default
1146 (these are always defined by Windows).
1150 (these are always defined by Windows).
1147 This typically gives something like
1151 This typically gives something like
1148 \family typewriter
1152 \family typewriter
1149 C:
1153 C:
1150 \backslash
1154 \backslash
1151 Documents and Settings
1155 Documents and Settings
1152 \backslash
1156 \backslash
1153 YourUserName
1157 YourUserName
1154 \family default
1158 \family default
1155 , but your local details may vary.
1159 , but your local details may vary.
1156 In this directory you will find all the files that configure IPython's
1160 In this directory you will find all the files that configure IPython's
1157 defaults, and you can put there your profiles and extensions.
1161 defaults, and you can put there your profiles and extensions.
1158 This directory is automatically added by IPython to
1162 This directory is automatically added by IPython to
1159 \family typewriter
1163 \family typewriter
1160 sys.path
1164 sys.path
1161 \family default
1165 \family default
1162 , so anything you place there can be found by
1166 , so anything you place there can be found by
1163 \family typewriter
1167 \family typewriter
1164 import
1168 import
1165 \family default
1169 \family default
1166 statements.
1170 statements.
1167 \layout Paragraph
1171 \layout Paragraph
1168
1172
1169 Upgrading
1173 Upgrading
1170 \layout Standard
1174 \layout Standard
1171
1175
1172 For an IPython upgrade, you should first uninstall the previous version.
1176 For an IPython upgrade, you should first uninstall the previous version.
1173 This will ensure that all files and directories (such as the documentation)
1177 This will ensure that all files and directories (such as the documentation)
1174 which carry embedded version strings in their names are properly removed.
1178 which carry embedded version strings in their names are properly removed.
1175 \layout Paragraph
1179 \layout Paragraph
1176
1180
1177 Manual installation under Win32
1181 Manual installation under Win32
1178 \layout Standard
1182 \layout Standard
1179
1183
1180 In case the automatic installer does not work for some reason, you can download
1184 In case the automatic installer does not work for some reason, you can download
1181 the
1185 the
1182 \family typewriter
1186 \family typewriter
1183 ipython-XXX.tar.gz
1187 ipython-XXX.tar.gz
1184 \family default
1188 \family default
1185 file, which contains the full IPython source distribution (the popular
1189 file, which contains the full IPython source distribution (the popular
1186 WinZip can read
1190 WinZip can read
1187 \family typewriter
1191 \family typewriter
1188 .tar.gz
1192 .tar.gz
1189 \family default
1193 \family default
1190 files).
1194 files).
1191 After uncompressing the archive, you can install it at a command terminal
1195 After uncompressing the archive, you can install it at a command terminal
1192 just like any other Python module, by using
1196 just like any other Python module, by using
1193 \family typewriter
1197 \family typewriter
1194 `python setup.py install'
1198 `python setup.py install'
1195 \family default
1199 \family default
1196 .
1200 .
1197
1201
1198 \layout Standard
1202 \layout Standard
1199
1203
1200 After the installation, run the supplied
1204 After the installation, run the supplied
1201 \family typewriter
1205 \family typewriter
1202 win32_manual_post_install.py
1206 win32_manual_post_install.py
1203 \family default
1207 \family default
1204 script, which creates the necessary Start Menu shortcuts for you.
1208 script, which creates the necessary Start Menu shortcuts for you.
1205 \layout Subsection
1209 \layout Subsection
1206
1210
1207
1211
1208 \begin_inset LatexCommand \label{sec:upgrade}
1212 \begin_inset LatexCommand \label{sec:upgrade}
1209
1213
1210 \end_inset
1214 \end_inset
1211
1215
1212 Upgrading from a previous version
1216 Upgrading from a previous version
1213 \layout Standard
1217 \layout Standard
1214
1218
1215 If you are upgrading from a previous version of IPython, after doing the
1219 If you are upgrading from a previous version of IPython, after doing the
1216 routine installation described above, you should call IPython with the
1220 routine installation described above, you should call IPython with the
1217
1221
1218 \family typewriter
1222 \family typewriter
1219 -upgrade
1223 -upgrade
1220 \family default
1224 \family default
1221 option the first time you run your new copy.
1225 option the first time you run your new copy.
1222 This will automatically update your configuration directory while preserving
1226 This will automatically update your configuration directory while preserving
1223 copies of your old files.
1227 copies of your old files.
1224 You can then later merge back any personal customizations you may have
1228 You can then later merge back any personal customizations you may have
1225 made into the new files.
1229 made into the new files.
1226 It is a good idea to do this as there may be new options available in the
1230 It is a good idea to do this as there may be new options available in the
1227 new configuration files which you will not have.
1231 new configuration files which you will not have.
1228 \layout Standard
1232 \layout Standard
1229
1233
1230 Under Windows, if you don't know how to call python scripts with arguments
1234 Under Windows, if you don't know how to call python scripts with arguments
1231 from a command line, simply delete the old config directory and IPython
1235 from a command line, simply delete the old config directory and IPython
1232 will make a new one.
1236 will make a new one.
1233 Win2k and WinXP users will find it in
1237 Win2k and WinXP users will find it in
1234 \family typewriter
1238 \family typewriter
1235 C:
1239 C:
1236 \backslash
1240 \backslash
1237 Documents and Settings
1241 Documents and Settings
1238 \backslash
1242 \backslash
1239 YourUserName
1243 YourUserName
1240 \backslash
1244 \backslash
1241 _ipython
1245 _ipython
1242 \family default
1246 \family default
1243 , and Win 9x users under
1247 , and Win 9x users under
1244 \family typewriter
1248 \family typewriter
1245 C:
1249 C:
1246 \backslash
1250 \backslash
1247 Program Files
1251 Program Files
1248 \backslash
1252 \backslash
1249 IPython
1253 IPython
1250 \backslash
1254 \backslash
1251 _ipython.
1255 _ipython.
1252 \layout Section
1256 \layout Section
1253
1257
1254
1258
1255 \begin_inset LatexCommand \label{sec:good_config}
1259 \begin_inset LatexCommand \label{sec:good_config}
1256
1260
1257 \end_inset
1261 \end_inset
1258
1262
1259
1263
1260 \begin_inset OptArg
1264 \begin_inset OptArg
1261 collapsed true
1265 collapsed true
1262
1266
1263 \layout Standard
1267 \layout Standard
1264
1268
1265 Initial configuration
1269 Initial configuration
1266 \begin_inset ERT
1270 \begin_inset ERT
1267 status Collapsed
1271 status Collapsed
1268
1272
1269 \layout Standard
1273 \layout Standard
1270
1274
1271 \backslash
1275 \backslash
1272 ldots
1276 ldots
1273 \end_inset
1277 \end_inset
1274
1278
1275
1279
1276 \end_inset
1280 \end_inset
1277
1281
1278 Initial configuration of your environment
1282 Initial configuration of your environment
1279 \layout Standard
1283 \layout Standard
1280
1284
1281 This section will help you set various things in your environment for your
1285 This section will help you set various things in your environment for your
1282 IPython sessions to be as efficient as possible.
1286 IPython sessions to be as efficient as possible.
1283 All of IPython's configuration information, along with several example
1287 All of IPython's configuration information, along with several example
1284 files, is stored in a directory named by default
1288 files, is stored in a directory named by default
1285 \family typewriter
1289 \family typewriter
1286 $HOME/.ipython
1290 $HOME/.ipython
1287 \family default
1291 \family default
1288 .
1292 .
1289 You can change this by defining the environment variable
1293 You can change this by defining the environment variable
1290 \family typewriter
1294 \family typewriter
1291 IPYTHONDIR
1295 IPYTHONDIR
1292 \family default
1296 \family default
1293 , or at runtime with the command line option
1297 , or at runtime with the command line option
1294 \family typewriter
1298 \family typewriter
1295 -ipythondir
1299 -ipythondir
1296 \family default
1300 \family default
1297 .
1301 .
1298 \layout Standard
1302 \layout Standard
1299
1303
1300 If all goes well, the first time you run IPython it should automatically
1304 If all goes well, the first time you run IPython it should automatically
1301 create a user copy of the config directory for you, based on its builtin
1305 create a user copy of the config directory for you, based on its builtin
1302 defaults.
1306 defaults.
1303 You can look at the files it creates to learn more about configuring the
1307 You can look at the files it creates to learn more about configuring the
1304 system.
1308 system.
1305 The main file you will modify to configure IPython's behavior is called
1309 The main file you will modify to configure IPython's behavior is called
1306
1310
1307 \family typewriter
1311 \family typewriter
1308 ipythonrc
1312 ipythonrc
1309 \family default
1313 \family default
1310 (with a
1314 (with a
1311 \family typewriter
1315 \family typewriter
1312 .ini
1316 .ini
1313 \family default
1317 \family default
1314 extension under Windows), included for reference in Sec.
1318 extension under Windows), included for reference in Sec.
1315
1319
1316 \begin_inset LatexCommand \ref{sec:ipytonrc-sample}
1320 \begin_inset LatexCommand \ref{sec:ipytonrc-sample}
1317
1321
1318 \end_inset
1322 \end_inset
1319
1323
1320 .
1324 .
1321 This file is very commented and has many variables you can change to suit
1325 This file is very commented and has many variables you can change to suit
1322 your taste, you can find more details in Sec.
1326 your taste, you can find more details in Sec.
1323
1327
1324 \begin_inset LatexCommand \ref{sec:customization}
1328 \begin_inset LatexCommand \ref{sec:customization}
1325
1329
1326 \end_inset
1330 \end_inset
1327
1331
1328 .
1332 .
1329 Here we discuss the basic things you will want to make sure things are
1333 Here we discuss the basic things you will want to make sure things are
1330 working properly from the beginning.
1334 working properly from the beginning.
1331 \layout Subsection
1335 \layout Subsection
1332
1336
1333
1337
1334 \begin_inset LatexCommand \label{sec:help-access}
1338 \begin_inset LatexCommand \label{sec:help-access}
1335
1339
1336 \end_inset
1340 \end_inset
1337
1341
1338 Access to the Python help system
1342 Access to the Python help system
1339 \layout Standard
1343 \layout Standard
1340
1344
1341 This is true for Python in general (not just for IPython): you should have
1345 This is true for Python in general (not just for IPython): you should have
1342 an environment variable called
1346 an environment variable called
1343 \family typewriter
1347 \family typewriter
1344 PYTHONDOCS
1348 PYTHONDOCS
1345 \family default
1349 \family default
1346 pointing to the directory where your HTML Python documentation lives.
1350 pointing to the directory where your HTML Python documentation lives.
1347 In my system it's
1351 In my system it's
1348 \family typewriter
1352 \family typewriter
1349 /usr/share/doc/python-docs-2.3.4/html
1353 /usr/share/doc/python-docs-2.3.4/html
1350 \family default
1354 \family default
1351 , check your local details or ask your systems administrator.
1355 , check your local details or ask your systems administrator.
1352
1356
1353 \layout Standard
1357 \layout Standard
1354
1358
1355 This is the directory which holds the HTML version of the Python manuals.
1359 This is the directory which holds the HTML version of the Python manuals.
1356 Unfortunately it seems that different Linux distributions package these
1360 Unfortunately it seems that different Linux distributions package these
1357 files differently, so you may have to look around a bit.
1361 files differently, so you may have to look around a bit.
1358 Below I show the contents of this directory on my system for reference:
1362 Below I show the contents of this directory on my system for reference:
1359 \layout Standard
1363 \layout Standard
1360
1364
1361
1365
1362 \family typewriter
1366 \family typewriter
1363 [html]> ls
1367 [html]> ls
1364 \newline
1368 \newline
1365 about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat tut/
1369 about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat tut/
1366 about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
1370 about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
1367 \layout Standard
1371 \layout Standard
1368
1372
1369 You should really make sure this variable is correctly set so that Python's
1373 You should really make sure this variable is correctly set so that Python's
1370 pydoc-based help system works.
1374 pydoc-based help system works.
1371 It is a powerful and convenient system with full access to the Python manuals
1375 It is a powerful and convenient system with full access to the Python manuals
1372 and all modules accessible to you.
1376 and all modules accessible to you.
1373 \layout Standard
1377 \layout Standard
1374
1378
1375 Under Windows it seems that pydoc finds the documentation automatically,
1379 Under Windows it seems that pydoc finds the documentation automatically,
1376 so no extra setup appears necessary.
1380 so no extra setup appears necessary.
1377 \layout Subsection
1381 \layout Subsection
1378
1382
1379 Editor
1383 Editor
1380 \layout Standard
1384 \layout Standard
1381
1385
1382 The
1386 The
1383 \family typewriter
1387 \family typewriter
1384 %edit
1388 %edit
1385 \family default
1389 \family default
1386 command (and its alias
1390 command (and its alias
1387 \family typewriter
1391 \family typewriter
1388 %ed
1392 %ed
1389 \family default
1393 \family default
1390 ) will invoke the editor set in your environment as
1394 ) will invoke the editor set in your environment as
1391 \family typewriter
1395 \family typewriter
1392 EDITOR
1396 EDITOR
1393 \family default
1397 \family default
1394 .
1398 .
1395 If this variable is not set, it will default to
1399 If this variable is not set, it will default to
1396 \family typewriter
1400 \family typewriter
1397 vi
1401 vi
1398 \family default
1402 \family default
1399 under Linux/Unix and to
1403 under Linux/Unix and to
1400 \family typewriter
1404 \family typewriter
1401 notepad
1405 notepad
1402 \family default
1406 \family default
1403 under Windows.
1407 under Windows.
1404 You may want to set this variable properly and to a lightweight editor
1408 You may want to set this variable properly and to a lightweight editor
1405 which doesn't take too long to start (that is, something other than a new
1409 which doesn't take too long to start (that is, something other than a new
1406 instance of
1410 instance of
1407 \family typewriter
1411 \family typewriter
1408 Emacs
1412 Emacs
1409 \family default
1413 \family default
1410 ).
1414 ).
1411 This way you can edit multi-line code quickly and with the power of a real
1415 This way you can edit multi-line code quickly and with the power of a real
1412 editor right inside IPython.
1416 editor right inside IPython.
1413
1417
1414 \layout Standard
1418 \layout Standard
1415
1419
1416 If you are a dedicated
1420 If you are a dedicated
1417 \family typewriter
1421 \family typewriter
1418 Emacs
1422 Emacs
1419 \family default
1423 \family default
1420 user, you should set up the
1424 user, you should set up the
1421 \family typewriter
1425 \family typewriter
1422 Emacs
1426 Emacs
1423 \family default
1427 \family default
1424 server so that new requests are handled by the original process.
1428 server so that new requests are handled by the original process.
1425 This means that almost no time is spent in handling the request (assuming
1429 This means that almost no time is spent in handling the request (assuming
1426 an
1430 an
1427 \family typewriter
1431 \family typewriter
1428 Emacs
1432 Emacs
1429 \family default
1433 \family default
1430 process is already running).
1434 process is already running).
1431 For this to work, you need to set your
1435 For this to work, you need to set your
1432 \family typewriter
1436 \family typewriter
1433 EDITOR
1437 EDITOR
1434 \family default
1438 \family default
1435 environment variable to
1439 environment variable to
1436 \family typewriter
1440 \family typewriter
1437 'emacsclient'
1441 'emacsclient'
1438 \family default
1442 \family default
1439 .
1443 .
1440
1444
1441 \family typewriter
1445 \family typewriter
1442
1446
1443 \family default
1447 \family default
1444 The code below, supplied by Francois Pinard, can then be used in your
1448 The code below, supplied by Francois Pinard, can then be used in your
1445 \family typewriter
1449 \family typewriter
1446 .emacs
1450 .emacs
1447 \family default
1451 \family default
1448 file to enable the server:
1452 file to enable the server:
1449 \layout Standard
1453 \layout Standard
1450
1454
1451
1455
1452 \family typewriter
1456 \family typewriter
1453 (defvar server-buffer-clients)
1457 (defvar server-buffer-clients)
1454 \newline
1458 \newline
1455 (when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
1459 (when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
1456 \newline
1460 \newline
1457
1461
1458 \begin_inset ERT
1462 \begin_inset ERT
1459 status Collapsed
1463 status Collapsed
1460
1464
1461 \layout Standard
1465 \layout Standard
1462
1466
1463 \backslash
1467 \backslash
1464 hspace*{0mm}
1468 hspace*{0mm}
1465 \end_inset
1469 \end_inset
1466
1470
1467 \SpecialChar ~
1471 \SpecialChar ~
1468 \SpecialChar ~
1472 \SpecialChar ~
1469 (server-start)
1473 (server-start)
1470 \newline
1474 \newline
1471
1475
1472 \begin_inset ERT
1476 \begin_inset ERT
1473 status Collapsed
1477 status Collapsed
1474
1478
1475 \layout Standard
1479 \layout Standard
1476
1480
1477 \backslash
1481 \backslash
1478 hspace*{0mm}
1482 hspace*{0mm}
1479 \end_inset
1483 \end_inset
1480
1484
1481 \SpecialChar ~
1485 \SpecialChar ~
1482 \SpecialChar ~
1486 \SpecialChar ~
1483 (defun fp-kill-server-with-buffer-routine ()
1487 (defun fp-kill-server-with-buffer-routine ()
1484 \newline
1488 \newline
1485
1489
1486 \begin_inset ERT
1490 \begin_inset ERT
1487 status Collapsed
1491 status Collapsed
1488
1492
1489 \layout Standard
1493 \layout Standard
1490
1494
1491 \backslash
1495 \backslash
1492 hspace*{0mm}
1496 hspace*{0mm}
1493 \end_inset
1497 \end_inset
1494
1498
1495 \SpecialChar ~
1499 \SpecialChar ~
1496 \SpecialChar ~
1500 \SpecialChar ~
1497 \SpecialChar ~
1501 \SpecialChar ~
1498 \SpecialChar ~
1502 \SpecialChar ~
1499 (and server-buffer-clients (server-done)))
1503 (and server-buffer-clients (server-done)))
1500 \newline
1504 \newline
1501
1505
1502 \begin_inset ERT
1506 \begin_inset ERT
1503 status Collapsed
1507 status Collapsed
1504
1508
1505 \layout Standard
1509 \layout Standard
1506
1510
1507 \backslash
1511 \backslash
1508 hspace*{0mm}
1512 hspace*{0mm}
1509 \end_inset
1513 \end_inset
1510
1514
1511 \SpecialChar ~
1515 \SpecialChar ~
1512 \SpecialChar ~
1516 \SpecialChar ~
1513 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
1517 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
1514 \layout Standard
1518 \layout Standard
1515
1519
1516 You can also set the value of this editor via the commmand-line option '-
1520 You can also set the value of this editor via the commmand-line option '-
1517 \family typewriter
1521 \family typewriter
1518 editor'
1522 editor'
1519 \family default
1523 \family default
1520 or in your
1524 or in your
1521 \family typewriter
1525 \family typewriter
1522 ipythonrc
1526 ipythonrc
1523 \family default
1527 \family default
1524 file.
1528 file.
1525 This is useful if you wish to use specifically for IPython an editor different
1529 This is useful if you wish to use specifically for IPython an editor different
1526 from your typical default (and for Windows users who tend to use fewer
1530 from your typical default (and for Windows users who tend to use fewer
1527 environment variables).
1531 environment variables).
1528 \layout Subsection
1532 \layout Subsection
1529
1533
1530 Color
1534 Color
1531 \layout Standard
1535 \layout Standard
1532
1536
1533 The default IPython configuration has most bells and whistles turned on
1537 The default IPython configuration has most bells and whistles turned on
1534 (they're pretty safe).
1538 (they're pretty safe).
1535 But there's one that
1539 But there's one that
1536 \emph on
1540 \emph on
1537 may
1541 may
1538 \emph default
1542 \emph default
1539 cause problems on some systems: the use of color on screen for displaying
1543 cause problems on some systems: the use of color on screen for displaying
1540 information.
1544 information.
1541 This is very useful, since IPython can show prompts and exception tracebacks
1545 This is very useful, since IPython can show prompts and exception tracebacks
1542 with various colors, display syntax-highlighted source code, and in general
1546 with various colors, display syntax-highlighted source code, and in general
1543 make it easier to visually parse information.
1547 make it easier to visually parse information.
1544 \layout Standard
1548 \layout Standard
1545
1549
1546 The following terminals seem to handle the color sequences fine:
1550 The following terminals seem to handle the color sequences fine:
1547 \layout Itemize
1551 \layout Itemize
1548
1552
1549 Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
1553 Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
1550 \layout Itemize
1554 \layout Itemize
1551
1555
1552 CDE terminal (tested under Solaris).
1556 CDE terminal (tested under Solaris).
1553 This one boldfaces light colors.
1557 This one boldfaces light colors.
1554 \layout Itemize
1558 \layout Itemize
1555
1559
1556 (X)Emacs buffers.
1560 (X)Emacs buffers.
1557 See sec.
1561 See sec.
1558 \begin_inset LatexCommand \ref{sec:emacs}
1562 \begin_inset LatexCommand \ref{sec:emacs}
1559
1563
1560 \end_inset
1564 \end_inset
1561
1565
1562 for more details on using IPython with (X)Emacs.
1566 for more details on using IPython with (X)Emacs.
1563 \layout Itemize
1567 \layout Itemize
1564
1568
1565 A Windows (XP/2k) command prompt
1569 A Windows (XP/2k) command prompt
1566 \emph on
1570 \emph on
1567 with Gary Bishop's support extensions
1571 with Gary Bishop's support extensions
1568 \emph default
1572 \emph default
1569 .
1573 .
1570 Gary's extensions are discussed in Sec.\SpecialChar ~
1574 Gary's extensions are discussed in Sec.\SpecialChar ~
1571
1575
1572 \begin_inset LatexCommand \ref{sub:Under-Windows}
1576 \begin_inset LatexCommand \ref{sub:Under-Windows}
1573
1577
1574 \end_inset
1578 \end_inset
1575
1579
1576 .
1580 .
1577 \layout Itemize
1581 \layout Itemize
1578
1582
1579 A Windows (XP/2k) CygWin shell.
1583 A Windows (XP/2k) CygWin shell.
1580 Although some users have reported problems; it is not clear whether there
1584 Although some users have reported problems; it is not clear whether there
1581 is an issue for everyone or only under specific configurations.
1585 is an issue for everyone or only under specific configurations.
1582 If you have full color support under cygwin, please post to the IPython
1586 If you have full color support under cygwin, please post to the IPython
1583 mailing list so this issue can be resolved for all users.
1587 mailing list so this issue can be resolved for all users.
1584 \layout Standard
1588 \layout Standard
1585
1589
1586 These have shown problems:
1590 These have shown problems:
1587 \layout Itemize
1591 \layout Itemize
1588
1592
1589 Windows command prompt in WinXP/2k logged into a Linux machine via telnet
1593 Windows command prompt in WinXP/2k logged into a Linux machine via telnet
1590 or ssh.
1594 or ssh.
1591 \layout Itemize
1595 \layout Itemize
1592
1596
1593 Windows native command prompt in WinXP/2k,
1597 Windows native command prompt in WinXP/2k,
1594 \emph on
1598 \emph on
1595 without
1599 without
1596 \emph default
1600 \emph default
1597 Gary Bishop's extensions.
1601 Gary Bishop's extensions.
1598 Once Gary's readline library is installed, the normal WinXP/2k command
1602 Once Gary's readline library is installed, the normal WinXP/2k command
1599 prompt works perfectly.
1603 prompt works perfectly.
1600 \layout Standard
1604 \layout Standard
1601
1605
1602 Currently the following color schemes are available:
1606 Currently the following color schemes are available:
1603 \layout Itemize
1607 \layout Itemize
1604
1608
1605
1609
1606 \family typewriter
1610 \family typewriter
1607 NoColor
1611 NoColor
1608 \family default
1612 \family default
1609 : uses no color escapes at all (all escapes are empty
1613 : uses no color escapes at all (all escapes are empty
1610 \begin_inset Quotes eld
1614 \begin_inset Quotes eld
1611 \end_inset
1615 \end_inset
1612
1616
1613
1617
1614 \begin_inset Quotes eld
1618 \begin_inset Quotes eld
1615 \end_inset
1619 \end_inset
1616
1620
1617 strings).
1621 strings).
1618 This 'scheme' is thus fully safe to use in any terminal.
1622 This 'scheme' is thus fully safe to use in any terminal.
1619 \layout Itemize
1623 \layout Itemize
1620
1624
1621
1625
1622 \family typewriter
1626 \family typewriter
1623 Linux
1627 Linux
1624 \family default
1628 \family default
1625 : works well in Linux console type environments: dark background with light
1629 : works well in Linux console type environments: dark background with light
1626 fonts.
1630 fonts.
1627 It uses bright colors for information, so it is difficult to read if you
1631 It uses bright colors for information, so it is difficult to read if you
1628 have a light colored background.
1632 have a light colored background.
1629 \layout Itemize
1633 \layout Itemize
1630
1634
1631
1635
1632 \family typewriter
1636 \family typewriter
1633 LightBG
1637 LightBG
1634 \family default
1638 \family default
1635 : the basic colors are similar to those in the
1639 : the basic colors are similar to those in the
1636 \family typewriter
1640 \family typewriter
1637 Linux
1641 Linux
1638 \family default
1642 \family default
1639 scheme but darker.
1643 scheme but darker.
1640 It is easy to read in terminals with light backgrounds.
1644 It is easy to read in terminals with light backgrounds.
1641 \layout Standard
1645 \layout Standard
1642
1646
1643 IPython uses colors for two main groups of things: prompts and tracebacks
1647 IPython uses colors for two main groups of things: prompts and tracebacks
1644 which are directly printed to the terminal, and the object introspection
1648 which are directly printed to the terminal, and the object introspection
1645 system which passes large sets of data through a pager.
1649 system which passes large sets of data through a pager.
1646 \layout Subsubsection
1650 \layout Subsubsection
1647
1651
1648 Input/Output prompts and exception tracebacks
1652 Input/Output prompts and exception tracebacks
1649 \layout Standard
1653 \layout Standard
1650
1654
1651 You can test whether the colored prompts and tracebacks work on your system
1655 You can test whether the colored prompts and tracebacks work on your system
1652 interactively by typing
1656 interactively by typing
1653 \family typewriter
1657 \family typewriter
1654 '%colors Linux'
1658 '%colors Linux'
1655 \family default
1659 \family default
1656 at the prompt (use '
1660 at the prompt (use '
1657 \family typewriter
1661 \family typewriter
1658 %colors LightBG'
1662 %colors LightBG'
1659 \family default
1663 \family default
1660 if your terminal has a light background).
1664 if your terminal has a light background).
1661 If the input prompt shows garbage like:
1665 If the input prompt shows garbage like:
1662 \newline
1666 \newline
1663
1667
1664 \family typewriter
1668 \family typewriter
1665 [0;32mIn [[1;32m1[0;32m]: [0;00m
1669 [0;32mIn [[1;32m1[0;32m]: [0;00m
1666 \family default
1670 \family default
1667
1671
1668 \newline
1672 \newline
1669 instead of (in color) something like:
1673 instead of (in color) something like:
1670 \newline
1674 \newline
1671
1675
1672 \family typewriter
1676 \family typewriter
1673 In [1]:
1677 In [1]:
1674 \family default
1678 \family default
1675
1679
1676 \newline
1680 \newline
1677 this means that your terminal doesn't properly handle color escape sequences.
1681 this means that your terminal doesn't properly handle color escape sequences.
1678 You can go to a 'no color' mode by typing '
1682 You can go to a 'no color' mode by typing '
1679 \family typewriter
1683 \family typewriter
1680 %colors NoColor
1684 %colors NoColor
1681 \family default
1685 \family default
1682 '.
1686 '.
1683
1687
1684 \layout Standard
1688 \layout Standard
1685
1689
1686 You can try using a different terminal emulator program (Emacs users, see
1690 You can try using a different terminal emulator program (Emacs users, see
1687 below).
1691 below).
1688 To permanently set your color preferences, edit the file
1692 To permanently set your color preferences, edit the file
1689 \family typewriter
1693 \family typewriter
1690 $HOME/.ipython/ipythonrc
1694 $HOME/.ipython/ipythonrc
1691 \family default
1695 \family default
1692 and set the
1696 and set the
1693 \family typewriter
1697 \family typewriter
1694 colors
1698 colors
1695 \family default
1699 \family default
1696 option to the desired value.
1700 option to the desired value.
1697 \layout Subsubsection
1701 \layout Subsubsection
1698
1702
1699 Object details (types, docstrings, source code, etc.)
1703 Object details (types, docstrings, source code, etc.)
1700 \layout Standard
1704 \layout Standard
1701
1705
1702 IPython has a set of special functions for studying the objects you are
1706 IPython has a set of special functions for studying the objects you are
1703 working with, discussed in detail in Sec.
1707 working with, discussed in detail in Sec.
1704
1708
1705 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1709 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1706
1710
1707 \end_inset
1711 \end_inset
1708
1712
1709 .
1713 .
1710 But this system relies on passing information which is longer than your
1714 But this system relies on passing information which is longer than your
1711 screen through a data pager, such as the common Unix
1715 screen through a data pager, such as the common Unix
1712 \family typewriter
1716 \family typewriter
1713 less
1717 less
1714 \family default
1718 \family default
1715 and
1719 and
1716 \family typewriter
1720 \family typewriter
1717 more
1721 more
1718 \family default
1722 \family default
1719 programs.
1723 programs.
1720 In order to be able to see this information in color, your pager needs
1724 In order to be able to see this information in color, your pager needs
1721 to be properly configured.
1725 to be properly configured.
1722 I strongly recommend using
1726 I strongly recommend using
1723 \family typewriter
1727 \family typewriter
1724 less
1728 less
1725 \family default
1729 \family default
1726 instead of
1730 instead of
1727 \family typewriter
1731 \family typewriter
1728 more
1732 more
1729 \family default
1733 \family default
1730 , as it seems that
1734 , as it seems that
1731 \family typewriter
1735 \family typewriter
1732 more
1736 more
1733 \family default
1737 \family default
1734 simply can not understand colored text correctly.
1738 simply can not understand colored text correctly.
1735 \layout Standard
1739 \layout Standard
1736
1740
1737 In order to configure
1741 In order to configure
1738 \family typewriter
1742 \family typewriter
1739 less
1743 less
1740 \family default
1744 \family default
1741 as your default pager, do the following:
1745 as your default pager, do the following:
1742 \layout Enumerate
1746 \layout Enumerate
1743
1747
1744 Set the environment
1748 Set the environment
1745 \family typewriter
1749 \family typewriter
1746 PAGER
1750 PAGER
1747 \family default
1751 \family default
1748 variable to
1752 variable to
1749 \family typewriter
1753 \family typewriter
1750 less
1754 less
1751 \family default
1755 \family default
1752 .
1756 .
1753 \layout Enumerate
1757 \layout Enumerate
1754
1758
1755 Set the environment
1759 Set the environment
1756 \family typewriter
1760 \family typewriter
1757 LESS
1761 LESS
1758 \family default
1762 \family default
1759 variable to
1763 variable to
1760 \family typewriter
1764 \family typewriter
1761 -r
1765 -r
1762 \family default
1766 \family default
1763 (plus any other options you always want to pass to
1767 (plus any other options you always want to pass to
1764 \family typewriter
1768 \family typewriter
1765 less
1769 less
1766 \family default
1770 \family default
1767 by default).
1771 by default).
1768 This tells
1772 This tells
1769 \family typewriter
1773 \family typewriter
1770 less
1774 less
1771 \family default
1775 \family default
1772 to properly interpret control sequences, which is how color information
1776 to properly interpret control sequences, which is how color information
1773 is given to your terminal.
1777 is given to your terminal.
1774 \layout Standard
1778 \layout Standard
1775
1779
1776 For the
1780 For the
1777 \family typewriter
1781 \family typewriter
1778 csh
1782 csh
1779 \family default
1783 \family default
1780 or
1784 or
1781 \family typewriter
1785 \family typewriter
1782 tcsh
1786 tcsh
1783 \family default
1787 \family default
1784 shells, add to your
1788 shells, add to your
1785 \family typewriter
1789 \family typewriter
1786 ~/.cshrc
1790 ~/.cshrc
1787 \family default
1791 \family default
1788 file the lines:
1792 file the lines:
1789 \layout Standard
1793 \layout Standard
1790
1794
1791
1795
1792 \family typewriter
1796 \family typewriter
1793 setenv PAGER less
1797 setenv PAGER less
1794 \newline
1798 \newline
1795 setenv LESS -r
1799 setenv LESS -r
1796 \layout Standard
1800 \layout Standard
1797
1801
1798 There is similar syntax for other Unix shells, look at your system documentation
1802 There is similar syntax for other Unix shells, look at your system documentation
1799 for details.
1803 for details.
1800 \layout Standard
1804 \layout Standard
1801
1805
1802 If you are on a system which lacks proper data pagers (such as Windows),
1806 If you are on a system which lacks proper data pagers (such as Windows),
1803 IPython will use a very limited builtin pager.
1807 IPython will use a very limited builtin pager.
1804 \layout Subsection
1808 \layout Subsection
1805
1809
1806
1810
1807 \begin_inset LatexCommand \label{sec:emacs}
1811 \begin_inset LatexCommand \label{sec:emacs}
1808
1812
1809 \end_inset
1813 \end_inset
1810
1814
1811 (X)Emacs configuration
1815 (X)Emacs configuration
1812 \layout Standard
1816 \layout Standard
1813
1817
1814 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
1818 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
1815 (X)Emacs and IPython get along very well.
1819 (X)Emacs and IPython get along very well.
1816
1820
1817 \layout Standard
1821 \layout Standard
1818
1822
1819
1823
1820 \series bold
1824 \series bold
1821 Important note:
1825 Important note:
1822 \series default
1826 \series default
1823 You will need to use a recent enough version of
1827 You will need to use a recent enough version of
1824 \family typewriter
1828 \family typewriter
1825 python-mode.el
1829 python-mode.el
1826 \family default
1830 \family default
1827 , along with the file
1831 , along with the file
1828 \family typewriter
1832 \family typewriter
1829 ipython.el
1833 ipython.el
1830 \family default
1834 \family default
1831 .
1835 .
1832 You can check that the version you have of
1836 You can check that the version you have of
1833 \family typewriter
1837 \family typewriter
1834 python-mode.el
1838 python-mode.el
1835 \family default
1839 \family default
1836 is new enough by either looking at the revision number in the file itself,
1840 is new enough by either looking at the revision number in the file itself,
1837 or asking for it in (X)Emacs via
1841 or asking for it in (X)Emacs via
1838 \family typewriter
1842 \family typewriter
1839 M-x py-version
1843 M-x py-version
1840 \family default
1844 \family default
1841 .
1845 .
1842 Versions 4.68 and newer contain the necessary fixes for proper IPython support.
1846 Versions 4.68 and newer contain the necessary fixes for proper IPython support.
1843 \layout Standard
1847 \layout Standard
1844
1848
1845 The file
1849 The file
1846 \family typewriter
1850 \family typewriter
1847 ipython.el
1851 ipython.el
1848 \family default
1852 \family default
1849 is included with the IPython distribution, in the documentation directory
1853 is included with the IPython distribution, in the documentation directory
1850 (where this manual resides in PDF and HTML formats).
1854 (where this manual resides in PDF and HTML formats).
1851 \layout Standard
1855 \layout Standard
1852
1856
1853 Once you put these files in your Emacs path, all you need in your
1857 Once you put these files in your Emacs path, all you need in your
1854 \family typewriter
1858 \family typewriter
1855 .emacs
1859 .emacs
1856 \family default
1860 \family default
1857 file is:
1861 file is:
1858 \layout LyX-Code
1862 \layout LyX-Code
1859
1863
1860 (require 'ipython)
1864 (require 'ipython)
1861 \layout Standard
1865 \layout Standard
1862
1866
1863 This should give you full support for executing code snippets via IPython,
1867 This should give you full support for executing code snippets via IPython,
1864 opening IPython as your Python shell via
1868 opening IPython as your Python shell via
1865 \family typewriter
1869 \family typewriter
1866 C-c\SpecialChar ~
1870 C-c\SpecialChar ~
1867 !
1871 !
1868 \family default
1872 \family default
1869 , etc.
1873 , etc.
1870
1874
1871 \layout Standard
1875 \layout Standard
1872
1876
1873 If you happen to get garbage instead of colored prompts as described in
1877 If you happen to get garbage instead of colored prompts as described in
1874 the previous section, you may need to set also in your
1878 the previous section, you may need to set also in your
1875 \family typewriter
1879 \family typewriter
1876 .emacs
1880 .emacs
1877 \family default
1881 \family default
1878 file:
1882 file:
1879 \layout LyX-Code
1883 \layout LyX-Code
1880
1884
1881 (setq ansi-color-for-comint-mode t)
1885 (setq ansi-color-for-comint-mode t)
1882 \layout Subsubsection*
1886 \layout Subsubsection*
1883
1887
1884 Notes
1888 Notes
1885 \layout Itemize
1889 \layout Itemize
1886
1890
1887 There is one caveat you should be aware of: you must start the IPython shell
1891 There is one caveat you should be aware of: you must start the IPython shell
1888
1892
1889 \emph on
1893 \emph on
1890 before
1894 before
1891 \emph default
1895 \emph default
1892 attempting to execute any code regions via
1896 attempting to execute any code regions via
1893 \family typewriter
1897 \family typewriter
1894 C-c\SpecialChar ~
1898 C-c\SpecialChar ~
1895 |
1899 |
1896 \family default
1900 \family default
1897 .
1901 .
1898 Simply type
1902 Simply type
1899 \family typewriter
1903 \family typewriter
1900 C-c\SpecialChar ~
1904 C-c\SpecialChar ~
1901 !
1905 !
1902 \family default
1906 \family default
1903 to start IPython before passing any code regions to the interpreter, and
1907 to start IPython before passing any code regions to the interpreter, and
1904 you shouldn't experience any problems.
1908 you shouldn't experience any problems.
1905 \newline
1909 \newline
1906 This is due to a bug in Python itself, which has been fixed for Python 2.3,
1910 This is due to a bug in Python itself, which has been fixed for Python 2.3,
1907 but exists as of Python 2.2.2 (reported as SF bug [ 737947 ]).
1911 but exists as of Python 2.2.2 (reported as SF bug [ 737947 ]).
1908 \layout Itemize
1912 \layout Itemize
1909
1913
1910 The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
1914 The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
1911 ts should be directed to him through the IPython mailing lists.
1915 ts should be directed to him through the IPython mailing lists.
1912
1916
1913 \layout Itemize
1917 \layout Itemize
1914
1918
1915 This code is still somewhat experimental so it's a bit rough around the
1919 This code is still somewhat experimental so it's a bit rough around the
1916 edges (although in practice, it works quite well).
1920 edges (although in practice, it works quite well).
1917 \layout Itemize
1921 \layout Itemize
1918
1922
1919 Be aware that if you customize
1923 Be aware that if you customize
1920 \family typewriter
1924 \family typewriter
1921 py-python-command
1925 py-python-command
1922 \family default
1926 \family default
1923 previously, this value will override what
1927 previously, this value will override what
1924 \family typewriter
1928 \family typewriter
1925 ipython.el
1929 ipython.el
1926 \family default
1930 \family default
1927 does (because loading the customization variables comes later).
1931 does (because loading the customization variables comes later).
1928 \layout Section
1932 \layout Section
1929
1933
1930
1934
1931 \begin_inset LatexCommand \label{sec:quick_tips}
1935 \begin_inset LatexCommand \label{sec:quick_tips}
1932
1936
1933 \end_inset
1937 \end_inset
1934
1938
1935 Quick tips
1939 Quick tips
1936 \layout Standard
1940 \layout Standard
1937
1941
1938 IPython can be used as an improved replacement for the Python prompt, and
1942 IPython can be used as an improved replacement for the Python prompt, and
1939 for that you don't really need to read any more of this manual.
1943 for that you don't really need to read any more of this manual.
1940 But in this section we'll try to summarize a few tips on how to make the
1944 But in this section we'll try to summarize a few tips on how to make the
1941 most effective use of it for everyday Python development, highlighting
1945 most effective use of it for everyday Python development, highlighting
1942 things you might miss in the rest of the manual (which is getting long).
1946 things you might miss in the rest of the manual (which is getting long).
1943 We'll give references to parts in the manual which provide more detail
1947 We'll give references to parts in the manual which provide more detail
1944 when appropriate.
1948 when appropriate.
1945 \layout Standard
1949 \layout Standard
1946
1950
1947 The following article by Jeremy Jones provides an introductory tutorial
1951 The following article by Jeremy Jones provides an introductory tutorial
1948 about IPython:
1952 about IPython:
1949 \newline
1953 \newline
1950
1954
1951 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
1955 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
1952
1956
1953 \end_inset
1957 \end_inset
1954
1958
1955
1959
1956 \layout Itemize
1960 \layout Itemize
1957
1961
1958 The TAB key.
1962 The TAB key.
1959 TAB-completion, especially for attributes, is a convenient way to explore
1963 TAB-completion, especially for attributes, is a convenient way to explore
1960 the structure of any object you're dealing with.
1964 the structure of any object you're dealing with.
1961 Simply type
1965 Simply type
1962 \family typewriter
1966 \family typewriter
1963 object_name.<TAB>
1967 object_name.<TAB>
1964 \family default
1968 \family default
1965 and a list of the object's attributes will be printed (see sec.
1969 and a list of the object's attributes will be printed (see sec.
1966
1970
1967 \begin_inset LatexCommand \ref{sec:readline}
1971 \begin_inset LatexCommand \ref{sec:readline}
1968
1972
1969 \end_inset
1973 \end_inset
1970
1974
1971 for more).
1975 for more).
1972 Tab completion also works on file and directory names, which combined with
1976 Tab completion also works on file and directory names, which combined with
1973 IPython's alias system allows you to do from within IPython many of the
1977 IPython's alias system allows you to do from within IPython many of the
1974 things you normally would need the system shell for.
1978 things you normally would need the system shell for.
1975
1979
1976 \layout Itemize
1980 \layout Itemize
1977
1981
1978 Explore your objects.
1982 Explore your objects.
1979 Typing
1983 Typing
1980 \family typewriter
1984 \family typewriter
1981 object_name?
1985 object_name?
1982 \family default
1986 \family default
1983 will print all sorts of details about any object, including docstrings,
1987 will print all sorts of details about any object, including docstrings,
1984 function definition lines (for call arguments) and constructor details
1988 function definition lines (for call arguments) and constructor details
1985 for classes.
1989 for classes.
1986 The magic commands
1990 The magic commands
1987 \family typewriter
1991 \family typewriter
1988 %pdoc
1992 %pdoc
1989 \family default
1993 \family default
1990 ,
1994 ,
1991 \family typewriter
1995 \family typewriter
1992 %pdef
1996 %pdef
1993 \family default
1997 \family default
1994 ,
1998 ,
1995 \family typewriter
1999 \family typewriter
1996 %psource
2000 %psource
1997 \family default
2001 \family default
1998 and
2002 and
1999 \family typewriter
2003 \family typewriter
2000 %pfile
2004 %pfile
2001 \family default
2005 \family default
2002 will respectively print the docstring, function definition line, full source
2006 will respectively print the docstring, function definition line, full source
2003 code and the complete file for any object (when they can be found).
2007 code and the complete file for any object (when they can be found).
2004 If automagic is on (it is by default), you don't need to type the '
2008 If automagic is on (it is by default), you don't need to type the '
2005 \family typewriter
2009 \family typewriter
2006 %
2010 %
2007 \family default
2011 \family default
2008 ' explicitly.
2012 ' explicitly.
2009 See sec.
2013 See sec.
2010
2014
2011 \begin_inset LatexCommand \ref{sec:dyn-object-info}
2015 \begin_inset LatexCommand \ref{sec:dyn-object-info}
2012
2016
2013 \end_inset
2017 \end_inset
2014
2018
2015 for more.
2019 for more.
2016 \layout Itemize
2020 \layout Itemize
2017
2021
2018 The
2022 The
2019 \family typewriter
2023 \family typewriter
2020 %run
2024 %run
2021 \family default
2025 \family default
2022 magic command allows you to run any python script and load all of its data
2026 magic command allows you to run any python script and load all of its data
2023 directly into the interactive namespace.
2027 directly into the interactive namespace.
2024 Since the file is re-read from disk each time, changes you make to it are
2028 Since the file is re-read from disk each time, changes you make to it are
2025 reflected immediately (in contrast to the behavior of
2029 reflected immediately (in contrast to the behavior of
2026 \family typewriter
2030 \family typewriter
2027 import
2031 import
2028 \family default
2032 \family default
2029 ).
2033 ).
2030 I rarely use
2034 I rarely use
2031 \family typewriter
2035 \family typewriter
2032 import
2036 import
2033 \family default
2037 \family default
2034 for code I am testing, relying on
2038 for code I am testing, relying on
2035 \family typewriter
2039 \family typewriter
2036 %run
2040 %run
2037 \family default
2041 \family default
2038 instead.
2042 instead.
2039 See sec.
2043 See sec.
2040
2044
2041 \begin_inset LatexCommand \ref{sec:magic}
2045 \begin_inset LatexCommand \ref{sec:magic}
2042
2046
2043 \end_inset
2047 \end_inset
2044
2048
2045 for more on this and other magic commands, or type the name of any magic
2049 for more on this and other magic commands, or type the name of any magic
2046 command and ? to get details on it.
2050 command and ? to get details on it.
2047 See also sec.
2051 See also sec.
2048
2052
2049 \begin_inset LatexCommand \ref{sec:dreload}
2053 \begin_inset LatexCommand \ref{sec:dreload}
2050
2054
2051 \end_inset
2055 \end_inset
2052
2056
2053 for a recursive reload command.
2057 for a recursive reload command.
2054 \newline
2058 \newline
2055
2059
2056 \family typewriter
2060 \family typewriter
2057 %run
2061 %run
2058 \family default
2062 \family default
2059 also has special flags for timing the execution of your scripts (
2063 also has special flags for timing the execution of your scripts (
2060 \family typewriter
2064 \family typewriter
2061 -t
2065 -t
2062 \family default
2066 \family default
2063 ) and for executing them under the control of either Python's
2067 ) and for executing them under the control of either Python's
2064 \family typewriter
2068 \family typewriter
2065 pdb
2069 pdb
2066 \family default
2070 \family default
2067 debugger (
2071 debugger (
2068 \family typewriter
2072 \family typewriter
2069 -d
2073 -d
2070 \family default
2074 \family default
2071 ) or profiler (
2075 ) or profiler (
2072 \family typewriter
2076 \family typewriter
2073 -p
2077 -p
2074 \family default
2078 \family default
2075 ).
2079 ).
2076 With all of these,
2080 With all of these,
2077 \family typewriter
2081 \family typewriter
2078 %run
2082 %run
2079 \family default
2083 \family default
2080 can be used as the main tool for efficient interactive development of code
2084 can be used as the main tool for efficient interactive development of code
2081 which you write in your editor of choice.
2085 which you write in your editor of choice.
2082 \layout Itemize
2086 \layout Itemize
2083
2087
2084 Use the Python debugger,
2088 Use the Python debugger,
2085 \family typewriter
2089 \family typewriter
2086 pdb
2090 pdb
2087 \family default
2091 \family default
2088
2092
2089 \begin_inset Foot
2093 \begin_inset Foot
2090 collapsed true
2094 collapsed true
2091
2095
2092 \layout Standard
2096 \layout Standard
2093
2097
2094 Thanks to Christian Hart and Matthew Arnison for the suggestions leading
2098 Thanks to Christian Hart and Matthew Arnison for the suggestions leading
2095 to IPython's improved debugger and profiler support.
2099 to IPython's improved debugger and profiler support.
2096 \end_inset
2100 \end_inset
2097
2101
2098 .
2102 .
2099 The
2103 The
2100 \family typewriter
2104 \family typewriter
2101 %pdb
2105 %pdb
2102 \family default
2106 \family default
2103 command allows you to toggle on and off the automatic invocation of an
2107 command allows you to toggle on and off the automatic invocation of an
2104 IPython-enhanced
2108 IPython-enhanced
2105 \family typewriter
2109 \family typewriter
2106 pdb
2110 pdb
2107 \family default
2111 \family default
2108 debugger (with coloring, tab completion and more) at any uncaught exception.
2112 debugger (with coloring, tab completion and more) at any uncaught exception.
2109 The advantage of this is that
2113 The advantage of this is that
2110 \family typewriter
2114 \family typewriter
2111 pdb
2115 pdb
2112 \family default
2116 \family default
2113 starts
2117 starts
2114 \emph on
2118 \emph on
2115 inside
2119 inside
2116 \emph default
2120 \emph default
2117 the function where the exception occurred, with all data still available.
2121 the function where the exception occurred, with all data still available.
2118 You can print variables, see code, execute statements and even walk up
2122 You can print variables, see code, execute statements and even walk up
2119 and down the call stack to track down the true source of the problem (which
2123 and down the call stack to track down the true source of the problem (which
2120 often is many layers in the stack above where the exception gets triggered).
2124 often is many layers in the stack above where the exception gets triggered).
2121 \newline
2125 \newline
2122 Running programs with
2126 Running programs with
2123 \family typewriter
2127 \family typewriter
2124 %run
2128 %run
2125 \family default
2129 \family default
2126 and pdb active can be an efficient to develop and debug code, in many cases
2130 and pdb active can be an efficient to develop and debug code, in many cases
2127 eliminating the need for
2131 eliminating the need for
2128 \family typewriter
2132 \family typewriter
2129 print
2133 print
2130 \family default
2134 \family default
2131 statements or external debugging tools.
2135 statements or external debugging tools.
2132 I often simply put a
2136 I often simply put a
2133 \family typewriter
2137 \family typewriter
2134 1/0
2138 1/0
2135 \family default
2139 \family default
2136 in a place where I want to take a look so that pdb gets called, quickly
2140 in a place where I want to take a look so that pdb gets called, quickly
2137 view whatever variables I need to or test various pieces of code and then
2141 view whatever variables I need to or test various pieces of code and then
2138 remove the
2142 remove the
2139 \family typewriter
2143 \family typewriter
2140 1/0
2144 1/0
2141 \family default
2145 \family default
2142 .
2146 .
2143 \newline
2147 \newline
2144 Note also that `
2148 Note also that `
2145 \family typewriter
2149 \family typewriter
2146 %run -d
2150 %run -d
2147 \family default
2151 \family default
2148 ' activates
2152 ' activates
2149 \family typewriter
2153 \family typewriter
2150 pdb
2154 pdb
2151 \family default
2155 \family default
2152 and automatically sets initial breakpoints for you to step through your
2156 and automatically sets initial breakpoints for you to step through your
2153 code, watch variables, etc.
2157 code, watch variables, etc.
2154 See Sec.\SpecialChar ~
2158 See Sec.\SpecialChar ~
2155
2159
2156 \begin_inset LatexCommand \ref{sec:cache_output}
2160 \begin_inset LatexCommand \ref{sec:cache_output}
2157
2161
2158 \end_inset
2162 \end_inset
2159
2163
2160 for details.
2164 for details.
2161 \layout Itemize
2165 \layout Itemize
2162
2166
2163 Use the output cache.
2167 Use the output cache.
2164 All output results are automatically stored in a global dictionary named
2168 All output results are automatically stored in a global dictionary named
2165
2169
2166 \family typewriter
2170 \family typewriter
2167 Out
2171 Out
2168 \family default
2172 \family default
2169 and variables named
2173 and variables named
2170 \family typewriter
2174 \family typewriter
2171 _1
2175 _1
2172 \family default
2176 \family default
2173 ,
2177 ,
2174 \family typewriter
2178 \family typewriter
2175 _2
2179 _2
2176 \family default
2180 \family default
2177 , etc.
2181 , etc.
2178 alias them.
2182 alias them.
2179 For example, the result of input line 4 is available either as
2183 For example, the result of input line 4 is available either as
2180 \family typewriter
2184 \family typewriter
2181 Out[4]
2185 Out[4]
2182 \family default
2186 \family default
2183 or as
2187 or as
2184 \family typewriter
2188 \family typewriter
2185 _4
2189 _4
2186 \family default
2190 \family default
2187 .
2191 .
2188 Additionally, three variables named
2192 Additionally, three variables named
2189 \family typewriter
2193 \family typewriter
2190 _
2194 _
2191 \family default
2195 \family default
2192 ,
2196 ,
2193 \family typewriter
2197 \family typewriter
2194 __
2198 __
2195 \family default
2199 \family default
2196 and
2200 and
2197 \family typewriter
2201 \family typewriter
2198 ___
2202 ___
2199 \family default
2203 \family default
2200 are always kept updated with the for the last three results.
2204 are always kept updated with the for the last three results.
2201 This allows you to recall any previous result and further use it for new
2205 This allows you to recall any previous result and further use it for new
2202 calculations.
2206 calculations.
2203 See Sec.\SpecialChar ~
2207 See Sec.\SpecialChar ~
2204
2208
2205 \begin_inset LatexCommand \ref{sec:cache_output}
2209 \begin_inset LatexCommand \ref{sec:cache_output}
2206
2210
2207 \end_inset
2211 \end_inset
2208
2212
2209 for more.
2213 for more.
2210 \layout Itemize
2214 \layout Itemize
2211
2215
2212 Put a '
2216 Put a '
2213 \family typewriter
2217 \family typewriter
2214 ;
2218 ;
2215 \family default
2219 \family default
2216 ' at the end of a line to supress the printing of output.
2220 ' at the end of a line to supress the printing of output.
2217 This is useful when doing calculations which generate long output you are
2221 This is useful when doing calculations which generate long output you are
2218 not interested in seeing.
2222 not interested in seeing.
2219 The
2223 The
2220 \family typewriter
2224 \family typewriter
2221 _*
2225 _*
2222 \family default
2226 \family default
2223 variables and the
2227 variables and the
2224 \family typewriter
2228 \family typewriter
2225 Out[]
2229 Out[]
2226 \family default
2230 \family default
2227 list do get updated with the contents of the output, even if it is not
2231 list do get updated with the contents of the output, even if it is not
2228 printed.
2232 printed.
2229 You can thus still access the generated results this way for further processing.
2233 You can thus still access the generated results this way for further processing.
2230 \layout Itemize
2234 \layout Itemize
2231
2235
2232 A similar system exists for caching input.
2236 A similar system exists for caching input.
2233 All input is stored in a global list called
2237 All input is stored in a global list called
2234 \family typewriter
2238 \family typewriter
2235 In
2239 In
2236 \family default
2240 \family default
2237 , so you can re-execute lines 22 through 28 plus line 34 by typing
2241 , so you can re-execute lines 22 through 28 plus line 34 by typing
2238 \family typewriter
2242 \family typewriter
2239 'exec In[22:29]+In[34]'
2243 'exec In[22:29]+In[34]'
2240 \family default
2244 \family default
2241 (using Python slicing notation).
2245 (using Python slicing notation).
2242 If you need to execute the same set of lines often, you can assign them
2246 If you need to execute the same set of lines often, you can assign them
2243 to a macro with the
2247 to a macro with the
2244 \family typewriter
2248 \family typewriter
2245 %macro
2249 %macro
2246 \family default
2250 \family default
2247
2251
2248 \family typewriter
2252 \family typewriter
2249 function.
2253 function.
2250
2254
2251 \family default
2255 \family default
2252 See sec.
2256 See sec.
2253
2257
2254 \begin_inset LatexCommand \ref{sec:cache_input}
2258 \begin_inset LatexCommand \ref{sec:cache_input}
2255
2259
2256 \end_inset
2260 \end_inset
2257
2261
2258 for more.
2262 for more.
2259 \layout Itemize
2263 \layout Itemize
2260
2264
2261 Use your input history.
2265 Use your input history.
2262 The
2266 The
2263 \family typewriter
2267 \family typewriter
2264 %hist
2268 %hist
2265 \family default
2269 \family default
2266 command can show you all previous input, without line numbers if desired
2270 command can show you all previous input, without line numbers if desired
2267 (option
2271 (option
2268 \family typewriter
2272 \family typewriter
2269 -n
2273 -n
2270 \family default
2274 \family default
2271 ) so you can directly copy and paste code either back in IPython or in a
2275 ) so you can directly copy and paste code either back in IPython or in a
2272 text editor.
2276 text editor.
2273 You can also save all your history by turning on logging via
2277 You can also save all your history by turning on logging via
2274 \family typewriter
2278 \family typewriter
2275 %logstart
2279 %logstart
2276 \family default
2280 \family default
2277 ; these logs can later be either reloaded as IPython sessions or used as
2281 ; these logs can later be either reloaded as IPython sessions or used as
2278 code for your programs.
2282 code for your programs.
2279 \layout Itemize
2283 \layout Itemize
2280
2284
2281 Define your own system aliases.
2285 Define your own system aliases.
2282 Even though IPython gives you access to your system shell via the
2286 Even though IPython gives you access to your system shell via the
2283 \family typewriter
2287 \family typewriter
2284 !
2288 !
2285 \family default
2289 \family default
2286 prefix, it is convenient to have aliases to the system commands you use
2290 prefix, it is convenient to have aliases to the system commands you use
2287 most often.
2291 most often.
2288 This allows you to work seamlessly from inside IPython with the same commands
2292 This allows you to work seamlessly from inside IPython with the same commands
2289 you are used to in your system shell.
2293 you are used to in your system shell.
2290 \newline
2294 \newline
2291 IPython comes with some pre-defined aliases and a complete system for changing
2295 IPython comes with some pre-defined aliases and a complete system for changing
2292 directories, both via a stack (see
2296 directories, both via a stack (see
2293 \family typewriter
2297 \family typewriter
2294 %pushd
2298 %pushd
2295 \family default
2299 \family default
2296 ,
2300 ,
2297 \family typewriter
2301 \family typewriter
2298 %popd
2302 %popd
2299 \family default
2303 \family default
2300 and
2304 and
2301 \family typewriter
2305 \family typewriter
2302 %dhist
2306 %dhist
2303 \family default
2307 \family default
2304 ) and via direct
2308 ) and via direct
2305 \family typewriter
2309 \family typewriter
2306 %cd
2310 %cd
2307 \family default
2311 \family default
2308 .
2312 .
2309 The latter keeps a history of visited directories and allows you to go
2313 The latter keeps a history of visited directories and allows you to go
2310 to any previously visited one.
2314 to any previously visited one.
2311 \layout Itemize
2315 \layout Itemize
2312
2316
2313 Use Python to manipulate the results of system commands.
2317 Use Python to manipulate the results of system commands.
2314 The `
2318 The `
2315 \family typewriter
2319 \family typewriter
2316 !!
2320 !!
2317 \family default
2321 \family default
2318 ' special syntax, and the
2322 ' special syntax, and the
2319 \family typewriter
2323 \family typewriter
2320 %sc
2324 %sc
2321 \family default
2325 \family default
2322 and
2326 and
2323 \family typewriter
2327 \family typewriter
2324 %sx
2328 %sx
2325 \family default
2329 \family default
2326 magic commands allow you to capture system output into Python variables.
2330 magic commands allow you to capture system output into Python variables.
2327 \layout Itemize
2331 \layout Itemize
2328
2332
2329 Expand python variables when calling the shell (either via
2333 Expand python variables when calling the shell (either via
2330 \family typewriter
2334 \family typewriter
2331 `!'
2335 `!'
2332 \family default
2336 \family default
2333 and
2337 and
2334 \family typewriter
2338 \family typewriter
2335 `!!'
2339 `!!'
2336 \family default
2340 \family default
2337 or via aliases) by prepending a
2341 or via aliases) by prepending a
2338 \family typewriter
2342 \family typewriter
2339 $
2343 $
2340 \family default
2344 \family default
2341 in front of them.
2345 in front of them.
2342 You can also expand complete python expressions.
2346 You can also expand complete python expressions.
2343 See sec.\SpecialChar ~
2347 See sec.\SpecialChar ~
2344
2348
2345 \begin_inset LatexCommand \ref{sub:System-shell-access}
2349 \begin_inset LatexCommand \ref{sub:System-shell-access}
2346
2350
2347 \end_inset
2351 \end_inset
2348
2352
2349 for more.
2353 for more.
2350 \layout Itemize
2354 \layout Itemize
2351
2355
2352 Use profiles to maintain different configurations (modules to load, function
2356 Use profiles to maintain different configurations (modules to load, function
2353 definitions, option settings) for particular tasks.
2357 definitions, option settings) for particular tasks.
2354 You can then have customized versions of IPython for specific purposes.
2358 You can then have customized versions of IPython for specific purposes.
2355 See sec.\SpecialChar ~
2359 See sec.\SpecialChar ~
2356
2360
2357 \begin_inset LatexCommand \ref{sec:profiles}
2361 \begin_inset LatexCommand \ref{sec:profiles}
2358
2362
2359 \end_inset
2363 \end_inset
2360
2364
2361 for more.
2365 for more.
2362 \layout Itemize
2366 \layout Itemize
2363
2367
2364 Embed IPython in your programs.
2368 Embed IPython in your programs.
2365 A few lines of code are enough to load a complete IPython inside your own
2369 A few lines of code are enough to load a complete IPython inside your own
2366 programs, giving you the ability to work with your data interactively after
2370 programs, giving you the ability to work with your data interactively after
2367 automatic processing has been completed.
2371 automatic processing has been completed.
2368 See sec.\SpecialChar ~
2372 See sec.\SpecialChar ~
2369
2373
2370 \begin_inset LatexCommand \ref{sec:embed}
2374 \begin_inset LatexCommand \ref{sec:embed}
2371
2375
2372 \end_inset
2376 \end_inset
2373
2377
2374 for more.
2378 for more.
2375 \layout Itemize
2379 \layout Itemize
2376
2380
2377 Use the Python profiler.
2381 Use the Python profiler.
2378 When dealing with performance issues, the
2382 When dealing with performance issues, the
2379 \family typewriter
2383 \family typewriter
2380 %run
2384 %run
2381 \family default
2385 \family default
2382 command with a
2386 command with a
2383 \family typewriter
2387 \family typewriter
2384 -p
2388 -p
2385 \family default
2389 \family default
2386 option allows you to run complete programs under the control of the Python
2390 option allows you to run complete programs under the control of the Python
2387 profiler.
2391 profiler.
2388 The
2392 The
2389 \family typewriter
2393 \family typewriter
2390 %prun
2394 %prun
2391 \family default
2395 \family default
2392 command does a similar job for single Python expressions (like function
2396 command does a similar job for single Python expressions (like function
2393 calls).
2397 calls).
2394 \layout Itemize
2398 \layout Itemize
2395
2399
2396 Use the IPython.demo.Demo class to load any Python script as an interactive
2400 Use the IPython.demo.Demo class to load any Python script as an interactive
2397 demo.
2401 demo.
2398 With a minimal amount of simple markup, you can control the execution of
2402 With a minimal amount of simple markup, you can control the execution of
2399 the script, stopping as needed.
2403 the script, stopping as needed.
2400 See sec.\SpecialChar ~
2404 See sec.\SpecialChar ~
2401
2405
2402 \begin_inset LatexCommand \ref{sec:interactive-demos}
2406 \begin_inset LatexCommand \ref{sec:interactive-demos}
2403
2407
2404 \end_inset
2408 \end_inset
2405
2409
2406 for more.
2410 for more.
2407 \layout Subsection
2411 \layout Subsection
2408
2412
2409 Source code handling tips
2413 Source code handling tips
2410 \layout Standard
2414 \layout Standard
2411
2415
2412 IPython is a line-oriented program, without full control of the terminal.
2416 IPython is a line-oriented program, without full control of the terminal.
2413 Therefore, it doesn't support true multiline editing.
2417 Therefore, it doesn't support true multiline editing.
2414 However, it has a number of useful tools to help you in dealing effectively
2418 However, it has a number of useful tools to help you in dealing effectively
2415 with more complex editing.
2419 with more complex editing.
2416 \layout Standard
2420 \layout Standard
2417
2421
2418 The
2422 The
2419 \family typewriter
2423 \family typewriter
2420 %edit
2424 %edit
2421 \family default
2425 \family default
2422 command gives a reasonable approximation of multiline editing, by invoking
2426 command gives a reasonable approximation of multiline editing, by invoking
2423 your favorite editor on the spot.
2427 your favorite editor on the spot.
2424 IPython will execute the code you type in there as if it were typed interactive
2428 IPython will execute the code you type in there as if it were typed interactive
2425 ly.
2429 ly.
2426 Type
2430 Type
2427 \family typewriter
2431 \family typewriter
2428 %edit?
2432 %edit?
2429 \family default
2433 \family default
2430 for the full details on the edit command.
2434 for the full details on the edit command.
2431 \layout Standard
2435 \layout Standard
2432
2436
2433 If you have typed various commands during a session, which you'd like to
2437 If you have typed various commands during a session, which you'd like to
2434 reuse, IPython provides you with a number of tools.
2438 reuse, IPython provides you with a number of tools.
2435 Start by using
2439 Start by using
2436 \family typewriter
2440 \family typewriter
2437 %hist
2441 %hist
2438 \family default
2442 \family default
2439 to see your input history, so you can see the line numbers of all input.
2443 to see your input history, so you can see the line numbers of all input.
2440 Let us say that you'd like to reuse lines 10 through 20, plus lines 24
2444 Let us say that you'd like to reuse lines 10 through 20, plus lines 24
2441 and 28.
2445 and 28.
2442 All the commands below can operate on these with the syntax
2446 All the commands below can operate on these with the syntax
2443 \layout LyX-Code
2447 \layout LyX-Code
2444
2448
2445 %command 10-20 24 28
2449 %command 10-20 24 28
2446 \layout Standard
2450 \layout Standard
2447
2451
2448 where the command given can be:
2452 where the command given can be:
2449 \layout Itemize
2453 \layout Itemize
2450
2454
2451
2455
2452 \family typewriter
2456 \family typewriter
2453 %macro <macroname>
2457 %macro <macroname>
2454 \family default
2458 \family default
2455 : this stores the lines into a variable which, when called at the prompt,
2459 : this stores the lines into a variable which, when called at the prompt,
2456 re-executes the input.
2460 re-executes the input.
2457 Macros can be edited later using
2461 Macros can be edited later using
2458 \family typewriter
2462 \family typewriter
2459 `%edit macroname
2463 `%edit macroname
2460 \family default
2464 \family default
2461 ', and they can be stored persistently across sessions with `
2465 ', and they can be stored persistently across sessions with `
2462 \family typewriter
2466 \family typewriter
2463 %store macroname
2467 %store macroname
2464 \family default
2468 \family default
2465 ' (the storage system is per-profile).
2469 ' (the storage system is per-profile).
2466 The combination of quick macros, persistent storage and editing, allows
2470 The combination of quick macros, persistent storage and editing, allows
2467 you to easily refine quick-and-dirty interactive input into permanent utilities
2471 you to easily refine quick-and-dirty interactive input into permanent utilities
2468 , always available both in IPython and as files for general reuse.
2472 , always available both in IPython and as files for general reuse.
2469 \layout Itemize
2473 \layout Itemize
2470
2474
2471
2475
2472 \family typewriter
2476 \family typewriter
2473 %edit
2477 %edit
2474 \family default
2478 \family default
2475 : this will open a text editor with those lines pre-loaded for further modificat
2479 : this will open a text editor with those lines pre-loaded for further modificat
2476 ion.
2480 ion.
2477 It will then execute the resulting file's contents as if you had typed
2481 It will then execute the resulting file's contents as if you had typed
2478 it at the prompt.
2482 it at the prompt.
2479 \layout Itemize
2483 \layout Itemize
2480
2484
2481
2485
2482 \family typewriter
2486 \family typewriter
2483 %save <filename>
2487 %save <filename>
2484 \family default
2488 \family default
2485 : this saves the lines directly to a named file on disk.
2489 : this saves the lines directly to a named file on disk.
2486 \layout Standard
2490 \layout Standard
2487
2491
2488 While
2492 While
2489 \family typewriter
2493 \family typewriter
2490 %macro
2494 %macro
2491 \family default
2495 \family default
2492 saves input lines into memory for interactive re-execution, sometimes you'd
2496 saves input lines into memory for interactive re-execution, sometimes you'd
2493 like to save your input directly to a file.
2497 like to save your input directly to a file.
2494 The
2498 The
2495 \family typewriter
2499 \family typewriter
2496 %save
2500 %save
2497 \family default
2501 \family default
2498 magic does this: its input sytnax is the same as
2502 magic does this: its input sytnax is the same as
2499 \family typewriter
2503 \family typewriter
2500 %macro
2504 %macro
2501 \family default
2505 \family default
2502 , but it saves your input directly to a Python file.
2506 , but it saves your input directly to a Python file.
2503 Note that the
2507 Note that the
2504 \family typewriter
2508 \family typewriter
2505 %logstart
2509 %logstart
2506 \family default
2510 \family default
2507 command also saves input, but it logs
2511 command also saves input, but it logs
2508 \emph on
2512 \emph on
2509 all
2513 all
2510 \emph default
2514 \emph default
2511 input to disk (though you can temporarily suspend it and reactivate it
2515 input to disk (though you can temporarily suspend it and reactivate it
2512 with
2516 with
2513 \family typewriter
2517 \family typewriter
2514 %logoff/%logon
2518 %logoff/%logon
2515 \family default
2519 \family default
2516 );
2520 );
2517 \family typewriter
2521 \family typewriter
2518 %save
2522 %save
2519 \family default
2523 \family default
2520 allows you to select which lines of input you need to save.
2524 allows you to select which lines of input you need to save.
2521 \layout Subsubsection*
2525 \layout Subsubsection*
2522
2526
2523 Lightweight 'version control'
2527 Lightweight 'version control'
2524 \layout Standard
2528 \layout Standard
2525
2529
2526 When you call
2530 When you call
2527 \family typewriter
2531 \family typewriter
2528 %edit
2532 %edit
2529 \family default
2533 \family default
2530 with no arguments, IPython opens an empty editor with a temporary file,
2534 with no arguments, IPython opens an empty editor with a temporary file,
2531 and it returns the contents of your editing session as a string variable.
2535 and it returns the contents of your editing session as a string variable.
2532 Thanks to IPython's output caching mechanism, this is automatically stored:
2536 Thanks to IPython's output caching mechanism, this is automatically stored:
2533 \layout LyX-Code
2537 \layout LyX-Code
2534
2538
2535 In [1]: %edit
2539 In [1]: %edit
2536 \layout LyX-Code
2540 \layout LyX-Code
2537
2541
2538 IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
2542 IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
2539 \layout LyX-Code
2543 \layout LyX-Code
2540
2544
2541 Editing...
2545 Editing...
2542 done.
2546 done.
2543 Executing edited code...
2547 Executing edited code...
2544 \layout LyX-Code
2548 \layout LyX-Code
2545
2549
2546 hello - this is a temporary file
2550 hello - this is a temporary file
2547 \layout LyX-Code
2551 \layout LyX-Code
2548
2552
2549 Out[1]: "print 'hello - this is a temporary file'
2553 Out[1]: "print 'hello - this is a temporary file'
2550 \backslash
2554 \backslash
2551 n"
2555 n"
2552 \layout Standard
2556 \layout Standard
2553
2557
2554 Now, if you call
2558 Now, if you call
2555 \family typewriter
2559 \family typewriter
2556 `%edit -p'
2560 `%edit -p'
2557 \family default
2561 \family default
2558 , IPython tries to open an editor with the same data as the last time you
2562 , IPython tries to open an editor with the same data as the last time you
2559 used
2563 used
2560 \family typewriter
2564 \family typewriter
2561 %edit
2565 %edit
2562 \family default
2566 \family default
2563 .
2567 .
2564 So if you haven't used
2568 So if you haven't used
2565 \family typewriter
2569 \family typewriter
2566 %edit
2570 %edit
2567 \family default
2571 \family default
2568 in the meantime, this same contents will reopen; however, it will be done
2572 in the meantime, this same contents will reopen; however, it will be done
2569 in a
2573 in a
2570 \emph on
2574 \emph on
2571 new file
2575 new file
2572 \emph default
2576 \emph default
2573 .
2577 .
2574 This means that if you make changes and you later want to find an old version,
2578 This means that if you make changes and you later want to find an old version,
2575 you can always retrieve it by using its output number, via
2579 you can always retrieve it by using its output number, via
2576 \family typewriter
2580 \family typewriter
2577 `%edit _NN'
2581 `%edit _NN'
2578 \family default
2582 \family default
2579 , where
2583 , where
2580 \family typewriter
2584 \family typewriter
2581 NN
2585 NN
2582 \family default
2586 \family default
2583 is the number of the output prompt.
2587 is the number of the output prompt.
2584 \layout Standard
2588 \layout Standard
2585
2589
2586 Continuing with the example above, this should illustrate this idea:
2590 Continuing with the example above, this should illustrate this idea:
2587 \layout LyX-Code
2591 \layout LyX-Code
2588
2592
2589 In [2]: edit -p
2593 In [2]: edit -p
2590 \layout LyX-Code
2594 \layout LyX-Code
2591
2595
2592 IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
2596 IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
2593 \layout LyX-Code
2597 \layout LyX-Code
2594
2598
2595 Editing...
2599 Editing...
2596 done.
2600 done.
2597 Executing edited code...
2601 Executing edited code...
2598 \layout LyX-Code
2602 \layout LyX-Code
2599
2603
2600 hello - now I made some changes
2604 hello - now I made some changes
2601 \layout LyX-Code
2605 \layout LyX-Code
2602
2606
2603 Out[2]: "print 'hello - now I made some changes'
2607 Out[2]: "print 'hello - now I made some changes'
2604 \backslash
2608 \backslash
2605 n"
2609 n"
2606 \layout LyX-Code
2610 \layout LyX-Code
2607
2611
2608 In [3]: edit _1
2612 In [3]: edit _1
2609 \layout LyX-Code
2613 \layout LyX-Code
2610
2614
2611 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
2615 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
2612 \layout LyX-Code
2616 \layout LyX-Code
2613
2617
2614 Editing...
2618 Editing...
2615 done.
2619 done.
2616 Executing edited code...
2620 Executing edited code...
2617 \layout LyX-Code
2621 \layout LyX-Code
2618
2622
2619 hello - this is a temporary file
2623 hello - this is a temporary file
2620 \layout LyX-Code
2624 \layout LyX-Code
2621
2625
2622 IPython version control at work :)
2626 IPython version control at work :)
2623 \layout LyX-Code
2627 \layout LyX-Code
2624
2628
2625 Out[3]: "print 'hello - this is a temporary file'
2629 Out[3]: "print 'hello - this is a temporary file'
2626 \backslash
2630 \backslash
2627 nprint 'IPython version control at work :)'
2631 nprint 'IPython version control at work :)'
2628 \backslash
2632 \backslash
2629 n"
2633 n"
2630 \layout Standard
2634 \layout Standard
2631
2635
2632 This section was written after a contribution by Alexander Belchenko on
2636 This section was written after a contribution by Alexander Belchenko on
2633 the IPython user list.
2637 the IPython user list.
2634 \layout LyX-Code
2638 \layout LyX-Code
2635
2639
2636 \layout Subsection
2640 \layout Subsection
2637
2641
2638 Effective logging
2642 Effective logging
2639 \layout Standard
2643 \layout Standard
2640
2644
2641 A very useful suggestion sent in by Robert Kern follows:
2645 A very useful suggestion sent in by Robert Kern follows:
2642 \layout Standard
2646 \layout Standard
2643
2647
2644 I recently happened on a nifty way to keep tidy per-project log files.
2648 I recently happened on a nifty way to keep tidy per-project log files.
2645 I made a profile for my project (which is called "parkfield").
2649 I made a profile for my project (which is called "parkfield").
2646 \layout LyX-Code
2650 \layout LyX-Code
2647
2651
2648 include ipythonrc
2652 include ipythonrc
2649 \layout LyX-Code
2653 \layout LyX-Code
2650
2654
2651 # cancel earlier logfile invocation:
2655 # cancel earlier logfile invocation:
2652 \layout LyX-Code
2656 \layout LyX-Code
2653
2657
2654 logfile ''
2658 logfile ''
2655 \layout LyX-Code
2659 \layout LyX-Code
2656
2660
2657 execute import time
2661 execute import time
2658 \layout LyX-Code
2662 \layout LyX-Code
2659
2663
2660 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
2664 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
2661 \layout LyX-Code
2665 \layout LyX-Code
2662
2666
2663 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
2667 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
2664 \layout Standard
2668 \layout Standard
2665
2669
2666 I also added a shell alias for convenience:
2670 I also added a shell alias for convenience:
2667 \layout LyX-Code
2671 \layout LyX-Code
2668
2672
2669 alias parkfield="ipython -pylab -profile parkfield"
2673 alias parkfield="ipython -pylab -profile parkfield"
2670 \layout Standard
2674 \layout Standard
2671
2675
2672 Now I have a nice little directory with everything I ever type in, organized
2676 Now I have a nice little directory with everything I ever type in, organized
2673 by project and date.
2677 by project and date.
2674 \layout Standard
2678 \layout Standard
2675
2679
2676
2680
2677 \series bold
2681 \series bold
2678 Contribute your own:
2682 Contribute your own:
2679 \series default
2683 \series default
2680 If you have your own favorite tip on using IPython efficiently for a certain
2684 If you have your own favorite tip on using IPython efficiently for a certain
2681 task (especially things which can't be done in the normal Python interpreter),
2685 task (especially things which can't be done in the normal Python interpreter),
2682 don't hesitate to send it!
2686 don't hesitate to send it!
2683 \layout Section
2687 \layout Section
2684
2688
2685 Command-line use
2689 Command-line use
2686 \layout Standard
2690 \layout Standard
2687
2691
2688 You start IPython with the command:
2692 You start IPython with the command:
2689 \layout Standard
2693 \layout Standard
2690
2694
2691
2695
2692 \family typewriter
2696 \family typewriter
2693 $ ipython [options] files
2697 $ ipython [options] files
2694 \layout Standard
2698 \layout Standard
2695
2699
2696 If invoked with no options, it executes all the files listed in sequence
2700 If invoked with no options, it executes all the files listed in sequence
2697 and drops you into the interpreter while still acknowledging any options
2701 and drops you into the interpreter while still acknowledging any options
2698 you may have set in your ipythonrc file.
2702 you may have set in your ipythonrc file.
2699 This behavior is different from standard Python, which when called as
2703 This behavior is different from standard Python, which when called as
2700 \family typewriter
2704 \family typewriter
2701 python -i
2705 python -i
2702 \family default
2706 \family default
2703 will only execute one file and ignore your configuration setup.
2707 will only execute one file and ignore your configuration setup.
2704 \layout Standard
2708 \layout Standard
2705
2709
2706 Please note that some of the configuration options are not available at
2710 Please note that some of the configuration options are not available at
2707 the command line, simply because they are not practical here.
2711 the command line, simply because they are not practical here.
2708 Look into your ipythonrc configuration file for details on those.
2712 Look into your ipythonrc configuration file for details on those.
2709 This file typically installed in the
2713 This file typically installed in the
2710 \family typewriter
2714 \family typewriter
2711 $HOME/.ipython
2715 $HOME/.ipython
2712 \family default
2716 \family default
2713 directory.
2717 directory.
2714 For Windows users,
2718 For Windows users,
2715 \family typewriter
2719 \family typewriter
2716 $HOME
2720 $HOME
2717 \family default
2721 \family default
2718 resolves to
2722 resolves to
2719 \family typewriter
2723 \family typewriter
2720 C:
2724 C:
2721 \backslash
2725 \backslash
2722
2726
2723 \backslash
2727 \backslash
2724 Documents and Settings
2728 Documents and Settings
2725 \backslash
2729 \backslash
2726
2730
2727 \backslash
2731 \backslash
2728 YourUserName
2732 YourUserName
2729 \family default
2733 \family default
2730 in most instances.
2734 in most instances.
2731 In the rest of this text, we will refer to this directory as
2735 In the rest of this text, we will refer to this directory as
2732 \family typewriter
2736 \family typewriter
2733 IPYTHONDIR
2737 IPYTHONDIR
2734 \family default
2738 \family default
2735 .
2739 .
2736 \layout Subsection
2740 \layout Subsection
2737
2741
2738
2742
2739 \begin_inset LatexCommand \label{sec:threading-opts}
2743 \begin_inset LatexCommand \label{sec:threading-opts}
2740
2744
2741 \end_inset
2745 \end_inset
2742
2746
2743 Special Threading Options
2747 Special Threading Options
2744 \layout Standard
2748 \layout Standard
2745
2749
2746 The following special options are ONLY valid at the beginning of the command
2750 The following special options are ONLY valid at the beginning of the command
2747 line, and not later.
2751 line, and not later.
2748 This is because they control the initial- ization of ipython itself, before
2752 This is because they control the initial- ization of ipython itself, before
2749 the normal option-handling mechanism is active.
2753 the normal option-handling mechanism is active.
2750 \layout List
2754 \layout List
2751 \labelwidthstring 00.00.0000
2755 \labelwidthstring 00.00.0000
2752
2756
2753
2757
2754 \family typewriter
2758 \family typewriter
2755 \series bold
2759 \series bold
2756 -gthread,\SpecialChar ~
2760 -gthread,\SpecialChar ~
2757 -qthread,\SpecialChar ~
2761 -qthread,\SpecialChar ~
2758 -wthread,\SpecialChar ~
2762 -wthread,\SpecialChar ~
2759 -pylab:
2763 -pylab:
2760 \family default
2764 \family default
2761 \series default
2765 \series default
2762 Only
2766 Only
2763 \emph on
2767 \emph on
2764 one
2768 one
2765 \emph default
2769 \emph default
2766 of these can be given, and it can only be given as the first option passed
2770 of these can be given, and it can only be given as the first option passed
2767 to IPython (it will have no effect in any other position).
2771 to IPython (it will have no effect in any other position).
2768 They provide threading support for the GTK Qt and WXPython toolkits, and
2772 They provide threading support for the GTK Qt and WXPython toolkits, and
2769 for the matplotlib library.
2773 for the matplotlib library.
2770 \layout List
2774 \layout List
2771 \labelwidthstring 00.00.0000
2775 \labelwidthstring 00.00.0000
2772
2776
2773 \SpecialChar ~
2777 \SpecialChar ~
2774 With any of the first three options, IPython starts running a separate
2778 With any of the first three options, IPython starts running a separate
2775 thread for the graphical toolkit's operation, so that you can open and
2779 thread for the graphical toolkit's operation, so that you can open and
2776 control graphical elements from within an IPython command line, without
2780 control graphical elements from within an IPython command line, without
2777 blocking.
2781 blocking.
2778 All three provide essentially the same functionality, respectively for
2782 All three provide essentially the same functionality, respectively for
2779 GTK, QT and WXWidgets (via their Python interfaces).
2783 GTK, QT and WXWidgets (via their Python interfaces).
2780 \layout List
2784 \layout List
2781 \labelwidthstring 00.00.0000
2785 \labelwidthstring 00.00.0000
2782
2786
2783 \SpecialChar ~
2787 \SpecialChar ~
2784 Note that with
2788 Note that with
2785 \family typewriter
2789 \family typewriter
2786 -wthread
2790 -wthread
2787 \family default
2791 \family default
2788 , you can additionally use the -wxversion option to request a specific version
2792 , you can additionally use the -wxversion option to request a specific version
2789 of wx to be used.
2793 of wx to be used.
2790 This requires that you have the
2794 This requires that you have the
2791 \family typewriter
2795 \family typewriter
2792 wxversion
2796 wxversion
2793 \family default
2797 \family default
2794 Python module installed, which is part of recent wxPython distributions.
2798 Python module installed, which is part of recent wxPython distributions.
2795 \layout List
2799 \layout List
2796 \labelwidthstring 00.00.0000
2800 \labelwidthstring 00.00.0000
2797
2801
2798 \SpecialChar ~
2802 \SpecialChar ~
2799 If
2803 If
2800 \family typewriter
2804 \family typewriter
2801 -pylab
2805 -pylab
2802 \family default
2806 \family default
2803 is given, IPython loads special support for the mat plotlib library (
2807 is given, IPython loads special support for the mat plotlib library (
2804 \begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
2808 \begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
2805
2809
2806 \end_inset
2810 \end_inset
2807
2811
2808 ), allowing interactive usage of any of its backends as defined in the user's
2812 ), allowing interactive usage of any of its backends as defined in the user's
2809
2813
2810 \family typewriter
2814 \family typewriter
2811 ~/.matplotlib/matplotlibrc
2815 ~/.matplotlib/matplotlibrc
2812 \family default
2816 \family default
2813 file.
2817 file.
2814 It automatically activates GTK, Qt or WX threading for IPyhton if the choice
2818 It automatically activates GTK, Qt or WX threading for IPyhton if the choice
2815 of matplotlib backend requires it.
2819 of matplotlib backend requires it.
2816 It also modifies the
2820 It also modifies the
2817 \family typewriter
2821 \family typewriter
2818 %run
2822 %run
2819 \family default
2823 \family default
2820 command to correctly execute (without blocking) any matplotlib-based script
2824 command to correctly execute (without blocking) any matplotlib-based script
2821 which calls
2825 which calls
2822 \family typewriter
2826 \family typewriter
2823 show()
2827 show()
2824 \family default
2828 \family default
2825 at the end.
2829 at the end.
2826
2830
2827 \layout List
2831 \layout List
2828 \labelwidthstring 00.00.0000
2832 \labelwidthstring 00.00.0000
2829
2833
2830
2834
2831 \family typewriter
2835 \family typewriter
2832 \series bold
2836 \series bold
2833 -tk
2837 -tk
2834 \family default
2838 \family default
2835 \series default
2839 \series default
2836 The
2840 The
2837 \family typewriter
2841 \family typewriter
2838 -g/q/wthread
2842 -g/q/wthread
2839 \family default
2843 \family default
2840 options, and
2844 options, and
2841 \family typewriter
2845 \family typewriter
2842 -pylab
2846 -pylab
2843 \family default
2847 \family default
2844 (if matplotlib is configured to use GTK, Qt or WX), will normally block
2848 (if matplotlib is configured to use GTK, Qt or WX), will normally block
2845 Tk graphical interfaces.
2849 Tk graphical interfaces.
2846 This means that when either GTK, Qt or WX threading is active, any attempt
2850 This means that when either GTK, Qt or WX threading is active, any attempt
2847 to open a Tk GUI will result in a dead window, and possibly cause the Python
2851 to open a Tk GUI will result in a dead window, and possibly cause the Python
2848 interpreter to crash.
2852 interpreter to crash.
2849 An extra option,
2853 An extra option,
2850 \family typewriter
2854 \family typewriter
2851 -tk
2855 -tk
2852 \family default
2856 \family default
2853 , is available to address this issue.
2857 , is available to address this issue.
2854 It can
2858 It can
2855 \emph on
2859 \emph on
2856 only
2860 only
2857 \emph default
2861 \emph default
2858 be given as a
2862 be given as a
2859 \emph on
2863 \emph on
2860 second
2864 second
2861 \emph default
2865 \emph default
2862 option after any of the above (
2866 option after any of the above (
2863 \family typewriter
2867 \family typewriter
2864 -gthread
2868 -gthread
2865 \family default
2869 \family default
2866 ,
2870 ,
2867 \family typewriter
2871 \family typewriter
2868 -wthread
2872 -wthread
2869 \family default
2873 \family default
2870 or
2874 or
2871 \family typewriter
2875 \family typewriter
2872 -pylab
2876 -pylab
2873 \family default
2877 \family default
2874 ).
2878 ).
2875 \layout List
2879 \layout List
2876 \labelwidthstring 00.00.0000
2880 \labelwidthstring 00.00.0000
2877
2881
2878 \SpecialChar ~
2882 \SpecialChar ~
2879 If
2883 If
2880 \family typewriter
2884 \family typewriter
2881 -tk
2885 -tk
2882 \family default
2886 \family default
2883 is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
2887 is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
2884 This is however potentially unreliable, and you will have to test on your
2888 This is however potentially unreliable, and you will have to test on your
2885 platform and Python configuration to determine whether it works for you.
2889 platform and Python configuration to determine whether it works for you.
2886 Debian users have reported success, apparently due to the fact that Debian
2890 Debian users have reported success, apparently due to the fact that Debian
2887 builds all of Tcl, Tk, Tkinter and Python with pthreads support.
2891 builds all of Tcl, Tk, Tkinter and Python with pthreads support.
2888 Under other Linux environments (such as Fedora Core 2/3), this option has
2892 Under other Linux environments (such as Fedora Core 2/3), this option has
2889 caused random crashes and lockups of the Python interpreter.
2893 caused random crashes and lockups of the Python interpreter.
2890 Under other operating systems (Mac OSX and Windows), you'll need to try
2894 Under other operating systems (Mac OSX and Windows), you'll need to try
2891 it to find out, since currently no user reports are available.
2895 it to find out, since currently no user reports are available.
2892 \layout List
2896 \layout List
2893 \labelwidthstring 00.00.0000
2897 \labelwidthstring 00.00.0000
2894
2898
2895 \SpecialChar ~
2899 \SpecialChar ~
2896 There is unfortunately no way for IPython to determine at run time whether
2900 There is unfortunately no way for IPython to determine at run time whether
2897
2901
2898 \family typewriter
2902 \family typewriter
2899 -tk
2903 -tk
2900 \family default
2904 \family default
2901 will work reliably or not, so you will need to do some experiments before
2905 will work reliably or not, so you will need to do some experiments before
2902 relying on it for regular work.
2906 relying on it for regular work.
2903
2907
2904 \layout Subsection
2908 \layout Subsection
2905
2909
2906
2910
2907 \begin_inset LatexCommand \label{sec:cmd-line-opts}
2911 \begin_inset LatexCommand \label{sec:cmd-line-opts}
2908
2912
2909 \end_inset
2913 \end_inset
2910
2914
2911 Regular Options
2915 Regular Options
2912 \layout Standard
2916 \layout Standard
2913
2917
2914 After the above threading options have been given, regular options can follow
2918 After the above threading options have been given, regular options can follow
2915 in any order.
2919 in any order.
2916 All options can be abbreviated to their shortest non-ambiguous form and
2920 All options can be abbreviated to their shortest non-ambiguous form and
2917 are case-sensitive.
2921 are case-sensitive.
2918 One or two dashes can be used.
2922 One or two dashes can be used.
2919 Some options have an alternate short form, indicated after a
2923 Some options have an alternate short form, indicated after a
2920 \family typewriter
2924 \family typewriter
2921 |
2925 |
2922 \family default
2926 \family default
2923 .
2927 .
2924 \layout Standard
2928 \layout Standard
2925
2929
2926 Most options can also be set from your ipythonrc configuration file.
2930 Most options can also be set from your ipythonrc configuration file.
2927 See the provided example for more details on what the options do.
2931 See the provided example for more details on what the options do.
2928 Options given at the command line override the values set in the ipythonrc
2932 Options given at the command line override the values set in the ipythonrc
2929 file.
2933 file.
2930 \layout Standard
2934 \layout Standard
2931
2935
2932 All options with a
2936 All options with a
2933 \family typewriter
2937 \family typewriter
2934 [no]
2938 [no]
2935 \family default
2939 \family default
2936 prepended can be specified in negated form (
2940 prepended can be specified in negated form (
2937 \family typewriter
2941 \family typewriter
2938 -nooption
2942 -nooption
2939 \family default
2943 \family default
2940 instead of
2944 instead of
2941 \family typewriter
2945 \family typewriter
2942 -option
2946 -option
2943 \family default
2947 \family default
2944 ) to turn the feature off.
2948 ) to turn the feature off.
2945 \layout List
2949 \layout List
2946 \labelwidthstring 00.00.0000
2950 \labelwidthstring 00.00.0000
2947
2951
2948
2952
2949 \family typewriter
2953 \family typewriter
2950 \series bold
2954 \series bold
2951 -help
2955 -help
2952 \family default
2956 \family default
2953 \series default
2957 \series default
2954 : print a help message and exit.
2958 : print a help message and exit.
2955 \layout List
2959 \layout List
2956 \labelwidthstring 00.00.0000
2960 \labelwidthstring 00.00.0000
2957
2961
2958
2962
2959 \family typewriter
2963 \family typewriter
2960 \series bold
2964 \series bold
2961 -pylab:
2965 -pylab:
2962 \family default
2966 \family default
2963 \series default
2967 \series default
2964 this can
2968 this can
2965 \emph on
2969 \emph on
2966 only
2970 only
2967 \emph default
2971 \emph default
2968 be given as the
2972 be given as the
2969 \emph on
2973 \emph on
2970 first
2974 first
2971 \emph default
2975 \emph default
2972 option passed to IPython (it will have no effect in any other position).
2976 option passed to IPython (it will have no effect in any other position).
2973 It adds special support for the matplotlib library (
2977 It adds special support for the matplotlib library (
2974 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
2978 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
2975
2979
2976 \end_inset
2980 \end_inset
2977
2981
2978 ), allowing interactive usage of any of its backends as defined in the user's
2982 ), allowing interactive usage of any of its backends as defined in the user's
2979
2983
2980 \family typewriter
2984 \family typewriter
2981 .matplotlibrc
2985 .matplotlibrc
2982 \family default
2986 \family default
2983 file.
2987 file.
2984 It automatically activates GTK or WX threading for IPyhton if the choice
2988 It automatically activates GTK or WX threading for IPyhton if the choice
2985 of matplotlib backend requires it.
2989 of matplotlib backend requires it.
2986 It also modifies the
2990 It also modifies the
2987 \family typewriter
2991 \family typewriter
2988 %run
2992 %run
2989 \family default
2993 \family default
2990 command to correctly execute (without blocking) any matplotlib-based script
2994 command to correctly execute (without blocking) any matplotlib-based script
2991 which calls
2995 which calls
2992 \family typewriter
2996 \family typewriter
2993 show()
2997 show()
2994 \family default
2998 \family default
2995 at the end.
2999 at the end.
2996 See Sec.\SpecialChar ~
3000 See Sec.\SpecialChar ~
2997
3001
2998 \begin_inset LatexCommand \ref{sec:matplotlib-support}
3002 \begin_inset LatexCommand \ref{sec:matplotlib-support}
2999
3003
3000 \end_inset
3004 \end_inset
3001
3005
3002 for more details.
3006 for more details.
3003 \layout List
3007 \layout List
3004 \labelwidthstring 00.00.0000
3008 \labelwidthstring 00.00.0000
3005
3009
3006
3010
3007 \family typewriter
3011 \family typewriter
3008 \series bold
3012 \series bold
3009 -autocall <val>:
3013 -autocall <val>:
3010 \family default
3014 \family default
3011 \series default
3015 \series default
3012 Make IPython automatically call any callable object even if you didn't
3016 Make IPython automatically call any callable object even if you didn't
3013 type explicit parentheses.
3017 type explicit parentheses.
3014 For example, `str 43' becomes `str(43)' automatically.
3018 For example, `str 43' becomes `str(43)' automatically.
3015 The value can be `0' to disable the feature, `1' for
3019 The value can be `0' to disable the feature, `1' for
3016 \emph on
3020 \emph on
3017 smart
3021 smart
3018 \emph default
3022 \emph default
3019 autocall, where it is not applied if there are no more arguments on the
3023 autocall, where it is not applied if there are no more arguments on the
3020 line, and `2' for
3024 line, and `2' for
3021 \emph on
3025 \emph on
3022 full
3026 full
3023 \emph default
3027 \emph default
3024 autocall, where all callable objects are automatically called (even if
3028 autocall, where all callable objects are automatically called (even if
3025 no arguments are present).
3029 no arguments are present).
3026 The default is `1'.
3030 The default is `1'.
3027 \layout List
3031 \layout List
3028 \labelwidthstring 00.00.0000
3032 \labelwidthstring 00.00.0000
3029
3033
3030
3034
3031 \family typewriter
3035 \family typewriter
3032 \series bold
3036 \series bold
3033 -[no]autoindent:
3037 -[no]autoindent:
3034 \family default
3038 \family default
3035 \series default
3039 \series default
3036 Turn automatic indentation on/off.
3040 Turn automatic indentation on/off.
3037 \layout List
3041 \layout List
3038 \labelwidthstring 00.00.0000
3042 \labelwidthstring 00.00.0000
3039
3043
3040
3044
3041 \family typewriter
3045 \family typewriter
3042 \series bold
3046 \series bold
3043 -[no]automagic
3047 -[no]automagic
3044 \series default
3048 \series default
3045 :
3049 :
3046 \family default
3050 \family default
3047 make magic commands automatic (without needing their first character to
3051 make magic commands automatic (without needing their first character to
3048 be
3052 be
3049 \family typewriter
3053 \family typewriter
3050 %
3054 %
3051 \family default
3055 \family default
3052 ).
3056 ).
3053 Type
3057 Type
3054 \family typewriter
3058 \family typewriter
3055 %magic
3059 %magic
3056 \family default
3060 \family default
3057 at the IPython prompt for more information.
3061 at the IPython prompt for more information.
3058 \layout List
3062 \layout List
3059 \labelwidthstring 00.00.0000
3063 \labelwidthstring 00.00.0000
3060
3064
3061
3065
3062 \family typewriter
3066 \family typewriter
3063 \series bold
3067 \series bold
3064 -[no]autoedit_syntax:
3068 -[no]autoedit_syntax:
3065 \family default
3069 \family default
3066 \series default
3070 \series default
3067 When a syntax error occurs after editing a file, automatically open the
3071 When a syntax error occurs after editing a file, automatically open the
3068 file to the trouble causing line for convenient fixing.
3072 file to the trouble causing line for convenient fixing.
3069
3073
3070 \layout List
3074 \layout List
3071 \labelwidthstring 00.00.0000
3075 \labelwidthstring 00.00.0000
3072
3076
3073
3077
3074 \family typewriter
3078 \family typewriter
3075 \series bold
3079 \series bold
3076 -[no]banner
3080 -[no]banner
3077 \series default
3081 \series default
3078 :
3082 :
3079 \family default
3083 \family default
3080 Print the initial information banner (default on).
3084 Print the initial information banner (default on).
3081 \layout List
3085 \layout List
3082 \labelwidthstring 00.00.0000
3086 \labelwidthstring 00.00.0000
3083
3087
3084
3088
3085 \family typewriter
3089 \family typewriter
3086 \series bold
3090 \series bold
3087 -c\SpecialChar ~
3091 -c\SpecialChar ~
3088 <command>:
3092 <command>:
3089 \family default
3093 \family default
3090 \series default
3094 \series default
3091 execute the given command string, and set sys.argv to
3095 execute the given command string, and set sys.argv to
3092 \family typewriter
3096 \family typewriter
3093 ['c']
3097 ['c']
3094 \family default
3098 \family default
3095 .
3099 .
3096 This is similar to the
3100 This is similar to the
3097 \family typewriter
3101 \family typewriter
3098 -c
3102 -c
3099 \family default
3103 \family default
3100 option in the normal Python interpreter.
3104 option in the normal Python interpreter.
3101
3105
3102 \layout List
3106 \layout List
3103 \labelwidthstring 00.00.0000
3107 \labelwidthstring 00.00.0000
3104
3108
3105
3109
3106 \family typewriter
3110 \family typewriter
3107 \series bold
3111 \series bold
3108 -cache_size|cs\SpecialChar ~
3112 -cache_size|cs\SpecialChar ~
3109 <n>
3113 <n>
3110 \series default
3114 \series default
3111 :
3115 :
3112 \family default
3116 \family default
3113 size of the output cache (maximum number of entries to hold in memory).
3117 size of the output cache (maximum number of entries to hold in memory).
3114 The default is 1000, you can change it permanently in your config file.
3118 The default is 1000, you can change it permanently in your config file.
3115 Setting it to 0 completely disables the caching system, and the minimum
3119 Setting it to 0 completely disables the caching system, and the minimum
3116 value accepted is 20 (if you provide a value less than 20, it is reset
3120 value accepted is 20 (if you provide a value less than 20, it is reset
3117 to 0 and a warning is issued) This limit is defined because otherwise you'll
3121 to 0 and a warning is issued) This limit is defined because otherwise you'll
3118 spend more time re-flushing a too small cache than working.
3122 spend more time re-flushing a too small cache than working.
3119 \layout List
3123 \layout List
3120 \labelwidthstring 00.00.0000
3124 \labelwidthstring 00.00.0000
3121
3125
3122
3126
3123 \family typewriter
3127 \family typewriter
3124 \series bold
3128 \series bold
3125 -classic|cl
3129 -classic|cl
3126 \series default
3130 \series default
3127 :
3131 :
3128 \family default
3132 \family default
3129 Gives IPython a similar feel to the classic Python prompt.
3133 Gives IPython a similar feel to the classic Python prompt.
3130 \layout List
3134 \layout List
3131 \labelwidthstring 00.00.0000
3135 \labelwidthstring 00.00.0000
3132
3136
3133
3137
3134 \family typewriter
3138 \family typewriter
3135 \series bold
3139 \series bold
3136 -colors\SpecialChar ~
3140 -colors\SpecialChar ~
3137 <scheme>:
3141 <scheme>:
3138 \family default
3142 \family default
3139 \series default
3143 \series default
3140 Color scheme for prompts and exception reporting.
3144 Color scheme for prompts and exception reporting.
3141 Currently implemented: NoColor, Linux and LightBG.
3145 Currently implemented: NoColor, Linux and LightBG.
3142 \layout List
3146 \layout List
3143 \labelwidthstring 00.00.0000
3147 \labelwidthstring 00.00.0000
3144
3148
3145
3149
3146 \family typewriter
3150 \family typewriter
3147 \series bold
3151 \series bold
3148 -[no]color_info:
3152 -[no]color_info:
3149 \family default
3153 \family default
3150 \series default
3154 \series default
3151 IPython can display information about objects via a set of functions, and
3155 IPython can display information about objects via a set of functions, and
3152 optionally can use colors for this, syntax highlighting source code and
3156 optionally can use colors for this, syntax highlighting source code and
3153 various other elements.
3157 various other elements.
3154 However, because this information is passed through a pager (like 'less')
3158 However, because this information is passed through a pager (like 'less')
3155 and many pagers get confused with color codes, this option is off by default.
3159 and many pagers get confused with color codes, this option is off by default.
3156 You can test it and turn it on permanently in your ipythonrc file if it
3160 You can test it and turn it on permanently in your ipythonrc file if it
3157 works for you.
3161 works for you.
3158 As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
3162 As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
3159 that in RedHat 7.2 doesn't.
3163 that in RedHat 7.2 doesn't.
3160 \layout List
3164 \layout List
3161 \labelwidthstring 00.00.0000
3165 \labelwidthstring 00.00.0000
3162
3166
3163 \SpecialChar ~
3167 \SpecialChar ~
3164 Test it and turn it on permanently if it works with your system.
3168 Test it and turn it on permanently if it works with your system.
3165 The magic function
3169 The magic function
3166 \family typewriter
3170 \family typewriter
3167 %color_info
3171 %color_info
3168 \family default
3172 \family default
3169 allows you to toggle this interactively for testing.
3173 allows you to toggle this interactively for testing.
3170 \layout List
3174 \layout List
3171 \labelwidthstring 00.00.0000
3175 \labelwidthstring 00.00.0000
3172
3176
3173
3177
3174 \family typewriter
3178 \family typewriter
3175 \series bold
3179 \series bold
3176 -[no]debug
3180 -[no]debug
3177 \family default
3181 \family default
3178 \series default
3182 \series default
3179 : Show information about the loading process.
3183 : Show information about the loading process.
3180 Very useful to pin down problems with your configuration files or to get
3184 Very useful to pin down problems with your configuration files or to get
3181 details about session restores.
3185 details about session restores.
3182 \layout List
3186 \layout List
3183 \labelwidthstring 00.00.0000
3187 \labelwidthstring 00.00.0000
3184
3188
3185
3189
3186 \family typewriter
3190 \family typewriter
3187 \series bold
3191 \series bold
3188 -[no]deep_reload
3192 -[no]deep_reload
3189 \series default
3193 \series default
3190 :
3194 :
3191 \family default
3195 \family default
3192 IPython can use the
3196 IPython can use the
3193 \family typewriter
3197 \family typewriter
3194 deep_reload
3198 deep_reload
3195 \family default
3199 \family default
3196 module which reloads changes in modules recursively (it replaces the
3200 module which reloads changes in modules recursively (it replaces the
3197 \family typewriter
3201 \family typewriter
3198 reload()
3202 reload()
3199 \family default
3203 \family default
3200 function, so you don't need to change anything to use it).
3204 function, so you don't need to change anything to use it).
3201
3205
3202 \family typewriter
3206 \family typewriter
3203 deep_reload()
3207 deep_reload()
3204 \family default
3208 \family default
3205 forces a full reload of modules whose code may have changed, which the
3209 forces a full reload of modules whose code may have changed, which the
3206 default
3210 default
3207 \family typewriter
3211 \family typewriter
3208 reload()
3212 reload()
3209 \family default
3213 \family default
3210 function does not.
3214 function does not.
3211 \layout List
3215 \layout List
3212 \labelwidthstring 00.00.0000
3216 \labelwidthstring 00.00.0000
3213
3217
3214 \SpecialChar ~
3218 \SpecialChar ~
3215 When deep_reload is off, IPython will use the normal
3219 When deep_reload is off, IPython will use the normal
3216 \family typewriter
3220 \family typewriter
3217 reload()
3221 reload()
3218 \family default
3222 \family default
3219 , but deep_reload will still be available as
3223 , but deep_reload will still be available as
3220 \family typewriter
3224 \family typewriter
3221 dreload()
3225 dreload()
3222 \family default
3226 \family default
3223 .
3227 .
3224 This feature is off by default [which means that you have both normal
3228 This feature is off by default [which means that you have both normal
3225 \family typewriter
3229 \family typewriter
3226 reload()
3230 reload()
3227 \family default
3231 \family default
3228 and
3232 and
3229 \family typewriter
3233 \family typewriter
3230 dreload()
3234 dreload()
3231 \family default
3235 \family default
3232 ].
3236 ].
3233 \layout List
3237 \layout List
3234 \labelwidthstring 00.00.0000
3238 \labelwidthstring 00.00.0000
3235
3239
3236
3240
3237 \family typewriter
3241 \family typewriter
3238 \series bold
3242 \series bold
3239 -editor\SpecialChar ~
3243 -editor\SpecialChar ~
3240 <name>
3244 <name>
3241 \family default
3245 \family default
3242 \series default
3246 \series default
3243 : Which editor to use with the
3247 : Which editor to use with the
3244 \family typewriter
3248 \family typewriter
3245 %edit
3249 %edit
3246 \family default
3250 \family default
3247 command.
3251 command.
3248 By default, IPython will honor your
3252 By default, IPython will honor your
3249 \family typewriter
3253 \family typewriter
3250 EDITOR
3254 EDITOR
3251 \family default
3255 \family default
3252 environment variable (if not set, vi is the Unix default and notepad the
3256 environment variable (if not set, vi is the Unix default and notepad the
3253 Windows one).
3257 Windows one).
3254 Since this editor is invoked on the fly by IPython and is meant for editing
3258 Since this editor is invoked on the fly by IPython and is meant for editing
3255 small code snippets, you may want to use a small, lightweight editor here
3259 small code snippets, you may want to use a small, lightweight editor here
3256 (in case your default
3260 (in case your default
3257 \family typewriter
3261 \family typewriter
3258 EDITOR
3262 EDITOR
3259 \family default
3263 \family default
3260 is something like Emacs).
3264 is something like Emacs).
3261 \layout List
3265 \layout List
3262 \labelwidthstring 00.00.0000
3266 \labelwidthstring 00.00.0000
3263
3267
3264
3268
3265 \family typewriter
3269 \family typewriter
3266 \series bold
3270 \series bold
3267 -ipythondir\SpecialChar ~
3271 -ipythondir\SpecialChar ~
3268 <name>
3272 <name>
3269 \series default
3273 \series default
3270 :
3274 :
3271 \family default
3275 \family default
3272 name of your IPython configuration directory
3276 name of your IPython configuration directory
3273 \family typewriter
3277 \family typewriter
3274 IPYTHONDIR
3278 IPYTHONDIR
3275 \family default
3279 \family default
3276 .
3280 .
3277 This can also be specified through the environment variable
3281 This can also be specified through the environment variable
3278 \family typewriter
3282 \family typewriter
3279 IPYTHONDIR
3283 IPYTHONDIR
3280 \family default
3284 \family default
3281 .
3285 .
3282 \layout List
3286 \layout List
3283 \labelwidthstring 00.00.0000
3287 \labelwidthstring 00.00.0000
3284
3288
3285
3289
3286 \family typewriter
3290 \family typewriter
3287 \series bold
3291 \series bold
3288 -log|l
3292 -log|l
3289 \family default
3293 \family default
3290 \series default
3294 \series default
3291 : generate a log file of all input.
3295 : generate a log file of all input.
3292 The file is named
3296 The file is named
3293 \family typewriter
3297 \family typewriter
3294 ipython_log.py
3298 ipython_log.py
3295 \family default
3299 \family default
3296 in your current directory (which prevents logs from multiple IPython sessions
3300 in your current directory (which prevents logs from multiple IPython sessions
3297 from trampling each other).
3301 from trampling each other).
3298 You can use this to later restore a session by loading your logfile as
3302 You can use this to later restore a session by loading your logfile as
3299 a file to be executed with option
3303 a file to be executed with option
3300 \family typewriter
3304 \family typewriter
3301 -logplay
3305 -logplay
3302 \family default
3306 \family default
3303 (see below).
3307 (see below).
3304 \layout List
3308 \layout List
3305 \labelwidthstring 00.00.0000
3309 \labelwidthstring 00.00.0000
3306
3310
3307
3311
3308 \family typewriter
3312 \family typewriter
3309 \series bold
3313 \series bold
3310 -logfile|lf\SpecialChar ~
3314 -logfile|lf\SpecialChar ~
3311 <name>
3315 <name>
3312 \series default
3316 \series default
3313 :
3317 :
3314 \family default
3318 \family default
3315 specify the name of your logfile.
3319 specify the name of your logfile.
3316 \layout List
3320 \layout List
3317 \labelwidthstring 00.00.0000
3321 \labelwidthstring 00.00.0000
3318
3322
3319
3323
3320 \family typewriter
3324 \family typewriter
3321 \series bold
3325 \series bold
3322 -logplay|lp\SpecialChar ~
3326 -logplay|lp\SpecialChar ~
3323 <name>
3327 <name>
3324 \series default
3328 \series default
3325 :
3329 :
3326 \family default
3330 \family default
3327 you can replay a previous log.
3331 you can replay a previous log.
3328 For restoring a session as close as possible to the state you left it in,
3332 For restoring a session as close as possible to the state you left it in,
3329 use this option (don't just run the logfile).
3333 use this option (don't just run the logfile).
3330 With
3334 With
3331 \family typewriter
3335 \family typewriter
3332 -logplay
3336 -logplay
3333 \family default
3337 \family default
3334 , IPython will try to reconstruct the previous working environment in full,
3338 , IPython will try to reconstruct the previous working environment in full,
3335 not just execute the commands in the logfile.
3339 not just execute the commands in the logfile.
3336 \layout List
3340 \layout List
3337 \labelwidthstring 00.00.0000
3341 \labelwidthstring 00.00.0000
3338
3342
3339 \SpecialChar ~
3343 \SpecialChar ~
3340 When a session is restored, logging is automatically turned on again with
3344 When a session is restored, logging is automatically turned on again with
3341 the name of the logfile it was invoked with (it is read from the log header).
3345 the name of the logfile it was invoked with (it is read from the log header).
3342 So once you've turned logging on for a session, you can quit IPython and
3346 So once you've turned logging on for a session, you can quit IPython and
3343 reload it as many times as you want and it will continue to log its history
3347 reload it as many times as you want and it will continue to log its history
3344 and restore from the beginning every time.
3348 and restore from the beginning every time.
3345 \layout List
3349 \layout List
3346 \labelwidthstring 00.00.0000
3350 \labelwidthstring 00.00.0000
3347
3351
3348 \SpecialChar ~
3352 \SpecialChar ~
3349 Caveats: there are limitations in this option.
3353 Caveats: there are limitations in this option.
3350 The history variables
3354 The history variables
3351 \family typewriter
3355 \family typewriter
3352 _i*
3356 _i*
3353 \family default
3357 \family default
3354 ,
3358 ,
3355 \family typewriter
3359 \family typewriter
3356 _*
3360 _*
3357 \family default
3361 \family default
3358 and
3362 and
3359 \family typewriter
3363 \family typewriter
3360 _dh
3364 _dh
3361 \family default
3365 \family default
3362 don't get restored properly.
3366 don't get restored properly.
3363 In the future we will try to implement full session saving by writing and
3367 In the future we will try to implement full session saving by writing and
3364 retrieving a 'snapshot' of the memory state of IPython.
3368 retrieving a 'snapshot' of the memory state of IPython.
3365 But our first attempts failed because of inherent limitations of Python's
3369 But our first attempts failed because of inherent limitations of Python's
3366 Pickle module, so this may have to wait.
3370 Pickle module, so this may have to wait.
3367 \layout List
3371 \layout List
3368 \labelwidthstring 00.00.0000
3372 \labelwidthstring 00.00.0000
3369
3373
3370
3374
3371 \family typewriter
3375 \family typewriter
3372 \series bold
3376 \series bold
3373 -[no]messages
3377 -[no]messages
3374 \series default
3378 \series default
3375 :
3379 :
3376 \family default
3380 \family default
3377 Print messages which IPython collects about its startup process (default
3381 Print messages which IPython collects about its startup process (default
3378 on).
3382 on).
3379 \layout List
3383 \layout List
3380 \labelwidthstring 00.00.0000
3384 \labelwidthstring 00.00.0000
3381
3385
3382
3386
3383 \family typewriter
3387 \family typewriter
3384 \series bold
3388 \series bold
3385 -[no]pdb
3389 -[no]pdb
3386 \family default
3390 \family default
3387 \series default
3391 \series default
3388 : Automatically call the pdb debugger after every uncaught exception.
3392 : Automatically call the pdb debugger after every uncaught exception.
3389 If you are used to debugging using pdb, this puts you automatically inside
3393 If you are used to debugging using pdb, this puts you automatically inside
3390 of it after any call (either in IPython or in code called by it) which
3394 of it after any call (either in IPython or in code called by it) which
3391 triggers an exception which goes uncaught.
3395 triggers an exception which goes uncaught.
3392 \layout List
3396 \layout List
3393 \labelwidthstring 00.00.0000
3397 \labelwidthstring 00.00.0000
3394
3398
3395
3399
3396 \family typewriter
3400 \family typewriter
3397 \series bold
3401 \series bold
3398 -[no]pprint
3402 -[no]pprint
3399 \series default
3403 \series default
3400 :
3404 :
3401 \family default
3405 \family default
3402 ipython can optionally use the pprint (pretty printer) module for displaying
3406 ipython can optionally use the pprint (pretty printer) module for displaying
3403 results.
3407 results.
3404 pprint tends to give a nicer display of nested data structures.
3408 pprint tends to give a nicer display of nested data structures.
3405 If you like it, you can turn it on permanently in your config file (default
3409 If you like it, you can turn it on permanently in your config file (default
3406 off).
3410 off).
3407 \layout List
3411 \layout List
3408 \labelwidthstring 00.00.0000
3412 \labelwidthstring 00.00.0000
3409
3413
3410
3414
3411 \family typewriter
3415 \family typewriter
3412 \series bold
3416 \series bold
3413 -profile|p <name>
3417 -profile|p <name>
3414 \series default
3418 \series default
3415 :
3419 :
3416 \family default
3420 \family default
3417 assume that your config file is
3421 assume that your config file is
3418 \family typewriter
3422 \family typewriter
3419 ipythonrc-<name>
3423 ipythonrc-<name>
3420 \family default
3424 \family default
3421 (looks in current dir first, then in
3425 (looks in current dir first, then in
3422 \family typewriter
3426 \family typewriter
3423 IPYTHONDIR
3427 IPYTHONDIR
3424 \family default
3428 \family default
3425 ).
3429 ).
3426 This is a quick way to keep and load multiple config files for different
3430 This is a quick way to keep and load multiple config files for different
3427 tasks, especially if you use the include option of config files.
3431 tasks, especially if you use the include option of config files.
3428 You can keep a basic
3432 You can keep a basic
3429 \family typewriter
3433 \family typewriter
3430 IPYTHONDIR/ipythonrc
3434 IPYTHONDIR/ipythonrc
3431 \family default
3435 \family default
3432 file and then have other 'profiles' which include this one and load extra
3436 file and then have other 'profiles' which include this one and load extra
3433 things for particular tasks.
3437 things for particular tasks.
3434 For example:
3438 For example:
3435 \layout List
3439 \layout List
3436 \labelwidthstring 00.00.0000
3440 \labelwidthstring 00.00.0000
3437
3441
3438
3442
3439 \family typewriter
3443 \family typewriter
3440 \SpecialChar ~
3444 \SpecialChar ~
3441
3445
3442 \family default
3446 \family default
3443 1.
3447 1.
3444
3448
3445 \family typewriter
3449 \family typewriter
3446 $HOME/.ipython/ipythonrc
3450 $HOME/.ipython/ipythonrc
3447 \family default
3451 \family default
3448 : load basic things you always want.
3452 : load basic things you always want.
3449 \layout List
3453 \layout List
3450 \labelwidthstring 00.00.0000
3454 \labelwidthstring 00.00.0000
3451
3455
3452
3456
3453 \family typewriter
3457 \family typewriter
3454 \SpecialChar ~
3458 \SpecialChar ~
3455
3459
3456 \family default
3460 \family default
3457 2.
3461 2.
3458
3462
3459 \family typewriter
3463 \family typewriter
3460 $HOME/.ipython/ipythonrc-math
3464 $HOME/.ipython/ipythonrc-math
3461 \family default
3465 \family default
3462 : load (1) and basic math-related modules.
3466 : load (1) and basic math-related modules.
3463
3467
3464 \layout List
3468 \layout List
3465 \labelwidthstring 00.00.0000
3469 \labelwidthstring 00.00.0000
3466
3470
3467
3471
3468 \family typewriter
3472 \family typewriter
3469 \SpecialChar ~
3473 \SpecialChar ~
3470
3474
3471 \family default
3475 \family default
3472 3.
3476 3.
3473
3477
3474 \family typewriter
3478 \family typewriter
3475 $HOME/.ipython/ipythonrc-numeric
3479 $HOME/.ipython/ipythonrc-numeric
3476 \family default
3480 \family default
3477 : load (1) and Numeric and plotting modules.
3481 : load (1) and Numeric and plotting modules.
3478 \layout List
3482 \layout List
3479 \labelwidthstring 00.00.0000
3483 \labelwidthstring 00.00.0000
3480
3484
3481 \SpecialChar ~
3485 \SpecialChar ~
3482 Since it is possible to create an endless loop by having circular file
3486 Since it is possible to create an endless loop by having circular file
3483 inclusions, IPython will stop if it reaches 15 recursive inclusions.
3487 inclusions, IPython will stop if it reaches 15 recursive inclusions.
3484 \layout List
3488 \layout List
3485 \labelwidthstring 00.00.0000
3489 \labelwidthstring 00.00.0000
3486
3490
3487
3491
3488 \family typewriter
3492 \family typewriter
3489 \series bold
3493 \series bold
3490 -prompt_in1|pi1\SpecialChar ~
3494 -prompt_in1|pi1\SpecialChar ~
3491 <string>:
3495 <string>:
3492 \family default
3496 \family default
3493 \series default
3497 \series default
3494 Specify the string used for input prompts.
3498 Specify the string used for input prompts.
3495 Note that if you are using numbered prompts, the number is represented
3499 Note that if you are using numbered prompts, the number is represented
3496 with a '
3500 with a '
3497 \backslash
3501 \backslash
3498 #' in the string.
3502 #' in the string.
3499 Don't forget to quote strings with spaces embedded in them.
3503 Don't forget to quote strings with spaces embedded in them.
3500 Default: '
3504 Default: '
3501 \family typewriter
3505 \family typewriter
3502 In\SpecialChar ~
3506 In\SpecialChar ~
3503 [
3507 [
3504 \backslash
3508 \backslash
3505 #]:
3509 #]:
3506 \family default
3510 \family default
3507 '.
3511 '.
3508 Sec.\SpecialChar ~
3512 Sec.\SpecialChar ~
3509
3513
3510 \begin_inset LatexCommand \ref{sec:prompts}
3514 \begin_inset LatexCommand \ref{sec:prompts}
3511
3515
3512 \end_inset
3516 \end_inset
3513
3517
3514 discusses in detail all the available escapes to customize your prompts.
3518 discusses in detail all the available escapes to customize your prompts.
3515 \layout List
3519 \layout List
3516 \labelwidthstring 00.00.0000
3520 \labelwidthstring 00.00.0000
3517
3521
3518
3522
3519 \family typewriter
3523 \family typewriter
3520 \series bold
3524 \series bold
3521 -prompt_in2|pi2\SpecialChar ~
3525 -prompt_in2|pi2\SpecialChar ~
3522 <string>:
3526 <string>:
3523 \family default
3527 \family default
3524 \series default
3528 \series default
3525 Similar to the previous option, but used for the continuation prompts.
3529 Similar to the previous option, but used for the continuation prompts.
3526 The special sequence '
3530 The special sequence '
3527 \family typewriter
3531 \family typewriter
3528
3532
3529 \backslash
3533 \backslash
3530 D
3534 D
3531 \family default
3535 \family default
3532 ' is similar to '
3536 ' is similar to '
3533 \family typewriter
3537 \family typewriter
3534
3538
3535 \backslash
3539 \backslash
3536 #
3540 #
3537 \family default
3541 \family default
3538 ', but with all digits replaced dots (so you can have your continuation
3542 ', but with all digits replaced dots (so you can have your continuation
3539 prompt aligned with your input prompt).
3543 prompt aligned with your input prompt).
3540 Default: '
3544 Default: '
3541 \family typewriter
3545 \family typewriter
3542 \SpecialChar ~
3546 \SpecialChar ~
3543 \SpecialChar ~
3547 \SpecialChar ~
3544 \SpecialChar ~
3548 \SpecialChar ~
3545 .
3549 .
3546 \backslash
3550 \backslash
3547 D.:
3551 D.:
3548 \family default
3552 \family default
3549 ' (note three spaces at the start for alignment with '
3553 ' (note three spaces at the start for alignment with '
3550 \family typewriter
3554 \family typewriter
3551 In\SpecialChar ~
3555 In\SpecialChar ~
3552 [
3556 [
3553 \backslash
3557 \backslash
3554 #]
3558 #]
3555 \family default
3559 \family default
3556 ').
3560 ').
3557 \layout List
3561 \layout List
3558 \labelwidthstring 00.00.0000
3562 \labelwidthstring 00.00.0000
3559
3563
3560
3564
3561 \family typewriter
3565 \family typewriter
3562 \series bold
3566 \series bold
3563 -prompt_out|po\SpecialChar ~
3567 -prompt_out|po\SpecialChar ~
3564 <string>:
3568 <string>:
3565 \family default
3569 \family default
3566 \series default
3570 \series default
3567 String used for output prompts, also uses numbers like
3571 String used for output prompts, also uses numbers like
3568 \family typewriter
3572 \family typewriter
3569 prompt_in1
3573 prompt_in1
3570 \family default
3574 \family default
3571 .
3575 .
3572 Default: '
3576 Default: '
3573 \family typewriter
3577 \family typewriter
3574 Out[
3578 Out[
3575 \backslash
3579 \backslash
3576 #]:
3580 #]:
3577 \family default
3581 \family default
3578 '
3582 '
3579 \layout List
3583 \layout List
3580 \labelwidthstring 00.00.0000
3584 \labelwidthstring 00.00.0000
3581
3585
3582
3586
3583 \family typewriter
3587 \family typewriter
3584 \series bold
3588 \series bold
3585 -quick
3589 -quick
3586 \family default
3590 \family default
3587 \series default
3591 \series default
3588 : start in bare bones mode (no config file loaded).
3592 : start in bare bones mode (no config file loaded).
3589 \layout List
3593 \layout List
3590 \labelwidthstring 00.00.0000
3594 \labelwidthstring 00.00.0000
3591
3595
3592
3596
3593 \family typewriter
3597 \family typewriter
3594 \series bold
3598 \series bold
3595 -rcfile\SpecialChar ~
3599 -rcfile\SpecialChar ~
3596 <name>
3600 <name>
3597 \series default
3601 \series default
3598 :
3602 :
3599 \family default
3603 \family default
3600 name of your IPython resource configuration file.
3604 name of your IPython resource configuration file.
3601 Normally IPython loads ipythonrc (from current directory) or
3605 Normally IPython loads ipythonrc (from current directory) or
3602 \family typewriter
3606 \family typewriter
3603 IPYTHONDIR/ipythonrc
3607 IPYTHONDIR/ipythonrc
3604 \family default
3608 \family default
3605 .
3609 .
3606 \layout List
3610 \layout List
3607 \labelwidthstring 00.00.0000
3611 \labelwidthstring 00.00.0000
3608
3612
3609 \SpecialChar ~
3613 \SpecialChar ~
3610 If the loading of your config file fails, IPython starts with a bare bones
3614 If the loading of your config file fails, IPython starts with a bare bones
3611 configuration (no modules loaded at all).
3615 configuration (no modules loaded at all).
3612 \layout List
3616 \layout List
3613 \labelwidthstring 00.00.0000
3617 \labelwidthstring 00.00.0000
3614
3618
3615
3619
3616 \family typewriter
3620 \family typewriter
3617 \series bold
3621 \series bold
3618 -[no]readline
3622 -[no]readline
3619 \family default
3623 \family default
3620 \series default
3624 \series default
3621 : use the readline library, which is needed to support name completion and
3625 : use the readline library, which is needed to support name completion and
3622 command history, among other things.
3626 command history, among other things.
3623 It is enabled by default, but may cause problems for users of X/Emacs in
3627 It is enabled by default, but may cause problems for users of X/Emacs in
3624 Python comint or shell buffers.
3628 Python comint or shell buffers.
3625 \layout List
3629 \layout List
3626 \labelwidthstring 00.00.0000
3630 \labelwidthstring 00.00.0000
3627
3631
3628 \SpecialChar ~
3632 \SpecialChar ~
3629 Note that X/Emacs 'eterm' buffers (opened with
3633 Note that X/Emacs 'eterm' buffers (opened with
3630 \family typewriter
3634 \family typewriter
3631 M-x\SpecialChar ~
3635 M-x\SpecialChar ~
3632 term
3636 term
3633 \family default
3637 \family default
3634 ) support IPython's readline and syntax coloring fine, only 'emacs' (
3638 ) support IPython's readline and syntax coloring fine, only 'emacs' (
3635 \family typewriter
3639 \family typewriter
3636 M-x\SpecialChar ~
3640 M-x\SpecialChar ~
3637 shell
3641 shell
3638 \family default
3642 \family default
3639 and
3643 and
3640 \family typewriter
3644 \family typewriter
3641 C-c\SpecialChar ~
3645 C-c\SpecialChar ~
3642 !
3646 !
3643 \family default
3647 \family default
3644 ) buffers do not.
3648 ) buffers do not.
3645 \layout List
3649 \layout List
3646 \labelwidthstring 00.00.0000
3650 \labelwidthstring 00.00.0000
3647
3651
3648
3652
3649 \family typewriter
3653 \family typewriter
3650 \series bold
3654 \series bold
3651 -screen_length|sl\SpecialChar ~
3655 -screen_length|sl\SpecialChar ~
3652 <n>
3656 <n>
3653 \series default
3657 \series default
3654 :
3658 :
3655 \family default
3659 \family default
3656 number of lines of your screen.
3660 number of lines of your screen.
3657 This is used to control printing of very long strings.
3661 This is used to control printing of very long strings.
3658 Strings longer than this number of lines will be sent through a pager instead
3662 Strings longer than this number of lines will be sent through a pager instead
3659 of directly printed.
3663 of directly printed.
3660 \layout List
3664 \layout List
3661 \labelwidthstring 00.00.0000
3665 \labelwidthstring 00.00.0000
3662
3666
3663 \SpecialChar ~
3667 \SpecialChar ~
3664 The default value for this is 0, which means IPython will auto-detect your
3668 The default value for this is 0, which means IPython will auto-detect your
3665 screen size every time it needs to print certain potentially long strings
3669 screen size every time it needs to print certain potentially long strings
3666 (this doesn't change the behavior of the 'print' keyword, it's only triggered
3670 (this doesn't change the behavior of the 'print' keyword, it's only triggered
3667 internally).
3671 internally).
3668 If for some reason this isn't working well (it needs curses support), specify
3672 If for some reason this isn't working well (it needs curses support), specify
3669 it yourself.
3673 it yourself.
3670 Otherwise don't change the default.
3674 Otherwise don't change the default.
3671 \layout List
3675 \layout List
3672 \labelwidthstring 00.00.0000
3676 \labelwidthstring 00.00.0000
3673
3677
3674
3678
3675 \family typewriter
3679 \family typewriter
3676 \series bold
3680 \series bold
3677 -separate_in|si\SpecialChar ~
3681 -separate_in|si\SpecialChar ~
3678 <string>
3682 <string>
3679 \series default
3683 \series default
3680 :
3684 :
3681 \family default
3685 \family default
3682 separator before input prompts.
3686 separator before input prompts.
3683 Default: '
3687 Default: '
3684 \family typewriter
3688 \family typewriter
3685
3689
3686 \backslash
3690 \backslash
3687 n
3691 n
3688 \family default
3692 \family default
3689 '
3693 '
3690 \layout List
3694 \layout List
3691 \labelwidthstring 00.00.0000
3695 \labelwidthstring 00.00.0000
3692
3696
3693
3697
3694 \family typewriter
3698 \family typewriter
3695 \series bold
3699 \series bold
3696 -separate_out|so\SpecialChar ~
3700 -separate_out|so\SpecialChar ~
3697 <string>
3701 <string>
3698 \family default
3702 \family default
3699 \series default
3703 \series default
3700 : separator before output prompts.
3704 : separator before output prompts.
3701 Default: nothing.
3705 Default: nothing.
3702 \layout List
3706 \layout List
3703 \labelwidthstring 00.00.0000
3707 \labelwidthstring 00.00.0000
3704
3708
3705
3709
3706 \family typewriter
3710 \family typewriter
3707 \series bold
3711 \series bold
3708 -separate_out2|so2\SpecialChar ~
3712 -separate_out2|so2\SpecialChar ~
3709 <string>
3713 <string>
3710 \series default
3714 \series default
3711 :
3715 :
3712 \family default
3716 \family default
3713 separator after output prompts.
3717 separator after output prompts.
3714 Default: nothing.
3718 Default: nothing.
3715 \layout List
3719 \layout List
3716 \labelwidthstring 00.00.0000
3720 \labelwidthstring 00.00.0000
3717
3721
3718 \SpecialChar ~
3722 \SpecialChar ~
3719 For these three options, use the value 0 to specify no separator.
3723 For these three options, use the value 0 to specify no separator.
3720 \layout List
3724 \layout List
3721 \labelwidthstring 00.00.0000
3725 \labelwidthstring 00.00.0000
3722
3726
3723
3727
3724 \family typewriter
3728 \family typewriter
3725 \series bold
3729 \series bold
3726 -nosep
3730 -nosep
3727 \series default
3731 \series default
3728 :
3732 :
3729 \family default
3733 \family default
3730 shorthand for
3734 shorthand for
3731 \family typewriter
3735 \family typewriter
3732 '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
3736 '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
3733 \family default
3737 \family default
3734 .
3738 .
3735 Simply removes all input/output separators.
3739 Simply removes all input/output separators.
3736 \layout List
3740 \layout List
3737 \labelwidthstring 00.00.0000
3741 \labelwidthstring 00.00.0000
3738
3742
3739
3743
3740 \family typewriter
3744 \family typewriter
3741 \series bold
3745 \series bold
3742 -upgrade
3746 -upgrade
3743 \family default
3747 \family default
3744 \series default
3748 \series default
3745 : allows you to upgrade your
3749 : allows you to upgrade your
3746 \family typewriter
3750 \family typewriter
3747 IPYTHONDIR
3751 IPYTHONDIR
3748 \family default
3752 \family default
3749 configuration when you install a new version of IPython.
3753 configuration when you install a new version of IPython.
3750 Since new versions may include new command line options or example files,
3754 Since new versions may include new command line options or example files,
3751 this copies updated ipythonrc-type files.
3755 this copies updated ipythonrc-type files.
3752 However, it backs up (with a
3756 However, it backs up (with a
3753 \family typewriter
3757 \family typewriter
3754 .old
3758 .old
3755 \family default
3759 \family default
3756 extension) all files which it overwrites so that you can merge back any
3760 extension) all files which it overwrites so that you can merge back any
3757 customizations you might have in your personal files.
3761 customizations you might have in your personal files.
3758 \layout List
3762 \layout List
3759 \labelwidthstring 00.00.0000
3763 \labelwidthstring 00.00.0000
3760
3764
3761
3765
3762 \family typewriter
3766 \family typewriter
3763 \series bold
3767 \series bold
3764 -Version
3768 -Version
3765 \series default
3769 \series default
3766 :
3770 :
3767 \family default
3771 \family default
3768 print version information and exit.
3772 print version information and exit.
3769 \layout List
3773 \layout List
3770 \labelwidthstring 00.00.0000
3774 \labelwidthstring 00.00.0000
3771
3775
3772
3776
3773 \family typewriter
3777 \family typewriter
3774 \series bold
3778 \series bold
3775 -wxversion\SpecialChar ~
3779 -wxversion\SpecialChar ~
3776 <string>:
3780 <string>:
3777 \family default
3781 \family default
3778 \series default
3782 \series default
3779 Select a specific version of wxPython (used in conjunction with
3783 Select a specific version of wxPython (used in conjunction with
3780 \family typewriter
3784 \family typewriter
3781 -wthread
3785 -wthread
3782 \family default
3786 \family default
3783 ).
3787 ).
3784 Requires the wxversion module, part of recent wxPython distributions
3788 Requires the wxversion module, part of recent wxPython distributions
3785 \layout List
3789 \layout List
3786 \labelwidthstring 00.00.0000
3790 \labelwidthstring 00.00.0000
3787
3791
3788
3792
3789 \family typewriter
3793 \family typewriter
3790 \series bold
3794 \series bold
3791 -xmode\SpecialChar ~
3795 -xmode\SpecialChar ~
3792 <modename>
3796 <modename>
3793 \series default
3797 \series default
3794 :
3798 :
3795 \family default
3799 \family default
3796 Mode for exception reporting.
3800 Mode for exception reporting.
3797 \layout List
3801 \layout List
3798 \labelwidthstring 00.00.0000
3802 \labelwidthstring 00.00.0000
3799
3803
3800 \SpecialChar ~
3804 \SpecialChar ~
3801 Valid modes: Plain, Context and Verbose.
3805 Valid modes: Plain, Context and Verbose.
3802 \layout List
3806 \layout List
3803 \labelwidthstring 00.00.0000
3807 \labelwidthstring 00.00.0000
3804
3808
3805 \SpecialChar ~
3809 \SpecialChar ~
3806 Plain: similar to python's normal traceback printing.
3810 Plain: similar to python's normal traceback printing.
3807 \layout List
3811 \layout List
3808 \labelwidthstring 00.00.0000
3812 \labelwidthstring 00.00.0000
3809
3813
3810 \SpecialChar ~
3814 \SpecialChar ~
3811 Context: prints 5 lines of context source code around each line in the
3815 Context: prints 5 lines of context source code around each line in the
3812 traceback.
3816 traceback.
3813 \layout List
3817 \layout List
3814 \labelwidthstring 00.00.0000
3818 \labelwidthstring 00.00.0000
3815
3819
3816 \SpecialChar ~
3820 \SpecialChar ~
3817 Verbose: similar to Context, but additionally prints the variables currently
3821 Verbose: similar to Context, but additionally prints the variables currently
3818 visible where the exception happened (shortening their strings if too long).
3822 visible where the exception happened (shortening their strings if too long).
3819 This can potentially be very slow, if you happen to have a huge data structure
3823 This can potentially be very slow, if you happen to have a huge data structure
3820 whose string representation is complex to compute.
3824 whose string representation is complex to compute.
3821 Your computer may appear to freeze for a while with cpu usage at 100%.
3825 Your computer may appear to freeze for a while with cpu usage at 100%.
3822 If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
3826 If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
3823 it more than once).
3827 it more than once).
3824 \layout Section
3828 \layout Section
3825
3829
3826 Interactive use
3830 Interactive use
3827 \layout Standard
3831 \layout Standard
3828
3832
3829
3833
3830 \series bold
3834 \series bold
3831 Warning
3835 Warning
3832 \series default
3836 \series default
3833 : IPython relies on the existence of a global variable called
3837 : IPython relies on the existence of a global variable called
3834 \family typewriter
3838 \family typewriter
3835 __IP
3839 __IP
3836 \family default
3840 \family default
3837 which controls the shell itself.
3841 which controls the shell itself.
3838 If you redefine
3842 If you redefine
3839 \family typewriter
3843 \family typewriter
3840 __IP
3844 __IP
3841 \family default
3845 \family default
3842 to anything, bizarre behavior will quickly occur.
3846 to anything, bizarre behavior will quickly occur.
3843 \layout Standard
3847 \layout Standard
3844
3848
3845 Other than the above warning, IPython is meant to work as a drop-in replacement
3849 Other than the above warning, IPython is meant to work as a drop-in replacement
3846 for the standard interactive interpreter.
3850 for the standard interactive interpreter.
3847 As such, any code which is valid python should execute normally under IPython
3851 As such, any code which is valid python should execute normally under IPython
3848 (cases where this is not true should be reported as bugs).
3852 (cases where this is not true should be reported as bugs).
3849 It does, however, offer many features which are not available at a standard
3853 It does, however, offer many features which are not available at a standard
3850 python prompt.
3854 python prompt.
3851 What follows is a list of these.
3855 What follows is a list of these.
3852 \layout Subsection
3856 \layout Subsection
3853
3857
3854 Caution for Windows users
3858 Caution for Windows users
3855 \layout Standard
3859 \layout Standard
3856
3860
3857 Windows, unfortunately, uses the `
3861 Windows, unfortunately, uses the `
3858 \family typewriter
3862 \family typewriter
3859
3863
3860 \backslash
3864 \backslash
3861
3865
3862 \family default
3866 \family default
3863 ' character as a path separator.
3867 ' character as a path separator.
3864 This is a terrible choice, because `
3868 This is a terrible choice, because `
3865 \family typewriter
3869 \family typewriter
3866
3870
3867 \backslash
3871 \backslash
3868
3872
3869 \family default
3873 \family default
3870 ' also represents the escape character in most modern programming languages,
3874 ' also represents the escape character in most modern programming languages,
3871 including Python.
3875 including Python.
3872 For this reason, issuing many of the commands discussed below (especially
3876 For this reason, issuing many of the commands discussed below (especially
3873 magics which affect the filesystem) with `
3877 magics which affect the filesystem) with `
3874 \family typewriter
3878 \family typewriter
3875
3879
3876 \backslash
3880 \backslash
3877
3881
3878 \family default
3882 \family default
3879 ' in them will cause strange errors.
3883 ' in them will cause strange errors.
3880 \layout Standard
3884 \layout Standard
3881
3885
3882 A partial solution is to use instead the `
3886 A partial solution is to use instead the `
3883 \family typewriter
3887 \family typewriter
3884 /
3888 /
3885 \family default
3889 \family default
3886 ' character as a path separator, which Windows recognizes in
3890 ' character as a path separator, which Windows recognizes in
3887 \emph on
3891 \emph on
3888 most
3892 most
3889 \emph default
3893 \emph default
3890 situations.
3894 situations.
3891 However, in Windows commands `
3895 However, in Windows commands `
3892 \family typewriter
3896 \family typewriter
3893 /
3897 /
3894 \family default
3898 \family default
3895 ' flags options, so you can not use it for the root directory.
3899 ' flags options, so you can not use it for the root directory.
3896 This means that paths beginning at the root must be typed in a contrived
3900 This means that paths beginning at the root must be typed in a contrived
3897 manner like:
3901 manner like:
3898 \newline
3902 \newline
3899
3903
3900 \family typewriter
3904 \family typewriter
3901 %copy
3905 %copy
3902 \backslash
3906 \backslash
3903 opt/foo/bar.txt
3907 opt/foo/bar.txt
3904 \backslash
3908 \backslash
3905 tmp
3909 tmp
3906 \layout Standard
3910 \layout Standard
3907
3911
3908 There is no sensible thing IPython can do to truly work around this flaw
3912 There is no sensible thing IPython can do to truly work around this flaw
3909 in Windows
3913 in Windows
3910 \begin_inset Foot
3914 \begin_inset Foot
3911 collapsed true
3915 collapsed true
3912
3916
3913 \layout Standard
3917 \layout Standard
3914
3918
3915 If anyone comes up with a
3919 If anyone comes up with a
3916 \emph on
3920 \emph on
3917 clean
3921 clean
3918 \emph default
3922 \emph default
3919 solution which works consistently and does not negatively impact other
3923 solution which works consistently and does not negatively impact other
3920 platforms at all, I'll gladly accept a patch.
3924 platforms at all, I'll gladly accept a patch.
3921 \end_inset
3925 \end_inset
3922
3926
3923 .
3927 .
3924 \layout Subsection
3928 \layout Subsection
3925
3929
3926
3930
3927 \begin_inset LatexCommand \label{sec:magic}
3931 \begin_inset LatexCommand \label{sec:magic}
3928
3932
3929 \end_inset
3933 \end_inset
3930
3934
3931 Magic command system
3935 Magic command system
3932 \layout Standard
3936 \layout Standard
3933
3937
3934 IPython will treat any line whose first character is a
3938 IPython will treat any line whose first character is a
3935 \family typewriter
3939 \family typewriter
3936 %
3940 %
3937 \family default
3941 \family default
3938 as a special call to a 'magic' function.
3942 as a special call to a 'magic' function.
3939 These allow you to control the behavior of IPython itself, plus a lot of
3943 These allow you to control the behavior of IPython itself, plus a lot of
3940 system-type features.
3944 system-type features.
3941 They are all prefixed with a
3945 They are all prefixed with a
3942 \family typewriter
3946 \family typewriter
3943 %
3947 %
3944 \family default
3948 \family default
3945 character, but parameters are given without parentheses or quotes.
3949 character, but parameters are given without parentheses or quotes.
3946 \layout Standard
3950 \layout Standard
3947
3951
3948 Example: typing
3952 Example: typing
3949 \family typewriter
3953 \family typewriter
3950 '%cd mydir'
3954 '%cd mydir'
3951 \family default
3955 \family default
3952 (without the quotes) changes you working directory to
3956 (without the quotes) changes you working directory to
3953 \family typewriter
3957 \family typewriter
3954 'mydir'
3958 'mydir'
3955 \family default
3959 \family default
3956 , if it exists.
3960 , if it exists.
3957 \layout Standard
3961 \layout Standard
3958
3962
3959 If you have 'automagic' enabled (in your
3963 If you have 'automagic' enabled (in your
3960 \family typewriter
3964 \family typewriter
3961 ipythonrc
3965 ipythonrc
3962 \family default
3966 \family default
3963 file, via the command line option
3967 file, via the command line option
3964 \family typewriter
3968 \family typewriter
3965 -automagic
3969 -automagic
3966 \family default
3970 \family default
3967 or with the
3971 or with the
3968 \family typewriter
3972 \family typewriter
3969 %automagic
3973 %automagic
3970 \family default
3974 \family default
3971 function), you don't need to type in the
3975 function), you don't need to type in the
3972 \family typewriter
3976 \family typewriter
3973 %
3977 %
3974 \family default
3978 \family default
3975 explicitly.
3979 explicitly.
3976 IPython will scan its internal list of magic functions and call one if
3980 IPython will scan its internal list of magic functions and call one if
3977 it exists.
3981 it exists.
3978 With automagic on you can then just type '
3982 With automagic on you can then just type '
3979 \family typewriter
3983 \family typewriter
3980 cd mydir
3984 cd mydir
3981 \family default
3985 \family default
3982 ' to go to directory '
3986 ' to go to directory '
3983 \family typewriter
3987 \family typewriter
3984 mydir
3988 mydir
3985 \family default
3989 \family default
3986 '.
3990 '.
3987 The automagic system has the lowest possible precedence in name searches,
3991 The automagic system has the lowest possible precedence in name searches,
3988 so defining an identifier with the same name as an existing magic function
3992 so defining an identifier with the same name as an existing magic function
3989 will shadow it for automagic use.
3993 will shadow it for automagic use.
3990 You can still access the shadowed magic function by explicitly using the
3994 You can still access the shadowed magic function by explicitly using the
3991
3995
3992 \family typewriter
3996 \family typewriter
3993 %
3997 %
3994 \family default
3998 \family default
3995 character at the beginning of the line.
3999 character at the beginning of the line.
3996 \layout Standard
4000 \layout Standard
3997
4001
3998 An example (with automagic on) should clarify all this:
4002 An example (with automagic on) should clarify all this:
3999 \layout LyX-Code
4003 \layout LyX-Code
4000
4004
4001 In [1]: cd ipython # %cd is called by automagic
4005 In [1]: cd ipython # %cd is called by automagic
4002 \layout LyX-Code
4006 \layout LyX-Code
4003
4007
4004 /home/fperez/ipython
4008 /home/fperez/ipython
4005 \layout LyX-Code
4009 \layout LyX-Code
4006
4010
4007 In [2]: cd=1 # now cd is just a variable
4011 In [2]: cd=1 # now cd is just a variable
4008 \layout LyX-Code
4012 \layout LyX-Code
4009
4013
4010 In [3]: cd ..
4014 In [3]: cd ..
4011 # and doesn't work as a function anymore
4015 # and doesn't work as a function anymore
4012 \layout LyX-Code
4016 \layout LyX-Code
4013
4017
4014 ------------------------------------------------------------
4018 ------------------------------------------------------------
4015 \layout LyX-Code
4019 \layout LyX-Code
4016
4020
4017 File "<console>", line 1
4021 File "<console>", line 1
4018 \layout LyX-Code
4022 \layout LyX-Code
4019
4023
4020 cd ..
4024 cd ..
4021 \layout LyX-Code
4025 \layout LyX-Code
4022
4026
4023 ^
4027 ^
4024 \layout LyX-Code
4028 \layout LyX-Code
4025
4029
4026 SyntaxError: invalid syntax
4030 SyntaxError: invalid syntax
4027 \layout LyX-Code
4031 \layout LyX-Code
4028
4032
4029 \layout LyX-Code
4033 \layout LyX-Code
4030
4034
4031 In [4]: %cd ..
4035 In [4]: %cd ..
4032 # but %cd always works
4036 # but %cd always works
4033 \layout LyX-Code
4037 \layout LyX-Code
4034
4038
4035 /home/fperez
4039 /home/fperez
4036 \layout LyX-Code
4040 \layout LyX-Code
4037
4041
4038 In [5]: del cd # if you remove the cd variable
4042 In [5]: del cd # if you remove the cd variable
4039 \layout LyX-Code
4043 \layout LyX-Code
4040
4044
4041 In [6]: cd ipython # automagic can work again
4045 In [6]: cd ipython # automagic can work again
4042 \layout LyX-Code
4046 \layout LyX-Code
4043
4047
4044 /home/fperez/ipython
4048 /home/fperez/ipython
4045 \layout Standard
4049 \layout Standard
4046
4050
4047 You can define your own magic functions to extend the system.
4051 You can define your own magic functions to extend the system.
4048 The following is a snippet of code which shows how to do it.
4052 The following is a snippet of code which shows how to do it.
4049 It is provided as file
4053 It is provided as file
4050 \family typewriter
4054 \family typewriter
4051 example-magic.py
4055 example-magic.py
4052 \family default
4056 \family default
4053 in the examples directory:
4057 in the examples directory:
4054 \layout Standard
4058 \layout Standard
4055
4059
4056
4060
4057 \begin_inset ERT
4061 \begin_inset ERT
4058 status Open
4062 status Open
4059
4063
4060 \layout Standard
4064 \layout Standard
4061
4065
4062 \backslash
4066 \backslash
4063 codelist{examples/example-magic.py}
4067 codelist{examples/example-magic.py}
4064 \end_inset
4068 \end_inset
4065
4069
4066
4070
4067 \layout Standard
4071 \layout Standard
4068
4072
4069 You can also define your own aliased names for magic functions.
4073 You can also define your own aliased names for magic functions.
4070 In your
4074 In your
4071 \family typewriter
4075 \family typewriter
4072 ipythonrc
4076 ipythonrc
4073 \family default
4077 \family default
4074 file, placing a line like:
4078 file, placing a line like:
4075 \layout Standard
4079 \layout Standard
4076
4080
4077
4081
4078 \family typewriter
4082 \family typewriter
4079 execute __IP.magic_cl = __IP.magic_clear
4083 execute __IP.magic_cl = __IP.magic_clear
4080 \layout Standard
4084 \layout Standard
4081
4085
4082 will define
4086 will define
4083 \family typewriter
4087 \family typewriter
4084 %cl
4088 %cl
4085 \family default
4089 \family default
4086 as a new name for
4090 as a new name for
4087 \family typewriter
4091 \family typewriter
4088 %clear
4092 %clear
4089 \family default
4093 \family default
4090 .
4094 .
4091 \layout Standard
4095 \layout Standard
4092
4096
4093 Type
4097 Type
4094 \family typewriter
4098 \family typewriter
4095 %magic
4099 %magic
4096 \family default
4100 \family default
4097 for more information, including a list of all available magic functions
4101 for more information, including a list of all available magic functions
4098 at any time and their docstrings.
4102 at any time and their docstrings.
4099 You can also type
4103 You can also type
4100 \family typewriter
4104 \family typewriter
4101 %magic_function_name?
4105 %magic_function_name?
4102 \family default
4106 \family default
4103 (see sec.
4107 (see sec.
4104
4108
4105 \begin_inset LatexCommand \ref{sec:dyn-object-info}
4109 \begin_inset LatexCommand \ref{sec:dyn-object-info}
4106
4110
4107 \end_inset
4111 \end_inset
4108
4112
4109 for information on the
4113 for information on the
4110 \family typewriter
4114 \family typewriter
4111 '?'
4115 '?'
4112 \family default
4116 \family default
4113 system) to get information about any particular magic function you are
4117 system) to get information about any particular magic function you are
4114 interested in.
4118 interested in.
4115 \layout Subsubsection
4119 \layout Subsubsection
4116
4120
4117 Magic commands
4121 Magic commands
4118 \layout Standard
4122 \layout Standard
4119
4123
4120 The rest of this section is automatically generated for each release from
4124 The rest of this section is automatically generated for each release from
4121 the docstrings in the IPython code.
4125 the docstrings in the IPython code.
4122 Therefore the formatting is somewhat minimal, but this method has the advantage
4126 Therefore the formatting is somewhat minimal, but this method has the advantage
4123 of having information always in sync with the code.
4127 of having information always in sync with the code.
4124 \layout Standard
4128 \layout Standard
4125
4129
4126 A list of all the magic commands available in IPython's
4130 A list of all the magic commands available in IPython's
4127 \emph on
4131 \emph on
4128 default
4132 default
4129 \emph default
4133 \emph default
4130 installation follows.
4134 installation follows.
4131 This is similar to what you'll see by simply typing
4135 This is similar to what you'll see by simply typing
4132 \family typewriter
4136 \family typewriter
4133 %magic
4137 %magic
4134 \family default
4138 \family default
4135 at the prompt, but that will also give you information about magic commands
4139 at the prompt, but that will also give you information about magic commands
4136 you may have added as part of your personal customizations.
4140 you may have added as part of your personal customizations.
4137 \layout Standard
4141 \layout Standard
4138
4142
4139
4143
4140 \begin_inset Include \input{magic.tex}
4144 \begin_inset Include \input{magic.tex}
4141 preview false
4145 preview false
4142
4146
4143 \end_inset
4147 \end_inset
4144
4148
4145
4149
4146 \layout Subsection
4150 \layout Subsection
4147
4151
4148 Access to the standard Python help
4152 Access to the standard Python help
4149 \layout Standard
4153 \layout Standard
4150
4154
4151 As of Python 2.1, a help system is available with access to object docstrings
4155 As of Python 2.1, a help system is available with access to object docstrings
4152 and the Python manuals.
4156 and the Python manuals.
4153 Simply type
4157 Simply type
4154 \family typewriter
4158 \family typewriter
4155 'help'
4159 'help'
4156 \family default
4160 \family default
4157 (no quotes) to access it.
4161 (no quotes) to access it.
4158 You can also type
4162 You can also type
4159 \family typewriter
4163 \family typewriter
4160 help(object)
4164 help(object)
4161 \family default
4165 \family default
4162 to obtain information about a given object, and
4166 to obtain information about a given object, and
4163 \family typewriter
4167 \family typewriter
4164 help('keyword')
4168 help('keyword')
4165 \family default
4169 \family default
4166 for information on a keyword.
4170 for information on a keyword.
4167 As noted in sec.
4171 As noted in sec.
4168
4172
4169 \begin_inset LatexCommand \ref{sec:help-access}
4173 \begin_inset LatexCommand \ref{sec:help-access}
4170
4174
4171 \end_inset
4175 \end_inset
4172
4176
4173 , you need to properly configure your environment variable
4177 , you need to properly configure your environment variable
4174 \family typewriter
4178 \family typewriter
4175 PYTHONDOCS
4179 PYTHONDOCS
4176 \family default
4180 \family default
4177 for this feature to work correctly.
4181 for this feature to work correctly.
4178 \layout Subsection
4182 \layout Subsection
4179
4183
4180
4184
4181 \begin_inset LatexCommand \label{sec:dyn-object-info}
4185 \begin_inset LatexCommand \label{sec:dyn-object-info}
4182
4186
4183 \end_inset
4187 \end_inset
4184
4188
4185 Dynamic object information
4189 Dynamic object information
4186 \layout Standard
4190 \layout Standard
4187
4191
4188 Typing
4192 Typing
4189 \family typewriter
4193 \family typewriter
4190 ?word
4194 ?word
4191 \family default
4195 \family default
4192 or
4196 or
4193 \family typewriter
4197 \family typewriter
4194 word?
4198 word?
4195 \family default
4199 \family default
4196 prints detailed information about an object.
4200 prints detailed information about an object.
4197 If certain strings in the object are too long (docstrings, code, etc.) they
4201 If certain strings in the object are too long (docstrings, code, etc.) they
4198 get snipped in the center for brevity.
4202 get snipped in the center for brevity.
4199 This system gives access variable types and values, full source code for
4203 This system gives access variable types and values, full source code for
4200 any object (if available), function prototypes and other useful information.
4204 any object (if available), function prototypes and other useful information.
4201 \layout Standard
4205 \layout Standard
4202
4206
4203 Typing
4207 Typing
4204 \family typewriter
4208 \family typewriter
4205 ??word
4209 ??word
4206 \family default
4210 \family default
4207 or
4211 or
4208 \family typewriter
4212 \family typewriter
4209 word??
4213 word??
4210 \family default
4214 \family default
4211 gives access to the full information without snipping long strings.
4215 gives access to the full information without snipping long strings.
4212 Long strings are sent to the screen through the
4216 Long strings are sent to the screen through the
4213 \family typewriter
4217 \family typewriter
4214 less
4218 less
4215 \family default
4219 \family default
4216 pager if longer than the screen and printed otherwise.
4220 pager if longer than the screen and printed otherwise.
4217 On systems lacking the
4221 On systems lacking the
4218 \family typewriter
4222 \family typewriter
4219 less
4223 less
4220 \family default
4224 \family default
4221 command, IPython uses a very basic internal pager.
4225 command, IPython uses a very basic internal pager.
4222 \layout Standard
4226 \layout Standard
4223
4227
4224 The following magic functions are particularly useful for gathering information
4228 The following magic functions are particularly useful for gathering information
4225 about your working environment.
4229 about your working environment.
4226 You can get more details by typing
4230 You can get more details by typing
4227 \family typewriter
4231 \family typewriter
4228 %magic
4232 %magic
4229 \family default
4233 \family default
4230 or querying them individually (use
4234 or querying them individually (use
4231 \family typewriter
4235 \family typewriter
4232 %function_name?
4236 %function_name?
4233 \family default
4237 \family default
4234 with or without the
4238 with or without the
4235 \family typewriter
4239 \family typewriter
4236 %
4240 %
4237 \family default
4241 \family default
4238 ), this is just a summary:
4242 ), this is just a summary:
4239 \layout List
4243 \layout List
4240 \labelwidthstring 00.00.0000
4244 \labelwidthstring 00.00.0000
4241
4245
4242
4246
4243 \family typewriter
4247 \family typewriter
4244 \series bold
4248 \series bold
4245 %pdoc\SpecialChar ~
4249 %pdoc\SpecialChar ~
4246 <object>
4250 <object>
4247 \family default
4251 \family default
4248 \series default
4252 \series default
4249 : Print (or run through a pager if too long) the docstring for an object.
4253 : Print (or run through a pager if too long) the docstring for an object.
4250 If the given object is a class, it will print both the class and the constructo
4254 If the given object is a class, it will print both the class and the constructo
4251 r docstrings.
4255 r docstrings.
4252 \layout List
4256 \layout List
4253 \labelwidthstring 00.00.0000
4257 \labelwidthstring 00.00.0000
4254
4258
4255
4259
4256 \family typewriter
4260 \family typewriter
4257 \series bold
4261 \series bold
4258 %pdef\SpecialChar ~
4262 %pdef\SpecialChar ~
4259 <object>
4263 <object>
4260 \family default
4264 \family default
4261 \series default
4265 \series default
4262 : Print the definition header for any callable object.
4266 : Print the definition header for any callable object.
4263 If the object is a class, print the constructor information.
4267 If the object is a class, print the constructor information.
4264 \layout List
4268 \layout List
4265 \labelwidthstring 00.00.0000
4269 \labelwidthstring 00.00.0000
4266
4270
4267
4271
4268 \family typewriter
4272 \family typewriter
4269 \series bold
4273 \series bold
4270 %psource\SpecialChar ~
4274 %psource\SpecialChar ~
4271 <object>
4275 <object>
4272 \family default
4276 \family default
4273 \series default
4277 \series default
4274 : Print (or run through a pager if too long) the source code for an object.
4278 : Print (or run through a pager if too long) the source code for an object.
4275 \layout List
4279 \layout List
4276 \labelwidthstring 00.00.0000
4280 \labelwidthstring 00.00.0000
4277
4281
4278
4282
4279 \family typewriter
4283 \family typewriter
4280 \series bold
4284 \series bold
4281 %pfile\SpecialChar ~
4285 %pfile\SpecialChar ~
4282 <object>
4286 <object>
4283 \family default
4287 \family default
4284 \series default
4288 \series default
4285 : Show the entire source file where an object was defined via a pager, opening
4289 : Show the entire source file where an object was defined via a pager, opening
4286 it at the line where the object definition begins.
4290 it at the line where the object definition begins.
4287 \layout List
4291 \layout List
4288 \labelwidthstring 00.00.0000
4292 \labelwidthstring 00.00.0000
4289
4293
4290
4294
4291 \family typewriter
4295 \family typewriter
4292 \series bold
4296 \series bold
4293 %who/%whos
4297 %who/%whos
4294 \family default
4298 \family default
4295 \series default
4299 \series default
4296 : These functions give information about identifiers you have defined interactiv
4300 : These functions give information about identifiers you have defined interactiv
4297 ely (not things you loaded or defined in your configuration files).
4301 ely (not things you loaded or defined in your configuration files).
4298
4302
4299 \family typewriter
4303 \family typewriter
4300 %who
4304 %who
4301 \family default
4305 \family default
4302 just prints a list of identifiers and
4306 just prints a list of identifiers and
4303 \family typewriter
4307 \family typewriter
4304 %whos
4308 %whos
4305 \family default
4309 \family default
4306 prints a table with some basic details about each identifier.
4310 prints a table with some basic details about each identifier.
4307 \layout Standard
4311 \layout Standard
4308
4312
4309 Note that the dynamic object information functions (
4313 Note that the dynamic object information functions (
4310 \family typewriter
4314 \family typewriter
4311 ?/??, %pdoc, %pfile, %pdef, %psource
4315 ?/??, %pdoc, %pfile, %pdef, %psource
4312 \family default
4316 \family default
4313 ) give you access to documentation even on things which are not really defined
4317 ) give you access to documentation even on things which are not really defined
4314 as separate identifiers.
4318 as separate identifiers.
4315 Try for example typing
4319 Try for example typing
4316 \family typewriter
4320 \family typewriter
4317 {}.get?
4321 {}.get?
4318 \family default
4322 \family default
4319 or after doing
4323 or after doing
4320 \family typewriter
4324 \family typewriter
4321 import os
4325 import os
4322 \family default
4326 \family default
4323 , type
4327 , type
4324 \family typewriter
4328 \family typewriter
4325 os.path.abspath??
4329 os.path.abspath??
4326 \family default
4330 \family default
4327 .
4331 .
4328 \layout Subsection
4332 \layout Subsection
4329
4333
4330
4334
4331 \begin_inset LatexCommand \label{sec:readline}
4335 \begin_inset LatexCommand \label{sec:readline}
4332
4336
4333 \end_inset
4337 \end_inset
4334
4338
4335 Readline-based features
4339 Readline-based features
4336 \layout Standard
4340 \layout Standard
4337
4341
4338 These features require the GNU readline library, so they won't work if your
4342 These features require the GNU readline library, so they won't work if your
4339 Python installation lacks readline support.
4343 Python installation lacks readline support.
4340 We will first describe the default behavior IPython uses, and then how
4344 We will first describe the default behavior IPython uses, and then how
4341 to change it to suit your preferences.
4345 to change it to suit your preferences.
4342 \layout Subsubsection
4346 \layout Subsubsection
4343
4347
4344 Command line completion
4348 Command line completion
4345 \layout Standard
4349 \layout Standard
4346
4350
4347 At any time, hitting TAB will complete any available python commands or
4351 At any time, hitting TAB will complete any available python commands or
4348 variable names, and show you a list of the possible completions if there's
4352 variable names, and show you a list of the possible completions if there's
4349 no unambiguous one.
4353 no unambiguous one.
4350 It will also complete filenames in the current directory if no python names
4354 It will also complete filenames in the current directory if no python names
4351 match what you've typed so far.
4355 match what you've typed so far.
4352 \layout Subsubsection
4356 \layout Subsubsection
4353
4357
4354 Search command history
4358 Search command history
4355 \layout Standard
4359 \layout Standard
4356
4360
4357 IPython provides two ways for searching through previous input and thus
4361 IPython provides two ways for searching through previous input and thus
4358 reduce the need for repetitive typing:
4362 reduce the need for repetitive typing:
4359 \layout Enumerate
4363 \layout Enumerate
4360
4364
4361 Start typing, and then use
4365 Start typing, and then use
4362 \family typewriter
4366 \family typewriter
4363 Ctrl-p
4367 Ctrl-p
4364 \family default
4368 \family default
4365 (previous,up) and
4369 (previous,up) and
4366 \family typewriter
4370 \family typewriter
4367 Ctrl-n
4371 Ctrl-n
4368 \family default
4372 \family default
4369 (next,down) to search through only the history items that match what you've
4373 (next,down) to search through only the history items that match what you've
4370 typed so far.
4374 typed so far.
4371 If you use
4375 If you use
4372 \family typewriter
4376 \family typewriter
4373 Ctrl-p/Ctrl-n
4377 Ctrl-p/Ctrl-n
4374 \family default
4378 \family default
4375 at a blank prompt, they just behave like normal arrow keys.
4379 at a blank prompt, they just behave like normal arrow keys.
4376 \layout Enumerate
4380 \layout Enumerate
4377
4381
4378 Hit
4382 Hit
4379 \family typewriter
4383 \family typewriter
4380 Ctrl-r
4384 Ctrl-r
4381 \family default
4385 \family default
4382 : opens a search prompt.
4386 : opens a search prompt.
4383 Begin typing and the system searches your history for lines that contain
4387 Begin typing and the system searches your history for lines that contain
4384 what you've typed so far, completing as much as it can.
4388 what you've typed so far, completing as much as it can.
4385 \layout Subsubsection
4389 \layout Subsubsection
4386
4390
4387 Persistent command history across sessions
4391 Persistent command history across sessions
4388 \layout Standard
4392 \layout Standard
4389
4393
4390 IPython will save your input history when it leaves and reload it next time
4394 IPython will save your input history when it leaves and reload it next time
4391 you restart it.
4395 you restart it.
4392 By default, the history file is named
4396 By default, the history file is named
4393 \family typewriter
4397 \family typewriter
4394 $IPYTHONDIR/history
4398 $IPYTHONDIR/history
4395 \family default
4399 \family default
4396 , but if you've loaded a named profile, '
4400 , but if you've loaded a named profile, '
4397 \family typewriter
4401 \family typewriter
4398 -PROFILE_NAME
4402 -PROFILE_NAME
4399 \family default
4403 \family default
4400 ' is appended to the name.
4404 ' is appended to the name.
4401 This allows you to keep separate histories related to various tasks: commands
4405 This allows you to keep separate histories related to various tasks: commands
4402 related to numerical work will not be clobbered by a system shell history,
4406 related to numerical work will not be clobbered by a system shell history,
4403 for example.
4407 for example.
4404 \layout Subsubsection
4408 \layout Subsubsection
4405
4409
4406 Autoindent
4410 Autoindent
4407 \layout Standard
4411 \layout Standard
4408
4412
4409 IPython can recognize lines ending in ':' and indent the next line, while
4413 IPython can recognize lines ending in ':' and indent the next line, while
4410 also un-indenting automatically after 'raise' or 'return'.
4414 also un-indenting automatically after 'raise' or 'return'.
4411
4415
4412 \layout Standard
4416 \layout Standard
4413
4417
4414 This feature uses the readline library, so it will honor your
4418 This feature uses the readline library, so it will honor your
4415 \family typewriter
4419 \family typewriter
4416 ~/.inputrc
4420 ~/.inputrc
4417 \family default
4421 \family default
4418 configuration (or whatever file your
4422 configuration (or whatever file your
4419 \family typewriter
4423 \family typewriter
4420 INPUTRC
4424 INPUTRC
4421 \family default
4425 \family default
4422 variable points to).
4426 variable points to).
4423 Adding the following lines to your
4427 Adding the following lines to your
4424 \family typewriter
4428 \family typewriter
4425 .inputrc
4429 .inputrc
4426 \family default
4430 \family default
4427 file can make indenting/unindenting more convenient (
4431 file can make indenting/unindenting more convenient (
4428 \family typewriter
4432 \family typewriter
4429 M-i
4433 M-i
4430 \family default
4434 \family default
4431 indents,
4435 indents,
4432 \family typewriter
4436 \family typewriter
4433 M-u
4437 M-u
4434 \family default
4438 \family default
4435 unindents):
4439 unindents):
4436 \layout Standard
4440 \layout Standard
4437
4441
4438
4442
4439 \family typewriter
4443 \family typewriter
4440 $if Python
4444 $if Python
4441 \newline
4445 \newline
4442 "
4446 "
4443 \backslash
4447 \backslash
4444 M-i": "\SpecialChar ~
4448 M-i": "\SpecialChar ~
4445 \SpecialChar ~
4449 \SpecialChar ~
4446 \SpecialChar ~
4450 \SpecialChar ~
4447 \SpecialChar ~
4451 \SpecialChar ~
4448 "
4452 "
4449 \newline
4453 \newline
4450 "
4454 "
4451 \backslash
4455 \backslash
4452 M-u": "
4456 M-u": "
4453 \backslash
4457 \backslash
4454 d
4458 d
4455 \backslash
4459 \backslash
4456 d
4460 d
4457 \backslash
4461 \backslash
4458 d
4462 d
4459 \backslash
4463 \backslash
4460 d"
4464 d"
4461 \newline
4465 \newline
4462 $endif
4466 $endif
4463 \layout Standard
4467 \layout Standard
4464
4468
4465 Note that there are 4 spaces between the quote marks after
4469 Note that there are 4 spaces between the quote marks after
4466 \family typewriter
4470 \family typewriter
4467 "M-i"
4471 "M-i"
4468 \family default
4472 \family default
4469 above.
4473 above.
4470 \layout Standard
4474 \layout Standard
4471
4475
4472
4476
4473 \series bold
4477 \series bold
4474 Warning:
4478 Warning:
4475 \series default
4479 \series default
4476 this feature is ON by default, but it can cause problems with the pasting
4480 this feature is ON by default, but it can cause problems with the pasting
4477 of multi-line indented code (the pasted code gets re-indented on each line).
4481 of multi-line indented code (the pasted code gets re-indented on each line).
4478 A magic function
4482 A magic function
4479 \family typewriter
4483 \family typewriter
4480 %autoindent
4484 %autoindent
4481 \family default
4485 \family default
4482 allows you to toggle it on/off at runtime.
4486 allows you to toggle it on/off at runtime.
4483 You can also disable it permanently on in your
4487 You can also disable it permanently on in your
4484 \family typewriter
4488 \family typewriter
4485 ipythonrc
4489 ipythonrc
4486 \family default
4490 \family default
4487 file (set
4491 file (set
4488 \family typewriter
4492 \family typewriter
4489 autoindent 0
4493 autoindent 0
4490 \family default
4494 \family default
4491 ).
4495 ).
4492 \layout Subsubsection
4496 \layout Subsubsection
4493
4497
4494 Customizing readline behavior
4498 Customizing readline behavior
4495 \layout Standard
4499 \layout Standard
4496
4500
4497 All these features are based on the GNU readline library, which has an extremely
4501 All these features are based on the GNU readline library, which has an extremely
4498 customizable interface.
4502 customizable interface.
4499 Normally, readline is configured via a file which defines the behavior
4503 Normally, readline is configured via a file which defines the behavior
4500 of the library; the details of the syntax for this can be found in the
4504 of the library; the details of the syntax for this can be found in the
4501 readline documentation available with your system or on the Internet.
4505 readline documentation available with your system or on the Internet.
4502 IPython doesn't read this file (if it exists) directly, but it does support
4506 IPython doesn't read this file (if it exists) directly, but it does support
4503 passing to readline valid options via a simple interface.
4507 passing to readline valid options via a simple interface.
4504 In brief, you can customize readline by setting the following options in
4508 In brief, you can customize readline by setting the following options in
4505 your
4509 your
4506 \family typewriter
4510 \family typewriter
4507 ipythonrc
4511 ipythonrc
4508 \family default
4512 \family default
4509 configuration file (note that these options can
4513 configuration file (note that these options can
4510 \emph on
4514 \emph on
4511 not
4515 not
4512 \emph default
4516 \emph default
4513 be specified at the command line):
4517 be specified at the command line):
4514 \layout List
4518 \layout List
4515 \labelwidthstring 00.00.0000
4519 \labelwidthstring 00.00.0000
4516
4520
4517
4521
4518 \family typewriter
4522 \family typewriter
4519 \series bold
4523 \series bold
4520 readline_parse_and_bind:
4524 readline_parse_and_bind:
4521 \family default
4525 \family default
4522 \series default
4526 \series default
4523 this option can appear as many times as you want, each time defining a
4527 this option can appear as many times as you want, each time defining a
4524 string to be executed via a
4528 string to be executed via a
4525 \family typewriter
4529 \family typewriter
4526 readline.parse_and_bind()
4530 readline.parse_and_bind()
4527 \family default
4531 \family default
4528 command.
4532 command.
4529 The syntax for valid commands of this kind can be found by reading the
4533 The syntax for valid commands of this kind can be found by reading the
4530 documentation for the GNU readline library, as these commands are of the
4534 documentation for the GNU readline library, as these commands are of the
4531 kind which readline accepts in its configuration file.
4535 kind which readline accepts in its configuration file.
4532 \layout List
4536 \layout List
4533 \labelwidthstring 00.00.0000
4537 \labelwidthstring 00.00.0000
4534
4538
4535
4539
4536 \family typewriter
4540 \family typewriter
4537 \series bold
4541 \series bold
4538 readline_remove_delims:
4542 readline_remove_delims:
4539 \family default
4543 \family default
4540 \series default
4544 \series default
4541 a string of characters to be removed from the default word-delimiters list
4545 a string of characters to be removed from the default word-delimiters list
4542 used by readline, so that completions may be performed on strings which
4546 used by readline, so that completions may be performed on strings which
4543 contain them.
4547 contain them.
4544 Do not change the default value unless you know what you're doing.
4548 Do not change the default value unless you know what you're doing.
4545 \layout List
4549 \layout List
4546 \labelwidthstring 00.00.0000
4550 \labelwidthstring 00.00.0000
4547
4551
4548
4552
4549 \family typewriter
4553 \family typewriter
4550 \series bold
4554 \series bold
4551 readline_omit__names
4555 readline_omit__names
4552 \family default
4556 \family default
4553 \series default
4557 \series default
4554 : when tab-completion is enabled, hitting
4558 : when tab-completion is enabled, hitting
4555 \family typewriter
4559 \family typewriter
4556 <tab>
4560 <tab>
4557 \family default
4561 \family default
4558 after a '
4562 after a '
4559 \family typewriter
4563 \family typewriter
4560 .
4564 .
4561 \family default
4565 \family default
4562 ' in a name will complete all attributes of an object, including all the
4566 ' in a name will complete all attributes of an object, including all the
4563 special methods whose names include double underscores (like
4567 special methods whose names include double underscores (like
4564 \family typewriter
4568 \family typewriter
4565 __getitem__
4569 __getitem__
4566 \family default
4570 \family default
4567 or
4571 or
4568 \family typewriter
4572 \family typewriter
4569 __class__
4573 __class__
4570 \family default
4574 \family default
4571 ).
4575 ).
4572 If you'd rather not see these names by default, you can set this option
4576 If you'd rather not see these names by default, you can set this option
4573 to 1.
4577 to 1.
4574 Note that even when this option is set, you can still see those names by
4578 Note that even when this option is set, you can still see those names by
4575 explicitly typing a
4579 explicitly typing a
4576 \family typewriter
4580 \family typewriter
4577 _
4581 _
4578 \family default
4582 \family default
4579 after the period and hitting
4583 after the period and hitting
4580 \family typewriter
4584 \family typewriter
4581 <tab>
4585 <tab>
4582 \family default
4586 \family default
4583 : '
4587 : '
4584 \family typewriter
4588 \family typewriter
4585 name._<tab>
4589 name._<tab>
4586 \family default
4590 \family default
4587 ' will always complete attribute names starting with '
4591 ' will always complete attribute names starting with '
4588 \family typewriter
4592 \family typewriter
4589 _
4593 _
4590 \family default
4594 \family default
4591 '.
4595 '.
4592 \layout List
4596 \layout List
4593 \labelwidthstring 00.00.0000
4597 \labelwidthstring 00.00.0000
4594
4598
4595 \SpecialChar ~
4599 \SpecialChar ~
4596 This option is off by default so that new users see all attributes of any
4600 This option is off by default so that new users see all attributes of any
4597 objects they are dealing with.
4601 objects they are dealing with.
4598 \layout Standard
4602 \layout Standard
4599
4603
4600 You will find the default values along with a corresponding detailed explanation
4604 You will find the default values along with a corresponding detailed explanation
4601 in your
4605 in your
4602 \family typewriter
4606 \family typewriter
4603 ipythonrc
4607 ipythonrc
4604 \family default
4608 \family default
4605 file.
4609 file.
4606 \layout Subsection
4610 \layout Subsection
4607
4611
4608 Session logging and restoring
4612 Session logging and restoring
4609 \layout Standard
4613 \layout Standard
4610
4614
4611 You can log all input from a session either by starting IPython with the
4615 You can log all input from a session either by starting IPython with the
4612 command line switches
4616 command line switches
4613 \family typewriter
4617 \family typewriter
4614 -log
4618 -log
4615 \family default
4619 \family default
4616 or
4620 or
4617 \family typewriter
4621 \family typewriter
4618 -logfile
4622 -logfile
4619 \family default
4623 \family default
4620 (see sec.
4624 (see sec.
4621
4625
4622 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
4626 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
4623
4627
4624 \end_inset
4628 \end_inset
4625
4629
4626 )or by activating the logging at any moment with the magic function
4630 )or by activating the logging at any moment with the magic function
4627 \family typewriter
4631 \family typewriter
4628 %logstart
4632 %logstart
4629 \family default
4633 \family default
4630 .
4634 .
4631
4635
4632 \layout Standard
4636 \layout Standard
4633
4637
4634 Log files can later be reloaded with the
4638 Log files can later be reloaded with the
4635 \family typewriter
4639 \family typewriter
4636 -logplay
4640 -logplay
4637 \family default
4641 \family default
4638 option and IPython will attempt to 'replay' the log by executing all the
4642 option and IPython will attempt to 'replay' the log by executing all the
4639 lines in it, thus restoring the state of a previous session.
4643 lines in it, thus restoring the state of a previous session.
4640 This feature is not quite perfect, but can still be useful in many cases.
4644 This feature is not quite perfect, but can still be useful in many cases.
4641 \layout Standard
4645 \layout Standard
4642
4646
4643 The log files can also be used as a way to have a permanent record of any
4647 The log files can also be used as a way to have a permanent record of any
4644 code you wrote while experimenting.
4648 code you wrote while experimenting.
4645 Log files are regular text files which you can later open in your favorite
4649 Log files are regular text files which you can later open in your favorite
4646 text editor to extract code or to 'clean them up' before using them to
4650 text editor to extract code or to 'clean them up' before using them to
4647 replay a session.
4651 replay a session.
4648 \layout Standard
4652 \layout Standard
4649
4653
4650 The
4654 The
4651 \family typewriter
4655 \family typewriter
4652 %logstart
4656 %logstart
4653 \family default
4657 \family default
4654 function for activating logging in mid-session is used as follows:
4658 function for activating logging in mid-session is used as follows:
4655 \layout Standard
4659 \layout Standard
4656
4660
4657
4661
4658 \family typewriter
4662 \family typewriter
4659 %logstart [log_name [log_mode]]
4663 %logstart [log_name [log_mode]]
4660 \layout Standard
4664 \layout Standard
4661
4665
4662 If no name is given, it defaults to a file named
4666 If no name is given, it defaults to a file named
4663 \family typewriter
4667 \family typewriter
4664 'log'
4668 'log'
4665 \family default
4669 \family default
4666 in your IPYTHONDIR directory, in
4670 in your IPYTHONDIR directory, in
4667 \family typewriter
4671 \family typewriter
4668 'rotate'
4672 'rotate'
4669 \family default
4673 \family default
4670 mode (see below).
4674 mode (see below).
4671 \layout Standard
4675 \layout Standard
4672
4676
4673 '
4677 '
4674 \family typewriter
4678 \family typewriter
4675 %logstart name
4679 %logstart name
4676 \family default
4680 \family default
4677 ' saves to file
4681 ' saves to file
4678 \family typewriter
4682 \family typewriter
4679 'name'
4683 'name'
4680 \family default
4684 \family default
4681 in
4685 in
4682 \family typewriter
4686 \family typewriter
4683 'backup'
4687 'backup'
4684 \family default
4688 \family default
4685 mode.
4689 mode.
4686 It saves your history up to that point and then continues logging.
4690 It saves your history up to that point and then continues logging.
4687 \layout Standard
4691 \layout Standard
4688
4692
4689
4693
4690 \family typewriter
4694 \family typewriter
4691 %logstart
4695 %logstart
4692 \family default
4696 \family default
4693 takes a second optional parameter: logging mode.
4697 takes a second optional parameter: logging mode.
4694 This can be one of (note that the modes are given unquoted):
4698 This can be one of (note that the modes are given unquoted):
4695 \layout List
4699 \layout List
4696 \labelwidthstring 00.00.0000
4700 \labelwidthstring 00.00.0000
4697
4701
4698
4702
4699 \family typewriter
4703 \family typewriter
4700 over
4704 over
4701 \family default
4705 \family default
4702 : overwrite existing
4706 : overwrite existing
4703 \family typewriter
4707 \family typewriter
4704 log_name
4708 log_name
4705 \family default
4709 \family default
4706 .
4710 .
4707 \layout List
4711 \layout List
4708 \labelwidthstring 00.00.0000
4712 \labelwidthstring 00.00.0000
4709
4713
4710
4714
4711 \family typewriter
4715 \family typewriter
4712 backup
4716 backup
4713 \family default
4717 \family default
4714 : rename (if exists) to
4718 : rename (if exists) to
4715 \family typewriter
4719 \family typewriter
4716 log_name~
4720 log_name~
4717 \family default
4721 \family default
4718 and start
4722 and start
4719 \family typewriter
4723 \family typewriter
4720 log_name
4724 log_name
4721 \family default
4725 \family default
4722 .
4726 .
4723 \layout List
4727 \layout List
4724 \labelwidthstring 00.00.0000
4728 \labelwidthstring 00.00.0000
4725
4729
4726
4730
4727 \family typewriter
4731 \family typewriter
4728 append
4732 append
4729 \family default
4733 \family default
4730 : well, that says it.
4734 : well, that says it.
4731 \layout List
4735 \layout List
4732 \labelwidthstring 00.00.0000
4736 \labelwidthstring 00.00.0000
4733
4737
4734
4738
4735 \family typewriter
4739 \family typewriter
4736 rotate
4740 rotate
4737 \family default
4741 \family default
4738 : create rotating logs
4742 : create rotating logs
4739 \family typewriter
4743 \family typewriter
4740 log_name
4744 log_name
4741 \family default
4745 \family default
4742 .
4746 .
4743 \family typewriter
4747 \family typewriter
4744 1~
4748 1~
4745 \family default
4749 \family default
4746 ,
4750 ,
4747 \family typewriter
4751 \family typewriter
4748 log_name.2~
4752 log_name.2~
4749 \family default
4753 \family default
4750 , etc.
4754 , etc.
4751 \layout Standard
4755 \layout Standard
4752
4756
4753 The
4757 The
4754 \family typewriter
4758 \family typewriter
4755 %logoff
4759 %logoff
4756 \family default
4760 \family default
4757 and
4761 and
4758 \family typewriter
4762 \family typewriter
4759 %logon
4763 %logon
4760 \family default
4764 \family default
4761 functions allow you to temporarily stop and resume logging to a file which
4765 functions allow you to temporarily stop and resume logging to a file which
4762 had previously been started with
4766 had previously been started with
4763 \family typewriter
4767 \family typewriter
4764 %logstart
4768 %logstart
4765 \family default
4769 \family default
4766 .
4770 .
4767 They will fail (with an explanation) if you try to use them before logging
4771 They will fail (with an explanation) if you try to use them before logging
4768 has been started.
4772 has been started.
4769 \layout Subsection
4773 \layout Subsection
4770
4774
4771
4775
4772 \begin_inset LatexCommand \label{sub:System-shell-access}
4776 \begin_inset LatexCommand \label{sub:System-shell-access}
4773
4777
4774 \end_inset
4778 \end_inset
4775
4779
4776 System shell access
4780 System shell access
4777 \layout Standard
4781 \layout Standard
4778
4782
4779 Any input line beginning with a
4783 Any input line beginning with a
4780 \family typewriter
4784 \family typewriter
4781 !
4785 !
4782 \family default
4786 \family default
4783 character is passed verbatim (minus the
4787 character is passed verbatim (minus the
4784 \family typewriter
4788 \family typewriter
4785 !
4789 !
4786 \family default
4790 \family default
4787 , of course) to the underlying operating system.
4791 , of course) to the underlying operating system.
4788 For example, typing
4792 For example, typing
4789 \family typewriter
4793 \family typewriter
4790 !ls
4794 !ls
4791 \family default
4795 \family default
4792 will run
4796 will run
4793 \family typewriter
4797 \family typewriter
4794 'ls'
4798 'ls'
4795 \family default
4799 \family default
4796 in the current directory.
4800 in the current directory.
4797 \layout Subsubsection
4801 \layout Subsubsection
4798
4802
4799 Manual capture of command output
4803 Manual capture of command output
4800 \layout Standard
4804 \layout Standard
4801
4805
4802 If the input line begins with
4806 If the input line begins with
4803 \emph on
4807 \emph on
4804 two
4808 two
4805 \emph default
4809 \emph default
4806 exclamation marks,
4810 exclamation marks,
4807 \family typewriter
4811 \family typewriter
4808 !!
4812 !!
4809 \family default
4813 \family default
4810 , the command is executed but its output is captured and returned as a python
4814 , the command is executed but its output is captured and returned as a python
4811 list, split on newlines.
4815 list, split on newlines.
4812 Any output sent by the subprocess to standard error is printed separately,
4816 Any output sent by the subprocess to standard error is printed separately,
4813 so that the resulting list only captures standard output.
4817 so that the resulting list only captures standard output.
4814 The
4818 The
4815 \family typewriter
4819 \family typewriter
4816 !!
4820 !!
4817 \family default
4821 \family default
4818 syntax is a shorthand for the
4822 syntax is a shorthand for the
4819 \family typewriter
4823 \family typewriter
4820 %sx
4824 %sx
4821 \family default
4825 \family default
4822 magic command.
4826 magic command.
4823 \layout Standard
4827 \layout Standard
4824
4828
4825 Finally, the
4829 Finally, the
4826 \family typewriter
4830 \family typewriter
4827 %sc
4831 %sc
4828 \family default
4832 \family default
4829 magic (short for `shell capture') is similar to
4833 magic (short for `shell capture') is similar to
4830 \family typewriter
4834 \family typewriter
4831 %sx
4835 %sx
4832 \family default
4836 \family default
4833 , but allowing more fine-grained control of the capture details, and storing
4837 , but allowing more fine-grained control of the capture details, and storing
4834 the result directly into a named variable.
4838 the result directly into a named variable.
4835 \layout Standard
4839 \layout Standard
4836
4840
4837 See Sec.\SpecialChar ~
4841 See Sec.\SpecialChar ~
4838
4842
4839 \begin_inset LatexCommand \ref{sec:magic}
4843 \begin_inset LatexCommand \ref{sec:magic}
4840
4844
4841 \end_inset
4845 \end_inset
4842
4846
4843 for details on the magics
4847 for details on the magics
4844 \family typewriter
4848 \family typewriter
4845 %sc
4849 %sc
4846 \family default
4850 \family default
4847 and
4851 and
4848 \family typewriter
4852 \family typewriter
4849 %sx
4853 %sx
4850 \family default
4854 \family default
4851 , or use IPython's own help (
4855 , or use IPython's own help (
4852 \family typewriter
4856 \family typewriter
4853 sc?
4857 sc?
4854 \family default
4858 \family default
4855 and
4859 and
4856 \family typewriter
4860 \family typewriter
4857 sx?
4861 sx?
4858 \family default
4862 \family default
4859 ) for further details.
4863 ) for further details.
4860 \layout Standard
4864 \layout Standard
4861
4865
4862 IPython also allows you to expand the value of python variables when making
4866 IPython also allows you to expand the value of python variables when making
4863 system calls.
4867 system calls.
4864 Any python variable or expression which you prepend with
4868 Any python variable or expression which you prepend with
4865 \family typewriter
4869 \family typewriter
4866 $
4870 $
4867 \family default
4871 \family default
4868 will get expanded before the system call is made.
4872 will get expanded before the system call is made.
4869
4873
4870 \layout Standard
4874 \layout Standard
4871
4875
4872
4876
4873 \family typewriter
4877 \family typewriter
4874 In [1]: pyvar='Hello world'
4878 In [1]: pyvar='Hello world'
4875 \newline
4879 \newline
4876 In [2]: !echo "A python variable: $pyvar"
4880 In [2]: !echo "A python variable: $pyvar"
4877 \newline
4881 \newline
4878 A python variable: Hello world
4882 A python variable: Hello world
4879 \layout Standard
4883 \layout Standard
4880
4884
4881 If you want the shell to actually see a literal
4885 If you want the shell to actually see a literal
4882 \family typewriter
4886 \family typewriter
4883 $
4887 $
4884 \family default
4888 \family default
4885 , you need to type it twice:
4889 , you need to type it twice:
4886 \layout Standard
4890 \layout Standard
4887
4891
4888
4892
4889 \family typewriter
4893 \family typewriter
4890 In [3]: !echo "A system variable: $$HOME"
4894 In [3]: !echo "A system variable: $$HOME"
4891 \newline
4895 \newline
4892 A system variable: /home/fperez
4896 A system variable: /home/fperez
4893 \layout Standard
4897 \layout Standard
4894
4898
4895 You can pass arbitrary expressions, though you'll need to delimit them with
4899 You can pass arbitrary expressions, though you'll need to delimit them with
4896
4900
4897 \family typewriter
4901 \family typewriter
4898 {}
4902 {}
4899 \family default
4903 \family default
4900 if there is ambiguity as to the extent of the expression:
4904 if there is ambiguity as to the extent of the expression:
4901 \layout Standard
4905 \layout Standard
4902
4906
4903
4907
4904 \family typewriter
4908 \family typewriter
4905 In [5]: x=10
4909 In [5]: x=10
4906 \newline
4910 \newline
4907 In [6]: y=20
4911 In [6]: y=20
4908 \newline
4912 \newline
4909 In [13]: !echo $x+y
4913 In [13]: !echo $x+y
4910 \newline
4914 \newline
4911 10+y
4915 10+y
4912 \newline
4916 \newline
4913 In [7]: !echo ${x+y}
4917 In [7]: !echo ${x+y}
4914 \newline
4918 \newline
4915 30
4919 30
4916 \layout Standard
4920 \layout Standard
4917
4921
4918 Even object attributes can be expanded:
4922 Even object attributes can be expanded:
4919 \layout Standard
4923 \layout Standard
4920
4924
4921
4925
4922 \family typewriter
4926 \family typewriter
4923 In [12]: !echo $sys.argv
4927 In [12]: !echo $sys.argv
4924 \newline
4928 \newline
4925 [/home/fperez/usr/bin/ipython]
4929 [/home/fperez/usr/bin/ipython]
4926 \layout Subsection
4930 \layout Subsection
4927
4931
4928 System command aliases
4932 System command aliases
4929 \layout Standard
4933 \layout Standard
4930
4934
4931 The
4935 The
4932 \family typewriter
4936 \family typewriter
4933 %alias
4937 %alias
4934 \family default
4938 \family default
4935 magic function and the
4939 magic function and the
4936 \family typewriter
4940 \family typewriter
4937 alias
4941 alias
4938 \family default
4942 \family default
4939 option in the
4943 option in the
4940 \family typewriter
4944 \family typewriter
4941 ipythonrc
4945 ipythonrc
4942 \family default
4946 \family default
4943 configuration file allow you to define magic functions which are in fact
4947 configuration file allow you to define magic functions which are in fact
4944 system shell commands.
4948 system shell commands.
4945 These aliases can have parameters.
4949 These aliases can have parameters.
4946
4950
4947 \layout Standard
4951 \layout Standard
4948
4952
4949 '
4953 '
4950 \family typewriter
4954 \family typewriter
4951 %alias alias_name cmd
4955 %alias alias_name cmd
4952 \family default
4956 \family default
4953 ' defines '
4957 ' defines '
4954 \family typewriter
4958 \family typewriter
4955 alias_name
4959 alias_name
4956 \family default
4960 \family default
4957 ' as an alias for '
4961 ' as an alias for '
4958 \family typewriter
4962 \family typewriter
4959 cmd
4963 cmd
4960 \family default
4964 \family default
4961 '
4965 '
4962 \layout Standard
4966 \layout Standard
4963
4967
4964 Then, typing '
4968 Then, typing '
4965 \family typewriter
4969 \family typewriter
4966 %alias_name params
4970 %alias_name params
4967 \family default
4971 \family default
4968 ' will execute the system command '
4972 ' will execute the system command '
4969 \family typewriter
4973 \family typewriter
4970 cmd params
4974 cmd params
4971 \family default
4975 \family default
4972 ' (from your underlying operating system).
4976 ' (from your underlying operating system).
4973
4977
4974 \layout Standard
4978 \layout Standard
4975
4979
4976 You can also define aliases with parameters using
4980 You can also define aliases with parameters using
4977 \family typewriter
4981 \family typewriter
4978 %s
4982 %s
4979 \family default
4983 \family default
4980 specifiers (one per parameter).
4984 specifiers (one per parameter).
4981 The following example defines the
4985 The following example defines the
4982 \family typewriter
4986 \family typewriter
4983 %parts
4987 %parts
4984 \family default
4988 \family default
4985 function as an alias to the command '
4989 function as an alias to the command '
4986 \family typewriter
4990 \family typewriter
4987 echo first %s second %s
4991 echo first %s second %s
4988 \family default
4992 \family default
4989 ' where each
4993 ' where each
4990 \family typewriter
4994 \family typewriter
4991 %s
4995 %s
4992 \family default
4996 \family default
4993 will be replaced by a positional parameter to the call to
4997 will be replaced by a positional parameter to the call to
4994 \family typewriter
4998 \family typewriter
4995 %parts:
4999 %parts:
4996 \layout Standard
5000 \layout Standard
4997
5001
4998
5002
4999 \family typewriter
5003 \family typewriter
5000 In [1]: alias parts echo first %s second %s
5004 In [1]: alias parts echo first %s second %s
5001 \newline
5005 \newline
5002 In [2]: %parts A B
5006 In [2]: %parts A B
5003 \newline
5007 \newline
5004 first A second B
5008 first A second B
5005 \newline
5009 \newline
5006 In [3]: %parts A
5010 In [3]: %parts A
5007 \newline
5011 \newline
5008 Incorrect number of arguments: 2 expected.
5012 Incorrect number of arguments: 2 expected.
5009
5013
5010 \newline
5014 \newline
5011 parts is an alias to: 'echo first %s second %s'
5015 parts is an alias to: 'echo first %s second %s'
5012 \layout Standard
5016 \layout Standard
5013
5017
5014 If called with no parameters,
5018 If called with no parameters,
5015 \family typewriter
5019 \family typewriter
5016 %alias
5020 %alias
5017 \family default
5021 \family default
5018 prints the table of currently defined aliases.
5022 prints the table of currently defined aliases.
5019 \layout Standard
5023 \layout Standard
5020
5024
5021 The
5025 The
5022 \family typewriter
5026 \family typewriter
5023 %rehash/rehashx
5027 %rehash/rehashx
5024 \family default
5028 \family default
5025 magics allow you to load your entire
5029 magics allow you to load your entire
5026 \family typewriter
5030 \family typewriter
5027 $PATH
5031 $PATH
5028 \family default
5032 \family default
5029 as ipython aliases.
5033 as ipython aliases.
5030 See their respective docstrings (or sec.\SpecialChar ~
5034 See their respective docstrings (or sec.\SpecialChar ~
5031
5035
5032 \begin_inset LatexCommand \ref{sec:magic}
5036 \begin_inset LatexCommand \ref{sec:magic}
5033
5037
5034 \end_inset
5038 \end_inset
5035
5039
5036 for further details).
5040 for further details).
5037 \layout Subsection
5041 \layout Subsection
5038
5042
5039
5043
5040 \begin_inset LatexCommand \label{sec:dreload}
5044 \begin_inset LatexCommand \label{sec:dreload}
5041
5045
5042 \end_inset
5046 \end_inset
5043
5047
5044 Recursive reload
5048 Recursive reload
5045 \layout Standard
5049 \layout Standard
5046
5050
5047 The
5051 The
5048 \family typewriter
5052 \family typewriter
5049 dreload
5053 dreload
5050 \family default
5054 \family default
5051 function does a recursive reload of a module: changes made to the module
5055 function does a recursive reload of a module: changes made to the module
5052 since you imported will actually be available without having to exit.
5056 since you imported will actually be available without having to exit.
5053 \layout Subsection
5057 \layout Subsection
5054
5058
5055 Verbose and colored exception traceback printouts
5059 Verbose and colored exception traceback printouts
5056 \layout Standard
5060 \layout Standard
5057
5061
5058 IPython provides the option to see very detailed exception tracebacks, which
5062 IPython provides the option to see very detailed exception tracebacks, which
5059 can be especially useful when debugging large programs.
5063 can be especially useful when debugging large programs.
5060 You can run any Python file with the
5064 You can run any Python file with the
5061 \family typewriter
5065 \family typewriter
5062 %run
5066 %run
5063 \family default
5067 \family default
5064 function to benefit from these detailed tracebacks.
5068 function to benefit from these detailed tracebacks.
5065 Furthermore, both normal and verbose tracebacks can be colored (if your
5069 Furthermore, both normal and verbose tracebacks can be colored (if your
5066 terminal supports it) which makes them much easier to parse visually.
5070 terminal supports it) which makes them much easier to parse visually.
5067 \layout Standard
5071 \layout Standard
5068
5072
5069 See the magic
5073 See the magic
5070 \family typewriter
5074 \family typewriter
5071 xmode
5075 xmode
5072 \family default
5076 \family default
5073 and
5077 and
5074 \family typewriter
5078 \family typewriter
5075 colors
5079 colors
5076 \family default
5080 \family default
5077 functions for details (just type
5081 functions for details (just type
5078 \family typewriter
5082 \family typewriter
5079 %magic
5083 %magic
5080 \family default
5084 \family default
5081 ).
5085 ).
5082 \layout Standard
5086 \layout Standard
5083
5087
5084 These features are basically a terminal version of Ka-Ping Yee's
5088 These features are basically a terminal version of Ka-Ping Yee's
5085 \family typewriter
5089 \family typewriter
5086 cgitb
5090 cgitb
5087 \family default
5091 \family default
5088 module, now part of the standard Python library.
5092 module, now part of the standard Python library.
5089 \layout Subsection
5093 \layout Subsection
5090
5094
5091
5095
5092 \begin_inset LatexCommand \label{sec:cache_input}
5096 \begin_inset LatexCommand \label{sec:cache_input}
5093
5097
5094 \end_inset
5098 \end_inset
5095
5099
5096 Input caching system
5100 Input caching system
5097 \layout Standard
5101 \layout Standard
5098
5102
5099 IPython offers numbered prompts (In/Out) with input and output caching.
5103 IPython offers numbered prompts (In/Out) with input and output caching.
5100 All input is saved and can be retrieved as variables (besides the usual
5104 All input is saved and can be retrieved as variables (besides the usual
5101 arrow key recall).
5105 arrow key recall).
5102 \layout Standard
5106 \layout Standard
5103
5107
5104 The following GLOBAL variables always exist (so don't overwrite them!):
5108 The following GLOBAL variables always exist (so don't overwrite them!):
5105
5109
5106 \family typewriter
5110 \family typewriter
5107 _i
5111 _i
5108 \family default
5112 \family default
5109 : stores previous input.
5113 : stores previous input.
5110
5114
5111 \family typewriter
5115 \family typewriter
5112 _ii
5116 _ii
5113 \family default
5117 \family default
5114 : next previous.
5118 : next previous.
5115
5119
5116 \family typewriter
5120 \family typewriter
5117 _iii
5121 _iii
5118 \family default
5122 \family default
5119 : next-next previous.
5123 : next-next previous.
5120
5124
5121 \family typewriter
5125 \family typewriter
5122 _ih
5126 _ih
5123 \family default
5127 \family default
5124 : a list of all input
5128 : a list of all input
5125 \family typewriter
5129 \family typewriter
5126 _ih[n]
5130 _ih[n]
5127 \family default
5131 \family default
5128 is the input from line
5132 is the input from line
5129 \family typewriter
5133 \family typewriter
5130 n
5134 n
5131 \family default
5135 \family default
5132 and this list is aliased to the global variable
5136 and this list is aliased to the global variable
5133 \family typewriter
5137 \family typewriter
5134 In
5138 In
5135 \family default
5139 \family default
5136 .
5140 .
5137 If you overwrite
5141 If you overwrite
5138 \family typewriter
5142 \family typewriter
5139 In
5143 In
5140 \family default
5144 \family default
5141 with a variable of your own, you can remake the assignment to the internal
5145 with a variable of your own, you can remake the assignment to the internal
5142 list with a simple
5146 list with a simple
5143 \family typewriter
5147 \family typewriter
5144 'In=_ih'
5148 'In=_ih'
5145 \family default
5149 \family default
5146 .
5150 .
5147 \layout Standard
5151 \layout Standard
5148
5152
5149 Additionally, global variables named
5153 Additionally, global variables named
5150 \family typewriter
5154 \family typewriter
5151 _i<n>
5155 _i<n>
5152 \family default
5156 \family default
5153 are dynamically created (
5157 are dynamically created (
5154 \family typewriter
5158 \family typewriter
5155 <n>
5159 <n>
5156 \family default
5160 \family default
5157 being the prompt counter), such that
5161 being the prompt counter), such that
5158 \newline
5162 \newline
5159
5163
5160 \family typewriter
5164 \family typewriter
5161 _i<n> == _ih[<n>] == In[<n>].
5165 _i<n> == _ih[<n>] == In[<n>].
5162 \layout Standard
5166 \layout Standard
5163
5167
5164 For example, what you typed at prompt 14 is available as
5168 For example, what you typed at prompt 14 is available as
5165 \family typewriter
5169 \family typewriter
5166 _i14,
5170 _i14,
5167 \family default
5171 \family default
5168
5172
5169 \family typewriter
5173 \family typewriter
5170 _ih[14]
5174 _ih[14]
5171 \family default
5175 \family default
5172 and
5176 and
5173 \family typewriter
5177 \family typewriter
5174 In[14]
5178 In[14]
5175 \family default
5179 \family default
5176 .
5180 .
5177 \layout Standard
5181 \layout Standard
5178
5182
5179 This allows you to easily cut and paste multi line interactive prompts by
5183 This allows you to easily cut and paste multi line interactive prompts by
5180 printing them out: they print like a clean string, without prompt characters.
5184 printing them out: they print like a clean string, without prompt characters.
5181 You can also manipulate them like regular variables (they are strings),
5185 You can also manipulate them like regular variables (they are strings),
5182 modify or exec them (typing
5186 modify or exec them (typing
5183 \family typewriter
5187 \family typewriter
5184 'exec _i9'
5188 'exec _i9'
5185 \family default
5189 \family default
5186 will re-execute the contents of input prompt 9, '
5190 will re-execute the contents of input prompt 9, '
5187 \family typewriter
5191 \family typewriter
5188 exec In[9:14]+In[18]
5192 exec In[9:14]+In[18]
5189 \family default
5193 \family default
5190 ' will re-execute lines 9 through 13 and line 18).
5194 ' will re-execute lines 9 through 13 and line 18).
5191 \layout Standard
5195 \layout Standard
5192
5196
5193 You can also re-execute multiple lines of input easily by using the magic
5197 You can also re-execute multiple lines of input easily by using the magic
5194
5198
5195 \family typewriter
5199 \family typewriter
5196 %macro
5200 %macro
5197 \family default
5201 \family default
5198 function (which automates the process and allows re-execution without having
5202 function (which automates the process and allows re-execution without having
5199 to type '
5203 to type '
5200 \family typewriter
5204 \family typewriter
5201 exec
5205 exec
5202 \family default
5206 \family default
5203 ' every time).
5207 ' every time).
5204 The macro system also allows you to re-execute previous lines which include
5208 The macro system also allows you to re-execute previous lines which include
5205 magic function calls (which require special processing).
5209 magic function calls (which require special processing).
5206 Type
5210 Type
5207 \family typewriter
5211 \family typewriter
5208 %macro?
5212 %macro?
5209 \family default
5213 \family default
5210 or see sec.
5214 or see sec.
5211
5215
5212 \begin_inset LatexCommand \ref{sec:magic}
5216 \begin_inset LatexCommand \ref{sec:magic}
5213
5217
5214 \end_inset
5218 \end_inset
5215
5219
5216 for more details on the macro system.
5220 for more details on the macro system.
5217 \layout Standard
5221 \layout Standard
5218
5222
5219 A history function
5223 A history function
5220 \family typewriter
5224 \family typewriter
5221 %hist
5225 %hist
5222 \family default
5226 \family default
5223 allows you to see any part of your input history by printing a range of
5227 allows you to see any part of your input history by printing a range of
5224 the
5228 the
5225 \family typewriter
5229 \family typewriter
5226 _i
5230 _i
5227 \family default
5231 \family default
5228 variables.
5232 variables.
5229 \layout Subsection
5233 \layout Subsection
5230
5234
5231
5235
5232 \begin_inset LatexCommand \label{sec:cache_output}
5236 \begin_inset LatexCommand \label{sec:cache_output}
5233
5237
5234 \end_inset
5238 \end_inset
5235
5239
5236 Output caching system
5240 Output caching system
5237 \layout Standard
5241 \layout Standard
5238
5242
5239 For output that is returned from actions, a system similar to the input
5243 For output that is returned from actions, a system similar to the input
5240 cache exists but using
5244 cache exists but using
5241 \family typewriter
5245 \family typewriter
5242 _
5246 _
5243 \family default
5247 \family default
5244 instead of
5248 instead of
5245 \family typewriter
5249 \family typewriter
5246 _i
5250 _i
5247 \family default
5251 \family default
5248 .
5252 .
5249 Only actions that produce a result (NOT assignments, for example) are cached.
5253 Only actions that produce a result (NOT assignments, for example) are cached.
5250 If you are familiar with Mathematica, IPython's
5254 If you are familiar with Mathematica, IPython's
5251 \family typewriter
5255 \family typewriter
5252 _
5256 _
5253 \family default
5257 \family default
5254 variables behave exactly like Mathematica's
5258 variables behave exactly like Mathematica's
5255 \family typewriter
5259 \family typewriter
5256 %
5260 %
5257 \family default
5261 \family default
5258 variables.
5262 variables.
5259 \layout Standard
5263 \layout Standard
5260
5264
5261 The following GLOBAL variables always exist (so don't overwrite them!):
5265 The following GLOBAL variables always exist (so don't overwrite them!):
5262
5266
5263 \layout List
5267 \layout List
5264 \labelwidthstring 00.00.0000
5268 \labelwidthstring 00.00.0000
5265
5269
5266
5270
5267 \family typewriter
5271 \family typewriter
5268 \series bold
5272 \series bold
5269 _
5273 _
5270 \family default
5274 \family default
5271 \series default
5275 \series default
5272 (a
5276 (a
5273 \emph on
5277 \emph on
5274 single
5278 single
5275 \emph default
5279 \emph default
5276 underscore) : stores previous output, like Python's default interpreter.
5280 underscore) : stores previous output, like Python's default interpreter.
5277 \layout List
5281 \layout List
5278 \labelwidthstring 00.00.0000
5282 \labelwidthstring 00.00.0000
5279
5283
5280
5284
5281 \family typewriter
5285 \family typewriter
5282 \series bold
5286 \series bold
5283 __
5287 __
5284 \family default
5288 \family default
5285 \series default
5289 \series default
5286 (two underscores): next previous.
5290 (two underscores): next previous.
5287 \layout List
5291 \layout List
5288 \labelwidthstring 00.00.0000
5292 \labelwidthstring 00.00.0000
5289
5293
5290
5294
5291 \family typewriter
5295 \family typewriter
5292 \series bold
5296 \series bold
5293 ___
5297 ___
5294 \family default
5298 \family default
5295 \series default
5299 \series default
5296 (three underscores): next-next previous.
5300 (three underscores): next-next previous.
5297 \layout Standard
5301 \layout Standard
5298
5302
5299 Additionally, global variables named
5303 Additionally, global variables named
5300 \family typewriter
5304 \family typewriter
5301 _<n>
5305 _<n>
5302 \family default
5306 \family default
5303 are dynamically created (
5307 are dynamically created (
5304 \family typewriter
5308 \family typewriter
5305 <n>
5309 <n>
5306 \family default
5310 \family default
5307 being the prompt counter), such that the result of output
5311 being the prompt counter), such that the result of output
5308 \family typewriter
5312 \family typewriter
5309 <n>
5313 <n>
5310 \family default
5314 \family default
5311 is always available as
5315 is always available as
5312 \family typewriter
5316 \family typewriter
5313 _<n>
5317 _<n>
5314 \family default
5318 \family default
5315 (don't use the angle brackets, just the number, e.g.
5319 (don't use the angle brackets, just the number, e.g.
5316
5320
5317 \family typewriter
5321 \family typewriter
5318 _21
5322 _21
5319 \family default
5323 \family default
5320 ).
5324 ).
5321 \layout Standard
5325 \layout Standard
5322
5326
5323 These global variables are all stored in a global dictionary (not a list,
5327 These global variables are all stored in a global dictionary (not a list,
5324 since it only has entries for lines which returned a result) available
5328 since it only has entries for lines which returned a result) available
5325 under the names
5329 under the names
5326 \family typewriter
5330 \family typewriter
5327 _oh
5331 _oh
5328 \family default
5332 \family default
5329 and
5333 and
5330 \family typewriter
5334 \family typewriter
5331 Out
5335 Out
5332 \family default
5336 \family default
5333 (similar to
5337 (similar to
5334 \family typewriter
5338 \family typewriter
5335 _ih
5339 _ih
5336 \family default
5340 \family default
5337 and
5341 and
5338 \family typewriter
5342 \family typewriter
5339 In
5343 In
5340 \family default
5344 \family default
5341 ).
5345 ).
5342 So the output from line 12 can be obtained as
5346 So the output from line 12 can be obtained as
5343 \family typewriter
5347 \family typewriter
5344 _12
5348 _12
5345 \family default
5349 \family default
5346 ,
5350 ,
5347 \family typewriter
5351 \family typewriter
5348 Out[12]
5352 Out[12]
5349 \family default
5353 \family default
5350 or
5354 or
5351 \family typewriter
5355 \family typewriter
5352 _oh[12]
5356 _oh[12]
5353 \family default
5357 \family default
5354 .
5358 .
5355 If you accidentally overwrite the
5359 If you accidentally overwrite the
5356 \family typewriter
5360 \family typewriter
5357 Out
5361 Out
5358 \family default
5362 \family default
5359 variable you can recover it by typing
5363 variable you can recover it by typing
5360 \family typewriter
5364 \family typewriter
5361 'Out=_oh
5365 'Out=_oh
5362 \family default
5366 \family default
5363 ' at the prompt.
5367 ' at the prompt.
5364 \layout Standard
5368 \layout Standard
5365
5369
5366 This system obviously can potentially put heavy memory demands on your system,
5370 This system obviously can potentially put heavy memory demands on your system,
5367 since it prevents Python's garbage collector from removing any previously
5371 since it prevents Python's garbage collector from removing any previously
5368 computed results.
5372 computed results.
5369 You can control how many results are kept in memory with the option (at
5373 You can control how many results are kept in memory with the option (at
5370 the command line or in your
5374 the command line or in your
5371 \family typewriter
5375 \family typewriter
5372 ipythonrc
5376 ipythonrc
5373 \family default
5377 \family default
5374 file)
5378 file)
5375 \family typewriter
5379 \family typewriter
5376 cache_size
5380 cache_size
5377 \family default
5381 \family default
5378 .
5382 .
5379 If you set it to 0, the whole system is completely disabled and the prompts
5383 If you set it to 0, the whole system is completely disabled and the prompts
5380 revert to the classic
5384 revert to the classic
5381 \family typewriter
5385 \family typewriter
5382 '>>>'
5386 '>>>'
5383 \family default
5387 \family default
5384 of normal Python.
5388 of normal Python.
5385 \layout Subsection
5389 \layout Subsection
5386
5390
5387 Directory history
5391 Directory history
5388 \layout Standard
5392 \layout Standard
5389
5393
5390 Your history of visited directories is kept in the global list
5394 Your history of visited directories is kept in the global list
5391 \family typewriter
5395 \family typewriter
5392 _dh
5396 _dh
5393 \family default
5397 \family default
5394 , and the magic
5398 , and the magic
5395 \family typewriter
5399 \family typewriter
5396 %cd
5400 %cd
5397 \family default
5401 \family default
5398 command can be used to go to any entry in that list.
5402 command can be used to go to any entry in that list.
5399 The
5403 The
5400 \family typewriter
5404 \family typewriter
5401 %dhist
5405 %dhist
5402 \family default
5406 \family default
5403 command allows you to view this history.
5407 command allows you to view this history.
5404 \layout Subsection
5408 \layout Subsection
5405
5409
5406 Automatic parentheses and quotes
5410 Automatic parentheses and quotes
5407 \layout Standard
5411 \layout Standard
5408
5412
5409 These features were adapted from Nathan Gray's LazyPython.
5413 These features were adapted from Nathan Gray's LazyPython.
5410 They are meant to allow less typing for common situations.
5414 They are meant to allow less typing for common situations.
5411 \layout Subsubsection
5415 \layout Subsubsection
5412
5416
5413 Automatic parentheses
5417 Automatic parentheses
5414 \layout Standard
5418 \layout Standard
5415
5419
5416 Callable objects (i.e.
5420 Callable objects (i.e.
5417 functions, methods, etc) can be invoked like this (notice the commas between
5421 functions, methods, etc) can be invoked like this (notice the commas between
5418 the arguments):
5422 the arguments):
5419 \layout Standard
5423 \layout Standard
5420
5424
5421
5425
5422 \family typewriter
5426 \family typewriter
5423 >>> callable_ob arg1, arg2, arg3
5427 >>> callable_ob arg1, arg2, arg3
5424 \layout Standard
5428 \layout Standard
5425
5429
5426 and the input will be translated to this:
5430 and the input will be translated to this:
5427 \layout Standard
5431 \layout Standard
5428
5432
5429
5433
5430 \family typewriter
5434 \family typewriter
5431 --> callable_ob(arg1, arg2, arg3)
5435 --> callable_ob(arg1, arg2, arg3)
5432 \layout Standard
5436 \layout Standard
5433
5437
5434 You can force automatic parentheses by using '/' as the first character
5438 You can force automatic parentheses by using '/' as the first character
5435 of a line.
5439 of a line.
5436 For example:
5440 For example:
5437 \layout Standard
5441 \layout Standard
5438
5442
5439
5443
5440 \family typewriter
5444 \family typewriter
5441 >>> /globals # becomes 'globals()'
5445 >>> /globals # becomes 'globals()'
5442 \layout Standard
5446 \layout Standard
5443
5447
5444 Note that the '/' MUST be the first character on the line! This won't work:
5448 Note that the '/' MUST be the first character on the line! This won't work:
5445
5449
5446 \layout Standard
5450 \layout Standard
5447
5451
5448
5452
5449 \family typewriter
5453 \family typewriter
5450 >>> print /globals # syntax error
5454 >>> print /globals # syntax error
5451 \layout Standard
5455 \layout Standard
5452
5456
5453 In most cases the automatic algorithm should work, so you should rarely
5457 In most cases the automatic algorithm should work, so you should rarely
5454 need to explicitly invoke /.
5458 need to explicitly invoke /.
5455 One notable exception is if you are trying to call a function with a list
5459 One notable exception is if you are trying to call a function with a list
5456 of tuples as arguments (the parenthesis will confuse IPython):
5460 of tuples as arguments (the parenthesis will confuse IPython):
5457 \layout Standard
5461 \layout Standard
5458
5462
5459
5463
5460 \family typewriter
5464 \family typewriter
5461 In [1]: zip (1,2,3),(4,5,6) # won't work
5465 In [1]: zip (1,2,3),(4,5,6) # won't work
5462 \layout Standard
5466 \layout Standard
5463
5467
5464 but this will work:
5468 but this will work:
5465 \layout Standard
5469 \layout Standard
5466
5470
5467
5471
5468 \family typewriter
5472 \family typewriter
5469 In [2]: /zip (1,2,3),(4,5,6)
5473 In [2]: /zip (1,2,3),(4,5,6)
5470 \newline
5474 \newline
5471 ------> zip ((1,2,3),(4,5,6))
5475 ------> zip ((1,2,3),(4,5,6))
5472 \newline
5476 \newline
5473 Out[2]= [(1, 4), (2, 5), (3, 6)]
5477 Out[2]= [(1, 4), (2, 5), (3, 6)]
5474 \layout Standard
5478 \layout Standard
5475
5479
5476 IPython tells you that it has altered your command line by displaying the
5480 IPython tells you that it has altered your command line by displaying the
5477 new command line preceded by
5481 new command line preceded by
5478 \family typewriter
5482 \family typewriter
5479 -->
5483 -->
5480 \family default
5484 \family default
5481 .
5485 .
5482 e.g.:
5486 e.g.:
5483 \layout Standard
5487 \layout Standard
5484
5488
5485
5489
5486 \family typewriter
5490 \family typewriter
5487 In [18]: callable list
5491 In [18]: callable list
5488 \newline
5492 \newline
5489 -------> callable (list)
5493 -------> callable (list)
5490 \layout Subsubsection
5494 \layout Subsubsection
5491
5495
5492 Automatic quoting
5496 Automatic quoting
5493 \layout Standard
5497 \layout Standard
5494
5498
5495 You can force automatic quoting of a function's arguments by using
5499 You can force automatic quoting of a function's arguments by using
5496 \family typewriter
5500 \family typewriter
5497 `,'
5501 `,'
5498 \family default
5502 \family default
5499 or
5503 or
5500 \family typewriter
5504 \family typewriter
5501 `;'
5505 `;'
5502 \family default
5506 \family default
5503 as the first character of a line.
5507 as the first character of a line.
5504 For example:
5508 For example:
5505 \layout Standard
5509 \layout Standard
5506
5510
5507
5511
5508 \family typewriter
5512 \family typewriter
5509 >>> ,my_function /home/me # becomes my_function("/home/me")
5513 >>> ,my_function /home/me # becomes my_function("/home/me")
5510 \layout Standard
5514 \layout Standard
5511
5515
5512 If you use
5516 If you use
5513 \family typewriter
5517 \family typewriter
5514 `;'
5518 `;'
5515 \family default
5519 \family default
5516 instead, the whole argument is quoted as a single string (while
5520 instead, the whole argument is quoted as a single string (while
5517 \family typewriter
5521 \family typewriter
5518 `,'
5522 `,'
5519 \family default
5523 \family default
5520 splits on whitespace):
5524 splits on whitespace):
5521 \layout Standard
5525 \layout Standard
5522
5526
5523
5527
5524 \family typewriter
5528 \family typewriter
5525 >>> ,my_function a b c # becomes my_function("a","b","c")
5529 >>> ,my_function a b c # becomes my_function("a","b","c")
5526 \layout Standard
5530 \layout Standard
5527
5531
5528
5532
5529 \family typewriter
5533 \family typewriter
5530 >>> ;my_function a b c # becomes my_function("a b c")
5534 >>> ;my_function a b c # becomes my_function("a b c")
5531 \layout Standard
5535 \layout Standard
5532
5536
5533 Note that the `
5537 Note that the `
5534 \family typewriter
5538 \family typewriter
5535 ,
5539 ,
5536 \family default
5540 \family default
5537 ' or `
5541 ' or `
5538 \family typewriter
5542 \family typewriter
5539 ;
5543 ;
5540 \family default
5544 \family default
5541 ' MUST be the first character on the line! This won't work:
5545 ' MUST be the first character on the line! This won't work:
5542 \layout Standard
5546 \layout Standard
5543
5547
5544
5548
5545 \family typewriter
5549 \family typewriter
5546 >>> x = ,my_function /home/me # syntax error
5550 >>> x = ,my_function /home/me # syntax error
5547 \layout Section
5551 \layout Section
5548
5552
5549
5553
5550 \begin_inset LatexCommand \label{sec:customization}
5554 \begin_inset LatexCommand \label{sec:customization}
5551
5555
5552 \end_inset
5556 \end_inset
5553
5557
5554 Customization
5558 Customization
5555 \layout Standard
5559 \layout Standard
5556
5560
5557 As we've already mentioned, IPython reads a configuration file which can
5561 As we've already mentioned, IPython reads a configuration file which can
5558 be specified at the command line (
5562 be specified at the command line (
5559 \family typewriter
5563 \family typewriter
5560 -rcfile
5564 -rcfile
5561 \family default
5565 \family default
5562 ) or which by default is assumed to be called
5566 ) or which by default is assumed to be called
5563 \family typewriter
5567 \family typewriter
5564 ipythonrc
5568 ipythonrc
5565 \family default
5569 \family default
5566 .
5570 .
5567 Such a file is looked for in the current directory where IPython is started
5571 Such a file is looked for in the current directory where IPython is started
5568 and then in your
5572 and then in your
5569 \family typewriter
5573 \family typewriter
5570 IPYTHONDIR
5574 IPYTHONDIR
5571 \family default
5575 \family default
5572 , which allows you to have local configuration files for specific projects.
5576 , which allows you to have local configuration files for specific projects.
5573 In this section we will call these types of configuration files simply
5577 In this section we will call these types of configuration files simply
5574 rcfiles (short for resource configuration file).
5578 rcfiles (short for resource configuration file).
5575 \layout Standard
5579 \layout Standard
5576
5580
5577 The syntax of an rcfile is one of key-value pairs separated by whitespace,
5581 The syntax of an rcfile is one of key-value pairs separated by whitespace,
5578 one per line.
5582 one per line.
5579 Lines beginning with a
5583 Lines beginning with a
5580 \family typewriter
5584 \family typewriter
5581 #
5585 #
5582 \family default
5586 \family default
5583 are ignored as comments, but comments can
5587 are ignored as comments, but comments can
5584 \series bold
5588 \series bold
5585 not
5589 not
5586 \series default
5590 \series default
5587 be put on lines with data (the parser is fairly primitive).
5591 be put on lines with data (the parser is fairly primitive).
5588 Note that these are not python files, and this is deliberate, because it
5592 Note that these are not python files, and this is deliberate, because it
5589 allows us to do some things which would be quite tricky to implement if
5593 allows us to do some things which would be quite tricky to implement if
5590 they were normal python files.
5594 they were normal python files.
5591 \layout Standard
5595 \layout Standard
5592
5596
5593 First, an rcfile can contain permanent default values for almost all command
5597 First, an rcfile can contain permanent default values for almost all command
5594 line options (except things like
5598 line options (except things like
5595 \family typewriter
5599 \family typewriter
5596 -help
5600 -help
5597 \family default
5601 \family default
5598 or
5602 or
5599 \family typewriter
5603 \family typewriter
5600 -Version
5604 -Version
5601 \family default
5605 \family default
5602 ).
5606 ).
5603 Sec\SpecialChar ~
5607 Sec\SpecialChar ~
5604
5608
5605 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
5609 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
5606
5610
5607 \end_inset
5611 \end_inset
5608
5612
5609 contains a description of all command-line options.
5613 contains a description of all command-line options.
5610 However, values you explicitly specify at the command line override the
5614 However, values you explicitly specify at the command line override the
5611 values defined in the rcfile.
5615 values defined in the rcfile.
5612 \layout Standard
5616 \layout Standard
5613
5617
5614 Besides command line option values, the rcfile can specify values for certain
5618 Besides command line option values, the rcfile can specify values for certain
5615 extra special options which are not available at the command line.
5619 extra special options which are not available at the command line.
5616 These options are briefly described below.
5620 These options are briefly described below.
5617
5621
5618 \layout Standard
5622 \layout Standard
5619
5623
5620 Each of these options may appear as many times as you need it in the file.
5624 Each of these options may appear as many times as you need it in the file.
5621 \layout List
5625 \layout List
5622 \labelwidthstring 00.00.0000
5626 \labelwidthstring 00.00.0000
5623
5627
5624
5628
5625 \family typewriter
5629 \family typewriter
5626 \series bold
5630 \series bold
5627 include\SpecialChar ~
5631 include\SpecialChar ~
5628 <file1>\SpecialChar ~
5632 <file1>\SpecialChar ~
5629 <file2>\SpecialChar ~
5633 <file2>\SpecialChar ~
5630 ...
5634 ...
5631 \family default
5635 \family default
5632 \series default
5636 \series default
5633 : you can name
5637 : you can name
5634 \emph on
5638 \emph on
5635 other
5639 other
5636 \emph default
5640 \emph default
5637 rcfiles you want to recursively load up to 15 levels (don't use the
5641 rcfiles you want to recursively load up to 15 levels (don't use the
5638 \family typewriter
5642 \family typewriter
5639 <>
5643 <>
5640 \family default
5644 \family default
5641 brackets in your names!).
5645 brackets in your names!).
5642 This feature allows you to define a 'base' rcfile with general options
5646 This feature allows you to define a 'base' rcfile with general options
5643 and special-purpose files which can be loaded only when needed with particular
5647 and special-purpose files which can be loaded only when needed with particular
5644 configuration options.
5648 configuration options.
5645 To make this more convenient, IPython accepts the
5649 To make this more convenient, IPython accepts the
5646 \family typewriter
5650 \family typewriter
5647 -profile <name>
5651 -profile <name>
5648 \family default
5652 \family default
5649 option (abbreviates to
5653 option (abbreviates to
5650 \family typewriter
5654 \family typewriter
5651 -p <name
5655 -p <name
5652 \family default
5656 \family default
5653 >)
5657 >)
5654 \family typewriter
5658 \family typewriter
5655 which
5659 which
5656 \family default
5660 \family default
5657 tells it to look for an rcfile named
5661 tells it to look for an rcfile named
5658 \family typewriter
5662 \family typewriter
5659 ipythonrc-<name>
5663 ipythonrc-<name>
5660 \family default
5664 \family default
5661 .
5665 .
5662
5666
5663 \layout List
5667 \layout List
5664 \labelwidthstring 00.00.0000
5668 \labelwidthstring 00.00.0000
5665
5669
5666
5670
5667 \family typewriter
5671 \family typewriter
5668 \series bold
5672 \series bold
5669 import_mod\SpecialChar ~
5673 import_mod\SpecialChar ~
5670 <mod1>\SpecialChar ~
5674 <mod1>\SpecialChar ~
5671 <mod2>\SpecialChar ~
5675 <mod2>\SpecialChar ~
5672 ...
5676 ...
5673 \family default
5677 \family default
5674 \series default
5678 \series default
5675 : import modules with '
5679 : import modules with '
5676 \family typewriter
5680 \family typewriter
5677 import
5681 import
5678 \family default
5682 \family default
5679
5683
5680 \family typewriter
5684 \family typewriter
5681 <mod1>,<mod2>,...
5685 <mod1>,<mod2>,...
5682 \family default
5686 \family default
5683 '
5687 '
5684 \layout List
5688 \layout List
5685 \labelwidthstring 00.00.0000
5689 \labelwidthstring 00.00.0000
5686
5690
5687
5691
5688 \family typewriter
5692 \family typewriter
5689 \series bold
5693 \series bold
5690 import_some\SpecialChar ~
5694 import_some\SpecialChar ~
5691 <mod>\SpecialChar ~
5695 <mod>\SpecialChar ~
5692 <f1>\SpecialChar ~
5696 <f1>\SpecialChar ~
5693 <f2>\SpecialChar ~
5697 <f2>\SpecialChar ~
5694 ...
5698 ...
5695 \family default
5699 \family default
5696 \series default
5700 \series default
5697 : import functions with '
5701 : import functions with '
5698 \family typewriter
5702 \family typewriter
5699 from <mod> import
5703 from <mod> import
5700 \family default
5704 \family default
5701
5705
5702 \family typewriter
5706 \family typewriter
5703 <f1>,<f2>,...
5707 <f1>,<f2>,...
5704 \family default
5708 \family default
5705 '
5709 '
5706 \layout List
5710 \layout List
5707 \labelwidthstring 00.00.0000
5711 \labelwidthstring 00.00.0000
5708
5712
5709
5713
5710 \family typewriter
5714 \family typewriter
5711 \series bold
5715 \series bold
5712 import_all\SpecialChar ~
5716 import_all\SpecialChar ~
5713 <mod1>\SpecialChar ~
5717 <mod1>\SpecialChar ~
5714 <mod2>\SpecialChar ~
5718 <mod2>\SpecialChar ~
5715 ...
5719 ...
5716 \family default
5720 \family default
5717 \series default
5721 \series default
5718 : for each module listed import functions with '
5722 : for each module listed import functions with '
5719 \family typewriter
5723 \family typewriter
5720 from <mod> import *
5724 from <mod> import *
5721 \family default
5725 \family default
5722 '
5726 '
5723 \layout List
5727 \layout List
5724 \labelwidthstring 00.00.0000
5728 \labelwidthstring 00.00.0000
5725
5729
5726
5730
5727 \family typewriter
5731 \family typewriter
5728 \series bold
5732 \series bold
5729 execute\SpecialChar ~
5733 execute\SpecialChar ~
5730 <python\SpecialChar ~
5734 <python\SpecialChar ~
5731 code>
5735 code>
5732 \family default
5736 \family default
5733 \series default
5737 \series default
5734 : give any single-line python code to be executed.
5738 : give any single-line python code to be executed.
5735 \layout List
5739 \layout List
5736 \labelwidthstring 00.00.0000
5740 \labelwidthstring 00.00.0000
5737
5741
5738
5742
5739 \family typewriter
5743 \family typewriter
5740 \series bold
5744 \series bold
5741 execfile\SpecialChar ~
5745 execfile\SpecialChar ~
5742 <filename>
5746 <filename>
5743 \family default
5747 \family default
5744 \series default
5748 \series default
5745 : execute the python file given with an '
5749 : execute the python file given with an '
5746 \family typewriter
5750 \family typewriter
5747 execfile(filename)
5751 execfile(filename)
5748 \family default
5752 \family default
5749 ' command.
5753 ' command.
5750 Username expansion is performed on the given names.
5754 Username expansion is performed on the given names.
5751 So if you need any amount of extra fancy customization that won't fit in
5755 So if you need any amount of extra fancy customization that won't fit in
5752 any of the above 'canned' options, you can just put it in a separate python
5756 any of the above 'canned' options, you can just put it in a separate python
5753 file and execute it.
5757 file and execute it.
5754 \layout List
5758 \layout List
5755 \labelwidthstring 00.00.0000
5759 \labelwidthstring 00.00.0000
5756
5760
5757
5761
5758 \family typewriter
5762 \family typewriter
5759 \series bold
5763 \series bold
5760 alias\SpecialChar ~
5764 alias\SpecialChar ~
5761 <alias_def>
5765 <alias_def>
5762 \family default
5766 \family default
5763 \series default
5767 \series default
5764 : this is equivalent to calling '
5768 : this is equivalent to calling '
5765 \family typewriter
5769 \family typewriter
5766 %alias\SpecialChar ~
5770 %alias\SpecialChar ~
5767 <alias_def>
5771 <alias_def>
5768 \family default
5772 \family default
5769 ' at the IPython command line.
5773 ' at the IPython command line.
5770 This way, from within IPython you can do common system tasks without having
5774 This way, from within IPython you can do common system tasks without having
5771 to exit it or use the
5775 to exit it or use the
5772 \family typewriter
5776 \family typewriter
5773 !
5777 !
5774 \family default
5778 \family default
5775 escape.
5779 escape.
5776 IPython isn't meant to be a shell replacement, but it is often very useful
5780 IPython isn't meant to be a shell replacement, but it is often very useful
5777 to be able to do things with files while testing code.
5781 to be able to do things with files while testing code.
5778 This gives you the flexibility to have within IPython any aliases you may
5782 This gives you the flexibility to have within IPython any aliases you may
5779 be used to under your normal system shell.
5783 be used to under your normal system shell.
5780 \layout Subsection
5784 \layout Subsection
5781
5785
5782
5786
5783 \begin_inset LatexCommand \label{sec:ipytonrc-sample}
5787 \begin_inset LatexCommand \label{sec:ipytonrc-sample}
5784
5788
5785 \end_inset
5789 \end_inset
5786
5790
5787 Sample
5791 Sample
5788 \family typewriter
5792 \family typewriter
5789 ipythonrc
5793 ipythonrc
5790 \family default
5794 \family default
5791 file
5795 file
5792 \layout Standard
5796 \layout Standard
5793
5797
5794 The default rcfile, called
5798 The default rcfile, called
5795 \family typewriter
5799 \family typewriter
5796 ipythonrc
5800 ipythonrc
5797 \family default
5801 \family default
5798 and supplied in your
5802 and supplied in your
5799 \family typewriter
5803 \family typewriter
5800 IPYTHONDIR
5804 IPYTHONDIR
5801 \family default
5805 \family default
5802 directory contains lots of comments on all of these options.
5806 directory contains lots of comments on all of these options.
5803 We reproduce it here for reference:
5807 We reproduce it here for reference:
5804 \layout Standard
5808 \layout Standard
5805
5809
5806
5810
5807 \begin_inset ERT
5811 \begin_inset ERT
5808 status Open
5812 status Open
5809
5813
5810 \layout Standard
5814 \layout Standard
5811
5815
5812 \backslash
5816 \backslash
5813 codelist{../IPython/UserConfig/ipythonrc}
5817 codelist{../IPython/UserConfig/ipythonrc}
5814 \end_inset
5818 \end_inset
5815
5819
5816
5820
5817 \layout Subsection
5821 \layout Subsection
5818
5822
5819
5823
5820 \begin_inset LatexCommand \label{sec:prompts}
5824 \begin_inset LatexCommand \label{sec:prompts}
5821
5825
5822 \end_inset
5826 \end_inset
5823
5827
5824 Fine-tuning your prompt
5828 Fine-tuning your prompt
5825 \layout Standard
5829 \layout Standard
5826
5830
5827 IPython's prompts can be customized using a syntax similar to that of the
5831 IPython's prompts can be customized using a syntax similar to that of the
5828
5832
5829 \family typewriter
5833 \family typewriter
5830 bash
5834 bash
5831 \family default
5835 \family default
5832 shell.
5836 shell.
5833 Many of
5837 Many of
5834 \family typewriter
5838 \family typewriter
5835 bash
5839 bash
5836 \family default
5840 \family default
5837 's escapes are supported, as well as a few additional ones.
5841 's escapes are supported, as well as a few additional ones.
5838 We list them below:
5842 We list them below:
5839 \layout Description
5843 \layout Description
5840
5844
5841
5845
5842 \backslash
5846 \backslash
5843 # the prompt/history count number
5847 # the prompt/history count number
5844 \layout Description
5848 \layout Description
5845
5849
5846
5850
5847 \backslash
5851 \backslash
5848 D the prompt/history count, with the actual digits replaced by dots.
5852 D the prompt/history count, with the actual digits replaced by dots.
5849 Used mainly in continuation prompts (prompt_in2)
5853 Used mainly in continuation prompts (prompt_in2)
5850 \layout Description
5854 \layout Description
5851
5855
5852
5856
5853 \backslash
5857 \backslash
5854 w the current working directory
5858 w the current working directory
5855 \layout Description
5859 \layout Description
5856
5860
5857
5861
5858 \backslash
5862 \backslash
5859 W the basename of current working directory
5863 W the basename of current working directory
5860 \layout Description
5864 \layout Description
5861
5865
5862
5866
5863 \backslash
5867 \backslash
5864 X
5868 X
5865 \emph on
5869 \emph on
5866 n
5870 n
5867 \emph default
5871 \emph default
5868 where
5872 where
5869 \begin_inset Formula $n=0\ldots5.$
5873 \begin_inset Formula $n=0\ldots5.$
5870 \end_inset
5874 \end_inset
5871
5875
5872 The current working directory, with
5876 The current working directory, with
5873 \family typewriter
5877 \family typewriter
5874 $HOME
5878 $HOME
5875 \family default
5879 \family default
5876 replaced by
5880 replaced by
5877 \family typewriter
5881 \family typewriter
5878 ~
5882 ~
5879 \family default
5883 \family default
5880 , and filtered out to contain only
5884 , and filtered out to contain only
5881 \begin_inset Formula $n$
5885 \begin_inset Formula $n$
5882 \end_inset
5886 \end_inset
5883
5887
5884 path elements
5888 path elements
5885 \layout Description
5889 \layout Description
5886
5890
5887
5891
5888 \backslash
5892 \backslash
5889 Y
5893 Y
5890 \emph on
5894 \emph on
5891 n
5895 n
5892 \emph default
5896 \emph default
5893 Similar to
5897 Similar to
5894 \backslash
5898 \backslash
5895 X
5899 X
5896 \emph on
5900 \emph on
5897 n
5901 n
5898 \emph default
5902 \emph default
5899 , but with the
5903 , but with the
5900 \begin_inset Formula $n+1$
5904 \begin_inset Formula $n+1$
5901 \end_inset
5905 \end_inset
5902
5906
5903 element included if it is
5907 element included if it is
5904 \family typewriter
5908 \family typewriter
5905 ~
5909 ~
5906 \family default
5910 \family default
5907 (this is similar to the behavior of the %c
5911 (this is similar to the behavior of the %c
5908 \emph on
5912 \emph on
5909 n
5913 n
5910 \emph default
5914 \emph default
5911 escapes in
5915 escapes in
5912 \family typewriter
5916 \family typewriter
5913 tcsh
5917 tcsh
5914 \family default
5918 \family default
5915 )
5919 )
5916 \layout Description
5920 \layout Description
5917
5921
5918
5922
5919 \backslash
5923 \backslash
5920 u the username of the current user
5924 u the username of the current user
5921 \layout Description
5925 \layout Description
5922
5926
5923
5927
5924 \backslash
5928 \backslash
5925 $ if the effective UID is 0, a #, otherwise a $
5929 $ if the effective UID is 0, a #, otherwise a $
5926 \layout Description
5930 \layout Description
5927
5931
5928
5932
5929 \backslash
5933 \backslash
5930 h the hostname up to the first `.'
5934 h the hostname up to the first `.'
5931 \layout Description
5935 \layout Description
5932
5936
5933
5937
5934 \backslash
5938 \backslash
5935 H the hostname
5939 H the hostname
5936 \layout Description
5940 \layout Description
5937
5941
5938
5942
5939 \backslash
5943 \backslash
5940 n a newline
5944 n a newline
5941 \layout Description
5945 \layout Description
5942
5946
5943
5947
5944 \backslash
5948 \backslash
5945 r a carriage return
5949 r a carriage return
5946 \layout Description
5950 \layout Description
5947
5951
5948
5952
5949 \backslash
5953 \backslash
5950 v IPython version string
5954 v IPython version string
5951 \layout Standard
5955 \layout Standard
5952
5956
5953 In addition to these, ANSI color escapes can be insterted into the prompts,
5957 In addition to these, ANSI color escapes can be insterted into the prompts,
5954 as
5958 as
5955 \family typewriter
5959 \family typewriter
5956
5960
5957 \backslash
5961 \backslash
5958 C_
5962 C_
5959 \emph on
5963 \emph on
5960 ColorName
5964 ColorName
5961 \family default
5965 \family default
5962 \emph default
5966 \emph default
5963 .
5967 .
5964 The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
5968 The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
5965 LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
5969 LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
5966 Normal, Purple, Red, White, Yellow.
5970 Normal, Purple, Red, White, Yellow.
5967 \layout Standard
5971 \layout Standard
5968
5972
5969 Finally, IPython supports the evaluation of arbitrary expressions in your
5973 Finally, IPython supports the evaluation of arbitrary expressions in your
5970 prompt string.
5974 prompt string.
5971 The prompt strings are evaluated through the syntax of PEP 215, but basically
5975 The prompt strings are evaluated through the syntax of PEP 215, but basically
5972 you can use
5976 you can use
5973 \family typewriter
5977 \family typewriter
5974 $x.y
5978 $x.y
5975 \family default
5979 \family default
5976 to expand the value of
5980 to expand the value of
5977 \family typewriter
5981 \family typewriter
5978 x.y
5982 x.y
5979 \family default
5983 \family default
5980 , and for more complicated expressions you can use braces:
5984 , and for more complicated expressions you can use braces:
5981 \family typewriter
5985 \family typewriter
5982 ${foo()+x}
5986 ${foo()+x}
5983 \family default
5987 \family default
5984 will call function
5988 will call function
5985 \family typewriter
5989 \family typewriter
5986 foo
5990 foo
5987 \family default
5991 \family default
5988 and add to it the value of
5992 and add to it the value of
5989 \family typewriter
5993 \family typewriter
5990 x
5994 x
5991 \family default
5995 \family default
5992 , before putting the result into your prompt.
5996 , before putting the result into your prompt.
5993 For example, using
5997 For example, using
5994 \newline
5998 \newline
5995
5999
5996 \family typewriter
6000 \family typewriter
5997 prompt_in1 '${commands.getoutput("uptime")}
6001 prompt_in1 '${commands.getoutput("uptime")}
5998 \backslash
6002 \backslash
5999 nIn [
6003 nIn [
6000 \backslash
6004 \backslash
6001 #]: '
6005 #]: '
6002 \newline
6006 \newline
6003
6007
6004 \family default
6008 \family default
6005 will print the result of the uptime command on each prompt (assuming the
6009 will print the result of the uptime command on each prompt (assuming the
6006
6010
6007 \family typewriter
6011 \family typewriter
6008 commands
6012 commands
6009 \family default
6013 \family default
6010 module has been imported in your
6014 module has been imported in your
6011 \family typewriter
6015 \family typewriter
6012 ipythonrc
6016 ipythonrc
6013 \family default
6017 \family default
6014 file).
6018 file).
6015 \layout Subsubsection
6019 \layout Subsubsection
6016
6020
6017 Prompt examples
6021 Prompt examples
6018 \layout Standard
6022 \layout Standard
6019
6023
6020 The following options in an ipythonrc file will give you IPython's default
6024 The following options in an ipythonrc file will give you IPython's default
6021 prompts:
6025 prompts:
6022 \layout Standard
6026 \layout Standard
6023
6027
6024
6028
6025 \family typewriter
6029 \family typewriter
6026 prompt_in1 'In [
6030 prompt_in1 'In [
6027 \backslash
6031 \backslash
6028 #]:'
6032 #]:'
6029 \newline
6033 \newline
6030 prompt_in2 '\SpecialChar ~
6034 prompt_in2 '\SpecialChar ~
6031 \SpecialChar ~
6035 \SpecialChar ~
6032 \SpecialChar ~
6036 \SpecialChar ~
6033 .
6037 .
6034 \backslash
6038 \backslash
6035 D.:'
6039 D.:'
6036 \newline
6040 \newline
6037 prompt_out 'Out[
6041 prompt_out 'Out[
6038 \backslash
6042 \backslash
6039 #]:'
6043 #]:'
6040 \layout Standard
6044 \layout Standard
6041
6045
6042 which look like this:
6046 which look like this:
6043 \layout Standard
6047 \layout Standard
6044
6048
6045
6049
6046 \family typewriter
6050 \family typewriter
6047 In [1]: 1+2
6051 In [1]: 1+2
6048 \newline
6052 \newline
6049 Out[1]: 3
6053 Out[1]: 3
6050 \layout Standard
6054 \layout Standard
6051
6055
6052
6056
6053 \family typewriter
6057 \family typewriter
6054 In [2]: for i in (1,2,3):
6058 In [2]: for i in (1,2,3):
6055 \newline
6059 \newline
6056
6060
6057 \begin_inset ERT
6061 \begin_inset ERT
6058 status Collapsed
6062 status Collapsed
6059
6063
6060 \layout Standard
6064 \layout Standard
6061
6065
6062 \backslash
6066 \backslash
6063 hspace*{0mm}
6067 hspace*{0mm}
6064 \end_inset
6068 \end_inset
6065
6069
6066 \SpecialChar ~
6070 \SpecialChar ~
6067 \SpecialChar ~
6071 \SpecialChar ~
6068 \SpecialChar ~
6072 \SpecialChar ~
6069 ...: \SpecialChar ~
6073 ...: \SpecialChar ~
6070 \SpecialChar ~
6074 \SpecialChar ~
6071 \SpecialChar ~
6075 \SpecialChar ~
6072 \SpecialChar ~
6076 \SpecialChar ~
6073 print i,
6077 print i,
6074 \newline
6078 \newline
6075
6079
6076 \begin_inset ERT
6080 \begin_inset ERT
6077 status Collapsed
6081 status Collapsed
6078
6082
6079 \layout Standard
6083 \layout Standard
6080
6084
6081 \backslash
6085 \backslash
6082 hspace*{0mm}
6086 hspace*{0mm}
6083 \end_inset
6087 \end_inset
6084
6088
6085 \SpecialChar ~
6089 \SpecialChar ~
6086 \SpecialChar ~
6090 \SpecialChar ~
6087 \SpecialChar ~
6091 \SpecialChar ~
6088 ...:
6092 ...:
6089 \newline
6093 \newline
6090 1 2 3
6094 1 2 3
6091 \layout Standard
6095 \layout Standard
6092
6096
6093 These will give you a very colorful prompt with path information:
6097 These will give you a very colorful prompt with path information:
6094 \layout Standard
6098 \layout Standard
6095
6099
6096
6100
6097 \family typewriter
6101 \family typewriter
6098 #prompt_in1 '
6102 #prompt_in1 '
6099 \backslash
6103 \backslash
6100 C_Red
6104 C_Red
6101 \backslash
6105 \backslash
6102 u
6106 u
6103 \backslash
6107 \backslash
6104 C_Blue[
6108 C_Blue[
6105 \backslash
6109 \backslash
6106 C_Cyan
6110 C_Cyan
6107 \backslash
6111 \backslash
6108 Y1
6112 Y1
6109 \backslash
6113 \backslash
6110 C_Blue]
6114 C_Blue]
6111 \backslash
6115 \backslash
6112 C_LightGreen
6116 C_LightGreen
6113 \backslash
6117 \backslash
6114 #>'
6118 #>'
6115 \newline
6119 \newline
6116 prompt_in2 ' ..
6120 prompt_in2 ' ..
6117 \backslash
6121 \backslash
6118 D>'
6122 D>'
6119 \newline
6123 \newline
6120 prompt_out '<
6124 prompt_out '<
6121 \backslash
6125 \backslash
6122 #>'
6126 #>'
6123 \layout Standard
6127 \layout Standard
6124
6128
6125 which look like this:
6129 which look like this:
6126 \layout Standard
6130 \layout Standard
6127
6131
6128
6132
6129 \family typewriter
6133 \family typewriter
6130 \color red
6134 \color red
6131 fperez
6135 fperez
6132 \color blue
6136 \color blue
6133 [
6137 [
6134 \color cyan
6138 \color cyan
6135 ~/ipython
6139 ~/ipython
6136 \color blue
6140 \color blue
6137 ]
6141 ]
6138 \color green
6142 \color green
6139 1>
6143 1>
6140 \color default
6144 \color default
6141 1+2
6145 1+2
6142 \newline
6146 \newline
6143
6147
6144 \begin_inset ERT
6148 \begin_inset ERT
6145 status Collapsed
6149 status Collapsed
6146
6150
6147 \layout Standard
6151 \layout Standard
6148
6152
6149 \backslash
6153 \backslash
6150 hspace*{0mm}
6154 hspace*{0mm}
6151 \end_inset
6155 \end_inset
6152
6156
6153 \SpecialChar ~
6157 \SpecialChar ~
6154 \SpecialChar ~
6158 \SpecialChar ~
6155 \SpecialChar ~
6159 \SpecialChar ~
6156 \SpecialChar ~
6160 \SpecialChar ~
6157 \SpecialChar ~
6161 \SpecialChar ~
6158 \SpecialChar ~
6162 \SpecialChar ~
6159 \SpecialChar ~
6163 \SpecialChar ~
6160 \SpecialChar ~
6164 \SpecialChar ~
6161 \SpecialChar ~
6165 \SpecialChar ~
6162 \SpecialChar ~
6166 \SpecialChar ~
6163 \SpecialChar ~
6167 \SpecialChar ~
6164 \SpecialChar ~
6168 \SpecialChar ~
6165 \SpecialChar ~
6169 \SpecialChar ~
6166 \SpecialChar ~
6170 \SpecialChar ~
6167 \SpecialChar ~
6171 \SpecialChar ~
6168 \SpecialChar ~
6172 \SpecialChar ~
6169
6173
6170 \color red
6174 \color red
6171 <1>
6175 <1>
6172 \color default
6176 \color default
6173 3
6177 3
6174 \newline
6178 \newline
6175
6179
6176 \color red
6180 \color red
6177 fperez
6181 fperez
6178 \color blue
6182 \color blue
6179 [
6183 [
6180 \color cyan
6184 \color cyan
6181 ~/ipython
6185 ~/ipython
6182 \color blue
6186 \color blue
6183 ]
6187 ]
6184 \color green
6188 \color green
6185 2>
6189 2>
6186 \color default
6190 \color default
6187 for i in (1,2,3):
6191 for i in (1,2,3):
6188 \newline
6192 \newline
6189
6193
6190 \begin_inset ERT
6194 \begin_inset ERT
6191 status Collapsed
6195 status Collapsed
6192
6196
6193 \layout Standard
6197 \layout Standard
6194
6198
6195 \backslash
6199 \backslash
6196 hspace*{0mm}
6200 hspace*{0mm}
6197 \end_inset
6201 \end_inset
6198
6202
6199 \SpecialChar ~
6203 \SpecialChar ~
6200 \SpecialChar ~
6204 \SpecialChar ~
6201 \SpecialChar ~
6205 \SpecialChar ~
6202 \SpecialChar ~
6206 \SpecialChar ~
6203 \SpecialChar ~
6207 \SpecialChar ~
6204 \SpecialChar ~
6208 \SpecialChar ~
6205 \SpecialChar ~
6209 \SpecialChar ~
6206 \SpecialChar ~
6210 \SpecialChar ~
6207 \SpecialChar ~
6211 \SpecialChar ~
6208 \SpecialChar ~
6212 \SpecialChar ~
6209 \SpecialChar ~
6213 \SpecialChar ~
6210 \SpecialChar ~
6214 \SpecialChar ~
6211 \SpecialChar ~
6215 \SpecialChar ~
6212 \SpecialChar ~
6216 \SpecialChar ~
6213 \SpecialChar ~
6217 \SpecialChar ~
6214
6218
6215 \color green
6219 \color green
6216 ...>
6220 ...>
6217 \color default
6221 \color default
6218 \SpecialChar ~
6222 \SpecialChar ~
6219 \SpecialChar ~
6223 \SpecialChar ~
6220 \SpecialChar ~
6224 \SpecialChar ~
6221 \SpecialChar ~
6225 \SpecialChar ~
6222 print i,
6226 print i,
6223 \newline
6227 \newline
6224
6228
6225 \begin_inset ERT
6229 \begin_inset ERT
6226 status Collapsed
6230 status Collapsed
6227
6231
6228 \layout Standard
6232 \layout Standard
6229
6233
6230 \backslash
6234 \backslash
6231 hspace*{0mm}
6235 hspace*{0mm}
6232 \end_inset
6236 \end_inset
6233
6237
6234 \SpecialChar ~
6238 \SpecialChar ~
6235 \SpecialChar ~
6239 \SpecialChar ~
6236 \SpecialChar ~
6240 \SpecialChar ~
6237 \SpecialChar ~
6241 \SpecialChar ~
6238 \SpecialChar ~
6242 \SpecialChar ~
6239 \SpecialChar ~
6243 \SpecialChar ~
6240 \SpecialChar ~
6244 \SpecialChar ~
6241 \SpecialChar ~
6245 \SpecialChar ~
6242 \SpecialChar ~
6246 \SpecialChar ~
6243 \SpecialChar ~
6247 \SpecialChar ~
6244 \SpecialChar ~
6248 \SpecialChar ~
6245 \SpecialChar ~
6249 \SpecialChar ~
6246 \SpecialChar ~
6250 \SpecialChar ~
6247 \SpecialChar ~
6251 \SpecialChar ~
6248 \SpecialChar ~
6252 \SpecialChar ~
6249
6253
6250 \color green
6254 \color green
6251 ...>
6255 ...>
6252 \color default
6256 \color default
6253
6257
6254 \newline
6258 \newline
6255 1 2 3
6259 1 2 3
6256 \layout Standard
6260 \layout Standard
6257
6261
6258 The following shows the usage of dynamic expression evaluation:
6262 The following shows the usage of dynamic expression evaluation:
6259 \layout Subsection
6263 \layout Subsection
6260
6264
6261
6265
6262 \begin_inset LatexCommand \label{sec:profiles}
6266 \begin_inset LatexCommand \label{sec:profiles}
6263
6267
6264 \end_inset
6268 \end_inset
6265
6269
6266 IPython profiles
6270 IPython profiles
6267 \layout Standard
6271 \layout Standard
6268
6272
6269 As we already mentioned, IPython supports the
6273 As we already mentioned, IPython supports the
6270 \family typewriter
6274 \family typewriter
6271 -profile
6275 -profile
6272 \family default
6276 \family default
6273 command-line option (see sec.
6277 command-line option (see sec.
6274
6278
6275 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6279 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6276
6280
6277 \end_inset
6281 \end_inset
6278
6282
6279 ).
6283 ).
6280 A profile is nothing more than a particular configuration file like your
6284 A profile is nothing more than a particular configuration file like your
6281 basic
6285 basic
6282 \family typewriter
6286 \family typewriter
6283 ipythonrc
6287 ipythonrc
6284 \family default
6288 \family default
6285 one, but with particular customizations for a specific purpose.
6289 one, but with particular customizations for a specific purpose.
6286 When you start IPython with '
6290 When you start IPython with '
6287 \family typewriter
6291 \family typewriter
6288 ipython -profile <name>
6292 ipython -profile <name>
6289 \family default
6293 \family default
6290 ', it assumes that in your
6294 ', it assumes that in your
6291 \family typewriter
6295 \family typewriter
6292 IPYTHONDIR
6296 IPYTHONDIR
6293 \family default
6297 \family default
6294 there is a file called
6298 there is a file called
6295 \family typewriter
6299 \family typewriter
6296 ipythonrc-<name>
6300 ipythonrc-<name>
6297 \family default
6301 \family default
6298 , and loads it instead of the normal
6302 , and loads it instead of the normal
6299 \family typewriter
6303 \family typewriter
6300 ipythonrc
6304 ipythonrc
6301 \family default
6305 \family default
6302 .
6306 .
6303 \layout Standard
6307 \layout Standard
6304
6308
6305 This system allows you to maintain multiple configurations which load modules,
6309 This system allows you to maintain multiple configurations which load modules,
6306 set options, define functions, etc.
6310 set options, define functions, etc.
6307 suitable for different tasks and activate them in a very simple manner.
6311 suitable for different tasks and activate them in a very simple manner.
6308 In order to avoid having to repeat all of your basic options (common things
6312 In order to avoid having to repeat all of your basic options (common things
6309 that don't change such as your color preferences, for example), any profile
6313 that don't change such as your color preferences, for example), any profile
6310 can include another configuration file.
6314 can include another configuration file.
6311 The most common way to use profiles is then to have each one include your
6315 The most common way to use profiles is then to have each one include your
6312 basic
6316 basic
6313 \family typewriter
6317 \family typewriter
6314 ipythonrc
6318 ipythonrc
6315 \family default
6319 \family default
6316 file as a starting point, and then add further customizations.
6320 file as a starting point, and then add further customizations.
6317 \layout Standard
6321 \layout Standard
6318
6322
6319 In sections
6323 In sections
6320 \begin_inset LatexCommand \ref{sec:syntax-extensions}
6324 \begin_inset LatexCommand \ref{sec:syntax-extensions}
6321
6325
6322 \end_inset
6326 \end_inset
6323
6327
6324 and
6328 and
6325 \begin_inset LatexCommand \ref{sec:Gnuplot}
6329 \begin_inset LatexCommand \ref{sec:Gnuplot}
6326
6330
6327 \end_inset
6331 \end_inset
6328
6332
6329 we discuss some particular profiles which come as part of the standard
6333 we discuss some particular profiles which come as part of the standard
6330 IPython distribution.
6334 IPython distribution.
6331 You may also look in your
6335 You may also look in your
6332 \family typewriter
6336 \family typewriter
6333 IPYTHONDIR
6337 IPYTHONDIR
6334 \family default
6338 \family default
6335 directory, any file whose name begins with
6339 directory, any file whose name begins with
6336 \family typewriter
6340 \family typewriter
6337 ipythonrc-
6341 ipythonrc-
6338 \family default
6342 \family default
6339 is a profile.
6343 is a profile.
6340 You can use those as examples for further customizations to suit your own
6344 You can use those as examples for further customizations to suit your own
6341 needs.
6345 needs.
6342 \layout Section
6346 \layout Section
6343
6347
6344
6348
6345 \begin_inset OptArg
6349 \begin_inset OptArg
6346 collapsed false
6350 collapsed false
6347
6351
6348 \layout Standard
6352 \layout Standard
6349
6353
6350 IPython as default...
6354 IPython as default...
6351 \end_inset
6355 \end_inset
6352
6356
6353 IPython as your default Python environment
6357 IPython as your default Python environment
6354 \layout Standard
6358 \layout Standard
6355
6359
6356 Python honors the environment variable
6360 Python honors the environment variable
6357 \family typewriter
6361 \family typewriter
6358 PYTHONSTARTUP
6362 PYTHONSTARTUP
6359 \family default
6363 \family default
6360 and will execute at startup the file referenced by this variable.
6364 and will execute at startup the file referenced by this variable.
6361 If you put at the end of this file the following two lines of code:
6365 If you put at the end of this file the following two lines of code:
6362 \layout Standard
6366 \layout Standard
6363
6367
6364
6368
6365 \family typewriter
6369 \family typewriter
6366 import IPython
6370 import IPython
6367 \newline
6371 \newline
6368 IPython.Shell.IPShell().mainloop(sys_exit=1)
6372 IPython.Shell.IPShell().mainloop(sys_exit=1)
6369 \layout Standard
6373 \layout Standard
6370
6374
6371 then IPython will be your working environment anytime you start Python.
6375 then IPython will be your working environment anytime you start Python.
6372 The
6376 The
6373 \family typewriter
6377 \family typewriter
6374 sys_exit=1
6378 sys_exit=1
6375 \family default
6379 \family default
6376 is needed to have IPython issue a call to
6380 is needed to have IPython issue a call to
6377 \family typewriter
6381 \family typewriter
6378 sys.exit()
6382 sys.exit()
6379 \family default
6383 \family default
6380 when it finishes, otherwise you'll be back at the normal Python '
6384 when it finishes, otherwise you'll be back at the normal Python '
6381 \family typewriter
6385 \family typewriter
6382 >>>
6386 >>>
6383 \family default
6387 \family default
6384 ' prompt
6388 ' prompt
6385 \begin_inset Foot
6389 \begin_inset Foot
6386 collapsed true
6390 collapsed true
6387
6391
6388 \layout Standard
6392 \layout Standard
6389
6393
6390 Based on an idea by Holger Krekel.
6394 Based on an idea by Holger Krekel.
6391 \end_inset
6395 \end_inset
6392
6396
6393 .
6397 .
6394 \layout Standard
6398 \layout Standard
6395
6399
6396 This is probably useful to developers who manage multiple Python versions
6400 This is probably useful to developers who manage multiple Python versions
6397 and don't want to have correspondingly multiple IPython versions.
6401 and don't want to have correspondingly multiple IPython versions.
6398 Note that in this mode, there is no way to pass IPython any command-line
6402 Note that in this mode, there is no way to pass IPython any command-line
6399 options, as those are trapped first by Python itself.
6403 options, as those are trapped first by Python itself.
6400 \layout Section
6404 \layout Section
6401
6405
6402
6406
6403 \begin_inset LatexCommand \label{sec:embed}
6407 \begin_inset LatexCommand \label{sec:embed}
6404
6408
6405 \end_inset
6409 \end_inset
6406
6410
6407 Embedding IPython
6411 Embedding IPython
6408 \layout Standard
6412 \layout Standard
6409
6413
6410 It is possible to start an IPython instance
6414 It is possible to start an IPython instance
6411 \emph on
6415 \emph on
6412 inside
6416 inside
6413 \emph default
6417 \emph default
6414 your own Python programs.
6418 your own Python programs.
6415 This allows you to evaluate dynamically the state of your code, operate
6419 This allows you to evaluate dynamically the state of your code, operate
6416 with your variables, analyze them, etc.
6420 with your variables, analyze them, etc.
6417 Note however that any changes you make to values while in the shell do
6421 Note however that any changes you make to values while in the shell do
6418
6422
6419 \emph on
6423 \emph on
6420 not
6424 not
6421 \emph default
6425 \emph default
6422 propagate back to the running code, so it is safe to modify your values
6426 propagate back to the running code, so it is safe to modify your values
6423 because you won't break your code in bizarre ways by doing so.
6427 because you won't break your code in bizarre ways by doing so.
6424 \layout Standard
6428 \layout Standard
6425
6429
6426 This feature allows you to easily have a fully functional python environment
6430 This feature allows you to easily have a fully functional python environment
6427 for doing object introspection anywhere in your code with a simple function
6431 for doing object introspection anywhere in your code with a simple function
6428 call.
6432 call.
6429 In some cases a simple print statement is enough, but if you need to do
6433 In some cases a simple print statement is enough, but if you need to do
6430 more detailed analysis of a code fragment this feature can be very valuable.
6434 more detailed analysis of a code fragment this feature can be very valuable.
6431 \layout Standard
6435 \layout Standard
6432
6436
6433 It can also be useful in scientific computing situations where it is common
6437 It can also be useful in scientific computing situations where it is common
6434 to need to do some automatic, computationally intensive part and then stop
6438 to need to do some automatic, computationally intensive part and then stop
6435 to look at data, plots, etc
6439 to look at data, plots, etc
6436 \begin_inset Foot
6440 \begin_inset Foot
6437 collapsed true
6441 collapsed true
6438
6442
6439 \layout Standard
6443 \layout Standard
6440
6444
6441 This functionality was inspired by IDL's combination of the
6445 This functionality was inspired by IDL's combination of the
6442 \family typewriter
6446 \family typewriter
6443 stop
6447 stop
6444 \family default
6448 \family default
6445 keyword and the
6449 keyword and the
6446 \family typewriter
6450 \family typewriter
6447 .continue
6451 .continue
6448 \family default
6452 \family default
6449 executive command, which I have found very useful in the past, and by a
6453 executive command, which I have found very useful in the past, and by a
6450 posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
6454 posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
6451 06/01 concerning similar uses of pyrepl.
6455 06/01 concerning similar uses of pyrepl.
6452 \end_inset
6456 \end_inset
6453
6457
6454 .
6458 .
6455 Opening an IPython instance will give you full access to your data and
6459 Opening an IPython instance will give you full access to your data and
6456 functions, and you can resume program execution once you are done with
6460 functions, and you can resume program execution once you are done with
6457 the interactive part (perhaps to stop again later, as many times as needed).
6461 the interactive part (perhaps to stop again later, as many times as needed).
6458 \layout Standard
6462 \layout Standard
6459
6463
6460 The following code snippet is the bare minimum you need to include in your
6464 The following code snippet is the bare minimum you need to include in your
6461 Python programs for this to work (detailed examples follow later):
6465 Python programs for this to work (detailed examples follow later):
6462 \layout LyX-Code
6466 \layout LyX-Code
6463
6467
6464 from IPython.Shell import IPShellEmbed
6468 from IPython.Shell import IPShellEmbed
6465 \layout LyX-Code
6469 \layout LyX-Code
6466
6470
6467 ipshell = IPShellEmbed()
6471 ipshell = IPShellEmbed()
6468 \layout LyX-Code
6472 \layout LyX-Code
6469
6473
6470 ipshell() # this call anywhere in your program will start IPython
6474 ipshell() # this call anywhere in your program will start IPython
6471 \layout Standard
6475 \layout Standard
6472
6476
6473 You can run embedded instances even in code which is itself being run at
6477 You can run embedded instances even in code which is itself being run at
6474 the IPython interactive prompt with '
6478 the IPython interactive prompt with '
6475 \family typewriter
6479 \family typewriter
6476 %run\SpecialChar ~
6480 %run\SpecialChar ~
6477 <filename>
6481 <filename>
6478 \family default
6482 \family default
6479 '.
6483 '.
6480 Since it's easy to get lost as to where you are (in your top-level IPython
6484 Since it's easy to get lost as to where you are (in your top-level IPython
6481 or in your embedded one), it's a good idea in such cases to set the in/out
6485 or in your embedded one), it's a good idea in such cases to set the in/out
6482 prompts to something different for the embedded instances.
6486 prompts to something different for the embedded instances.
6483 The code examples below illustrate this.
6487 The code examples below illustrate this.
6484 \layout Standard
6488 \layout Standard
6485
6489
6486 You can also have multiple IPython instances in your program and open them
6490 You can also have multiple IPython instances in your program and open them
6487 separately, for example with different options for data presentation.
6491 separately, for example with different options for data presentation.
6488 If you close and open the same instance multiple times, its prompt counters
6492 If you close and open the same instance multiple times, its prompt counters
6489 simply continue from each execution to the next.
6493 simply continue from each execution to the next.
6490 \layout Standard
6494 \layout Standard
6491
6495
6492 Please look at the docstrings in the
6496 Please look at the docstrings in the
6493 \family typewriter
6497 \family typewriter
6494 Shell.py
6498 Shell.py
6495 \family default
6499 \family default
6496 module for more details on the use of this system.
6500 module for more details on the use of this system.
6497 \layout Standard
6501 \layout Standard
6498
6502
6499 The following sample file illustrating how to use the embedding functionality
6503 The following sample file illustrating how to use the embedding functionality
6500 is provided in the examples directory as
6504 is provided in the examples directory as
6501 \family typewriter
6505 \family typewriter
6502 example-embed.py
6506 example-embed.py
6503 \family default
6507 \family default
6504 .
6508 .
6505 It should be fairly self-explanatory:
6509 It should be fairly self-explanatory:
6506 \layout Standard
6510 \layout Standard
6507
6511
6508
6512
6509 \begin_inset ERT
6513 \begin_inset ERT
6510 status Open
6514 status Open
6511
6515
6512 \layout Standard
6516 \layout Standard
6513
6517
6514 \backslash
6518 \backslash
6515 codelist{examples/example-embed.py}
6519 codelist{examples/example-embed.py}
6516 \end_inset
6520 \end_inset
6517
6521
6518
6522
6519 \layout Standard
6523 \layout Standard
6520
6524
6521 Once you understand how the system functions, you can use the following
6525 Once you understand how the system functions, you can use the following
6522 code fragments in your programs which are ready for cut and paste:
6526 code fragments in your programs which are ready for cut and paste:
6523 \layout Standard
6527 \layout Standard
6524
6528
6525
6529
6526 \begin_inset ERT
6530 \begin_inset ERT
6527 status Open
6531 status Open
6528
6532
6529 \layout Standard
6533 \layout Standard
6530
6534
6531 \backslash
6535 \backslash
6532 codelist{examples/example-embed-short.py}
6536 codelist{examples/example-embed-short.py}
6533 \end_inset
6537 \end_inset
6534
6538
6535
6539
6536 \layout Section
6540 \layout Section
6537
6541
6538
6542
6539 \begin_inset LatexCommand \label{sec:using-pdb}
6543 \begin_inset LatexCommand \label{sec:using-pdb}
6540
6544
6541 \end_inset
6545 \end_inset
6542
6546
6543 Using the Python debugger (
6547 Using the Python debugger (
6544 \family typewriter
6548 \family typewriter
6545 pdb
6549 pdb
6546 \family default
6550 \family default
6547 )
6551 )
6548 \layout Subsection
6552 \layout Subsection
6549
6553
6550 Running entire programs via
6554 Running entire programs via
6551 \family typewriter
6555 \family typewriter
6552 pdb
6556 pdb
6553 \layout Standard
6557 \layout Standard
6554
6558
6555
6559
6556 \family typewriter
6560 \family typewriter
6557 pdb
6561 pdb
6558 \family default
6562 \family default
6559 , the Python debugger, is a powerful interactive debugger which allows you
6563 , the Python debugger, is a powerful interactive debugger which allows you
6560 to step through code, set breakpoints, watch variables, etc.
6564 to step through code, set breakpoints, watch variables, etc.
6561 IPython makes it very easy to start any script under the control of
6565 IPython makes it very easy to start any script under the control of
6562 \family typewriter
6566 \family typewriter
6563 pdb
6567 pdb
6564 \family default
6568 \family default
6565 , regardless of whether you have wrapped it into a
6569 , regardless of whether you have wrapped it into a
6566 \family typewriter
6570 \family typewriter
6567 `main()'
6571 `main()'
6568 \family default
6572 \family default
6569 function or not.
6573 function or not.
6570 For this, simply type
6574 For this, simply type
6571 \family typewriter
6575 \family typewriter
6572 `%run -d myscript'
6576 `%run -d myscript'
6573 \family default
6577 \family default
6574 at an IPython prompt.
6578 at an IPython prompt.
6575 See the
6579 See the
6576 \family typewriter
6580 \family typewriter
6577 %run
6581 %run
6578 \family default
6582 \family default
6579 command's documentation (via
6583 command's documentation (via
6580 \family typewriter
6584 \family typewriter
6581 `%run?'
6585 `%run?'
6582 \family default
6586 \family default
6583 or in Sec.\SpecialChar ~
6587 or in Sec.\SpecialChar ~
6584
6588
6585 \begin_inset LatexCommand \ref{sec:magic}
6589 \begin_inset LatexCommand \ref{sec:magic}
6586
6590
6587 \end_inset
6591 \end_inset
6588
6592
6589 ) for more details, including how to control where
6593 ) for more details, including how to control where
6590 \family typewriter
6594 \family typewriter
6591 pdb
6595 pdb
6592 \family default
6596 \family default
6593 will stop execution first.
6597 will stop execution first.
6594 \layout Standard
6598 \layout Standard
6595
6599
6596 For more information on the use of the
6600 For more information on the use of the
6597 \family typewriter
6601 \family typewriter
6598 pdb
6602 pdb
6599 \family default
6603 \family default
6600 debugger, read the included
6604 debugger, read the included
6601 \family typewriter
6605 \family typewriter
6602 pdb.doc
6606 pdb.doc
6603 \family default
6607 \family default
6604 file (part of the standard Python distribution).
6608 file (part of the standard Python distribution).
6605 On a stock Linux system it is located at
6609 On a stock Linux system it is located at
6606 \family typewriter
6610 \family typewriter
6607 /usr/lib/python2.3/pdb.doc
6611 /usr/lib/python2.3/pdb.doc
6608 \family default
6612 \family default
6609 , but the easiest way to read it is by using the
6613 , but the easiest way to read it is by using the
6610 \family typewriter
6614 \family typewriter
6611 help()
6615 help()
6612 \family default
6616 \family default
6613 function of the
6617 function of the
6614 \family typewriter
6618 \family typewriter
6615 pdb
6619 pdb
6616 \family default
6620 \family default
6617 module as follows (in an IPython prompt):
6621 module as follows (in an IPython prompt):
6618 \layout Standard
6622 \layout Standard
6619
6623
6620
6624
6621 \family typewriter
6625 \family typewriter
6622 In [1]: import pdb
6626 In [1]: import pdb
6623 \newline
6627 \newline
6624 In [2]: pdb.help()
6628 In [2]: pdb.help()
6625 \layout Standard
6629 \layout Standard
6626
6630
6627 This will load the
6631 This will load the
6628 \family typewriter
6632 \family typewriter
6629 pdb.doc
6633 pdb.doc
6630 \family default
6634 \family default
6631 document in a file viewer for you automatically.
6635 document in a file viewer for you automatically.
6632 \layout Subsection
6636 \layout Subsection
6633
6637
6634 Automatic invocation of
6638 Automatic invocation of
6635 \family typewriter
6639 \family typewriter
6636 pdb
6640 pdb
6637 \family default
6641 \family default
6638 on exceptions
6642 on exceptions
6639 \layout Standard
6643 \layout Standard
6640
6644
6641 IPython, if started with the
6645 IPython, if started with the
6642 \family typewriter
6646 \family typewriter
6643 -pdb
6647 -pdb
6644 \family default
6648 \family default
6645 option (or if the option is set in your rc file) can call the Python
6649 option (or if the option is set in your rc file) can call the Python
6646 \family typewriter
6650 \family typewriter
6647 pdb
6651 pdb
6648 \family default
6652 \family default
6649 debugger every time your code triggers an uncaught exception
6653 debugger every time your code triggers an uncaught exception
6650 \begin_inset Foot
6654 \begin_inset Foot
6651 collapsed true
6655 collapsed true
6652
6656
6653 \layout Standard
6657 \layout Standard
6654
6658
6655 Many thanks to Christopher Hart for the request which prompted adding this
6659 Many thanks to Christopher Hart for the request which prompted adding this
6656 feature to IPython.
6660 feature to IPython.
6657 \end_inset
6661 \end_inset
6658
6662
6659 .
6663 .
6660 This feature can also be toggled at any time with the
6664 This feature can also be toggled at any time with the
6661 \family typewriter
6665 \family typewriter
6662 %pdb
6666 %pdb
6663 \family default
6667 \family default
6664 magic command.
6668 magic command.
6665 This can be extremely useful in order to find the origin of subtle bugs,
6669 This can be extremely useful in order to find the origin of subtle bugs,
6666 because
6670 because
6667 \family typewriter
6671 \family typewriter
6668 pdb
6672 pdb
6669 \family default
6673 \family default
6670 opens up at the point in your code which triggered the exception, and while
6674 opens up at the point in your code which triggered the exception, and while
6671 your program is at this point `dead', all the data is still available and
6675 your program is at this point `dead', all the data is still available and
6672 you can walk up and down the stack frame and understand the origin of the
6676 you can walk up and down the stack frame and understand the origin of the
6673 problem.
6677 problem.
6674 \layout Standard
6678 \layout Standard
6675
6679
6676 Furthermore, you can use these debugging facilities both with the embedded
6680 Furthermore, you can use these debugging facilities both with the embedded
6677 IPython mode and without IPython at all.
6681 IPython mode and without IPython at all.
6678 For an embedded shell (see sec.
6682 For an embedded shell (see sec.
6679
6683
6680 \begin_inset LatexCommand \ref{sec:embed}
6684 \begin_inset LatexCommand \ref{sec:embed}
6681
6685
6682 \end_inset
6686 \end_inset
6683
6687
6684 ), simply call the constructor with
6688 ), simply call the constructor with
6685 \family typewriter
6689 \family typewriter
6686 `-pdb'
6690 `-pdb'
6687 \family default
6691 \family default
6688 in the argument string and automatically
6692 in the argument string and automatically
6689 \family typewriter
6693 \family typewriter
6690 pdb
6694 pdb
6691 \family default
6695 \family default
6692 will be called if an uncaught exception is triggered by your code.
6696 will be called if an uncaught exception is triggered by your code.
6693
6697
6694 \layout Standard
6698 \layout Standard
6695
6699
6696 For stand-alone use of the feature in your programs which do not use IPython
6700 For stand-alone use of the feature in your programs which do not use IPython
6697 at all, put the following lines toward the top of your `main' routine:
6701 at all, put the following lines toward the top of your `main' routine:
6698 \layout Standard
6702 \layout Standard
6699 \align left
6703 \align left
6700
6704
6701 \family typewriter
6705 \family typewriter
6702 import sys,IPython.ultraTB
6706 import sys,IPython.ultraTB
6703 \newline
6707 \newline
6704 sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbose', color_scheme=`Linux',
6708 sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbose', color_scheme=`Linux',
6705 call_pdb=1)
6709 call_pdb=1)
6706 \layout Standard
6710 \layout Standard
6707
6711
6708 The
6712 The
6709 \family typewriter
6713 \family typewriter
6710 mode
6714 mode
6711 \family default
6715 \family default
6712 keyword can be either
6716 keyword can be either
6713 \family typewriter
6717 \family typewriter
6714 `Verbose'
6718 `Verbose'
6715 \family default
6719 \family default
6716 or
6720 or
6717 \family typewriter
6721 \family typewriter
6718 `Plain'
6722 `Plain'
6719 \family default
6723 \family default
6720 , giving either very detailed or normal tracebacks respectively.
6724 , giving either very detailed or normal tracebacks respectively.
6721 The
6725 The
6722 \family typewriter
6726 \family typewriter
6723 color_scheme
6727 color_scheme
6724 \family default
6728 \family default
6725 keyword can be one of
6729 keyword can be one of
6726 \family typewriter
6730 \family typewriter
6727 `NoColor'
6731 `NoColor'
6728 \family default
6732 \family default
6729 ,
6733 ,
6730 \family typewriter
6734 \family typewriter
6731 `Linux'
6735 `Linux'
6732 \family default
6736 \family default
6733 (default) or
6737 (default) or
6734 \family typewriter
6738 \family typewriter
6735 `LightBG'
6739 `LightBG'
6736 \family default
6740 \family default
6737 .
6741 .
6738 These are the same options which can be set in IPython with
6742 These are the same options which can be set in IPython with
6739 \family typewriter
6743 \family typewriter
6740 -colors
6744 -colors
6741 \family default
6745 \family default
6742 and
6746 and
6743 \family typewriter
6747 \family typewriter
6744 -xmode
6748 -xmode
6745 \family default
6749 \family default
6746 .
6750 .
6747 \layout Standard
6751 \layout Standard
6748
6752
6749 This will give any of your programs detailed, colored tracebacks with automatic
6753 This will give any of your programs detailed, colored tracebacks with automatic
6750 invocation of
6754 invocation of
6751 \family typewriter
6755 \family typewriter
6752 pdb
6756 pdb
6753 \family default
6757 \family default
6754 .
6758 .
6755 \layout Section
6759 \layout Section
6756
6760
6757
6761
6758 \begin_inset LatexCommand \label{sec:syntax-extensions}
6762 \begin_inset LatexCommand \label{sec:syntax-extensions}
6759
6763
6760 \end_inset
6764 \end_inset
6761
6765
6762 Extensions for syntax processing
6766 Extensions for syntax processing
6763 \layout Standard
6767 \layout Standard
6764
6768
6765 This isn't for the faint of heart, because the potential for breaking things
6769 This isn't for the faint of heart, because the potential for breaking things
6766 is quite high.
6770 is quite high.
6767 But it can be a very powerful and useful feature.
6771 But it can be a very powerful and useful feature.
6768 In a nutshell, you can redefine the way IPython processes the user input
6772 In a nutshell, you can redefine the way IPython processes the user input
6769 line to accept new, special extensions to the syntax without needing to
6773 line to accept new, special extensions to the syntax without needing to
6770 change any of IPython's own code.
6774 change any of IPython's own code.
6771 \layout Standard
6775 \layout Standard
6772
6776
6773 In the
6777 In the
6774 \family typewriter
6778 \family typewriter
6775 IPython/Extensions
6779 IPython/Extensions
6776 \family default
6780 \family default
6777 directory you will find some examples supplied, which we will briefly describe
6781 directory you will find some examples supplied, which we will briefly describe
6778 now.
6782 now.
6779 These can be used `as is' (and both provide very useful functionality),
6783 These can be used `as is' (and both provide very useful functionality),
6780 or you can use them as a starting point for writing your own extensions.
6784 or you can use them as a starting point for writing your own extensions.
6781 \layout Subsection
6785 \layout Subsection
6782
6786
6783 Pasting of code starting with
6787 Pasting of code starting with
6784 \family typewriter
6788 \family typewriter
6785 `>>>
6789 `>>>
6786 \family default
6790 \family default
6787 ' or
6791 ' or
6788 \family typewriter
6792 \family typewriter
6789 `...
6793 `...
6790
6794
6791 \family default
6795 \family default
6792 '
6796 '
6793 \layout Standard
6797 \layout Standard
6794
6798
6795 In the python tutorial it is common to find code examples which have been
6799 In the python tutorial it is common to find code examples which have been
6796 taken from real python sessions.
6800 taken from real python sessions.
6797 The problem with those is that all the lines begin with either
6801 The problem with those is that all the lines begin with either
6798 \family typewriter
6802 \family typewriter
6799 `>>>
6803 `>>>
6800 \family default
6804 \family default
6801 ' or
6805 ' or
6802 \family typewriter
6806 \family typewriter
6803 `...
6807 `...
6804
6808
6805 \family default
6809 \family default
6806 ', which makes it impossible to paste them all at once.
6810 ', which makes it impossible to paste them all at once.
6807 One must instead do a line by line manual copying, carefully removing the
6811 One must instead do a line by line manual copying, carefully removing the
6808 leading extraneous characters.
6812 leading extraneous characters.
6809 \layout Standard
6813 \layout Standard
6810
6814
6811 This extension identifies those starting characters and removes them from
6815 This extension identifies those starting characters and removes them from
6812 the input automatically, so that one can paste multi-line examples directly
6816 the input automatically, so that one can paste multi-line examples directly
6813 into IPython, saving a lot of time.
6817 into IPython, saving a lot of time.
6814 Please look at the file
6818 Please look at the file
6815 \family typewriter
6819 \family typewriter
6816 InterpreterPasteInput.py
6820 InterpreterPasteInput.py
6817 \family default
6821 \family default
6818 in the
6822 in the
6819 \family typewriter
6823 \family typewriter
6820 IPython/Extensions
6824 IPython/Extensions
6821 \family default
6825 \family default
6822 directory for details on how this is done.
6826 directory for details on how this is done.
6823 \layout Standard
6827 \layout Standard
6824
6828
6825 IPython comes with a special profile enabling this feature, called
6829 IPython comes with a special profile enabling this feature, called
6826 \family typewriter
6830 \family typewriter
6827 tutorial
6831 tutorial
6828 \family default
6832 \family default
6829 \emph on
6833 \emph on
6830 .
6834 .
6831
6835
6832 \emph default
6836 \emph default
6833 Simply start IPython via
6837 Simply start IPython via
6834 \family typewriter
6838 \family typewriter
6835 `ipython\SpecialChar ~
6839 `ipython\SpecialChar ~
6836 -p\SpecialChar ~
6840 -p\SpecialChar ~
6837 tutorial'
6841 tutorial'
6838 \family default
6842 \family default
6839 and the feature will be available.
6843 and the feature will be available.
6840 In a normal IPython session you can activate the feature by importing the
6844 In a normal IPython session you can activate the feature by importing the
6841 corresponding module with:
6845 corresponding module with:
6842 \newline
6846 \newline
6843
6847
6844 \family typewriter
6848 \family typewriter
6845 In [1]: import IPython.Extensions.InterpreterPasteInput
6849 In [1]: import IPython.Extensions.InterpreterPasteInput
6846 \layout Standard
6850 \layout Standard
6847
6851
6848 The following is a 'screenshot' of how things work when this extension is
6852 The following is a 'screenshot' of how things work when this extension is
6849 on, copying an example from the standard tutorial:
6853 on, copying an example from the standard tutorial:
6850 \layout Standard
6854 \layout Standard
6851
6855
6852
6856
6853 \family typewriter
6857 \family typewriter
6854 IPython profile: tutorial
6858 IPython profile: tutorial
6855 \newline
6859 \newline
6856 \SpecialChar ~
6860 \SpecialChar ~
6857
6861
6858 \newline
6862 \newline
6859 *** Pasting of code with ">>>" or "..." has been enabled.
6863 *** Pasting of code with ">>>" or "..." has been enabled.
6860 \newline
6864 \newline
6861 \SpecialChar ~
6865 \SpecialChar ~
6862
6866
6863 \newline
6867 \newline
6864 In [1]: >>> def fib2(n): # return Fibonacci series up to n
6868 In [1]: >>> def fib2(n): # return Fibonacci series up to n
6865 \newline
6869 \newline
6866
6870
6867 \begin_inset ERT
6871 \begin_inset ERT
6868 status Collapsed
6872 status Collapsed
6869
6873
6870 \layout Standard
6874 \layout Standard
6871
6875
6872 \backslash
6876 \backslash
6873 hspace*{0mm}
6877 hspace*{0mm}
6874 \end_inset
6878 \end_inset
6875
6879
6876 \SpecialChar ~
6880 \SpecialChar ~
6877 \SpecialChar ~
6881 \SpecialChar ~
6878 ...: ...\SpecialChar ~
6882 ...: ...\SpecialChar ~
6879 \SpecialChar ~
6883 \SpecialChar ~
6880 \SpecialChar ~
6884 \SpecialChar ~
6881 \SpecialChar ~
6885 \SpecialChar ~
6882 """Return a list containing the Fibonacci series up to n."""
6886 """Return a list containing the Fibonacci series up to n."""
6883 \newline
6887 \newline
6884
6888
6885 \begin_inset ERT
6889 \begin_inset ERT
6886 status Collapsed
6890 status Collapsed
6887
6891
6888 \layout Standard
6892 \layout Standard
6889
6893
6890 \backslash
6894 \backslash
6891 hspace*{0mm}
6895 hspace*{0mm}
6892 \end_inset
6896 \end_inset
6893
6897
6894 \SpecialChar ~
6898 \SpecialChar ~
6895 \SpecialChar ~
6899 \SpecialChar ~
6896 ...: ...\SpecialChar ~
6900 ...: ...\SpecialChar ~
6897 \SpecialChar ~
6901 \SpecialChar ~
6898 \SpecialChar ~
6902 \SpecialChar ~
6899 \SpecialChar ~
6903 \SpecialChar ~
6900 result = []
6904 result = []
6901 \newline
6905 \newline
6902
6906
6903 \begin_inset ERT
6907 \begin_inset ERT
6904 status Collapsed
6908 status Collapsed
6905
6909
6906 \layout Standard
6910 \layout Standard
6907
6911
6908 \backslash
6912 \backslash
6909 hspace*{0mm}
6913 hspace*{0mm}
6910 \end_inset
6914 \end_inset
6911
6915
6912 \SpecialChar ~
6916 \SpecialChar ~
6913 \SpecialChar ~
6917 \SpecialChar ~
6914 ...: ...\SpecialChar ~
6918 ...: ...\SpecialChar ~
6915 \SpecialChar ~
6919 \SpecialChar ~
6916 \SpecialChar ~
6920 \SpecialChar ~
6917 \SpecialChar ~
6921 \SpecialChar ~
6918 a, b = 0, 1
6922 a, b = 0, 1
6919 \newline
6923 \newline
6920
6924
6921 \begin_inset ERT
6925 \begin_inset ERT
6922 status Collapsed
6926 status Collapsed
6923
6927
6924 \layout Standard
6928 \layout Standard
6925
6929
6926 \backslash
6930 \backslash
6927 hspace*{0mm}
6931 hspace*{0mm}
6928 \end_inset
6932 \end_inset
6929
6933
6930 \SpecialChar ~
6934 \SpecialChar ~
6931 \SpecialChar ~
6935 \SpecialChar ~
6932 ...: ...\SpecialChar ~
6936 ...: ...\SpecialChar ~
6933 \SpecialChar ~
6937 \SpecialChar ~
6934 \SpecialChar ~
6938 \SpecialChar ~
6935 \SpecialChar ~
6939 \SpecialChar ~
6936 while b < n:
6940 while b < n:
6937 \newline
6941 \newline
6938
6942
6939 \begin_inset ERT
6943 \begin_inset ERT
6940 status Collapsed
6944 status Collapsed
6941
6945
6942 \layout Standard
6946 \layout Standard
6943
6947
6944 \backslash
6948 \backslash
6945 hspace*{0mm}
6949 hspace*{0mm}
6946 \end_inset
6950 \end_inset
6947
6951
6948 \SpecialChar ~
6952 \SpecialChar ~
6949 \SpecialChar ~
6953 \SpecialChar ~
6950 ...: ...\SpecialChar ~
6954 ...: ...\SpecialChar ~
6951 \SpecialChar ~
6955 \SpecialChar ~
6952 \SpecialChar ~
6956 \SpecialChar ~
6953 \SpecialChar ~
6957 \SpecialChar ~
6954 \SpecialChar ~
6958 \SpecialChar ~
6955 \SpecialChar ~
6959 \SpecialChar ~
6956 \SpecialChar ~
6960 \SpecialChar ~
6957 \SpecialChar ~
6961 \SpecialChar ~
6958 result.append(b)\SpecialChar ~
6962 result.append(b)\SpecialChar ~
6959 \SpecialChar ~
6963 \SpecialChar ~
6960 \SpecialChar ~
6964 \SpecialChar ~
6961 # see below
6965 # see below
6962 \newline
6966 \newline
6963
6967
6964 \begin_inset ERT
6968 \begin_inset ERT
6965 status Collapsed
6969 status Collapsed
6966
6970
6967 \layout Standard
6971 \layout Standard
6968
6972
6969 \backslash
6973 \backslash
6970 hspace*{0mm}
6974 hspace*{0mm}
6971 \end_inset
6975 \end_inset
6972
6976
6973 \SpecialChar ~
6977 \SpecialChar ~
6974 \SpecialChar ~
6978 \SpecialChar ~
6975 ...: ...\SpecialChar ~
6979 ...: ...\SpecialChar ~
6976 \SpecialChar ~
6980 \SpecialChar ~
6977 \SpecialChar ~
6981 \SpecialChar ~
6978 \SpecialChar ~
6982 \SpecialChar ~
6979 \SpecialChar ~
6983 \SpecialChar ~
6980 \SpecialChar ~
6984 \SpecialChar ~
6981 \SpecialChar ~
6985 \SpecialChar ~
6982 \SpecialChar ~
6986 \SpecialChar ~
6983 a, b = b, a+b
6987 a, b = b, a+b
6984 \newline
6988 \newline
6985
6989
6986 \begin_inset ERT
6990 \begin_inset ERT
6987 status Collapsed
6991 status Collapsed
6988
6992
6989 \layout Standard
6993 \layout Standard
6990
6994
6991 \backslash
6995 \backslash
6992 hspace*{0mm}
6996 hspace*{0mm}
6993 \end_inset
6997 \end_inset
6994
6998
6995 \SpecialChar ~
6999 \SpecialChar ~
6996 \SpecialChar ~
7000 \SpecialChar ~
6997 ...: ...\SpecialChar ~
7001 ...: ...\SpecialChar ~
6998 \SpecialChar ~
7002 \SpecialChar ~
6999 \SpecialChar ~
7003 \SpecialChar ~
7000 \SpecialChar ~
7004 \SpecialChar ~
7001 return result
7005 return result
7002 \newline
7006 \newline
7003
7007
7004 \begin_inset ERT
7008 \begin_inset ERT
7005 status Collapsed
7009 status Collapsed
7006
7010
7007 \layout Standard
7011 \layout Standard
7008
7012
7009 \backslash
7013 \backslash
7010 hspace*{0mm}
7014 hspace*{0mm}
7011 \end_inset
7015 \end_inset
7012
7016
7013 \SpecialChar ~
7017 \SpecialChar ~
7014 \SpecialChar ~
7018 \SpecialChar ~
7015 ...:
7019 ...:
7016 \newline
7020 \newline
7017 \SpecialChar ~
7021 \SpecialChar ~
7018
7022
7019 \newline
7023 \newline
7020 In [2]: fib2(10)
7024 In [2]: fib2(10)
7021 \newline
7025 \newline
7022 Out[2]: [1, 1, 2, 3, 5, 8]
7026 Out[2]: [1, 1, 2, 3, 5, 8]
7023 \layout Standard
7027 \layout Standard
7024
7028
7025 Note that as currently written, this extension does
7029 Note that as currently written, this extension does
7026 \emph on
7030 \emph on
7027 not
7031 not
7028 \emph default
7032 \emph default
7029 recognize IPython's prompts for pasting.
7033 recognize IPython's prompts for pasting.
7030 Those are more complicated, since the user can change them very easily,
7034 Those are more complicated, since the user can change them very easily,
7031 they involve numbers and can vary in length.
7035 they involve numbers and can vary in length.
7032 One could however extract all the relevant information from the IPython
7036 One could however extract all the relevant information from the IPython
7033 instance and build an appropriate regular expression.
7037 instance and build an appropriate regular expression.
7034 This is left as an exercise for the reader.
7038 This is left as an exercise for the reader.
7035 \layout Subsection
7039 \layout Subsection
7036
7040
7037 Input of physical quantities with units
7041 Input of physical quantities with units
7038 \layout Standard
7042 \layout Standard
7039
7043
7040 The module
7044 The module
7041 \family typewriter
7045 \family typewriter
7042 PhysicalQInput
7046 PhysicalQInput
7043 \family default
7047 \family default
7044 allows a simplified form of input for physical quantities with units.
7048 allows a simplified form of input for physical quantities with units.
7045 This file is meant to be used in conjunction with the
7049 This file is meant to be used in conjunction with the
7046 \family typewriter
7050 \family typewriter
7047 PhysicalQInteractive
7051 PhysicalQInteractive
7048 \family default
7052 \family default
7049 module (in the same directory) and
7053 module (in the same directory) and
7050 \family typewriter
7054 \family typewriter
7051 Physics.PhysicalQuantities
7055 Physics.PhysicalQuantities
7052 \family default
7056 \family default
7053 from Konrad Hinsen's ScientificPython (
7057 from Konrad Hinsen's ScientificPython (
7054 \begin_inset LatexCommand \htmlurl{http://dirac.cnrs-orleans.fr/ScientificPython/}
7058 \begin_inset LatexCommand \htmlurl{http://dirac.cnrs-orleans.fr/ScientificPython/}
7055
7059
7056 \end_inset
7060 \end_inset
7057
7061
7058 ).
7062 ).
7059 \layout Standard
7063 \layout Standard
7060
7064
7061 The
7065 The
7062 \family typewriter
7066 \family typewriter
7063 Physics.PhysicalQuantities
7067 Physics.PhysicalQuantities
7064 \family default
7068 \family default
7065 module defines
7069 module defines
7066 \family typewriter
7070 \family typewriter
7067 PhysicalQuantity
7071 PhysicalQuantity
7068 \family default
7072 \family default
7069 objects, but these must be declared as instances of a class.
7073 objects, but these must be declared as instances of a class.
7070 For example, to define
7074 For example, to define
7071 \family typewriter
7075 \family typewriter
7072 v
7076 v
7073 \family default
7077 \family default
7074 as a velocity of 3\SpecialChar ~
7078 as a velocity of 3\SpecialChar ~
7075 m/s, normally you would write:
7079 m/s, normally you would write:
7076 \family typewriter
7080 \family typewriter
7077
7081
7078 \newline
7082 \newline
7079 In [1]: v = PhysicalQuantity(3,'m/s')
7083 In [1]: v = PhysicalQuantity(3,'m/s')
7080 \layout Standard
7084 \layout Standard
7081
7085
7082 Using the
7086 Using the
7083 \family typewriter
7087 \family typewriter
7084 PhysicalQ_Input
7088 PhysicalQ_Input
7085 \family default
7089 \family default
7086 extension this can be input instead as:
7090 extension this can be input instead as:
7087 \family typewriter
7091 \family typewriter
7088
7092
7089 \newline
7093 \newline
7090 In [1]: v = 3 m/s
7094 In [1]: v = 3 m/s
7091 \family default
7095 \family default
7092
7096
7093 \newline
7097 \newline
7094 which is much more convenient for interactive use (even though it is blatantly
7098 which is much more convenient for interactive use (even though it is blatantly
7095 invalid Python syntax).
7099 invalid Python syntax).
7096 \layout Standard
7100 \layout Standard
7097
7101
7098 The
7102 The
7099 \family typewriter
7103 \family typewriter
7100 physics
7104 physics
7101 \family default
7105 \family default
7102 profile supplied with IPython (enabled via
7106 profile supplied with IPython (enabled via
7103 \family typewriter
7107 \family typewriter
7104 'ipython -p physics'
7108 'ipython -p physics'
7105 \family default
7109 \family default
7106 ) uses these extensions, which you can also activate with:
7110 ) uses these extensions, which you can also activate with:
7107 \layout Standard
7111 \layout Standard
7108
7112
7109
7113
7110 \family typewriter
7114 \family typewriter
7111 from math import * # math MUST be imported BEFORE PhysicalQInteractive
7115 from math import * # math MUST be imported BEFORE PhysicalQInteractive
7112 \newline
7116 \newline
7113 from IPython.Extensions.PhysicalQInteractive import *
7117 from IPython.Extensions.PhysicalQInteractive import *
7114 \newline
7118 \newline
7115 import IPython.Extensions.PhysicalQInput
7119 import IPython.Extensions.PhysicalQInput
7116 \layout Section
7120 \layout Section
7117
7121
7118
7122
7119 \begin_inset LatexCommand \label{sec:IPython-as-shell}
7123 \begin_inset LatexCommand \label{sec:IPython-as-shell}
7120
7124
7121 \end_inset
7125 \end_inset
7122
7126
7123 IPython as a system shell
7127 IPython as a system shell
7124 \layout Standard
7128 \layout Standard
7125
7129
7126 IPython ships with a special profile called
7130 IPython ships with a special profile called
7127 \family typewriter
7131 \family typewriter
7128 pysh
7132 pysh
7129 \family default
7133 \family default
7130 , which you can activate at the command line as
7134 , which you can activate at the command line as
7131 \family typewriter
7135 \family typewriter
7132 `ipython -p pysh'
7136 `ipython -p pysh'
7133 \family default
7137 \family default
7134 .
7138 .
7135 This loads
7139 This loads
7136 \family typewriter
7140 \family typewriter
7137 InterpreterExec
7141 InterpreterExec
7138 \family default
7142 \family default
7139 , along with some additional facilities and a prompt customized for filesystem
7143 , along with some additional facilities and a prompt customized for filesystem
7140 navigation.
7144 navigation.
7141 \layout Standard
7145 \layout Standard
7142
7146
7143 Note that this does
7147 Note that this does
7144 \emph on
7148 \emph on
7145 not
7149 not
7146 \emph default
7150 \emph default
7147 make IPython a full-fledged system shell.
7151 make IPython a full-fledged system shell.
7148 In particular, it has no job control, so if you type Ctrl-Z (under Unix),
7152 In particular, it has no job control, so if you type Ctrl-Z (under Unix),
7149 you'll suspend pysh itself, not the process you just started.
7153 you'll suspend pysh itself, not the process you just started.
7150
7154
7151 \layout Standard
7155 \layout Standard
7152
7156
7153 What the shell profile allows you to do is to use the convenient and powerful
7157 What the shell profile allows you to do is to use the convenient and powerful
7154 syntax of Python to do quick scripting at the command line.
7158 syntax of Python to do quick scripting at the command line.
7155 Below we describe some of its features.
7159 Below we describe some of its features.
7156 \layout Subsection
7160 \layout Subsection
7157
7161
7158 Aliases
7162 Aliases
7159 \layout Standard
7163 \layout Standard
7160
7164
7161 All of your
7165 All of your
7162 \family typewriter
7166 \family typewriter
7163 $PATH
7167 $PATH
7164 \family default
7168 \family default
7165 has been loaded as IPython aliases, so you should be able to type any normal
7169 has been loaded as IPython aliases, so you should be able to type any normal
7166 system command and have it executed.
7170 system command and have it executed.
7167 See
7171 See
7168 \family typewriter
7172 \family typewriter
7169 %alias?
7173 %alias?
7170 \family default
7174 \family default
7171 and
7175 and
7172 \family typewriter
7176 \family typewriter
7173 %unalias?
7177 %unalias?
7174 \family default
7178 \family default
7175 for details on the alias facilities.
7179 for details on the alias facilities.
7176 See also
7180 See also
7177 \family typewriter
7181 \family typewriter
7178 %rehash?
7182 %rehash?
7179 \family default
7183 \family default
7180 and
7184 and
7181 \family typewriter
7185 \family typewriter
7182 %rehashx?
7186 %rehashx?
7183 \family default
7187 \family default
7184 for details on the mechanism used to load
7188 for details on the mechanism used to load
7185 \family typewriter
7189 \family typewriter
7186 $PATH
7190 $PATH
7187 \family default
7191 \family default
7188 .
7192 .
7189 \layout Subsection
7193 \layout Subsection
7190
7194
7191 Special syntax
7195 Special syntax
7192 \layout Standard
7196 \layout Standard
7193
7197
7194 Any lines which begin with
7198 Any lines which begin with
7195 \family typewriter
7199 \family typewriter
7196 `~'
7200 `~'
7197 \family default
7201 \family default
7198 ,
7202 ,
7199 \family typewriter
7203 \family typewriter
7200 `/'
7204 `/'
7201 \family default
7205 \family default
7202 and
7206 and
7203 \family typewriter
7207 \family typewriter
7204 `.'
7208 `.'
7205 \family default
7209 \family default
7206 will be executed as shell commands instead of as Python code.
7210 will be executed as shell commands instead of as Python code.
7207 The special escapes below are also recognized.
7211 The special escapes below are also recognized.
7208
7212
7209 \family typewriter
7213 \family typewriter
7210 !cmd
7214 !cmd
7211 \family default
7215 \family default
7212 is valid in single or multi-line input, all others are only valid in single-lin
7216 is valid in single or multi-line input, all others are only valid in single-lin
7213 e input:
7217 e input:
7214 \layout Description
7218 \layout Description
7215
7219
7216
7220
7217 \family typewriter
7221 \family typewriter
7218 !cmd
7222 !cmd
7219 \family default
7223 \family default
7220 pass `cmd' directly to the shell
7224 pass `cmd' directly to the shell
7221 \layout Description
7225 \layout Description
7222
7226
7223
7227
7224 \family typewriter
7228 \family typewriter
7225 !!cmd
7229 !!cmd
7226 \family default
7230 \family default
7227 execute `cmd' and return output as a list (split on `
7231 execute `cmd' and return output as a list (split on `
7228 \backslash
7232 \backslash
7229 n')
7233 n')
7230 \layout Description
7234 \layout Description
7231
7235
7232
7236
7233 \family typewriter
7237 \family typewriter
7234 $var=cmd
7238 $var=cmd
7235 \family default
7239 \family default
7236 capture output of cmd into var, as a string
7240 capture output of cmd into var, as a string
7237 \layout Description
7241 \layout Description
7238
7242
7239
7243
7240 \family typewriter
7244 \family typewriter
7241 $$var=cmd
7245 $$var=cmd
7242 \family default
7246 \family default
7243 capture output of cmd into var, as a list (split on `
7247 capture output of cmd into var, as a list (split on `
7244 \backslash
7248 \backslash
7245 n')
7249 n')
7246 \layout Standard
7250 \layout Standard
7247
7251
7248 The
7252 The
7249 \family typewriter
7253 \family typewriter
7250 $
7254 $
7251 \family default
7255 \family default
7252 /
7256 /
7253 \family typewriter
7257 \family typewriter
7254 $$
7258 $$
7255 \family default
7259 \family default
7256 syntaxes make Python variables from system output, which you can later
7260 syntaxes make Python variables from system output, which you can later
7257 use for further scripting.
7261 use for further scripting.
7258 The converse is also possible: when executing an alias or calling to the
7262 The converse is also possible: when executing an alias or calling to the
7259 system via
7263 system via
7260 \family typewriter
7264 \family typewriter
7261 !
7265 !
7262 \family default
7266 \family default
7263 /
7267 /
7264 \family typewriter
7268 \family typewriter
7265 !!
7269 !!
7266 \family default
7270 \family default
7267 , you can expand any python variable or expression by prepending it with
7271 , you can expand any python variable or expression by prepending it with
7268
7272
7269 \family typewriter
7273 \family typewriter
7270 $
7274 $
7271 \family default
7275 \family default
7272 .
7276 .
7273 Full details of the allowed syntax can be found in Python's PEP 215.
7277 Full details of the allowed syntax can be found in Python's PEP 215.
7274 \layout Standard
7278 \layout Standard
7275
7279
7276 A few brief examples will illustrate these (note that the indentation below
7280 A few brief examples will illustrate these (note that the indentation below
7277 may be incorrectly displayed):
7281 may be incorrectly displayed):
7278 \layout Standard
7282 \layout Standard
7279
7283
7280
7284
7281 \family typewriter
7285 \family typewriter
7282 fperez[~/test]|3> !ls *s.py
7286 fperez[~/test]|3> !ls *s.py
7283 \newline
7287 \newline
7284 scopes.py strings.py
7288 scopes.py strings.py
7285 \layout Standard
7289 \layout Standard
7286
7290
7287 ls is an internal alias, so there's no need to use
7291 ls is an internal alias, so there's no need to use
7288 \family typewriter
7292 \family typewriter
7289 !
7293 !
7290 \family default
7294 \family default
7291 :
7295 :
7292 \layout Standard
7296 \layout Standard
7293
7297
7294
7298
7295 \family typewriter
7299 \family typewriter
7296 fperez[~/test]|4> ls *s.py
7300 fperez[~/test]|4> ls *s.py
7297 \newline
7301 \newline
7298 scopes.py* strings.py
7302 scopes.py* strings.py
7299 \layout Standard
7303 \layout Standard
7300
7304
7301 !!ls will return the output into a Python variable:
7305 !!ls will return the output into a Python variable:
7302 \layout Standard
7306 \layout Standard
7303
7307
7304
7308
7305 \family typewriter
7309 \family typewriter
7306 fperez[~/test]|5> !!ls *s.py
7310 fperez[~/test]|5> !!ls *s.py
7307 \newline
7311 \newline
7308
7312
7309 \begin_inset ERT
7313 \begin_inset ERT
7310 status Collapsed
7314 status Collapsed
7311
7315
7312 \layout Standard
7316 \layout Standard
7313
7317
7314 \backslash
7318 \backslash
7315 hspace*{0mm}
7319 hspace*{0mm}
7316 \end_inset
7320 \end_inset
7317
7321
7318 \SpecialChar ~
7322 \SpecialChar ~
7319 \SpecialChar ~
7323 \SpecialChar ~
7320 \SpecialChar ~
7324 \SpecialChar ~
7321 \SpecialChar ~
7325 \SpecialChar ~
7322 \SpecialChar ~
7326 \SpecialChar ~
7323 \SpecialChar ~
7327 \SpecialChar ~
7324 \SpecialChar ~
7328 \SpecialChar ~
7325 \SpecialChar ~
7329 \SpecialChar ~
7326 \SpecialChar ~
7330 \SpecialChar ~
7327 \SpecialChar ~
7331 \SpecialChar ~
7328 \SpecialChar ~
7332 \SpecialChar ~
7329 \SpecialChar ~
7333 \SpecialChar ~
7330 \SpecialChar ~
7334 \SpecialChar ~
7331 \SpecialChar ~
7335 \SpecialChar ~
7332 <5> ['scopes.py', 'strings.py']
7336 <5> ['scopes.py', 'strings.py']
7333 \newline
7337 \newline
7334 fperez[~/test]|6> print _5
7338 fperez[~/test]|6> print _5
7335 \newline
7339 \newline
7336 ['scopes.py', 'strings.py']
7340 ['scopes.py', 'strings.py']
7337 \layout Standard
7341 \layout Standard
7338
7342
7339
7343
7340 \family typewriter
7344 \family typewriter
7341 $
7345 $
7342 \family default
7346 \family default
7343 and
7347 and
7344 \family typewriter
7348 \family typewriter
7345 $$
7349 $$
7346 \family default
7350 \family default
7347 allow direct capture to named variables:
7351 allow direct capture to named variables:
7348 \layout Standard
7352 \layout Standard
7349
7353
7350
7354
7351 \family typewriter
7355 \family typewriter
7352 fperez[~/test]|7> $astr = ls *s.py
7356 fperez[~/test]|7> $astr = ls *s.py
7353 \newline
7357 \newline
7354 fperez[~/test]|8> astr
7358 fperez[~/test]|8> astr
7355 \newline
7359 \newline
7356
7360
7357 \begin_inset ERT
7361 \begin_inset ERT
7358 status Collapsed
7362 status Collapsed
7359
7363
7360 \layout Standard
7364 \layout Standard
7361
7365
7362 \backslash
7366 \backslash
7363 hspace*{0mm}
7367 hspace*{0mm}
7364 \end_inset
7368 \end_inset
7365
7369
7366 \SpecialChar ~
7370 \SpecialChar ~
7367 \SpecialChar ~
7371 \SpecialChar ~
7368 \SpecialChar ~
7372 \SpecialChar ~
7369 \SpecialChar ~
7373 \SpecialChar ~
7370 \SpecialChar ~
7374 \SpecialChar ~
7371 \SpecialChar ~
7375 \SpecialChar ~
7372 \SpecialChar ~
7376 \SpecialChar ~
7373 \SpecialChar ~
7377 \SpecialChar ~
7374 \SpecialChar ~
7378 \SpecialChar ~
7375 \SpecialChar ~
7379 \SpecialChar ~
7376 \SpecialChar ~
7380 \SpecialChar ~
7377 \SpecialChar ~
7381 \SpecialChar ~
7378 \SpecialChar ~
7382 \SpecialChar ~
7379 \SpecialChar ~
7383 \SpecialChar ~
7380 <8> 'scopes.py
7384 <8> 'scopes.py
7381 \backslash
7385 \backslash
7382 nstrings.py'
7386 nstrings.py'
7383 \layout Standard
7387 \layout Standard
7384
7388
7385
7389
7386 \family typewriter
7390 \family typewriter
7387 fperez[~/test]|9> $$alist = ls *s.py
7391 fperez[~/test]|9> $$alist = ls *s.py
7388 \newline
7392 \newline
7389 fperez[~/test]|10> alist
7393 fperez[~/test]|10> alist
7390 \newline
7394 \newline
7391
7395
7392 \begin_inset ERT
7396 \begin_inset ERT
7393 status Collapsed
7397 status Collapsed
7394
7398
7395 \layout Standard
7399 \layout Standard
7396
7400
7397 \backslash
7401 \backslash
7398 hspace*{0mm}
7402 hspace*{0mm}
7399 \end_inset
7403 \end_inset
7400
7404
7401 \SpecialChar ~
7405 \SpecialChar ~
7402 \SpecialChar ~
7406 \SpecialChar ~
7403 \SpecialChar ~
7407 \SpecialChar ~
7404 \SpecialChar ~
7408 \SpecialChar ~
7405 \SpecialChar ~
7409 \SpecialChar ~
7406 \SpecialChar ~
7410 \SpecialChar ~
7407 \SpecialChar ~
7411 \SpecialChar ~
7408 \SpecialChar ~
7412 \SpecialChar ~
7409 \SpecialChar ~
7413 \SpecialChar ~
7410 \SpecialChar ~
7414 \SpecialChar ~
7411 \SpecialChar ~
7415 \SpecialChar ~
7412 \SpecialChar ~
7416 \SpecialChar ~
7413 \SpecialChar ~
7417 \SpecialChar ~
7414 \SpecialChar ~
7418 \SpecialChar ~
7415 <10> ['scopes.py', 'strings.py']
7419 <10> ['scopes.py', 'strings.py']
7416 \layout Standard
7420 \layout Standard
7417
7421
7418 alist is now a normal python list you can loop over.
7422 alist is now a normal python list you can loop over.
7419 Using
7423 Using
7420 \family typewriter
7424 \family typewriter
7421 $
7425 $
7422 \family default
7426 \family default
7423 will expand back the python values when alias calls are made:
7427 will expand back the python values when alias calls are made:
7424 \layout Standard
7428 \layout Standard
7425
7429
7426
7430
7427 \family typewriter
7431 \family typewriter
7428 fperez[~/test]|11> for f in alist:
7432 fperez[~/test]|11> for f in alist:
7429 \newline
7433 \newline
7430
7434
7431 \begin_inset ERT
7435 \begin_inset ERT
7432 status Collapsed
7436 status Collapsed
7433
7437
7434 \layout Standard
7438 \layout Standard
7435
7439
7436 \backslash
7440 \backslash
7437 hspace*{0mm}
7441 hspace*{0mm}
7438 \end_inset
7442 \end_inset
7439
7443
7440 \SpecialChar ~
7444 \SpecialChar ~
7441 \SpecialChar ~
7445 \SpecialChar ~
7442 \SpecialChar ~
7446 \SpecialChar ~
7443 \SpecialChar ~
7447 \SpecialChar ~
7444 \SpecialChar ~
7448 \SpecialChar ~
7445 \SpecialChar ~
7449 \SpecialChar ~
7446 \SpecialChar ~
7450 \SpecialChar ~
7447 \SpecialChar ~
7451 \SpecialChar ~
7448 \SpecialChar ~
7452 \SpecialChar ~
7449 \SpecialChar ~
7453 \SpecialChar ~
7450 \SpecialChar ~
7454 \SpecialChar ~
7451 \SpecialChar ~
7455 \SpecialChar ~
7452 \SpecialChar ~
7456 \SpecialChar ~
7453 \SpecialChar ~
7457 \SpecialChar ~
7454 |..> \SpecialChar ~
7458 |..> \SpecialChar ~
7455 \SpecialChar ~
7459 \SpecialChar ~
7456 \SpecialChar ~
7460 \SpecialChar ~
7457 \SpecialChar ~
7461 \SpecialChar ~
7458 print 'file',f,
7462 print 'file',f,
7459 \newline
7463 \newline
7460
7464
7461 \begin_inset ERT
7465 \begin_inset ERT
7462 status Collapsed
7466 status Collapsed
7463
7467
7464 \layout Standard
7468 \layout Standard
7465
7469
7466 \backslash
7470 \backslash
7467 hspace*{0mm}
7471 hspace*{0mm}
7468 \end_inset
7472 \end_inset
7469
7473
7470 \SpecialChar ~
7474 \SpecialChar ~
7471 \SpecialChar ~
7475 \SpecialChar ~
7472 \SpecialChar ~
7476 \SpecialChar ~
7473 \SpecialChar ~
7477 \SpecialChar ~
7474 \SpecialChar ~
7478 \SpecialChar ~
7475 \SpecialChar ~
7479 \SpecialChar ~
7476 \SpecialChar ~
7480 \SpecialChar ~
7477 \SpecialChar ~
7481 \SpecialChar ~
7478 \SpecialChar ~
7482 \SpecialChar ~
7479 \SpecialChar ~
7483 \SpecialChar ~
7480 \SpecialChar ~
7484 \SpecialChar ~
7481 \SpecialChar ~
7485 \SpecialChar ~
7482 \SpecialChar ~
7486 \SpecialChar ~
7483 \SpecialChar ~
7487 \SpecialChar ~
7484 |..> \SpecialChar ~
7488 |..> \SpecialChar ~
7485 \SpecialChar ~
7489 \SpecialChar ~
7486 \SpecialChar ~
7490 \SpecialChar ~
7487 \SpecialChar ~
7491 \SpecialChar ~
7488 wc -l $f
7492 wc -l $f
7489 \newline
7493 \newline
7490
7494
7491 \begin_inset ERT
7495 \begin_inset ERT
7492 status Collapsed
7496 status Collapsed
7493
7497
7494 \layout Standard
7498 \layout Standard
7495
7499
7496 \backslash
7500 \backslash
7497 hspace*{0mm}
7501 hspace*{0mm}
7498 \end_inset
7502 \end_inset
7499
7503
7500 \SpecialChar ~
7504 \SpecialChar ~
7501 \SpecialChar ~
7505 \SpecialChar ~
7502 \SpecialChar ~
7506 \SpecialChar ~
7503 \SpecialChar ~
7507 \SpecialChar ~
7504 \SpecialChar ~
7508 \SpecialChar ~
7505 \SpecialChar ~
7509 \SpecialChar ~
7506 \SpecialChar ~
7510 \SpecialChar ~
7507 \SpecialChar ~
7511 \SpecialChar ~
7508 \SpecialChar ~
7512 \SpecialChar ~
7509 \SpecialChar ~
7513 \SpecialChar ~
7510 \SpecialChar ~
7514 \SpecialChar ~
7511 \SpecialChar ~
7515 \SpecialChar ~
7512 \SpecialChar ~
7516 \SpecialChar ~
7513 \SpecialChar ~
7517 \SpecialChar ~
7514 |..>
7518 |..>
7515 \newline
7519 \newline
7516 file scopes.py 13 scopes.py
7520 file scopes.py 13 scopes.py
7517 \newline
7521 \newline
7518 file strings.py 4 strings.py
7522 file strings.py 4 strings.py
7519 \layout Standard
7523 \layout Standard
7520
7524
7521 Note that you may need to protect your variables with braces if you want
7525 Note that you may need to protect your variables with braces if you want
7522 to append strings to their names.
7526 to append strings to their names.
7523 To copy all files in alist to
7527 To copy all files in alist to
7524 \family typewriter
7528 \family typewriter
7525 .bak
7529 .bak
7526 \family default
7530 \family default
7527 extensions, you must use:
7531 extensions, you must use:
7528 \layout Standard
7532 \layout Standard
7529
7533
7530
7534
7531 \family typewriter
7535 \family typewriter
7532 fperez[~/test]|12> for f in alist:
7536 fperez[~/test]|12> for f in alist:
7533 \newline
7537 \newline
7534
7538
7535 \begin_inset ERT
7539 \begin_inset ERT
7536 status Collapsed
7540 status Collapsed
7537
7541
7538 \layout Standard
7542 \layout Standard
7539
7543
7540 \backslash
7544 \backslash
7541 hspace*{0mm}
7545 hspace*{0mm}
7542 \end_inset
7546 \end_inset
7543
7547
7544 \SpecialChar ~
7548 \SpecialChar ~
7545 \SpecialChar ~
7549 \SpecialChar ~
7546 \SpecialChar ~
7550 \SpecialChar ~
7547 \SpecialChar ~
7551 \SpecialChar ~
7548 \SpecialChar ~
7552 \SpecialChar ~
7549 \SpecialChar ~
7553 \SpecialChar ~
7550 \SpecialChar ~
7554 \SpecialChar ~
7551 \SpecialChar ~
7555 \SpecialChar ~
7552 \SpecialChar ~
7556 \SpecialChar ~
7553 \SpecialChar ~
7557 \SpecialChar ~
7554 \SpecialChar ~
7558 \SpecialChar ~
7555 \SpecialChar ~
7559 \SpecialChar ~
7556 \SpecialChar ~
7560 \SpecialChar ~
7557 \SpecialChar ~
7561 \SpecialChar ~
7558 |..> \SpecialChar ~
7562 |..> \SpecialChar ~
7559 \SpecialChar ~
7563 \SpecialChar ~
7560 \SpecialChar ~
7564 \SpecialChar ~
7561 \SpecialChar ~
7565 \SpecialChar ~
7562 cp $f ${f}.bak
7566 cp $f ${f}.bak
7563 \layout Standard
7567 \layout Standard
7564
7568
7565 If you try using
7569 If you try using
7566 \family typewriter
7570 \family typewriter
7567 $f.bak
7571 $f.bak
7568 \family default
7572 \family default
7569 , you'll get an AttributeError exception saying that your string object
7573 , you'll get an AttributeError exception saying that your string object
7570 doesn't have a
7574 doesn't have a
7571 \family typewriter
7575 \family typewriter
7572 .bak
7576 .bak
7573 \family default
7577 \family default
7574 attribute.
7578 attribute.
7575 This is because the
7579 This is because the
7576 \family typewriter
7580 \family typewriter
7577 $
7581 $
7578 \family default
7582 \family default
7579 expansion mechanism allows you to expand full Python expressions:
7583 expansion mechanism allows you to expand full Python expressions:
7580 \layout Standard
7584 \layout Standard
7581
7585
7582
7586
7583 \family typewriter
7587 \family typewriter
7584 fperez[~/test]|13> echo "sys.platform is: $sys.platform"
7588 fperez[~/test]|13> echo "sys.platform is: $sys.platform"
7585 \newline
7589 \newline
7586 sys.platform is: linux2
7590 sys.platform is: linux2
7587 \layout Standard
7591 \layout Standard
7588
7592
7589 IPython's input history handling is still active, which allows you to rerun
7593 IPython's input history handling is still active, which allows you to rerun
7590 a single block of multi-line input by simply using exec:
7594 a single block of multi-line input by simply using exec:
7591 \newline
7595 \newline
7592
7596
7593 \family typewriter
7597 \family typewriter
7594 fperez[~/test]|14> $$alist = ls *.eps
7598 fperez[~/test]|14> $$alist = ls *.eps
7595 \newline
7599 \newline
7596 fperez[~/test]|15> exec _i11
7600 fperez[~/test]|15> exec _i11
7597 \newline
7601 \newline
7598 file image2.eps 921 image2.eps
7602 file image2.eps 921 image2.eps
7599 \newline
7603 \newline
7600 file image.eps 921 image.eps
7604 file image.eps 921 image.eps
7601 \layout Standard
7605 \layout Standard
7602
7606
7603 While these are new special-case syntaxes, they are designed to allow very
7607 While these are new special-case syntaxes, they are designed to allow very
7604 efficient use of the shell with minimal typing.
7608 efficient use of the shell with minimal typing.
7605 At an interactive shell prompt, conciseness of expression wins over readability.
7609 At an interactive shell prompt, conciseness of expression wins over readability.
7606 \layout Subsection
7610 \layout Subsection
7607
7611
7608 Useful functions and modules
7612 Useful functions and modules
7609 \layout Standard
7613 \layout Standard
7610
7614
7611 The os, sys and shutil modules from the Python standard library are automaticall
7615 The os, sys and shutil modules from the Python standard library are automaticall
7612 y loaded.
7616 y loaded.
7613 Some additional functions, useful for shell usage, are listed below.
7617 Some additional functions, useful for shell usage, are listed below.
7614 You can request more help about them with `
7618 You can request more help about them with `
7615 \family typewriter
7619 \family typewriter
7616 ?
7620 ?
7617 \family default
7621 \family default
7618 '.
7622 '.
7619 \layout Description
7623 \layout Description
7620
7624
7621
7625
7622 \family typewriter
7626 \family typewriter
7623 shell
7627 shell
7624 \family default
7628 \family default
7625 - execute a command in the underlying system shell
7629 - execute a command in the underlying system shell
7626 \layout Description
7630 \layout Description
7627
7631
7628
7632
7629 \family typewriter
7633 \family typewriter
7630 system
7634 system
7631 \family default
7635 \family default
7632 - like
7636 - like
7633 \family typewriter
7637 \family typewriter
7634 shell()
7638 shell()
7635 \family default
7639 \family default
7636 , but return the exit status of the command
7640 , but return the exit status of the command
7637 \layout Description
7641 \layout Description
7638
7642
7639
7643
7640 \family typewriter
7644 \family typewriter
7641 sout
7645 sout
7642 \family default
7646 \family default
7643 - capture the output of a command as a string
7647 - capture the output of a command as a string
7644 \layout Description
7648 \layout Description
7645
7649
7646
7650
7647 \family typewriter
7651 \family typewriter
7648 lout
7652 lout
7649 \family default
7653 \family default
7650 - capture the output of a command as a list (split on `
7654 - capture the output of a command as a list (split on `
7651 \backslash
7655 \backslash
7652 n')
7656 n')
7653 \layout Description
7657 \layout Description
7654
7658
7655
7659
7656 \family typewriter
7660 \family typewriter
7657 getoutputerror
7661 getoutputerror
7658 \family default
7662 \family default
7659 - capture (output,error) of a shell commandss
7663 - capture (output,error) of a shell commandss
7660 \layout Standard
7664 \layout Standard
7661
7665
7662
7666
7663 \family typewriter
7667 \family typewriter
7664 sout
7668 sout
7665 \family default
7669 \family default
7666 /
7670 /
7667 \family typewriter
7671 \family typewriter
7668 lout
7672 lout
7669 \family default
7673 \family default
7670 are the functional equivalents of
7674 are the functional equivalents of
7671 \family typewriter
7675 \family typewriter
7672 $
7676 $
7673 \family default
7677 \family default
7674 /
7678 /
7675 \family typewriter
7679 \family typewriter
7676 $$
7680 $$
7677 \family default
7681 \family default
7678 .
7682 .
7679 They are provided to allow you to capture system output in the middle of
7683 They are provided to allow you to capture system output in the middle of
7680 true python code, function definitions, etc (where
7684 true python code, function definitions, etc (where
7681 \family typewriter
7685 \family typewriter
7682 $
7686 $
7683 \family default
7687 \family default
7684 and
7688 and
7685 \family typewriter
7689 \family typewriter
7686 $$
7690 $$
7687 \family default
7691 \family default
7688 are invalid).
7692 are invalid).
7689 \layout Subsection
7693 \layout Subsection
7690
7694
7691 Directory management
7695 Directory management
7692 \layout Standard
7696 \layout Standard
7693
7697
7694 Since each command passed by pysh to the underlying system is executed in
7698 Since each command passed by pysh to the underlying system is executed in
7695 a subshell which exits immediately, you can NOT use !cd to navigate the
7699 a subshell which exits immediately, you can NOT use !cd to navigate the
7696 filesystem.
7700 filesystem.
7697 \layout Standard
7701 \layout Standard
7698
7702
7699 Pysh provides its own builtin
7703 Pysh provides its own builtin
7700 \family typewriter
7704 \family typewriter
7701 `%cd
7705 `%cd
7702 \family default
7706 \family default
7703 ' magic command to move in the filesystem (the
7707 ' magic command to move in the filesystem (the
7704 \family typewriter
7708 \family typewriter
7705 %
7709 %
7706 \family default
7710 \family default
7707 is not required with automagic on).
7711 is not required with automagic on).
7708 It also maintains a list of visited directories (use
7712 It also maintains a list of visited directories (use
7709 \family typewriter
7713 \family typewriter
7710 %dhist
7714 %dhist
7711 \family default
7715 \family default
7712 to see it) and allows direct switching to any of them.
7716 to see it) and allows direct switching to any of them.
7713 Type
7717 Type
7714 \family typewriter
7718 \family typewriter
7715 `cd?
7719 `cd?
7716 \family default
7720 \family default
7717 ' for more details.
7721 ' for more details.
7718 \layout Standard
7722 \layout Standard
7719
7723
7720
7724
7721 \family typewriter
7725 \family typewriter
7722 %pushd
7726 %pushd
7723 \family default
7727 \family default
7724 ,
7728 ,
7725 \family typewriter
7729 \family typewriter
7726 %popd
7730 %popd
7727 \family default
7731 \family default
7728 and
7732 and
7729 \family typewriter
7733 \family typewriter
7730 %dirs
7734 %dirs
7731 \family default
7735 \family default
7732 are provided for directory stack handling.
7736 are provided for directory stack handling.
7733 \layout Subsection
7737 \layout Subsection
7734
7738
7735 Prompt customization
7739 Prompt customization
7736 \layout Standard
7740 \layout Standard
7737
7741
7738 The supplied
7742 The supplied
7739 \family typewriter
7743 \family typewriter
7740 ipythonrc-pysh
7744 ipythonrc-pysh
7741 \family default
7745 \family default
7742 profile comes with an example of a very colored and detailed prompt, mainly
7746 profile comes with an example of a very colored and detailed prompt, mainly
7743 to serve as an illustration.
7747 to serve as an illustration.
7744 The valid escape sequences, besides color names, are:
7748 The valid escape sequences, besides color names, are:
7745 \layout Description
7749 \layout Description
7746
7750
7747
7751
7748 \backslash
7752 \backslash
7749 # - Prompt number.
7753 # - Prompt number.
7750 \layout Description
7754 \layout Description
7751
7755
7752
7756
7753 \backslash
7757 \backslash
7754 D - Dots, as many as there are digits in
7758 D - Dots, as many as there are digits in
7755 \backslash
7759 \backslash
7756 # (so they align).
7760 # (so they align).
7757 \layout Description
7761 \layout Description
7758
7762
7759
7763
7760 \backslash
7764 \backslash
7761 w - Current working directory (cwd).
7765 w - Current working directory (cwd).
7762 \layout Description
7766 \layout Description
7763
7767
7764
7768
7765 \backslash
7769 \backslash
7766 W - Basename of current working directory.
7770 W - Basename of current working directory.
7767 \layout Description
7771 \layout Description
7768
7772
7769
7773
7770 \backslash
7774 \backslash
7771 X
7775 X
7772 \emph on
7776 \emph on
7773 N
7777 N
7774 \emph default
7778 \emph default
7775 - Where
7779 - Where
7776 \emph on
7780 \emph on
7777 N
7781 N
7778 \emph default
7782 \emph default
7779 =0..5.
7783 =0..5.
7780 N terms of the cwd, with $HOME written as ~.
7784 N terms of the cwd, with $HOME written as ~.
7781 \layout Description
7785 \layout Description
7782
7786
7783
7787
7784 \backslash
7788 \backslash
7785 Y
7789 Y
7786 \emph on
7790 \emph on
7787 N
7791 N
7788 \emph default
7792 \emph default
7789 - Where
7793 - Where
7790 \emph on
7794 \emph on
7791 N
7795 N
7792 \emph default
7796 \emph default
7793 =0..5.
7797 =0..5.
7794 Like X
7798 Like X
7795 \emph on
7799 \emph on
7796 N
7800 N
7797 \emph default
7801 \emph default
7798 , but if ~ is term
7802 , but if ~ is term
7799 \emph on
7803 \emph on
7800 N
7804 N
7801 \emph default
7805 \emph default
7802 +1 it's also shown.
7806 +1 it's also shown.
7803 \layout Description
7807 \layout Description
7804
7808
7805
7809
7806 \backslash
7810 \backslash
7807 u - Username.
7811 u - Username.
7808 \layout Description
7812 \layout Description
7809
7813
7810
7814
7811 \backslash
7815 \backslash
7812 H - Full hostname.
7816 H - Full hostname.
7813 \layout Description
7817 \layout Description
7814
7818
7815
7819
7816 \backslash
7820 \backslash
7817 h - Hostname up to first '.'
7821 h - Hostname up to first '.'
7818 \layout Description
7822 \layout Description
7819
7823
7820
7824
7821 \backslash
7825 \backslash
7822 $ - Root symbol ($ or #).
7826 $ - Root symbol ($ or #).
7823
7827
7824 \layout Description
7828 \layout Description
7825
7829
7826
7830
7827 \backslash
7831 \backslash
7828 t - Current time, in H:M:S format.
7832 t - Current time, in H:M:S format.
7829 \layout Description
7833 \layout Description
7830
7834
7831
7835
7832 \backslash
7836 \backslash
7833 v - IPython release version.
7837 v - IPython release version.
7834
7838
7835 \layout Description
7839 \layout Description
7836
7840
7837
7841
7838 \backslash
7842 \backslash
7839 n - Newline.
7843 n - Newline.
7840
7844
7841 \layout Description
7845 \layout Description
7842
7846
7843
7847
7844 \backslash
7848 \backslash
7845 r - Carriage return.
7849 r - Carriage return.
7846
7850
7847 \layout Description
7851 \layout Description
7848
7852
7849
7853
7850 \backslash
7854 \backslash
7851
7855
7852 \backslash
7856 \backslash
7853 - An explicitly escaped '
7857 - An explicitly escaped '
7854 \backslash
7858 \backslash
7855 '.
7859 '.
7856 \layout Standard
7860 \layout Standard
7857
7861
7858 You can configure your prompt colors using any ANSI color escape.
7862 You can configure your prompt colors using any ANSI color escape.
7859 Each color escape sets the color for any subsequent text, until another
7863 Each color escape sets the color for any subsequent text, until another
7860 escape comes in and changes things.
7864 escape comes in and changes things.
7861 The valid color escapes are:
7865 The valid color escapes are:
7862 \layout Description
7866 \layout Description
7863
7867
7864
7868
7865 \backslash
7869 \backslash
7866 C_Black
7870 C_Black
7867 \layout Description
7871 \layout Description
7868
7872
7869
7873
7870 \backslash
7874 \backslash
7871 C_Blue
7875 C_Blue
7872 \layout Description
7876 \layout Description
7873
7877
7874
7878
7875 \backslash
7879 \backslash
7876 C_Brown
7880 C_Brown
7877 \layout Description
7881 \layout Description
7878
7882
7879
7883
7880 \backslash
7884 \backslash
7881 C_Cyan
7885 C_Cyan
7882 \layout Description
7886 \layout Description
7883
7887
7884
7888
7885 \backslash
7889 \backslash
7886 C_DarkGray
7890 C_DarkGray
7887 \layout Description
7891 \layout Description
7888
7892
7889
7893
7890 \backslash
7894 \backslash
7891 C_Green
7895 C_Green
7892 \layout Description
7896 \layout Description
7893
7897
7894
7898
7895 \backslash
7899 \backslash
7896 C_LightBlue
7900 C_LightBlue
7897 \layout Description
7901 \layout Description
7898
7902
7899
7903
7900 \backslash
7904 \backslash
7901 C_LightCyan
7905 C_LightCyan
7902 \layout Description
7906 \layout Description
7903
7907
7904
7908
7905 \backslash
7909 \backslash
7906 C_LightGray
7910 C_LightGray
7907 \layout Description
7911 \layout Description
7908
7912
7909
7913
7910 \backslash
7914 \backslash
7911 C_LightGreen
7915 C_LightGreen
7912 \layout Description
7916 \layout Description
7913
7917
7914
7918
7915 \backslash
7919 \backslash
7916 C_LightPurple
7920 C_LightPurple
7917 \layout Description
7921 \layout Description
7918
7922
7919
7923
7920 \backslash
7924 \backslash
7921 C_LightRed
7925 C_LightRed
7922 \layout Description
7926 \layout Description
7923
7927
7924
7928
7925 \backslash
7929 \backslash
7926 C_Purple
7930 C_Purple
7927 \layout Description
7931 \layout Description
7928
7932
7929
7933
7930 \backslash
7934 \backslash
7931 C_Red
7935 C_Red
7932 \layout Description
7936 \layout Description
7933
7937
7934
7938
7935 \backslash
7939 \backslash
7936 C_White
7940 C_White
7937 \layout Description
7941 \layout Description
7938
7942
7939
7943
7940 \backslash
7944 \backslash
7941 C_Yellow
7945 C_Yellow
7942 \layout Description
7946 \layout Description
7943
7947
7944
7948
7945 \backslash
7949 \backslash
7946 C_Normal Stop coloring, defaults to your terminal settings.
7950 C_Normal Stop coloring, defaults to your terminal settings.
7947 \layout Section
7951 \layout Section
7948
7952
7949
7953
7950 \begin_inset LatexCommand \label{sec:Threading-support}
7954 \begin_inset LatexCommand \label{sec:Threading-support}
7951
7955
7952 \end_inset
7956 \end_inset
7953
7957
7954 Threading support
7958 Threading support
7955 \layout Standard
7959 \layout Standard
7956
7960
7957
7961
7958 \series bold
7962 \series bold
7959 WARNING:
7963 WARNING:
7960 \series default
7964 \series default
7961 The threading support is still somewhat experimental, and it has only seen
7965 The threading support is still somewhat experimental, and it has only seen
7962 reasonable testing under Linux.
7966 reasonable testing under Linux.
7963 Threaded code is particularly tricky to debug, and it tends to show extremely
7967 Threaded code is particularly tricky to debug, and it tends to show extremely
7964 platform-dependent behavior.
7968 platform-dependent behavior.
7965 Since I only have access to Linux machines, I will have to rely on user's
7969 Since I only have access to Linux machines, I will have to rely on user's
7966 experiences and assistance for this area of IPython to improve under other
7970 experiences and assistance for this area of IPython to improve under other
7967 platforms.
7971 platforms.
7968 \layout Standard
7972 \layout Standard
7969
7973
7970 IPython, via the
7974 IPython, via the
7971 \family typewriter
7975 \family typewriter
7972 -gthread
7976 -gthread
7973 \family default
7977 \family default
7974 ,
7978 ,
7975 \family typewriter
7979 \family typewriter
7976 -qthread
7980 -qthread
7977 \family default
7981 \family default
7978 and
7982 and
7979 \family typewriter
7983 \family typewriter
7980 -wthread
7984 -wthread
7981 \family default
7985 \family default
7982 options (described in Sec.\SpecialChar ~
7986 options (described in Sec.\SpecialChar ~
7983
7987
7984 \begin_inset LatexCommand \ref{sec:threading-opts}
7988 \begin_inset LatexCommand \ref{sec:threading-opts}
7985
7989
7986 \end_inset
7990 \end_inset
7987
7991
7988 ), can run in multithreaded mode to support pyGTK, Qt and WXPython applications
7992 ), can run in multithreaded mode to support pyGTK, Qt and WXPython applications
7989 respectively.
7993 respectively.
7990 These GUI toolkits need to control the python main loop of execution, so
7994 These GUI toolkits need to control the python main loop of execution, so
7991 under a normal Python interpreter, starting a pyGTK, Qt or WXPython application
7995 under a normal Python interpreter, starting a pyGTK, Qt or WXPython application
7992 will immediately freeze the shell.
7996 will immediately freeze the shell.
7993
7997
7994 \layout Standard
7998 \layout Standard
7995
7999
7996 IPython, with one of these options (you can only use one at a time), separates
8000 IPython, with one of these options (you can only use one at a time), separates
7997 the graphical loop and IPython's code execution run into different threads.
8001 the graphical loop and IPython's code execution run into different threads.
7998 This allows you to test interactively (with
8002 This allows you to test interactively (with
7999 \family typewriter
8003 \family typewriter
8000 %run
8004 %run
8001 \family default
8005 \family default
8002 , for example) your GUI code without blocking.
8006 , for example) your GUI code without blocking.
8003 \layout Standard
8007 \layout Standard
8004
8008
8005 A nice mini-tutorial on using IPython along with the Qt Designer application
8009 A nice mini-tutorial on using IPython along with the Qt Designer application
8006 is available at the SciPy wiki:
8010 is available at the SciPy wiki:
8007 \begin_inset LatexCommand \htmlurl{http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer}
8011 \begin_inset LatexCommand \htmlurl{http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer}
8008
8012
8009 \end_inset
8013 \end_inset
8010
8014
8011 .
8015 .
8012 \layout Subsection
8016 \layout Subsection
8013
8017
8014 Tk issues
8018 Tk issues
8015 \layout Standard
8019 \layout Standard
8016
8020
8017 As indicated in Sec.\SpecialChar ~
8021 As indicated in Sec.\SpecialChar ~
8018
8022
8019 \begin_inset LatexCommand \ref{sec:threading-opts}
8023 \begin_inset LatexCommand \ref{sec:threading-opts}
8020
8024
8021 \end_inset
8025 \end_inset
8022
8026
8023 , a special
8027 , a special
8024 \family typewriter
8028 \family typewriter
8025 -tk
8029 -tk
8026 \family default
8030 \family default
8027 option is provided to try and allow Tk graphical applications to coexist
8031 option is provided to try and allow Tk graphical applications to coexist
8028 interactively with WX, Qt or GTK ones.
8032 interactively with WX, Qt or GTK ones.
8029 Whether this works at all, however, is very platform and configuration
8033 Whether this works at all, however, is very platform and configuration
8030 dependent.
8034 dependent.
8031 Please experiment with simple test cases before committing to using this
8035 Please experiment with simple test cases before committing to using this
8032 combination of Tk and GTK/Qt/WX threading in a production environment.
8036 combination of Tk and GTK/Qt/WX threading in a production environment.
8033 \layout Subsection
8037 \layout Subsection
8034
8038
8035 Signals and Threads
8039 Signals and Threads
8036 \layout Standard
8040 \layout Standard
8037
8041
8038 When any of the thread systems (GTK, Qt or WX) are active, either directly
8042 When any of the thread systems (GTK, Qt or WX) are active, either directly
8039 or via
8043 or via
8040 \family typewriter
8044 \family typewriter
8041 -pylab
8045 -pylab
8042 \family default
8046 \family default
8043 with a threaded backend, it is impossible to interrupt long-running Python
8047 with a threaded backend, it is impossible to interrupt long-running Python
8044 code via
8048 code via
8045 \family typewriter
8049 \family typewriter
8046 Ctrl-C
8050 Ctrl-C
8047 \family default
8051 \family default
8048 .
8052 .
8049 IPython can not pass the KeyboardInterrupt exception (or the underlying
8053 IPython can not pass the KeyboardInterrupt exception (or the underlying
8050
8054
8051 \family typewriter
8055 \family typewriter
8052 SIGINT
8056 SIGINT
8053 \family default
8057 \family default
8054 ) across threads, so any long-running process started from IPython will
8058 ) across threads, so any long-running process started from IPython will
8055 run to completion, or will have to be killed via an external (OS-based)
8059 run to completion, or will have to be killed via an external (OS-based)
8056 mechanism.
8060 mechanism.
8057 \layout Standard
8061 \layout Standard
8058
8062
8059 To the best of my knowledge, this limitation is imposed by the Python interprete
8063 To the best of my knowledge, this limitation is imposed by the Python interprete
8060 r itself, and it comes from the difficulty of writing portable signal/threaded
8064 r itself, and it comes from the difficulty of writing portable signal/threaded
8061 code.
8065 code.
8062 If any user is an expert on this topic and can suggest a better solution,
8066 If any user is an expert on this topic and can suggest a better solution,
8063 I would love to hear about it.
8067 I would love to hear about it.
8064 In the IPython sources, look at the
8068 In the IPython sources, look at the
8065 \family typewriter
8069 \family typewriter
8066 Shell.py
8070 Shell.py
8067 \family default
8071 \family default
8068 module, and in particular at the
8072 module, and in particular at the
8069 \family typewriter
8073 \family typewriter
8070 runcode()
8074 runcode()
8071 \family default
8075 \family default
8072 method.
8076 method.
8073
8077
8074 \layout Subsection
8078 \layout Subsection
8075
8079
8076 I/O pitfalls
8080 I/O pitfalls
8077 \layout Standard
8081 \layout Standard
8078
8082
8079 Be mindful that the Python interpreter switches between threads every
8083 Be mindful that the Python interpreter switches between threads every
8080 \begin_inset Formula $N$
8084 \begin_inset Formula $N$
8081 \end_inset
8085 \end_inset
8082
8086
8083 bytecodes, where the default value as of Python\SpecialChar ~
8087 bytecodes, where the default value as of Python\SpecialChar ~
8084 2.3 is
8088 2.3 is
8085 \begin_inset Formula $N=100.$
8089 \begin_inset Formula $N=100.$
8086 \end_inset
8090 \end_inset
8087
8091
8088 This value can be read by using the
8092 This value can be read by using the
8089 \family typewriter
8093 \family typewriter
8090 sys.getcheckinterval()
8094 sys.getcheckinterval()
8091 \family default
8095 \family default
8092 function, and it can be reset via
8096 function, and it can be reset via
8093 \family typewriter
8097 \family typewriter
8094 sys.setcheckinterval(
8098 sys.setcheckinterval(
8095 \emph on
8099 \emph on
8096 N
8100 N
8097 \emph default
8101 \emph default
8098 )
8102 )
8099 \family default
8103 \family default
8100 .
8104 .
8101 This switching of threads can cause subtly confusing effects if one of
8105 This switching of threads can cause subtly confusing effects if one of
8102 your threads is doing file I/O.
8106 your threads is doing file I/O.
8103 In text mode, most systems only flush file buffers when they encounter
8107 In text mode, most systems only flush file buffers when they encounter
8104 a
8108 a
8105 \family typewriter
8109 \family typewriter
8106 `
8110 `
8107 \backslash
8111 \backslash
8108 n'
8112 n'
8109 \family default
8113 \family default
8110 .
8114 .
8111 An instruction as simple as
8115 An instruction as simple as
8112 \family typewriter
8116 \family typewriter
8113
8117
8114 \newline
8118 \newline
8115 \SpecialChar ~
8119 \SpecialChar ~
8116 \SpecialChar ~
8120 \SpecialChar ~
8117 print >> filehandle,
8121 print >> filehandle,
8118 \begin_inset Quotes eld
8122 \begin_inset Quotes eld
8119 \end_inset
8123 \end_inset
8120
8124
8121 hello world
8125 hello world
8122 \begin_inset Quotes erd
8126 \begin_inset Quotes erd
8123 \end_inset
8127 \end_inset
8124
8128
8125
8129
8126 \family default
8130 \family default
8127
8131
8128 \newline
8132 \newline
8129 actually consists of several bytecodes, so it is possible that the newline
8133 actually consists of several bytecodes, so it is possible that the newline
8130 does not reach your file before the next thread switch.
8134 does not reach your file before the next thread switch.
8131 Similarly, if you are writing to a file in binary mode, the file won't
8135 Similarly, if you are writing to a file in binary mode, the file won't
8132 be flushed until the buffer fills, and your other thread may see apparently
8136 be flushed until the buffer fills, and your other thread may see apparently
8133 truncated files.
8137 truncated files.
8134
8138
8135 \layout Standard
8139 \layout Standard
8136
8140
8137 For this reason, if you are using IPython's thread support and have (for
8141 For this reason, if you are using IPython's thread support and have (for
8138 example) a GUI application which will read data generated by files written
8142 example) a GUI application which will read data generated by files written
8139 to from the IPython thread, the safest approach is to open all of your
8143 to from the IPython thread, the safest approach is to open all of your
8140 files in unbuffered mode (the third argument to the
8144 files in unbuffered mode (the third argument to the
8141 \family typewriter
8145 \family typewriter
8142 file/open
8146 file/open
8143 \family default
8147 \family default
8144 function is the buffering value):
8148 function is the buffering value):
8145 \newline
8149 \newline
8146
8150
8147 \family typewriter
8151 \family typewriter
8148 \SpecialChar ~
8152 \SpecialChar ~
8149 \SpecialChar ~
8153 \SpecialChar ~
8150 filehandle = open(filename,mode,0)
8154 filehandle = open(filename,mode,0)
8151 \layout Standard
8155 \layout Standard
8152
8156
8153 This is obviously a brute force way of avoiding race conditions with the
8157 This is obviously a brute force way of avoiding race conditions with the
8154 file buffering.
8158 file buffering.
8155 If you want to do it cleanly, and you have a resource which is being shared
8159 If you want to do it cleanly, and you have a resource which is being shared
8156 by the interactive IPython loop and your GUI thread, you should really
8160 by the interactive IPython loop and your GUI thread, you should really
8157 handle it with thread locking and syncrhonization properties.
8161 handle it with thread locking and syncrhonization properties.
8158 The Python documentation discusses these.
8162 The Python documentation discusses these.
8159 \layout Section
8163 \layout Section
8160
8164
8161
8165
8162 \begin_inset LatexCommand \label{sec:interactive-demos}
8166 \begin_inset LatexCommand \label{sec:interactive-demos}
8163
8167
8164 \end_inset
8168 \end_inset
8165
8169
8166 Interactive demos with IPython
8170 Interactive demos with IPython
8167 \layout Standard
8171 \layout Standard
8168
8172
8169 IPython ships with a basic system for running scripts interactively in sections,
8173 IPython ships with a basic system for running scripts interactively in sections,
8170 useful when presenting code to audiences.
8174 useful when presenting code to audiences.
8171 A few tags embedded in comments (so that the script remains valid Python
8175 A few tags embedded in comments (so that the script remains valid Python
8172 code) divide a file into separate blocks, and the demo can be run one block
8176 code) divide a file into separate blocks, and the demo can be run one block
8173 at a time, with IPython printing (with syntax highlighting) the block before
8177 at a time, with IPython printing (with syntax highlighting) the block before
8174 executing it, and returning to the interactive prompt after each block.
8178 executing it, and returning to the interactive prompt after each block.
8175 The interactive namespace is updated after each block is run with the contents
8179 The interactive namespace is updated after each block is run with the contents
8176 of the demo's namespace.
8180 of the demo's namespace.
8177 \layout Standard
8181 \layout Standard
8178
8182
8179 This allows you to show a piece of code, run it and then execute interactively
8183 This allows you to show a piece of code, run it and then execute interactively
8180 commands based on the variables just created.
8184 commands based on the variables just created.
8181 Once you want to continue, you simply execute the next block of the demo.
8185 Once you want to continue, you simply execute the next block of the demo.
8182 The following listing shows the markup necessary for dividing a script
8186 The following listing shows the markup necessary for dividing a script
8183 into sections for execution as a demo.
8187 into sections for execution as a demo.
8184 \layout Standard
8188 \layout Standard
8185
8189
8186
8190
8187 \begin_inset ERT
8191 \begin_inset ERT
8188 status Open
8192 status Open
8189
8193
8190 \layout Standard
8194 \layout Standard
8191
8195
8192 \backslash
8196 \backslash
8193 codelist{examples/example-demo.py}
8197 codelist{examples/example-demo.py}
8194 \end_inset
8198 \end_inset
8195
8199
8196
8200
8197 \layout Standard
8201 \layout Standard
8198
8202
8199 In order to run a file as a demo, you must first make a
8203 In order to run a file as a demo, you must first make a
8200 \family typewriter
8204 \family typewriter
8201 Demo
8205 Demo
8202 \family default
8206 \family default
8203 object out of it.
8207 object out of it.
8204 If the file is named
8208 If the file is named
8205 \family typewriter
8209 \family typewriter
8206 myscript.py
8210 myscript.py
8207 \family default
8211 \family default
8208 , the following code will make a demo:
8212 , the following code will make a demo:
8209 \layout LyX-Code
8213 \layout LyX-Code
8210
8214
8211 from IPython.demo import Demo
8215 from IPython.demo import Demo
8212 \layout LyX-Code
8216 \layout LyX-Code
8213
8217
8214 mydemo = Demo('myscript.py')
8218 mydemo = Demo('myscript.py')
8215 \layout Standard
8219 \layout Standard
8216
8220
8217 This creates the
8221 This creates the
8218 \family typewriter
8222 \family typewriter
8219 mydemo
8223 mydemo
8220 \family default
8224 \family default
8221 object, whose blocks you run one at a time by simply calling the object
8225 object, whose blocks you run one at a time by simply calling the object
8222 with no arguments.
8226 with no arguments.
8223 If you have autocall active in IPython (the default), all you need to do
8227 If you have autocall active in IPython (the default), all you need to do
8224 is type
8228 is type
8225 \layout LyX-Code
8229 \layout LyX-Code
8226
8230
8227 mydemo
8231 mydemo
8228 \layout Standard
8232 \layout Standard
8229
8233
8230 and IPython will call it, executing each block.
8234 and IPython will call it, executing each block.
8231 Demo objects can be restarted, you can move forward or back skipping blocks,
8235 Demo objects can be restarted, you can move forward or back skipping blocks,
8232 re-execute the last block, etc.
8236 re-execute the last block, etc.
8233 Simply use the Tab key on a demo object to see its methods, and call
8237 Simply use the Tab key on a demo object to see its methods, and call
8234 \family typewriter
8238 \family typewriter
8235 `?'
8239 `?'
8236 \family default
8240 \family default
8237 on them to see their docstrings for more usage details.
8241 on them to see their docstrings for more usage details.
8238 In addition, the
8242 In addition, the
8239 \family typewriter
8243 \family typewriter
8240 demo
8244 demo
8241 \family default
8245 \family default
8242 module itself contains a comprehensive docstring, which you can access
8246 module itself contains a comprehensive docstring, which you can access
8243 via
8247 via
8244 \layout LyX-Code
8248 \layout LyX-Code
8245
8249
8246 from IPython import demo
8250 from IPython import demo
8247 \layout LyX-Code
8251 \layout LyX-Code
8248
8252
8249 demo?
8253 demo?
8250 \layout Standard
8254 \layout Standard
8251
8255
8252
8256
8253 \series bold
8257 \series bold
8254 Limitations:
8258 Limitations:
8255 \series default
8259 \series default
8256 It is important to note that these demos are limited to fairly simple uses.
8260 It is important to note that these demos are limited to fairly simple uses.
8257 In particular, you can
8261 In particular, you can
8258 \emph on
8262 \emph on
8259 not
8263 not
8260 \emph default
8264 \emph default
8261 put division marks in indented code (loops, if statements, function definitions
8265 put division marks in indented code (loops, if statements, function definitions
8262 , etc.) Supporting something like this would basically require tracking the
8266 , etc.) Supporting something like this would basically require tracking the
8263 internal execution state of the Python interpreter, so only top-level divisions
8267 internal execution state of the Python interpreter, so only top-level divisions
8264 are allowed.
8268 are allowed.
8265 If you want to be able to open an IPython instance at an arbitrary point
8269 If you want to be able to open an IPython instance at an arbitrary point
8266 in a program, you can use IPython's embedding facilities, described in
8270 in a program, you can use IPython's embedding facilities, described in
8267 detail in Sec\SpecialChar \@.
8271 detail in Sec\SpecialChar \@.
8268 \SpecialChar ~
8272 \SpecialChar ~
8269
8273
8270 \begin_inset LatexCommand \ref{sec:embed}
8274 \begin_inset LatexCommand \ref{sec:embed}
8271
8275
8272 \end_inset
8276 \end_inset
8273
8277
8274 .
8278 .
8275 \layout Section
8279 \layout Section
8276
8280
8277
8281
8278 \begin_inset LatexCommand \label{sec:matplotlib-support}
8282 \begin_inset LatexCommand \label{sec:matplotlib-support}
8279
8283
8280 \end_inset
8284 \end_inset
8281
8285
8282 Plotting with
8286 Plotting with
8283 \family typewriter
8287 \family typewriter
8284 matplotlib
8288 matplotlib
8285 \family default
8289 \family default
8286
8290
8287 \layout Standard
8291 \layout Standard
8288
8292
8289 The matplotlib library (
8293 The matplotlib library (
8290 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
8294 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
8291
8295
8292 \end_inset
8296 \end_inset
8293
8297
8294 ) provides high quality 2D plotting for Python.
8298 ) provides high quality 2D plotting for Python.
8295 Matplotlib can produce plots on screen using a variety of GUI toolkits,
8299 Matplotlib can produce plots on screen using a variety of GUI toolkits,
8296 including Tk, GTK and WXPython.
8300 including Tk, GTK and WXPython.
8297 It also provides a number of commands useful for scientific computing,
8301 It also provides a number of commands useful for scientific computing,
8298 all with a syntax compatible with that of the popular Matlab program.
8302 all with a syntax compatible with that of the popular Matlab program.
8299 \layout Standard
8303 \layout Standard
8300
8304
8301 IPython accepts the special option
8305 IPython accepts the special option
8302 \family typewriter
8306 \family typewriter
8303 -pylab
8307 -pylab
8304 \family default
8308 \family default
8305 (Sec.\SpecialChar ~
8309 (Sec.\SpecialChar ~
8306
8310
8307 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
8311 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
8308
8312
8309 \end_inset
8313 \end_inset
8310
8314
8311 ).
8315 ).
8312 This configures it to support matplotlib, honoring the settings in the
8316 This configures it to support matplotlib, honoring the settings in the
8313
8317
8314 \family typewriter
8318 \family typewriter
8315 .matplotlibrc
8319 .matplotlibrc
8316 \family default
8320 \family default
8317 file.
8321 file.
8318 IPython will detect the user's choice of matplotlib GUI backend, and automatica
8322 IPython will detect the user's choice of matplotlib GUI backend, and automatica
8319 lly select the proper threading model to prevent blocking.
8323 lly select the proper threading model to prevent blocking.
8320 It also sets matplotlib in interactive mode and modifies
8324 It also sets matplotlib in interactive mode and modifies
8321 \family typewriter
8325 \family typewriter
8322 %run
8326 %run
8323 \family default
8327 \family default
8324 slightly, so that any matplotlib-based script can be executed using
8328 slightly, so that any matplotlib-based script can be executed using
8325 \family typewriter
8329 \family typewriter
8326 %run
8330 %run
8327 \family default
8331 \family default
8328 and the final
8332 and the final
8329 \family typewriter
8333 \family typewriter
8330 show()
8334 show()
8331 \family default
8335 \family default
8332 command does not block the interactive shell.
8336 command does not block the interactive shell.
8333 \layout Standard
8337 \layout Standard
8334
8338
8335 The
8339 The
8336 \family typewriter
8340 \family typewriter
8337 -pylab
8341 -pylab
8338 \family default
8342 \family default
8339 option must be given first in order for IPython to configure its threading
8343 option must be given first in order for IPython to configure its threading
8340 mode.
8344 mode.
8341 However, you can still issue other options afterwards.
8345 However, you can still issue other options afterwards.
8342 This allows you to have a matplotlib-based environment customized with
8346 This allows you to have a matplotlib-based environment customized with
8343 additional modules using the standard IPython profile mechanism (Sec.\SpecialChar ~
8347 additional modules using the standard IPython profile mechanism (Sec.\SpecialChar ~
8344
8348
8345 \begin_inset LatexCommand \ref{sec:profiles}
8349 \begin_inset LatexCommand \ref{sec:profiles}
8346
8350
8347 \end_inset
8351 \end_inset
8348
8352
8349 ): ``
8353 ): ``
8350 \family typewriter
8354 \family typewriter
8351 ipython -pylab -p myprofile
8355 ipython -pylab -p myprofile
8352 \family default
8356 \family default
8353 '' will load the profile defined in
8357 '' will load the profile defined in
8354 \family typewriter
8358 \family typewriter
8355 ipythonrc-myprofile
8359 ipythonrc-myprofile
8356 \family default
8360 \family default
8357 after configuring matplotlib.
8361 after configuring matplotlib.
8358 \layout Section
8362 \layout Section
8359
8363
8360
8364
8361 \begin_inset LatexCommand \label{sec:Gnuplot}
8365 \begin_inset LatexCommand \label{sec:Gnuplot}
8362
8366
8363 \end_inset
8367 \end_inset
8364
8368
8365 Plotting with
8369 Plotting with
8366 \family typewriter
8370 \family typewriter
8367 Gnuplot
8371 Gnuplot
8368 \layout Standard
8372 \layout Standard
8369
8373
8370 Through the magic extension system described in sec.
8374 Through the magic extension system described in sec.
8371
8375
8372 \begin_inset LatexCommand \ref{sec:magic}
8376 \begin_inset LatexCommand \ref{sec:magic}
8373
8377
8374 \end_inset
8378 \end_inset
8375
8379
8376 , IPython incorporates a mechanism for conveniently interfacing with the
8380 , IPython incorporates a mechanism for conveniently interfacing with the
8377 Gnuplot system (
8381 Gnuplot system (
8378 \begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
8382 \begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
8379
8383
8380 \end_inset
8384 \end_inset
8381
8385
8382 ).
8386 ).
8383 Gnuplot is a very complete 2D and 3D plotting package available for many
8387 Gnuplot is a very complete 2D and 3D plotting package available for many
8384 operating systems and commonly included in modern Linux distributions.
8388 operating systems and commonly included in modern Linux distributions.
8385
8389
8386 \layout Standard
8390 \layout Standard
8387
8391
8388 Besides having Gnuplot installed, this functionality requires the
8392 Besides having Gnuplot installed, this functionality requires the
8389 \family typewriter
8393 \family typewriter
8390 Gnuplot.py
8394 Gnuplot.py
8391 \family default
8395 \family default
8392 module for interfacing python with Gnuplot.
8396 module for interfacing python with Gnuplot.
8393 It can be downloaded from:
8397 It can be downloaded from:
8394 \begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
8398 \begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
8395
8399
8396 \end_inset
8400 \end_inset
8397
8401
8398 .
8402 .
8399 \layout Subsection
8403 \layout Subsection
8400
8404
8401 Proper Gnuplot configuration
8405 Proper Gnuplot configuration
8402 \layout Standard
8406 \layout Standard
8403
8407
8404 As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
8408 As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
8405 However, as of
8409 However, as of
8406 \family typewriter
8410 \family typewriter
8407 Gnuplot.py
8411 Gnuplot.py
8408 \family default
8412 \family default
8409 version 1.7, a new option was added to communicate between Python and Gnuplot
8413 version 1.7, a new option was added to communicate between Python and Gnuplot
8410 via FIFOs (pipes).
8414 via FIFOs (pipes).
8411 This mechanism, while fast, also breaks the mouse system.
8415 This mechanism, while fast, also breaks the mouse system.
8412 You must therefore set the variable
8416 You must therefore set the variable
8413 \family typewriter
8417 \family typewriter
8414 prefer_fifo_data
8418 prefer_fifo_data
8415 \family default
8419 \family default
8416 to
8420 to
8417 \family typewriter
8421 \family typewriter
8418 0
8422 0
8419 \family default
8423 \family default
8420 in file
8424 in file
8421 \family typewriter
8425 \family typewriter
8422 gp_unix.py
8426 gp_unix.py
8423 \family default
8427 \family default
8424 if you wish to keep the interactive mouse and keyboard features working
8428 if you wish to keep the interactive mouse and keyboard features working
8425 properly (
8429 properly (
8426 \family typewriter
8430 \family typewriter
8427 prefer_inline_data
8431 prefer_inline_data
8428 \family default
8432 \family default
8429 also must be
8433 also must be
8430 \family typewriter
8434 \family typewriter
8431 0
8435 0
8432 \family default
8436 \family default
8433 , but this is the default so unless you've changed it manually you should
8437 , but this is the default so unless you've changed it manually you should
8434 be fine).
8438 be fine).
8435 \layout Standard
8439 \layout Standard
8436
8440
8437 'Out of the box', Gnuplot is configured with a rather poor set of size,
8441 'Out of the box', Gnuplot is configured with a rather poor set of size,
8438 color and linewidth choices which make the graphs fairly hard to read on
8442 color and linewidth choices which make the graphs fairly hard to read on
8439 modern high-resolution displays (although they work fine on old 640x480
8443 modern high-resolution displays (although they work fine on old 640x480
8440 ones).
8444 ones).
8441 Below is a section of my
8445 Below is a section of my
8442 \family typewriter
8446 \family typewriter
8443 .Xdefaults
8447 .Xdefaults
8444 \family default
8448 \family default
8445 file which I use for having a more convenient Gnuplot setup.
8449 file which I use for having a more convenient Gnuplot setup.
8446 Remember to load it by running
8450 Remember to load it by running
8447 \family typewriter
8451 \family typewriter
8448 `xrdb .Xdefaults`
8452 `xrdb .Xdefaults`
8449 \family default
8453 \family default
8450 :
8454 :
8451 \layout Standard
8455 \layout Standard
8452
8456
8453
8457
8454 \family typewriter
8458 \family typewriter
8455 !******************************************************************
8459 !******************************************************************
8456 \newline
8460 \newline
8457 ! gnuplot options
8461 ! gnuplot options
8458 \newline
8462 \newline
8459 ! modify this for a convenient window size
8463 ! modify this for a convenient window size
8460 \newline
8464 \newline
8461 gnuplot*geometry: 780x580
8465 gnuplot*geometry: 780x580
8462 \layout Standard
8466 \layout Standard
8463
8467
8464
8468
8465 \family typewriter
8469 \family typewriter
8466 ! on-screen font (not for PostScript)
8470 ! on-screen font (not for PostScript)
8467 \newline
8471 \newline
8468 gnuplot*font: -misc-fixed-bold-r-normal--15-120-100-100-c-90-iso8859-1
8472 gnuplot*font: -misc-fixed-bold-r-normal--15-120-100-100-c-90-iso8859-1
8469 \layout Standard
8473 \layout Standard
8470
8474
8471
8475
8472 \family typewriter
8476 \family typewriter
8473 ! color options
8477 ! color options
8474 \newline
8478 \newline
8475 gnuplot*background: black
8479 gnuplot*background: black
8476 \newline
8480 \newline
8477 gnuplot*textColor: white
8481 gnuplot*textColor: white
8478 \newline
8482 \newline
8479 gnuplot*borderColor: white
8483 gnuplot*borderColor: white
8480 \newline
8484 \newline
8481 gnuplot*axisColor: white
8485 gnuplot*axisColor: white
8482 \newline
8486 \newline
8483 gnuplot*line1Color: red
8487 gnuplot*line1Color: red
8484 \newline
8488 \newline
8485 gnuplot*line2Color: green
8489 gnuplot*line2Color: green
8486 \newline
8490 \newline
8487 gnuplot*line3Color: blue
8491 gnuplot*line3Color: blue
8488 \newline
8492 \newline
8489 gnuplot*line4Color: magenta
8493 gnuplot*line4Color: magenta
8490 \newline
8494 \newline
8491 gnuplot*line5Color: cyan
8495 gnuplot*line5Color: cyan
8492 \newline
8496 \newline
8493 gnuplot*line6Color: sienna
8497 gnuplot*line6Color: sienna
8494 \newline
8498 \newline
8495 gnuplot*line7Color: orange
8499 gnuplot*line7Color: orange
8496 \newline
8500 \newline
8497 gnuplot*line8Color: coral
8501 gnuplot*line8Color: coral
8498 \layout Standard
8502 \layout Standard
8499
8503
8500
8504
8501 \family typewriter
8505 \family typewriter
8502 ! multiplicative factor for point styles
8506 ! multiplicative factor for point styles
8503 \newline
8507 \newline
8504 gnuplot*pointsize: 2
8508 gnuplot*pointsize: 2
8505 \layout Standard
8509 \layout Standard
8506
8510
8507
8511
8508 \family typewriter
8512 \family typewriter
8509 ! line width options (in pixels)
8513 ! line width options (in pixels)
8510 \newline
8514 \newline
8511 gnuplot*borderWidth: 2
8515 gnuplot*borderWidth: 2
8512 \newline
8516 \newline
8513 gnuplot*axisWidth: 2
8517 gnuplot*axisWidth: 2
8514 \newline
8518 \newline
8515 gnuplot*line1Width: 2
8519 gnuplot*line1Width: 2
8516 \newline
8520 \newline
8517 gnuplot*line2Width: 2
8521 gnuplot*line2Width: 2
8518 \newline
8522 \newline
8519 gnuplot*line3Width: 2
8523 gnuplot*line3Width: 2
8520 \newline
8524 \newline
8521 gnuplot*line4Width: 2
8525 gnuplot*line4Width: 2
8522 \newline
8526 \newline
8523 gnuplot*line5Width: 2
8527 gnuplot*line5Width: 2
8524 \newline
8528 \newline
8525 gnuplot*line6Width: 2
8529 gnuplot*line6Width: 2
8526 \newline
8530 \newline
8527 gnuplot*line7Width: 2
8531 gnuplot*line7Width: 2
8528 \newline
8532 \newline
8529 gnuplot*line8Width: 2
8533 gnuplot*line8Width: 2
8530 \layout Subsection
8534 \layout Subsection
8531
8535
8532 The
8536 The
8533 \family typewriter
8537 \family typewriter
8534 IPython.GnuplotRuntime
8538 IPython.GnuplotRuntime
8535 \family default
8539 \family default
8536 module
8540 module
8537 \layout Standard
8541 \layout Standard
8538
8542
8539 IPython includes a module called
8543 IPython includes a module called
8540 \family typewriter
8544 \family typewriter
8541 Gnuplot2.py
8545 Gnuplot2.py
8542 \family default
8546 \family default
8543 which extends and improves the default
8547 which extends and improves the default
8544 \family typewriter
8548 \family typewriter
8545 Gnuplot
8549 Gnuplot
8546 \family default
8550 \family default
8547 .
8551 .
8548 \family typewriter
8552 \family typewriter
8549 py
8553 py
8550 \family default
8554 \family default
8551 (which it still relies upon).
8555 (which it still relies upon).
8552 For example, the new
8556 For example, the new
8553 \family typewriter
8557 \family typewriter
8554 plot
8558 plot
8555 \family default
8559 \family default
8556 function adds several improvements to the original making it more convenient
8560 function adds several improvements to the original making it more convenient
8557 for interactive use, and
8561 for interactive use, and
8558 \family typewriter
8562 \family typewriter
8559 hardcopy
8563 hardcopy
8560 \family default
8564 \family default
8561 fixes a bug in the original which under some circumstances blocks the creation
8565 fixes a bug in the original which under some circumstances blocks the creation
8562 of PostScript output.
8566 of PostScript output.
8563 \layout Standard
8567 \layout Standard
8564
8568
8565 For scripting use,
8569 For scripting use,
8566 \family typewriter
8570 \family typewriter
8567 GnuplotRuntime.py
8571 GnuplotRuntime.py
8568 \family default
8572 \family default
8569 is provided, which wraps
8573 is provided, which wraps
8570 \family typewriter
8574 \family typewriter
8571 Gnuplot2.py
8575 Gnuplot2.py
8572 \family default
8576 \family default
8573 and creates a series of global aliases.
8577 and creates a series of global aliases.
8574 These make it easy to control Gnuplot plotting jobs through the Python
8578 These make it easy to control Gnuplot plotting jobs through the Python
8575 language.
8579 language.
8576 \layout Standard
8580 \layout Standard
8577
8581
8578 Below is some example code which illustrates how to configure Gnuplot inside
8582 Below is some example code which illustrates how to configure Gnuplot inside
8579 your own programs but have it available for further interactive use through
8583 your own programs but have it available for further interactive use through
8580 an embedded IPython instance.
8584 an embedded IPython instance.
8581 Simply run this file at a system prompt.
8585 Simply run this file at a system prompt.
8582 This file is provided as
8586 This file is provided as
8583 \family typewriter
8587 \family typewriter
8584 example-gnuplot.py
8588 example-gnuplot.py
8585 \family default
8589 \family default
8586 in the examples directory:
8590 in the examples directory:
8587 \layout Standard
8591 \layout Standard
8588
8592
8589
8593
8590 \begin_inset ERT
8594 \begin_inset ERT
8591 status Open
8595 status Open
8592
8596
8593 \layout Standard
8597 \layout Standard
8594
8598
8595 \backslash
8599 \backslash
8596 codelist{examples/example-gnuplot.py}
8600 codelist{examples/example-gnuplot.py}
8597 \end_inset
8601 \end_inset
8598
8602
8599
8603
8600 \layout Subsection
8604 \layout Subsection
8601
8605
8602 The
8606 The
8603 \family typewriter
8607 \family typewriter
8604 numeric
8608 numeric
8605 \family default
8609 \family default
8606 profile: a scientific computing environment
8610 profile: a scientific computing environment
8607 \layout Standard
8611 \layout Standard
8608
8612
8609 The
8613 The
8610 \family typewriter
8614 \family typewriter
8611 numeric
8615 numeric
8612 \family default
8616 \family default
8613 IPython profile, which you can activate with
8617 IPython profile, which you can activate with
8614 \family typewriter
8618 \family typewriter
8615 `ipython -p numeric
8619 `ipython -p numeric
8616 \family default
8620 \family default
8617 ' will automatically load the IPython Gnuplot extensions (plus Numeric and
8621 ' will automatically load the IPython Gnuplot extensions (plus Numeric and
8618 other useful things for numerical computing), contained in the
8622 other useful things for numerical computing), contained in the
8619 \family typewriter
8623 \family typewriter
8620 IPython.GnuplotInteractive
8624 IPython.GnuplotInteractive
8621 \family default
8625 \family default
8622 module.
8626 module.
8623 This will create the globals
8627 This will create the globals
8624 \family typewriter
8628 \family typewriter
8625 Gnuplot
8629 Gnuplot
8626 \family default
8630 \family default
8627 (an alias to the improved Gnuplot2 module),
8631 (an alias to the improved Gnuplot2 module),
8628 \family typewriter
8632 \family typewriter
8629 gp
8633 gp
8630 \family default
8634 \family default
8631 (a Gnuplot active instance), the new magic commands
8635 (a Gnuplot active instance), the new magic commands
8632 \family typewriter
8636 \family typewriter
8633 %gpc
8637 %gpc
8634 \family default
8638 \family default
8635 and
8639 and
8636 \family typewriter
8640 \family typewriter
8637 %gp_set_instance
8641 %gp_set_instance
8638 \family default
8642 \family default
8639 and several other convenient globals.
8643 and several other convenient globals.
8640 Type
8644 Type
8641 \family typewriter
8645 \family typewriter
8642 gphelp()
8646 gphelp()
8643 \family default
8647 \family default
8644 for further details.
8648 for further details.
8645 \layout Standard
8649 \layout Standard
8646
8650
8647 This should turn IPython into a convenient environment for numerical computing,
8651 This should turn IPython into a convenient environment for numerical computing,
8648 with all the functions in the NumPy library and the Gnuplot facilities
8652 with all the functions in the NumPy library and the Gnuplot facilities
8649 for plotting.
8653 for plotting.
8650 Further improvements can be obtained by loading the SciPy libraries for
8654 Further improvements can be obtained by loading the SciPy libraries for
8651 scientific computing, available at
8655 scientific computing, available at
8652 \begin_inset LatexCommand \htmlurl{http://scipy.org}
8656 \begin_inset LatexCommand \htmlurl{http://scipy.org}
8653
8657
8654 \end_inset
8658 \end_inset
8655
8659
8656 .
8660 .
8657 \layout Standard
8661 \layout Standard
8658
8662
8659 If you are in the middle of a working session with numerical objects and
8663 If you are in the middle of a working session with numerical objects and
8660 need to plot them but you didn't start the
8664 need to plot them but you didn't start the
8661 \family typewriter
8665 \family typewriter
8662 numeric
8666 numeric
8663 \family default
8667 \family default
8664 profile, you can load these extensions at any time by typing
8668 profile, you can load these extensions at any time by typing
8665 \newline
8669 \newline
8666
8670
8667 \family typewriter
8671 \family typewriter
8668 from IPython.GnuplotInteractive import *
8672 from IPython.GnuplotInteractive import *
8669 \newline
8673 \newline
8670
8674
8671 \family default
8675 \family default
8672 at the IPython prompt.
8676 at the IPython prompt.
8673 This will allow you to keep your objects intact and start using Gnuplot
8677 This will allow you to keep your objects intact and start using Gnuplot
8674 to view them.
8678 to view them.
8675 \layout Section
8679 \layout Section
8676
8680
8677 Reporting bugs
8681 Reporting bugs
8678 \layout Subsection*
8682 \layout Subsection*
8679
8683
8680 Automatic crash reports
8684 Automatic crash reports
8681 \layout Standard
8685 \layout Standard
8682
8686
8683 Ideally, IPython itself shouldn't crash.
8687 Ideally, IPython itself shouldn't crash.
8684 It will catch exceptions produced by you, but bugs in its internals will
8688 It will catch exceptions produced by you, but bugs in its internals will
8685 still crash it.
8689 still crash it.
8686 \layout Standard
8690 \layout Standard
8687
8691
8688 In such a situation, IPython will leave a file named
8692 In such a situation, IPython will leave a file named
8689 \family typewriter
8693 \family typewriter
8690 IPython_crash_report.txt
8694 IPython_crash_report.txt
8691 \family default
8695 \family default
8692 in your IPYTHONDIR directory (that way if crashes happen several times
8696 in your IPYTHONDIR directory (that way if crashes happen several times
8693 it won't litter many directories, the post-mortem file is always located
8697 it won't litter many directories, the post-mortem file is always located
8694 in the same place and new occurrences just overwrite the previous one).
8698 in the same place and new occurrences just overwrite the previous one).
8695 If you can mail this file to the developers (see sec.
8699 If you can mail this file to the developers (see sec.
8696
8700
8697 \begin_inset LatexCommand \ref{sec:credits}
8701 \begin_inset LatexCommand \ref{sec:credits}
8698
8702
8699 \end_inset
8703 \end_inset
8700
8704
8701 for names and addresses), it will help us
8705 for names and addresses), it will help us
8702 \emph on
8706 \emph on
8703 a lot
8707 a lot
8704 \emph default
8708 \emph default
8705 in understanding the cause of the problem and fixing it sooner.
8709 in understanding the cause of the problem and fixing it sooner.
8706 \layout Subsection*
8710 \layout Subsection*
8707
8711
8708 The bug tracker
8712 The bug tracker
8709 \layout Standard
8713 \layout Standard
8710
8714
8711 IPython also has an online bug-tracker, located at
8715 IPython also has an online bug-tracker, located at
8712 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/report/1}
8716 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/report/1}
8713
8717
8714 \end_inset
8718 \end_inset
8715
8719
8716 .
8720 .
8717 In addition to mailing the developers, it would be a good idea to file
8721 In addition to mailing the developers, it would be a good idea to file
8718 a bug report here.
8722 a bug report here.
8719 This will ensure that the issue is properly followed to conclusion.
8723 This will ensure that the issue is properly followed to conclusion.
8720 To report new bugs you will have to register first.
8724 To report new bugs you will have to register first.
8721 \layout Standard
8725 \layout Standard
8722
8726
8723 You can also use this bug tracker to file feature requests.
8727 You can also use this bug tracker to file feature requests.
8724 \layout Section
8728 \layout Section
8725
8729
8726 Brief history
8730 Brief history
8727 \layout Subsection
8731 \layout Subsection
8728
8732
8729 Origins
8733 Origins
8730 \layout Standard
8734 \layout Standard
8731
8735
8732 The current IPython system grew out of the following three projects:
8736 The current IPython system grew out of the following three projects:
8733 \layout List
8737 \layout List
8734 \labelwidthstring 00.00.0000
8738 \labelwidthstring 00.00.0000
8735
8739
8736 ipython by Fernando P
8740 ipython by Fernando P
8737 \begin_inset ERT
8741 \begin_inset ERT
8738 status Collapsed
8742 status Collapsed
8739
8743
8740 \layout Standard
8744 \layout Standard
8741
8745
8742 \backslash
8746 \backslash
8743 '{e}
8747 '{e}
8744 \end_inset
8748 \end_inset
8745
8749
8746 rez.
8750 rez.
8747 I was working on adding Mathematica-type prompts and a flexible configuration
8751 I was working on adding Mathematica-type prompts and a flexible configuration
8748 system (something better than
8752 system (something better than
8749 \family typewriter
8753 \family typewriter
8750 $PYTHONSTARTUP
8754 $PYTHONSTARTUP
8751 \family default
8755 \family default
8752 ) to the standard Python interactive interpreter.
8756 ) to the standard Python interactive interpreter.
8753 \layout List
8757 \layout List
8754 \labelwidthstring 00.00.0000
8758 \labelwidthstring 00.00.0000
8755
8759
8756 IPP by Janko Hauser.
8760 IPP by Janko Hauser.
8757 Very well organized, great usability.
8761 Very well organized, great usability.
8758 Had an old help system.
8762 Had an old help system.
8759 IPP was used as the `container' code into which I added the functionality
8763 IPP was used as the `container' code into which I added the functionality
8760 from ipython and LazyPython.
8764 from ipython and LazyPython.
8761 \layout List
8765 \layout List
8762 \labelwidthstring 00.00.0000
8766 \labelwidthstring 00.00.0000
8763
8767
8764 LazyPython by Nathan Gray.
8768 LazyPython by Nathan Gray.
8765 Simple but
8769 Simple but
8766 \emph on
8770 \emph on
8767 very
8771 very
8768 \emph default
8772 \emph default
8769 powerful.
8773 powerful.
8770 The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
8774 The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
8771 were all taken from here.
8775 were all taken from here.
8772 \layout Standard
8776 \layout Standard
8773
8777
8774 When I found out (see sec.
8778 When I found out (see sec.
8775
8779
8776 \begin_inset LatexCommand \ref{figgins}
8780 \begin_inset LatexCommand \ref{figgins}
8777
8781
8778 \end_inset
8782 \end_inset
8779
8783
8780 ) about IPP and LazyPython I tried to join all three into a unified system.
8784 ) about IPP and LazyPython I tried to join all three into a unified system.
8781 I thought this could provide a very nice working environment, both for
8785 I thought this could provide a very nice working environment, both for
8782 regular programming and scientific computing: shell-like features, IDL/Matlab
8786 regular programming and scientific computing: shell-like features, IDL/Matlab
8783 numerics, Mathematica-type prompt history and great object introspection
8787 numerics, Mathematica-type prompt history and great object introspection
8784 and help facilities.
8788 and help facilities.
8785 I think it worked reasonably well, though it was a lot more work than I
8789 I think it worked reasonably well, though it was a lot more work than I
8786 had initially planned.
8790 had initially planned.
8787 \layout Subsection
8791 \layout Subsection
8788
8792
8789 Current status
8793 Current status
8790 \layout Standard
8794 \layout Standard
8791
8795
8792 The above listed features work, and quite well for the most part.
8796 The above listed features work, and quite well for the most part.
8793 But until a major internal restructuring is done (see below), only bug
8797 But until a major internal restructuring is done (see below), only bug
8794 fixing will be done, no other features will be added (unless very minor
8798 fixing will be done, no other features will be added (unless very minor
8795 and well localized in the cleaner parts of the code).
8799 and well localized in the cleaner parts of the code).
8796 \layout Standard
8800 \layout Standard
8797
8801
8798 IPython consists of some 18000 lines of pure python code, of which roughly
8802 IPython consists of some 18000 lines of pure python code, of which roughly
8799 two thirds is reasonably clean.
8803 two thirds is reasonably clean.
8800 The rest is, messy code which needs a massive restructuring before any
8804 The rest is, messy code which needs a massive restructuring before any
8801 further major work is done.
8805 further major work is done.
8802 Even the messy code is fairly well documented though, and most of the problems
8806 Even the messy code is fairly well documented though, and most of the problems
8803 in the (non-existent) class design are well pointed to by a PyChecker run.
8807 in the (non-existent) class design are well pointed to by a PyChecker run.
8804 So the rewriting work isn't that bad, it will just be time-consuming.
8808 So the rewriting work isn't that bad, it will just be time-consuming.
8805 \layout Subsection
8809 \layout Subsection
8806
8810
8807 Future
8811 Future
8808 \layout Standard
8812 \layout Standard
8809
8813
8810 See the separate
8814 See the separate
8811 \family typewriter
8815 \family typewriter
8812 new_design
8816 new_design
8813 \family default
8817 \family default
8814 document for details.
8818 document for details.
8815 Ultimately, I would like to see IPython become part of the standard Python
8819 Ultimately, I would like to see IPython become part of the standard Python
8816 distribution as a `big brother with batteries' to the standard Python interacti
8820 distribution as a `big brother with batteries' to the standard Python interacti
8817 ve interpreter.
8821 ve interpreter.
8818 But that will never happen with the current state of the code, so all contribut
8822 But that will never happen with the current state of the code, so all contribut
8819 ions are welcome.
8823 ions are welcome.
8820 \layout Section
8824 \layout Section
8821
8825
8822 License
8826 License
8823 \layout Standard
8827 \layout Standard
8824
8828
8825 IPython is released under the terms of the BSD license, whose general form
8829 IPython is released under the terms of the BSD license, whose general form
8826 can be found at:
8830 can be found at:
8827 \begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
8831 \begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
8828
8832
8829 \end_inset
8833 \end_inset
8830
8834
8831 .
8835 .
8832 The full text of the IPython license is reproduced below:
8836 The full text of the IPython license is reproduced below:
8833 \layout Quote
8837 \layout Quote
8834
8838
8835
8839
8836 \family typewriter
8840 \family typewriter
8837 \size small
8841 \size small
8838 IPython is released under a BSD-type license.
8842 IPython is released under a BSD-type license.
8839 \layout Quote
8843 \layout Quote
8840
8844
8841
8845
8842 \family typewriter
8846 \family typewriter
8843 \size small
8847 \size small
8844 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
8848 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
8845 \layout Quote
8849 \layout Quote
8846
8850
8847
8851
8848 \family typewriter
8852 \family typewriter
8849 \size small
8853 \size small
8850 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
8854 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
8851 \newline
8855 \newline
8852 Nathaniel Gray <n8gray@caltech.edu>.
8856 Nathaniel Gray <n8gray@caltech.edu>.
8853 \layout Quote
8857 \layout Quote
8854
8858
8855
8859
8856 \family typewriter
8860 \family typewriter
8857 \size small
8861 \size small
8858 All rights reserved.
8862 All rights reserved.
8859 \layout Quote
8863 \layout Quote
8860
8864
8861
8865
8862 \family typewriter
8866 \family typewriter
8863 \size small
8867 \size small
8864 Redistribution and use in source and binary forms, with or without modification,
8868 Redistribution and use in source and binary forms, with or without modification,
8865 are permitted provided that the following conditions are met:
8869 are permitted provided that the following conditions are met:
8866 \layout Quote
8870 \layout Quote
8867
8871
8868
8872
8869 \family typewriter
8873 \family typewriter
8870 \size small
8874 \size small
8871 a.
8875 a.
8872 Redistributions of source code must retain the above copyright notice,
8876 Redistributions of source code must retain the above copyright notice,
8873 this list of conditions and the following disclaimer.
8877 this list of conditions and the following disclaimer.
8874 \layout Quote
8878 \layout Quote
8875
8879
8876
8880
8877 \family typewriter
8881 \family typewriter
8878 \size small
8882 \size small
8879 b.
8883 b.
8880 Redistributions in binary form must reproduce the above copyright notice,
8884 Redistributions in binary form must reproduce the above copyright notice,
8881 this list of conditions and the following disclaimer in the documentation
8885 this list of conditions and the following disclaimer in the documentation
8882 and/or other materials provided with the distribution.
8886 and/or other materials provided with the distribution.
8883 \layout Quote
8887 \layout Quote
8884
8888
8885
8889
8886 \family typewriter
8890 \family typewriter
8887 \size small
8891 \size small
8888 c.
8892 c.
8889 Neither the name of the copyright holders nor the names of any contributors
8893 Neither the name of the copyright holders nor the names of any contributors
8890 to this software may be used to endorse or promote products derived from
8894 to this software may be used to endorse or promote products derived from
8891 this software without specific prior written permission.
8895 this software without specific prior written permission.
8892 \layout Quote
8896 \layout Quote
8893
8897
8894
8898
8895 \family typewriter
8899 \family typewriter
8896 \size small
8900 \size small
8897 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
8901 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
8898 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
8902 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
8899 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8903 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8900 PURPOSE ARE DISCLAIMED.
8904 PURPOSE ARE DISCLAIMED.
8901 IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
8905 IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
8902 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
8906 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
8903 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
8907 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
8904 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
8908 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
8905 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8909 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8906 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
8910 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
8907 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8911 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8908
8912
8909 \layout Standard
8913 \layout Standard
8910
8914
8911 Individual authors are the holders of the copyright for their code and are
8915 Individual authors are the holders of the copyright for their code and are
8912 listed in each file.
8916 listed in each file.
8913 \layout Standard
8917 \layout Standard
8914
8918
8915 Some files (
8919 Some files (
8916 \family typewriter
8920 \family typewriter
8917 DPyGetOpt.py
8921 DPyGetOpt.py
8918 \family default
8922 \family default
8919 , for example) may be licensed under different conditions.
8923 , for example) may be licensed under different conditions.
8920 Ultimately each file indicates clearly the conditions under which its author/au
8924 Ultimately each file indicates clearly the conditions under which its author/au
8921 thors have decided to publish the code.
8925 thors have decided to publish the code.
8922 \layout Standard
8926 \layout Standard
8923
8927
8924 Versions of IPython up to and including 0.6.3 were released under the GNU
8928 Versions of IPython up to and including 0.6.3 were released under the GNU
8925 Lesser General Public License (LGPL), available at
8929 Lesser General Public License (LGPL), available at
8926 \begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
8930 \begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
8927
8931
8928 \end_inset
8932 \end_inset
8929
8933
8930 .
8934 .
8931 \layout Section
8935 \layout Section
8932
8936
8933
8937
8934 \begin_inset LatexCommand \label{sec:credits}
8938 \begin_inset LatexCommand \label{sec:credits}
8935
8939
8936 \end_inset
8940 \end_inset
8937
8941
8938 Credits
8942 Credits
8939 \layout Standard
8943 \layout Standard
8940
8944
8941 IPython is mainly developed by Fernando P
8945 IPython is mainly developed by Fernando P
8942 \begin_inset ERT
8946 \begin_inset ERT
8943 status Collapsed
8947 status Collapsed
8944
8948
8945 \layout Standard
8949 \layout Standard
8946
8950
8947 \backslash
8951 \backslash
8948 '{e}
8952 '{e}
8949 \end_inset
8953 \end_inset
8950
8954
8951 rez
8955 rez
8952 \family typewriter
8956 \family typewriter
8953 <Fernando.Perez@colorado.edu>
8957 <Fernando.Perez@colorado.edu>
8954 \family default
8958 \family default
8955 , but the project was born from mixing in Fernando's code with the IPP project
8959 , but the project was born from mixing in Fernando's code with the IPP project
8956 by Janko Hauser
8960 by Janko Hauser
8957 \family typewriter
8961 \family typewriter
8958 <jhauser-AT-zscout.de>
8962 <jhauser-AT-zscout.de>
8959 \family default
8963 \family default
8960 and LazyPython by Nathan Gray
8964 and LazyPython by Nathan Gray
8961 \family typewriter
8965 \family typewriter
8962 <n8gray-AT-caltech.edu>
8966 <n8gray-AT-caltech.edu>
8963 \family default
8967 \family default
8964 .
8968 .
8965 For all IPython-related requests, please contact Fernando.
8969 For all IPython-related requests, please contact Fernando.
8966
8970
8967 \layout Standard
8971 \layout Standard
8968
8972
8969 As of early 2006, the following developers have joined the core team:
8973 As of early 2006, the following developers have joined the core team:
8970 \layout List
8974 \layout List
8971 \labelwidthstring 00.00.0000
8975 \labelwidthstring 00.00.0000
8972
8976
8973 Robert\SpecialChar ~
8977 Robert\SpecialChar ~
8974 Kern
8978 Kern
8975 \family typewriter
8979 \family typewriter
8976 <rkern-AT-enthought.com>
8980 <rkern-AT-enthought.com>
8977 \family default
8981 \family default
8978 : co-mentored the 2005 Google Summer of Code project to develop python interacti
8982 : co-mentored the 2005 Google Summer of Code project to develop python interacti
8979 ve notebooks (XML documents) and graphical interface.
8983 ve notebooks (XML documents) and graphical interface.
8980 This project was awarded to the students Tzanko Matev
8984 This project was awarded to the students Tzanko Matev
8981 \family typewriter
8985 \family typewriter
8982 <tsanko-AT-gmail.com>
8986 <tsanko-AT-gmail.com>
8983 \family default
8987 \family default
8984 and Toni Alatalo
8988 and Toni Alatalo
8985 \family typewriter
8989 \family typewriter
8986 <antont-AT-an.org>
8990 <antont-AT-an.org>
8987 \layout List
8991 \layout List
8988 \labelwidthstring 00.00.0000
8992 \labelwidthstring 00.00.0000
8989
8993
8990 Brian\SpecialChar ~
8994 Brian\SpecialChar ~
8991 Granger
8995 Granger
8992 \family typewriter
8996 \family typewriter
8993 <bgranger-AT-scu.edu>
8997 <bgranger-AT-scu.edu>
8994 \family default
8998 \family default
8995 : extending IPython to allow support for interactive parallel computing.
8999 : extending IPython to allow support for interactive parallel computing.
8996 \layout List
9000 \layout List
8997 \labelwidthstring 00.00.0000
9001 \labelwidthstring 00.00.0000
8998
9002
8999 Ville\SpecialChar ~
9003 Ville\SpecialChar ~
9000 Vainio
9004 Vainio
9001 \family typewriter
9005 \family typewriter
9002 <vivainio-AT-gmail.com>
9006 <vivainio-AT-gmail.com>
9003 \family default
9007 \family default
9004 : Ville is the new maintainer for the main trunk of IPython after version
9008 : Ville is the new maintainer for the main trunk of IPython after version
9005 0.7.1.
9009 0.7.1.
9006 \layout Standard
9010 \layout Standard
9007
9011
9008 User or development help should be requested via the IPython mailing lists:
9012 User or development help should be requested via the IPython mailing lists:
9009 \layout Description
9013 \layout Description
9010
9014
9011 User\SpecialChar ~
9015 User\SpecialChar ~
9012 list:
9016 list:
9013 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
9017 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
9014
9018
9015 \end_inset
9019 \end_inset
9016
9020
9017
9021
9018 \layout Description
9022 \layout Description
9019
9023
9020 Developer's\SpecialChar ~
9024 Developer's\SpecialChar ~
9021 list:
9025 list:
9022 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
9026 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
9023
9027
9024 \end_inset
9028 \end_inset
9025
9029
9026
9030
9027 \layout Standard
9031 \layout Standard
9028
9032
9029 The IPython project is also very grateful to
9033 The IPython project is also very grateful to
9030 \begin_inset Foot
9034 \begin_inset Foot
9031 collapsed true
9035 collapsed true
9032
9036
9033 \layout Standard
9037 \layout Standard
9034
9038
9035 I've mangled email addresses to reduce spam, since the IPython manuals can
9039 I've mangled email addresses to reduce spam, since the IPython manuals can
9036 be accessed online.
9040 be accessed online.
9037 \end_inset
9041 \end_inset
9038
9042
9039 :
9043 :
9040 \layout Standard
9044 \layout Standard
9041
9045
9042 Bill Bumgarner
9046 Bill Bumgarner
9043 \family typewriter
9047 \family typewriter
9044 <bbum-AT-friday.com>
9048 <bbum-AT-friday.com>
9045 \family default
9049 \family default
9046 : for providing the DPyGetOpt module which gives very powerful and convenient
9050 : for providing the DPyGetOpt module which gives very powerful and convenient
9047 handling of command-line options (light years ahead of what Python 2.1.1's
9051 handling of command-line options (light years ahead of what Python 2.1.1's
9048 getopt module does).
9052 getopt module does).
9049 \layout Standard
9053 \layout Standard
9050
9054
9051 Ka-Ping Yee
9055 Ka-Ping Yee
9052 \family typewriter
9056 \family typewriter
9053 <ping-AT-lfw.org>
9057 <ping-AT-lfw.org>
9054 \family default
9058 \family default
9055 : for providing the Itpl module for convenient and powerful string interpolation
9059 : for providing the Itpl module for convenient and powerful string interpolation
9056 with a much nicer syntax than formatting through the '%' operator.
9060 with a much nicer syntax than formatting through the '%' operator.
9057 \layout Standard
9061 \layout Standard
9058
9062
9059 Arnd Baecker
9063 Arnd Baecker
9060 \family typewriter
9064 \family typewriter
9061 <baecker-AT-physik.tu-dresden.de>
9065 <baecker-AT-physik.tu-dresden.de>
9062 \family default
9066 \family default
9063 : for his many very useful suggestions and comments, and lots of help with
9067 : for his many very useful suggestions and comments, and lots of help with
9064 testing and documentation checking.
9068 testing and documentation checking.
9065 Many of IPython's newer features are a result of discussions with him (bugs
9069 Many of IPython's newer features are a result of discussions with him (bugs
9066 are still my fault, not his).
9070 are still my fault, not his).
9067 \layout Standard
9071 \layout Standard
9068
9072
9069 Obviously Guido van\SpecialChar ~
9073 Obviously Guido van\SpecialChar ~
9070 Rossum and the whole Python development team, that goes
9074 Rossum and the whole Python development team, that goes
9071 without saying.
9075 without saying.
9072 \layout Standard
9076 \layout Standard
9073
9077
9074 IPython's website is generously hosted at
9078 IPython's website is generously hosted at
9075 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
9079 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
9076
9080
9077 \end_inset
9081 \end_inset
9078
9082
9079 by Enthought (
9083 by Enthought (
9080 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
9084 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
9081
9085
9082 \end_inset
9086 \end_inset
9083
9087
9084 ).
9088 ).
9085 I am very grateful to them and all of the SciPy team for their contribution.
9089 I am very grateful to them and all of the SciPy team for their contribution.
9086 \layout Standard
9090 \layout Standard
9087
9091
9088
9092
9089 \begin_inset LatexCommand \label{figgins}
9093 \begin_inset LatexCommand \label{figgins}
9090
9094
9091 \end_inset
9095 \end_inset
9092
9096
9093 Fernando would also like to thank Stephen Figgins
9097 Fernando would also like to thank Stephen Figgins
9094 \family typewriter
9098 \family typewriter
9095 <fig-AT-monitor.net>
9099 <fig-AT-monitor.net>
9096 \family default
9100 \family default
9097 , an O'Reilly Python editor.
9101 , an O'Reilly Python editor.
9098 His Oct/11/2001 article about IPP and LazyPython, was what got this project
9102 His Oct/11/2001 article about IPP and LazyPython, was what got this project
9099 started.
9103 started.
9100 You can read it at:
9104 You can read it at:
9101 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
9105 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
9102
9106
9103 \end_inset
9107 \end_inset
9104
9108
9105 .
9109 .
9106 \layout Standard
9110 \layout Standard
9107
9111
9108 And last but not least, all the kind IPython users who have emailed new
9112 And last but not least, all the kind IPython users who have emailed new
9109 code, bug reports, fixes, comments and ideas.
9113 code, bug reports, fixes, comments and ideas.
9110 A brief list follows, please let me know if I have ommitted your name by
9114 A brief list follows, please let me know if I have ommitted your name by
9111 accident:
9115 accident:
9112 \layout List
9116 \layout List
9113 \labelwidthstring 00.00.0000
9117 \labelwidthstring 00.00.0000
9114
9118
9115 Jack\SpecialChar ~
9119 Jack\SpecialChar ~
9116 Moffit
9120 Moffit
9117 \family typewriter
9121 \family typewriter
9118 <jack-AT-xiph.org>
9122 <jack-AT-xiph.org>
9119 \family default
9123 \family default
9120 Bug fixes, including the infamous color problem.
9124 Bug fixes, including the infamous color problem.
9121 This bug alone caused many lost hours and frustration, many thanks to him
9125 This bug alone caused many lost hours and frustration, many thanks to him
9122 for the fix.
9126 for the fix.
9123 I've always been a fan of Ogg & friends, now I have one more reason to
9127 I've always been a fan of Ogg & friends, now I have one more reason to
9124 like these folks.
9128 like these folks.
9125 \newline
9129 \newline
9126 Jack is also contributing with Debian packaging and many other things.
9130 Jack is also contributing with Debian packaging and many other things.
9127 \layout List
9131 \layout List
9128 \labelwidthstring 00.00.0000
9132 \labelwidthstring 00.00.0000
9129
9133
9130 Alexander\SpecialChar ~
9134 Alexander\SpecialChar ~
9131 Schmolck
9135 Schmolck
9132 \family typewriter
9136 \family typewriter
9133 <a.schmolck-AT-gmx.net>
9137 <a.schmolck-AT-gmx.net>
9134 \family default
9138 \family default
9135 Emacs work, bug reports, bug fixes, ideas, lots more.
9139 Emacs work, bug reports, bug fixes, ideas, lots more.
9136 The ipython.el mode for (X)Emacs is Alex's code, providing full support
9140 The ipython.el mode for (X)Emacs is Alex's code, providing full support
9137 for IPython under (X)Emacs.
9141 for IPython under (X)Emacs.
9138 \layout List
9142 \layout List
9139 \labelwidthstring 00.00.0000
9143 \labelwidthstring 00.00.0000
9140
9144
9141 Andrea\SpecialChar ~
9145 Andrea\SpecialChar ~
9142 Riciputi
9146 Riciputi
9143 \family typewriter
9147 \family typewriter
9144 <andrea.riciputi-AT-libero.it>
9148 <andrea.riciputi-AT-libero.it>
9145 \family default
9149 \family default
9146 Mac OSX information, Fink package management.
9150 Mac OSX information, Fink package management.
9147 \layout List
9151 \layout List
9148 \labelwidthstring 00.00.0000
9152 \labelwidthstring 00.00.0000
9149
9153
9150 Gary\SpecialChar ~
9154 Gary\SpecialChar ~
9151 Bishop
9155 Bishop
9152 \family typewriter
9156 \family typewriter
9153 <gb-AT-cs.unc.edu>
9157 <gb-AT-cs.unc.edu>
9154 \family default
9158 \family default
9155 Bug reports, and patches to work around the exception handling idiosyncracies
9159 Bug reports, and patches to work around the exception handling idiosyncracies
9156 of WxPython.
9160 of WxPython.
9157 Readline and color support for Windows.
9161 Readline and color support for Windows.
9158 \layout List
9162 \layout List
9159 \labelwidthstring 00.00.0000
9163 \labelwidthstring 00.00.0000
9160
9164
9161 Jeffrey\SpecialChar ~
9165 Jeffrey\SpecialChar ~
9162 Collins
9166 Collins
9163 \family typewriter
9167 \family typewriter
9164 <Jeff.Collins-AT-vexcel.com>
9168 <Jeff.Collins-AT-vexcel.com>
9165 \family default
9169 \family default
9166 Bug reports.
9170 Bug reports.
9167 Much improved readline support, including fixes for Python 2.3.
9171 Much improved readline support, including fixes for Python 2.3.
9168 \layout List
9172 \layout List
9169 \labelwidthstring 00.00.0000
9173 \labelwidthstring 00.00.0000
9170
9174
9171 Dryice\SpecialChar ~
9175 Dryice\SpecialChar ~
9172 Liu
9176 Liu
9173 \family typewriter
9177 \family typewriter
9174 <dryice-AT-liu.com.cn>
9178 <dryice-AT-liu.com.cn>
9175 \family default
9179 \family default
9176 FreeBSD port.
9180 FreeBSD port.
9177 \layout List
9181 \layout List
9178 \labelwidthstring 00.00.0000
9182 \labelwidthstring 00.00.0000
9179
9183
9180 Mike\SpecialChar ~
9184 Mike\SpecialChar ~
9181 Heeter
9185 Heeter
9182 \family typewriter
9186 \family typewriter
9183 <korora-AT-SDF.LONESTAR.ORG>
9187 <korora-AT-SDF.LONESTAR.ORG>
9184 \layout List
9188 \layout List
9185 \labelwidthstring 00.00.0000
9189 \labelwidthstring 00.00.0000
9186
9190
9187 Christopher\SpecialChar ~
9191 Christopher\SpecialChar ~
9188 Hart
9192 Hart
9189 \family typewriter
9193 \family typewriter
9190 <hart-AT-caltech.edu>
9194 <hart-AT-caltech.edu>
9191 \family default
9195 \family default
9192 PDB integration.
9196 PDB integration.
9193 \layout List
9197 \layout List
9194 \labelwidthstring 00.00.0000
9198 \labelwidthstring 00.00.0000
9195
9199
9196 Milan\SpecialChar ~
9200 Milan\SpecialChar ~
9197 Zamazal
9201 Zamazal
9198 \family typewriter
9202 \family typewriter
9199 <pdm-AT-zamazal.org>
9203 <pdm-AT-zamazal.org>
9200 \family default
9204 \family default
9201 Emacs info.
9205 Emacs info.
9202 \layout List
9206 \layout List
9203 \labelwidthstring 00.00.0000
9207 \labelwidthstring 00.00.0000
9204
9208
9205 Philip\SpecialChar ~
9209 Philip\SpecialChar ~
9206 Hisley
9210 Hisley
9207 \family typewriter
9211 \family typewriter
9208 <compsys-AT-starpower.net>
9212 <compsys-AT-starpower.net>
9209 \layout List
9213 \layout List
9210 \labelwidthstring 00.00.0000
9214 \labelwidthstring 00.00.0000
9211
9215
9212 Holger\SpecialChar ~
9216 Holger\SpecialChar ~
9213 Krekel
9217 Krekel
9214 \family typewriter
9218 \family typewriter
9215 <pyth-AT-devel.trillke.net>
9219 <pyth-AT-devel.trillke.net>
9216 \family default
9220 \family default
9217 Tab completion, lots more.
9221 Tab completion, lots more.
9218 \layout List
9222 \layout List
9219 \labelwidthstring 00.00.0000
9223 \labelwidthstring 00.00.0000
9220
9224
9221 Robin\SpecialChar ~
9225 Robin\SpecialChar ~
9222 Siebler
9226 Siebler
9223 \family typewriter
9227 \family typewriter
9224 <robinsiebler-AT-starband.net>
9228 <robinsiebler-AT-starband.net>
9225 \layout List
9229 \layout List
9226 \labelwidthstring 00.00.0000
9230 \labelwidthstring 00.00.0000
9227
9231
9228 Ralf\SpecialChar ~
9232 Ralf\SpecialChar ~
9229 Ahlbrink
9233 Ahlbrink
9230 \family typewriter
9234 \family typewriter
9231 <ralf_ahlbrink-AT-web.de>
9235 <ralf_ahlbrink-AT-web.de>
9232 \layout List
9236 \layout List
9233 \labelwidthstring 00.00.0000
9237 \labelwidthstring 00.00.0000
9234
9238
9235 Thorsten\SpecialChar ~
9239 Thorsten\SpecialChar ~
9236 Kampe
9240 Kampe
9237 \family typewriter
9241 \family typewriter
9238 <thorsten-AT-thorstenkampe.de>
9242 <thorsten-AT-thorstenkampe.de>
9239 \layout List
9243 \layout List
9240 \labelwidthstring 00.00.0000
9244 \labelwidthstring 00.00.0000
9241
9245
9242 Fredrik\SpecialChar ~
9246 Fredrik\SpecialChar ~
9243 Kant
9247 Kant
9244 \family typewriter
9248 \family typewriter
9245 <fredrik.kant-AT-front.com>
9249 <fredrik.kant-AT-front.com>
9246 \family default
9250 \family default
9247 Windows setup.
9251 Windows setup.
9248 \layout List
9252 \layout List
9249 \labelwidthstring 00.00.0000
9253 \labelwidthstring 00.00.0000
9250
9254
9251 Syver\SpecialChar ~
9255 Syver\SpecialChar ~
9252 Enstad
9256 Enstad
9253 \family typewriter
9257 \family typewriter
9254 <syver-en-AT-online.no>
9258 <syver-en-AT-online.no>
9255 \family default
9259 \family default
9256 Windows setup.
9260 Windows setup.
9257 \layout List
9261 \layout List
9258 \labelwidthstring 00.00.0000
9262 \labelwidthstring 00.00.0000
9259
9263
9260 Richard
9264 Richard
9261 \family typewriter
9265 \family typewriter
9262 <rxe-AT-renre-europe.com>
9266 <rxe-AT-renre-europe.com>
9263 \family default
9267 \family default
9264 Global embedding.
9268 Global embedding.
9265 \layout List
9269 \layout List
9266 \labelwidthstring 00.00.0000
9270 \labelwidthstring 00.00.0000
9267
9271
9268 Hayden\SpecialChar ~
9272 Hayden\SpecialChar ~
9269 Callow
9273 Callow
9270 \family typewriter
9274 \family typewriter
9271 <h.callow-AT-elec.canterbury.ac.nz>
9275 <h.callow-AT-elec.canterbury.ac.nz>
9272 \family default
9276 \family default
9273 Gnuplot.py 1.6 compatibility.
9277 Gnuplot.py 1.6 compatibility.
9274 \layout List
9278 \layout List
9275 \labelwidthstring 00.00.0000
9279 \labelwidthstring 00.00.0000
9276
9280
9277 Leonardo\SpecialChar ~
9281 Leonardo\SpecialChar ~
9278 Santagada
9282 Santagada
9279 \family typewriter
9283 \family typewriter
9280 <retype-AT-terra.com.br>
9284 <retype-AT-terra.com.br>
9281 \family default
9285 \family default
9282 Fixes for Windows installation.
9286 Fixes for Windows installation.
9283 \layout List
9287 \layout List
9284 \labelwidthstring 00.00.0000
9288 \labelwidthstring 00.00.0000
9285
9289
9286 Christopher\SpecialChar ~
9290 Christopher\SpecialChar ~
9287 Armstrong
9291 Armstrong
9288 \family typewriter
9292 \family typewriter
9289 <radix-AT-twistedmatrix.com>
9293 <radix-AT-twistedmatrix.com>
9290 \family default
9294 \family default
9291 Bugfixes.
9295 Bugfixes.
9292 \layout List
9296 \layout List
9293 \labelwidthstring 00.00.0000
9297 \labelwidthstring 00.00.0000
9294
9298
9295 Francois\SpecialChar ~
9299 Francois\SpecialChar ~
9296 Pinard
9300 Pinard
9297 \family typewriter
9301 \family typewriter
9298 <pinard-AT-iro.umontreal.ca>
9302 <pinard-AT-iro.umontreal.ca>
9299 \family default
9303 \family default
9300 Code and documentation fixes.
9304 Code and documentation fixes.
9301 \layout List
9305 \layout List
9302 \labelwidthstring 00.00.0000
9306 \labelwidthstring 00.00.0000
9303
9307
9304 Cory\SpecialChar ~
9308 Cory\SpecialChar ~
9305 Dodt
9309 Dodt
9306 \family typewriter
9310 \family typewriter
9307 <cdodt-AT-fcoe.k12.ca.us>
9311 <cdodt-AT-fcoe.k12.ca.us>
9308 \family default
9312 \family default
9309 Bug reports and Windows ideas.
9313 Bug reports and Windows ideas.
9310 Patches for Windows installer.
9314 Patches for Windows installer.
9311 \layout List
9315 \layout List
9312 \labelwidthstring 00.00.0000
9316 \labelwidthstring 00.00.0000
9313
9317
9314 Olivier\SpecialChar ~
9318 Olivier\SpecialChar ~
9315 Aubert
9319 Aubert
9316 \family typewriter
9320 \family typewriter
9317 <oaubert-AT-bat710.univ-lyon1.fr>
9321 <oaubert-AT-bat710.univ-lyon1.fr>
9318 \family default
9322 \family default
9319 New magics.
9323 New magics.
9320 \layout List
9324 \layout List
9321 \labelwidthstring 00.00.0000
9325 \labelwidthstring 00.00.0000
9322
9326
9323 King\SpecialChar ~
9327 King\SpecialChar ~
9324 C.\SpecialChar ~
9328 C.\SpecialChar ~
9325 Shu
9329 Shu
9326 \family typewriter
9330 \family typewriter
9327 <kingshu-AT-myrealbox.com>
9331 <kingshu-AT-myrealbox.com>
9328 \family default
9332 \family default
9329 Autoindent patch.
9333 Autoindent patch.
9330 \layout List
9334 \layout List
9331 \labelwidthstring 00.00.0000
9335 \labelwidthstring 00.00.0000
9332
9336
9333 Chris\SpecialChar ~
9337 Chris\SpecialChar ~
9334 Drexler
9338 Drexler
9335 \family typewriter
9339 \family typewriter
9336 <chris-AT-ac-drexler.de>
9340 <chris-AT-ac-drexler.de>
9337 \family default
9341 \family default
9338 Readline packages for Win32/CygWin.
9342 Readline packages for Win32/CygWin.
9339 \layout List
9343 \layout List
9340 \labelwidthstring 00.00.0000
9344 \labelwidthstring 00.00.0000
9341
9345
9342 Gustavo\SpecialChar ~
9346 Gustavo\SpecialChar ~
9343 Cordova\SpecialChar ~
9347 Cordova\SpecialChar ~
9344 Avila
9348 Avila
9345 \family typewriter
9349 \family typewriter
9346 <gcordova-AT-sismex.com>
9350 <gcordova-AT-sismex.com>
9347 \family default
9351 \family default
9348 EvalDict code for nice, lightweight string interpolation.
9352 EvalDict code for nice, lightweight string interpolation.
9349 \layout List
9353 \layout List
9350 \labelwidthstring 00.00.0000
9354 \labelwidthstring 00.00.0000
9351
9355
9352 Kasper\SpecialChar ~
9356 Kasper\SpecialChar ~
9353 Souren
9357 Souren
9354 \family typewriter
9358 \family typewriter
9355 <Kasper.Souren-AT-ircam.fr>
9359 <Kasper.Souren-AT-ircam.fr>
9356 \family default
9360 \family default
9357 Bug reports, ideas.
9361 Bug reports, ideas.
9358 \layout List
9362 \layout List
9359 \labelwidthstring 00.00.0000
9363 \labelwidthstring 00.00.0000
9360
9364
9361 Gever\SpecialChar ~
9365 Gever\SpecialChar ~
9362 Tulley
9366 Tulley
9363 \family typewriter
9367 \family typewriter
9364 <gever-AT-helium.com>
9368 <gever-AT-helium.com>
9365 \family default
9369 \family default
9366 Code contributions.
9370 Code contributions.
9367 \layout List
9371 \layout List
9368 \labelwidthstring 00.00.0000
9372 \labelwidthstring 00.00.0000
9369
9373
9370 Ralf\SpecialChar ~
9374 Ralf\SpecialChar ~
9371 Schmitt
9375 Schmitt
9372 \family typewriter
9376 \family typewriter
9373 <ralf-AT-brainbot.com>
9377 <ralf-AT-brainbot.com>
9374 \family default
9378 \family default
9375 Bug reports & fixes.
9379 Bug reports & fixes.
9376 \layout List
9380 \layout List
9377 \labelwidthstring 00.00.0000
9381 \labelwidthstring 00.00.0000
9378
9382
9379 Oliver\SpecialChar ~
9383 Oliver\SpecialChar ~
9380 Sander
9384 Sander
9381 \family typewriter
9385 \family typewriter
9382 <osander-AT-gmx.de>
9386 <osander-AT-gmx.de>
9383 \family default
9387 \family default
9384 Bug reports.
9388 Bug reports.
9385 \layout List
9389 \layout List
9386 \labelwidthstring 00.00.0000
9390 \labelwidthstring 00.00.0000
9387
9391
9388 Rod\SpecialChar ~
9392 Rod\SpecialChar ~
9389 Holland
9393 Holland
9390 \family typewriter
9394 \family typewriter
9391 <rhh-AT-structurelabs.com>
9395 <rhh-AT-structurelabs.com>
9392 \family default
9396 \family default
9393 Bug reports and fixes to logging module.
9397 Bug reports and fixes to logging module.
9394 \layout List
9398 \layout List
9395 \labelwidthstring 00.00.0000
9399 \labelwidthstring 00.00.0000
9396
9400
9397 Daniel\SpecialChar ~
9401 Daniel\SpecialChar ~
9398 'Dang'\SpecialChar ~
9402 'Dang'\SpecialChar ~
9399 Griffith
9403 Griffith
9400 \family typewriter
9404 \family typewriter
9401 <pythondev-dang-AT-lazytwinacres.net>
9405 <pythondev-dang-AT-lazytwinacres.net>
9402 \family default
9406 \family default
9403 Fixes, enhancement suggestions for system shell use.
9407 Fixes, enhancement suggestions for system shell use.
9404 \layout List
9408 \layout List
9405 \labelwidthstring 00.00.0000
9409 \labelwidthstring 00.00.0000
9406
9410
9407 Viktor\SpecialChar ~
9411 Viktor\SpecialChar ~
9408 Ransmayr
9412 Ransmayr
9409 \family typewriter
9413 \family typewriter
9410 <viktor.ransmayr-AT-t-online.de>
9414 <viktor.ransmayr-AT-t-online.de>
9411 \family default
9415 \family default
9412 Tests and reports on Windows installation issues.
9416 Tests and reports on Windows installation issues.
9413 Contributed a true Windows binary installer.
9417 Contributed a true Windows binary installer.
9414 \layout List
9418 \layout List
9415 \labelwidthstring 00.00.0000
9419 \labelwidthstring 00.00.0000
9416
9420
9417 Mike\SpecialChar ~
9421 Mike\SpecialChar ~
9418 Salib
9422 Salib
9419 \family typewriter
9423 \family typewriter
9420 <msalib-AT-mit.edu>
9424 <msalib-AT-mit.edu>
9421 \family default
9425 \family default
9422 Help fixing a subtle bug related to traceback printing.
9426 Help fixing a subtle bug related to traceback printing.
9423 \layout List
9427 \layout List
9424 \labelwidthstring 00.00.0000
9428 \labelwidthstring 00.00.0000
9425
9429
9426 W.J.\SpecialChar ~
9430 W.J.\SpecialChar ~
9427 van\SpecialChar ~
9431 van\SpecialChar ~
9428 der\SpecialChar ~
9432 der\SpecialChar ~
9429 Laan
9433 Laan
9430 \family typewriter
9434 \family typewriter
9431 <gnufnork-AT-hetdigitalegat.nl>
9435 <gnufnork-AT-hetdigitalegat.nl>
9432 \family default
9436 \family default
9433 Bash-like prompt specials.
9437 Bash-like prompt specials.
9434 \layout List
9438 \layout List
9435 \labelwidthstring 00.00.0000
9439 \labelwidthstring 00.00.0000
9436
9440
9437 Antoon\SpecialChar ~
9441 Antoon\SpecialChar ~
9438 Pardon
9442 Pardon
9439 \family typewriter
9443 \family typewriter
9440 <Antoon.Pardon-AT-rece.vub.ac.be>
9444 <Antoon.Pardon-AT-rece.vub.ac.be>
9441 \family default
9445 \family default
9442 Critical fix for the multithreaded IPython.
9446 Critical fix for the multithreaded IPython.
9443 \layout List
9447 \layout List
9444 \labelwidthstring 00.00.0000
9448 \labelwidthstring 00.00.0000
9445
9449
9446 John\SpecialChar ~
9450 John\SpecialChar ~
9447 Hunter
9451 Hunter
9448 \family typewriter
9452 \family typewriter
9449 <jdhunter-AT-nitace.bsd.uchicago.edu>
9453 <jdhunter-AT-nitace.bsd.uchicago.edu>
9450 \family default
9454 \family default
9451 Matplotlib author, helped with all the development of support for matplotlib
9455 Matplotlib author, helped with all the development of support for matplotlib
9452 in IPyhton, including making necessary changes to matplotlib itself.
9456 in IPyhton, including making necessary changes to matplotlib itself.
9453 \layout List
9457 \layout List
9454 \labelwidthstring 00.00.0000
9458 \labelwidthstring 00.00.0000
9455
9459
9456 Matthew\SpecialChar ~
9460 Matthew\SpecialChar ~
9457 Arnison
9461 Arnison
9458 \family typewriter
9462 \family typewriter
9459 <maffew-AT-cat.org.au>
9463 <maffew-AT-cat.org.au>
9460 \family default
9464 \family default
9461 Bug reports, `
9465 Bug reports, `
9462 \family typewriter
9466 \family typewriter
9463 %run -d
9467 %run -d
9464 \family default
9468 \family default
9465 ' idea.
9469 ' idea.
9466 \layout List
9470 \layout List
9467 \labelwidthstring 00.00.0000
9471 \labelwidthstring 00.00.0000
9468
9472
9469 Prabhu\SpecialChar ~
9473 Prabhu\SpecialChar ~
9470 Ramachandran
9474 Ramachandran
9471 \family typewriter
9475 \family typewriter
9472 <prabhu_r-AT-users.sourceforge.net>
9476 <prabhu_r-AT-users.sourceforge.net>
9473 \family default
9477 \family default
9474 Help with (X)Emacs support, threading patches, ideas...
9478 Help with (X)Emacs support, threading patches, ideas...
9475 \layout List
9479 \layout List
9476 \labelwidthstring 00.00.0000
9480 \labelwidthstring 00.00.0000
9477
9481
9478 Norbert\SpecialChar ~
9482 Norbert\SpecialChar ~
9479 Tretkowski
9483 Tretkowski
9480 \family typewriter
9484 \family typewriter
9481 <tretkowski-AT-inittab.de>
9485 <tretkowski-AT-inittab.de>
9482 \family default
9486 \family default
9483 help with Debian packaging and distribution.
9487 help with Debian packaging and distribution.
9484 \layout List
9488 \layout List
9485 \labelwidthstring 00.00.0000
9489 \labelwidthstring 00.00.0000
9486
9490
9487 George\SpecialChar ~
9491 George\SpecialChar ~
9488 Sakkis <
9492 Sakkis <
9489 \family typewriter
9493 \family typewriter
9490 gsakkis-AT-eden.rutgers.edu>
9494 gsakkis-AT-eden.rutgers.edu>
9491 \family default
9495 \family default
9492 New matcher for tab-completing named arguments of user-defined functions.
9496 New matcher for tab-completing named arguments of user-defined functions.
9493 \layout List
9497 \layout List
9494 \labelwidthstring 00.00.0000
9498 \labelwidthstring 00.00.0000
9495
9499
9496 JοΏ½rgen\SpecialChar ~
9500 JοΏ½rgen\SpecialChar ~
9497 Stenarson
9501 Stenarson
9498 \family typewriter
9502 \family typewriter
9499 <jorgen.stenarson-AT-bostream.nu>
9503 <jorgen.stenarson-AT-bostream.nu>
9500 \family default
9504 \family default
9501 Wildcard support implementation for searching namespaces.
9505 Wildcard support implementation for searching namespaces.
9502 \layout List
9506 \layout List
9503 \labelwidthstring 00.00.0000
9507 \labelwidthstring 00.00.0000
9504
9508
9505 Vivian\SpecialChar ~
9509 Vivian\SpecialChar ~
9506 De\SpecialChar ~
9510 De\SpecialChar ~
9507 Smedt
9511 Smedt
9508 \family typewriter
9512 \family typewriter
9509 <vivian-AT-vdesmedt.com>
9513 <vivian-AT-vdesmedt.com>
9510 \family default
9514 \family default
9511 Debugger enhancements, so that when pdb is activated from within IPython,
9515 Debugger enhancements, so that when pdb is activated from within IPython,
9512 coloring, tab completion and other features continue to work seamlessly.
9516 coloring, tab completion and other features continue to work seamlessly.
9513 \layout List
9517 \layout List
9514 \labelwidthstring 00.00.0000
9518 \labelwidthstring 00.00.0000
9515
9519
9516 Scott\SpecialChar ~
9520 Scott\SpecialChar ~
9517 Tsai
9521 Tsai
9518 \family typewriter
9522 \family typewriter
9519 <scottt958-AT-yahoo.com.tw>
9523 <scottt958-AT-yahoo.com.tw>
9520 \family default
9524 \family default
9521 Support for automatic editor invocation on syntax errors (see
9525 Support for automatic editor invocation on syntax errors (see
9522 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
9526 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
9523
9527
9524 \end_inset
9528 \end_inset
9525
9529
9526 ).
9530 ).
9527 \layout List
9531 \layout List
9528 \labelwidthstring 00.00.0000
9532 \labelwidthstring 00.00.0000
9529
9533
9530 Alexander\SpecialChar ~
9534 Alexander\SpecialChar ~
9531 Belchenko
9535 Belchenko
9532 \family typewriter
9536 \family typewriter
9533 <bialix-AT-ukr.net>
9537 <bialix-AT-ukr.net>
9534 \family default
9538 \family default
9535 Improvements for win32 paging system.
9539 Improvements for win32 paging system.
9536 \layout List
9540 \layout List
9537 \labelwidthstring 00.00.0000
9541 \labelwidthstring 00.00.0000
9538
9542
9539 Will\SpecialChar ~
9543 Will\SpecialChar ~
9540 Maier
9544 Maier
9541 \family typewriter
9545 \family typewriter
9542 <willmaier-AT-ml1.net>
9546 <willmaier-AT-ml1.net>
9543 \family default
9547 \family default
9544 Official OpenBSD port.
9548 Official OpenBSD port.
9545 \the_end
9549 \the_end
General Comments 0
You need to be logged in to leave comments. Login now