##// 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 1 # -*- coding: utf-8 -*-
2 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 7 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
8 8 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
9 9 #
10 10 # Distributed under the terms of the BSD License. The full license is in
11 11 # the file COPYING, distributed as part of this software.
12 12 #*****************************************************************************
13 13
14 14 #****************************************************************************
15 15 # Modules and globals
16 16
17 17 from IPython import Release
18 18 __author__ = '%s <%s>\n%s <%s>' % \
19 19 ( Release.authors['Janko'] + Release.authors['Fernando'] )
20 20 __license__ = Release.license
21 21
22 22 # Python standard modules
23 23 import __builtin__
24 24 import bdb
25 25 import inspect
26 26 import os
27 27 import pdb
28 28 import pydoc
29 29 import sys
30 30 import re
31 31 import tempfile
32 32 import time
33 33 import cPickle as pickle
34 34 import textwrap
35 35 from cStringIO import StringIO
36 36 from getopt import getopt,GetoptError
37 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 40 try:
41 import profile,pstats
41 import cProfile as profile
42 import pstats
42 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 50 # Homebrewed
46 51 import IPython
47 52 from IPython import Debugger, OInspect, wildcard
48 53 from IPython.FakeModule import FakeModule
49 54 from IPython.Itpl import Itpl, itpl, printpl,itplns
50 55 from IPython.PyColorize import Parser
51 56 from IPython.ipstruct import Struct
52 57 from IPython.macro import Macro
53 58 from IPython.genutils import *
54 59 from IPython import platutils
55 60
56 61 #***************************************************************************
57 62 # Utility functions
58 63 def on_off(tag):
59 64 """Return an ON/OFF string for a 1/0 input. Simple utility function."""
60 65 return ['OFF','ON'][tag]
61 66
62 67 class Bunch: pass
63 68
64 69 #***************************************************************************
65 70 # Main class implementing Magic functionality
66 71 class Magic:
67 72 """Magic functions for InteractiveShell.
68 73
69 74 Shell functions which can be reached as %function_name. All magic
70 75 functions should accept a string, which they can parse for their own
71 76 needs. This can make some functions easier to type, eg `%cd ../`
72 77 vs. `%cd("../")`
73 78
74 79 ALL definitions MUST begin with the prefix magic_. The user won't need it
75 80 at the command line, but it is is needed in the definition. """
76 81
77 82 # class globals
78 83 auto_status = ['Automagic is OFF, % prefix IS needed for magic functions.',
79 84 'Automagic is ON, % prefix NOT needed for magic functions.']
80 85
81 86 #......................................................................
82 87 # some utility functions
83 88
84 89 def __init__(self,shell):
85 90
86 91 self.options_table = {}
87 92 if profile is None:
88 93 self.magic_prun = self.profile_missing_notice
89 94 self.shell = shell
90 95
91 96 # namespace for holding state we may need
92 97 self._magic_state = Bunch()
93 98
94 99 def profile_missing_notice(self, *args, **kwargs):
95 100 error("""\
96 101 The profile module could not be found. If you are a Debian user,
97 102 it has been removed from the standard Debian package because of its non-free
98 103 license. To use profiling, please install"python2.3-profiler" from non-free.""")
99 104
100 105 def default_option(self,fn,optstr):
101 106 """Make an entry in the options_table for fn, with value optstr"""
102 107
103 108 if fn not in self.lsmagic():
104 109 error("%s is not a magic function" % fn)
105 110 self.options_table[fn] = optstr
106 111
107 112 def lsmagic(self):
108 113 """Return a list of currently available magic functions.
109 114
110 115 Gives a list of the bare names after mangling (['ls','cd', ...], not
111 116 ['magic_ls','magic_cd',...]"""
112 117
113 118 # FIXME. This needs a cleanup, in the way the magics list is built.
114 119
115 120 # magics in class definition
116 121 class_magic = lambda fn: fn.startswith('magic_') and \
117 122 callable(Magic.__dict__[fn])
118 123 # in instance namespace (run-time user additions)
119 124 inst_magic = lambda fn: fn.startswith('magic_') and \
120 125 callable(self.__dict__[fn])
121 126 # and bound magics by user (so they can access self):
122 127 inst_bound_magic = lambda fn: fn.startswith('magic_') and \
123 128 callable(self.__class__.__dict__[fn])
124 129 magics = filter(class_magic,Magic.__dict__.keys()) + \
125 130 filter(inst_magic,self.__dict__.keys()) + \
126 131 filter(inst_bound_magic,self.__class__.__dict__.keys())
127 132 out = []
128 133 for fn in magics:
129 134 out.append(fn.replace('magic_','',1))
130 135 out.sort()
131 136 return out
132 137
133 138 def extract_input_slices(self,slices,raw=False):
134 139 """Return as a string a set of input history slices.
135 140
136 141 Inputs:
137 142
138 143 - slices: the set of slices is given as a list of strings (like
139 144 ['1','4:8','9'], since this function is for use by magic functions
140 145 which get their arguments as strings.
141 146
142 147 Optional inputs:
143 148
144 149 - raw(False): by default, the processed input is used. If this is
145 150 true, the raw input history is used instead.
146 151
147 152 Note that slices can be called with two notations:
148 153
149 154 N:M -> standard python form, means including items N...(M-1).
150 155
151 156 N-M -> include items N..M (closed endpoint)."""
152 157
153 158 if raw:
154 159 hist = self.shell.input_hist_raw
155 160 else:
156 161 hist = self.shell.input_hist
157 162
158 163 cmds = []
159 164 for chunk in slices:
160 165 if ':' in chunk:
161 166 ini,fin = map(int,chunk.split(':'))
162 167 elif '-' in chunk:
163 168 ini,fin = map(int,chunk.split('-'))
164 169 fin += 1
165 170 else:
166 171 ini = int(chunk)
167 172 fin = ini+1
168 173 cmds.append(hist[ini:fin])
169 174 return cmds
170 175
171 176 def _ofind(self, oname, namespaces=None):
172 177 """Find an object in the available namespaces.
173 178
174 179 self._ofind(oname) -> dict with keys: found,obj,ospace,ismagic
175 180
176 181 Has special code to detect magic functions.
177 182 """
178 183
179 184 oname = oname.strip()
180 185
181 186 alias_ns = None
182 187 if namespaces is None:
183 188 # Namespaces to search in:
184 189 # Put them in a list. The order is important so that we
185 190 # find things in the same order that Python finds them.
186 191 namespaces = [ ('Interactive', self.shell.user_ns),
187 192 ('IPython internal', self.shell.internal_ns),
188 193 ('Python builtin', __builtin__.__dict__),
189 194 ('Alias', self.shell.alias_table),
190 195 ]
191 196 alias_ns = self.shell.alias_table
192 197
193 198 # initialize results to 'null'
194 199 found = 0; obj = None; ospace = None; ds = None;
195 200 ismagic = 0; isalias = 0; parent = None
196 201
197 202 # Look for the given name by splitting it in parts. If the head is
198 203 # found, then we look for all the remaining parts as members, and only
199 204 # declare success if we can find them all.
200 205 oname_parts = oname.split('.')
201 206 oname_head, oname_rest = oname_parts[0],oname_parts[1:]
202 207 for nsname,ns in namespaces:
203 208 try:
204 209 obj = ns[oname_head]
205 210 except KeyError:
206 211 continue
207 212 else:
208 213 for part in oname_rest:
209 214 try:
210 215 parent = obj
211 216 obj = getattr(obj,part)
212 217 except:
213 218 # Blanket except b/c some badly implemented objects
214 219 # allow __getattr__ to raise exceptions other than
215 220 # AttributeError, which then crashes IPython.
216 221 break
217 222 else:
218 223 # If we finish the for loop (no break), we got all members
219 224 found = 1
220 225 ospace = nsname
221 226 if ns == alias_ns:
222 227 isalias = 1
223 228 break # namespace loop
224 229
225 230 # Try to see if it's magic
226 231 if not found:
227 232 if oname.startswith(self.shell.ESC_MAGIC):
228 233 oname = oname[1:]
229 234 obj = getattr(self,'magic_'+oname,None)
230 235 if obj is not None:
231 236 found = 1
232 237 ospace = 'IPython internal'
233 238 ismagic = 1
234 239
235 240 # Last try: special-case some literals like '', [], {}, etc:
236 241 if not found and oname_head in ["''",'""','[]','{}','()']:
237 242 obj = eval(oname_head)
238 243 found = 1
239 244 ospace = 'Interactive'
240 245
241 246 return {'found':found, 'obj':obj, 'namespace':ospace,
242 247 'ismagic':ismagic, 'isalias':isalias, 'parent':parent}
243 248
244 249 def arg_err(self,func):
245 250 """Print docstring if incorrect arguments were passed"""
246 251 print 'Error in arguments:'
247 252 print OInspect.getdoc(func)
248 253
249 254 def format_latex(self,strng):
250 255 """Format a string for latex inclusion."""
251 256
252 257 # Characters that need to be escaped for latex:
253 258 escape_re = re.compile(r'(%|_|\$|#|&)',re.MULTILINE)
254 259 # Magic command names as headers:
255 260 cmd_name_re = re.compile(r'^(%s.*?):' % self.shell.ESC_MAGIC,
256 261 re.MULTILINE)
257 262 # Magic commands
258 263 cmd_re = re.compile(r'(?P<cmd>%s.+?\b)(?!\}\}:)' % self.shell.ESC_MAGIC,
259 264 re.MULTILINE)
260 265 # Paragraph continue
261 266 par_re = re.compile(r'\\$',re.MULTILINE)
262 267
263 268 # The "\n" symbol
264 269 newline_re = re.compile(r'\\n')
265 270
266 271 # Now build the string for output:
267 272 #strng = cmd_name_re.sub(r'\n\\texttt{\\textsl{\\large \1}}:',strng)
268 273 strng = cmd_name_re.sub(r'\n\\bigskip\n\\texttt{\\textbf{ \1}}:',
269 274 strng)
270 275 strng = cmd_re.sub(r'\\texttt{\g<cmd>}',strng)
271 276 strng = par_re.sub(r'\\\\',strng)
272 277 strng = escape_re.sub(r'\\\1',strng)
273 278 strng = newline_re.sub(r'\\textbackslash{}n',strng)
274 279 return strng
275 280
276 281 def format_screen(self,strng):
277 282 """Format a string for screen printing.
278 283
279 284 This removes some latex-type format codes."""
280 285 # Paragraph continue
281 286 par_re = re.compile(r'\\$',re.MULTILINE)
282 287 strng = par_re.sub('',strng)
283 288 return strng
284 289
285 290 def parse_options(self,arg_str,opt_str,*long_opts,**kw):
286 291 """Parse options passed to an argument string.
287 292
288 293 The interface is similar to that of getopt(), but it returns back a
289 294 Struct with the options as keys and the stripped argument string still
290 295 as a string.
291 296
292 297 arg_str is quoted as a true sys.argv vector by using shlex.split.
293 298 This allows us to easily expand variables, glob files, quote
294 299 arguments, etc.
295 300
296 301 Options:
297 302 -mode: default 'string'. If given as 'list', the argument string is
298 303 returned as a list (split on whitespace) instead of a string.
299 304
300 305 -list_all: put all option values in lists. Normally only options
301 306 appearing more than once are put in a list.
302 307
303 308 -posix (True): whether to split the input line in POSIX mode or not,
304 309 as per the conventions outlined in the shlex module from the
305 310 standard library."""
306 311
307 312 # inject default options at the beginning of the input line
308 313 caller = sys._getframe(1).f_code.co_name.replace('magic_','')
309 314 arg_str = '%s %s' % (self.options_table.get(caller,''),arg_str)
310 315
311 316 mode = kw.get('mode','string')
312 317 if mode not in ['string','list']:
313 318 raise ValueError,'incorrect mode given: %s' % mode
314 319 # Get options
315 320 list_all = kw.get('list_all',0)
316 321 posix = kw.get('posix',True)
317 322
318 323 # Check if we have more than one argument to warrant extra processing:
319 324 odict = {} # Dictionary with options
320 325 args = arg_str.split()
321 326 if len(args) >= 1:
322 327 # If the list of inputs only has 0 or 1 thing in it, there's no
323 328 # need to look for options
324 329 argv = arg_split(arg_str,posix)
325 330 # Do regular option processing
326 331 try:
327 332 opts,args = getopt(argv,opt_str,*long_opts)
328 333 except GetoptError,e:
329 334 raise GetoptError('%s ( allowed: "%s" %s)' % (e.msg,opt_str,
330 335 " ".join(long_opts)))
331 336 for o,a in opts:
332 337 if o.startswith('--'):
333 338 o = o[2:]
334 339 else:
335 340 o = o[1:]
336 341 try:
337 342 odict[o].append(a)
338 343 except AttributeError:
339 344 odict[o] = [odict[o],a]
340 345 except KeyError:
341 346 if list_all:
342 347 odict[o] = [a]
343 348 else:
344 349 odict[o] = a
345 350
346 351 # Prepare opts,args for return
347 352 opts = Struct(odict)
348 353 if mode == 'string':
349 354 args = ' '.join(args)
350 355
351 356 return opts,args
352 357
353 358 #......................................................................
354 359 # And now the actual magic functions
355 360
356 361 # Functions for IPython shell work (vars,funcs, config, etc)
357 362 def magic_lsmagic(self, parameter_s = ''):
358 363 """List currently available magic functions."""
359 364 mesc = self.shell.ESC_MAGIC
360 365 print 'Available magic functions:\n'+mesc+\
361 366 (' '+mesc).join(self.lsmagic())
362 367 print '\n' + Magic.auto_status[self.shell.rc.automagic]
363 368 return None
364 369
365 370 def magic_magic(self, parameter_s = ''):
366 371 """Print information about the magic function system."""
367 372
368 373 mode = ''
369 374 try:
370 375 if parameter_s.split()[0] == '-latex':
371 376 mode = 'latex'
372 377 if parameter_s.split()[0] == '-brief':
373 378 mode = 'brief'
374 379 except:
375 380 pass
376 381
377 382 magic_docs = []
378 383 for fname in self.lsmagic():
379 384 mname = 'magic_' + fname
380 385 for space in (Magic,self,self.__class__):
381 386 try:
382 387 fn = space.__dict__[mname]
383 388 except KeyError:
384 389 pass
385 390 else:
386 391 break
387 392 if mode == 'brief':
388 393 # only first line
389 394 fndoc = fn.__doc__.split('\n',1)[0]
390 395 else:
391 396 fndoc = fn.__doc__
392 397
393 398 magic_docs.append('%s%s:\n\t%s\n' %(self.shell.ESC_MAGIC,
394 399 fname,fndoc))
395 400 magic_docs = ''.join(magic_docs)
396 401
397 402 if mode == 'latex':
398 403 print self.format_latex(magic_docs)
399 404 return
400 405 else:
401 406 magic_docs = self.format_screen(magic_docs)
402 407 if mode == 'brief':
403 408 return magic_docs
404 409
405 410 outmsg = """
406 411 IPython's 'magic' functions
407 412 ===========================
408 413
409 414 The magic function system provides a series of functions which allow you to
410 415 control the behavior of IPython itself, plus a lot of system-type
411 416 features. All these functions are prefixed with a % character, but parameters
412 417 are given without parentheses or quotes.
413 418
414 419 NOTE: If you have 'automagic' enabled (via the command line option or with the
415 420 %automagic function), you don't need to type in the % explicitly. By default,
416 421 IPython ships with automagic on, so you should only rarely need the % escape.
417 422
418 423 Example: typing '%cd mydir' (without the quotes) changes you working directory
419 424 to 'mydir', if it exists.
420 425
421 426 You can define your own magic functions to extend the system. See the supplied
422 427 ipythonrc and example-magic.py files for details (in your ipython
423 428 configuration directory, typically $HOME/.ipython/).
424 429
425 430 You can also define your own aliased names for magic functions. In your
426 431 ipythonrc file, placing a line like:
427 432
428 433 execute __IPYTHON__.magic_pf = __IPYTHON__.magic_profile
429 434
430 435 will define %pf as a new name for %profile.
431 436
432 437 You can also call magics in code using the ipmagic() function, which IPython
433 438 automatically adds to the builtin namespace. Type 'ipmagic?' for details.
434 439
435 440 For a list of the available magic functions, use %lsmagic. For a description
436 441 of any of them, type %magic_name?, e.g. '%cd?'.
437 442
438 443 Currently the magic system has the following functions:\n"""
439 444
440 445 mesc = self.shell.ESC_MAGIC
441 446 outmsg = ("%s\n%s\n\nSummary of magic functions (from %slsmagic):"
442 447 "\n\n%s%s\n\n%s" % (outmsg,
443 448 magic_docs,mesc,mesc,
444 449 (' '+mesc).join(self.lsmagic()),
445 450 Magic.auto_status[self.shell.rc.automagic] ) )
446 451
447 452 page(outmsg,screen_lines=self.shell.rc.screen_length)
448 453
449 454 def magic_automagic(self, parameter_s = ''):
450 455 """Make magic functions callable without having to type the initial %.
451 456
452 457 Toggles on/off (when off, you must call it as %automagic, of
453 458 course). Note that magic functions have lowest priority, so if there's
454 459 a variable whose name collides with that of a magic fn, automagic
455 460 won't work for that function (you get the variable instead). However,
456 461 if you delete the variable (del var), the previously shadowed magic
457 462 function becomes visible to automagic again."""
458 463
459 464 rc = self.shell.rc
460 465 rc.automagic = not rc.automagic
461 466 print '\n' + Magic.auto_status[rc.automagic]
462 467
463 468 def magic_autocall(self, parameter_s = ''):
464 469 """Make functions callable without having to type parentheses.
465 470
466 471 Usage:
467 472
468 473 %autocall [mode]
469 474
470 475 The mode can be one of: 0->Off, 1->Smart, 2->Full. If not given, the
471 476 value is toggled on and off (remembering the previous state)."""
472 477
473 478 rc = self.shell.rc
474 479
475 480 if parameter_s:
476 481 arg = int(parameter_s)
477 482 else:
478 483 arg = 'toggle'
479 484
480 485 if not arg in (0,1,2,'toggle'):
481 486 error('Valid modes: (0->Off, 1->Smart, 2->Full')
482 487 return
483 488
484 489 if arg in (0,1,2):
485 490 rc.autocall = arg
486 491 else: # toggle
487 492 if rc.autocall:
488 493 self._magic_state.autocall_save = rc.autocall
489 494 rc.autocall = 0
490 495 else:
491 496 try:
492 497 rc.autocall = self._magic_state.autocall_save
493 498 except AttributeError:
494 499 rc.autocall = self._magic_state.autocall_save = 1
495 500
496 501 print "Automatic calling is:",['OFF','Smart','Full'][rc.autocall]
497 502
498 503 def magic_autoindent(self, parameter_s = ''):
499 504 """Toggle autoindent on/off (if available)."""
500 505
501 506 self.shell.set_autoindent()
502 507 print "Automatic indentation is:",['OFF','ON'][self.shell.autoindent]
503 508
504 509 def magic_system_verbose(self, parameter_s = ''):
505 510 """Set verbose printing of system calls.
506 511
507 512 If called without an argument, act as a toggle"""
508 513
509 514 if parameter_s:
510 515 val = bool(eval(parameter_s))
511 516 else:
512 517 val = None
513 518
514 519 self.shell.rc_set_toggle('system_verbose',val)
515 520 print "System verbose printing is:",\
516 521 ['OFF','ON'][self.shell.rc.system_verbose]
517 522
518 523 def magic_history(self, parameter_s = ''):
519 524 """Print input history (_i<n> variables), with most recent last.
520 525
521 526 %history -> print at most 40 inputs (some may be multi-line)\\
522 527 %history n -> print at most n inputs\\
523 528 %history n1 n2 -> print inputs between n1 and n2 (n2 not included)\\
524 529
525 530 Each input's number <n> is shown, and is accessible as the
526 531 automatically generated variable _i<n>. Multi-line statements are
527 532 printed starting at a new line for easy copy/paste.
528 533
529 534
530 535 Options:
531 536
532 537 -n: do NOT print line numbers. This is useful if you want to get a
533 538 printout of many lines which can be directly pasted into a text
534 539 editor.
535 540
536 541 This feature is only available if numbered prompts are in use.
537 542
538 543 -r: print the 'raw' history. IPython filters your input and
539 544 converts it all into valid Python source before executing it (things
540 545 like magics or aliases are turned into function calls, for
541 546 example). With this option, you'll see the unfiltered history
542 547 instead of the filtered version: '%cd /' will be seen as '%cd /'
543 548 instead of '_ip.magic("%cd /")'.
544 549 """
545 550
546 551 shell = self.shell
547 552 if not shell.outputcache.do_full_cache:
548 553 print 'This feature is only available if numbered prompts are in use.'
549 554 return
550 555 opts,args = self.parse_options(parameter_s,'nr',mode='list')
551 556
552 557 if opts.has_key('r'):
553 558 input_hist = shell.input_hist_raw
554 559 else:
555 560 input_hist = shell.input_hist
556 561
557 562 default_length = 40
558 563 if len(args) == 0:
559 564 final = len(input_hist)
560 565 init = max(1,final-default_length)
561 566 elif len(args) == 1:
562 567 final = len(input_hist)
563 568 init = max(1,final-int(args[0]))
564 569 elif len(args) == 2:
565 570 init,final = map(int,args)
566 571 else:
567 572 warn('%hist takes 0, 1 or 2 arguments separated by spaces.')
568 573 print self.magic_hist.__doc__
569 574 return
570 575 width = len(str(final))
571 576 line_sep = ['','\n']
572 577 print_nums = not opts.has_key('n')
573 578 for in_num in range(init,final):
574 579 inline = input_hist[in_num]
575 580 multiline = int(inline.count('\n') > 1)
576 581 if print_nums:
577 582 print '%s:%s' % (str(in_num).ljust(width),line_sep[multiline]),
578 583 print inline,
579 584
580 585 def magic_hist(self, parameter_s=''):
581 586 """Alternate name for %history."""
582 587 return self.magic_history(parameter_s)
583 588
584 589 def magic_p(self, parameter_s=''):
585 590 """Just a short alias for Python's 'print'."""
586 591 exec 'print ' + parameter_s in self.shell.user_ns
587 592
588 593 def magic_r(self, parameter_s=''):
589 594 """Repeat previous input.
590 595
591 596 If given an argument, repeats the previous command which starts with
592 597 the same string, otherwise it just repeats the previous input.
593 598
594 599 Shell escaped commands (with ! as first character) are not recognized
595 600 by this system, only pure python code and magic commands.
596 601 """
597 602
598 603 start = parameter_s.strip()
599 604 esc_magic = self.shell.ESC_MAGIC
600 605 # Identify magic commands even if automagic is on (which means
601 606 # the in-memory version is different from that typed by the user).
602 607 if self.shell.rc.automagic:
603 608 start_magic = esc_magic+start
604 609 else:
605 610 start_magic = start
606 611 # Look through the input history in reverse
607 612 for n in range(len(self.shell.input_hist)-2,0,-1):
608 613 input = self.shell.input_hist[n]
609 614 # skip plain 'r' lines so we don't recurse to infinity
610 615 if input != '_ip.magic("r")\n' and \
611 616 (input.startswith(start) or input.startswith(start_magic)):
612 617 #print 'match',`input` # dbg
613 618 print 'Executing:',input,
614 619 self.shell.runlines(input)
615 620 return
616 621 print 'No previous input matching `%s` found.' % start
617 622
618 623 def magic_page(self, parameter_s=''):
619 624 """Pretty print the object and display it through a pager.
620 625
621 626 %page [options] OBJECT
622 627
623 628 If no object is given, use _ (last output).
624 629
625 630 Options:
626 631
627 632 -r: page str(object), don't pretty-print it."""
628 633
629 634 # After a function contributed by Olivier Aubert, slightly modified.
630 635
631 636 # Process options/args
632 637 opts,args = self.parse_options(parameter_s,'r')
633 638 raw = 'r' in opts
634 639
635 640 oname = args and args or '_'
636 641 info = self._ofind(oname)
637 642 if info['found']:
638 643 txt = (raw and str or pformat)( info['obj'] )
639 644 page(txt)
640 645 else:
641 646 print 'Object `%s` not found' % oname
642 647
643 648 def magic_profile(self, parameter_s=''):
644 649 """Print your currently active IPyhton profile."""
645 650 if self.shell.rc.profile:
646 651 printpl('Current IPython profile: $self.shell.rc.profile.')
647 652 else:
648 653 print 'No profile active.'
649 654
650 655 def _inspect(self,meth,oname,namespaces=None,**kw):
651 656 """Generic interface to the inspector system.
652 657
653 658 This function is meant to be called by pdef, pdoc & friends."""
654 659
655 660 oname = oname.strip()
656 661 info = Struct(self._ofind(oname, namespaces))
657 662
658 663 if info.found:
659 664 # Get the docstring of the class property if it exists.
660 665 path = oname.split('.')
661 666 root = '.'.join(path[:-1])
662 667 if info.parent is not None:
663 668 try:
664 669 target = getattr(info.parent, '__class__')
665 670 # The object belongs to a class instance.
666 671 try:
667 672 target = getattr(target, path[-1])
668 673 # The class defines the object.
669 674 if isinstance(target, property):
670 675 oname = root + '.__class__.' + path[-1]
671 676 info = Struct(self._ofind(oname))
672 677 except AttributeError: pass
673 678 except AttributeError: pass
674 679
675 680 pmethod = getattr(self.shell.inspector,meth)
676 681 formatter = info.ismagic and self.format_screen or None
677 682 if meth == 'pdoc':
678 683 pmethod(info.obj,oname,formatter)
679 684 elif meth == 'pinfo':
680 685 pmethod(info.obj,oname,formatter,info,**kw)
681 686 else:
682 687 pmethod(info.obj,oname)
683 688 else:
684 689 print 'Object `%s` not found.' % oname
685 690 return 'not found' # so callers can take other action
686 691
687 692 def magic_pdef(self, parameter_s='', namespaces=None):
688 693 """Print the definition header for any callable object.
689 694
690 695 If the object is a class, print the constructor information."""
691 696 print "+++"
692 697 self._inspect('pdef',parameter_s, namespaces)
693 698
694 699 def magic_pdoc(self, parameter_s='', namespaces=None):
695 700 """Print the docstring for an object.
696 701
697 702 If the given object is a class, it will print both the class and the
698 703 constructor docstrings."""
699 704 self._inspect('pdoc',parameter_s, namespaces)
700 705
701 706 def magic_psource(self, parameter_s='', namespaces=None):
702 707 """Print (or run through pager) the source code for an object."""
703 708 self._inspect('psource',parameter_s, namespaces)
704 709
705 710 def magic_pfile(self, parameter_s=''):
706 711 """Print (or run through pager) the file where an object is defined.
707 712
708 713 The file opens at the line where the object definition begins. IPython
709 714 will honor the environment variable PAGER if set, and otherwise will
710 715 do its best to print the file in a convenient form.
711 716
712 717 If the given argument is not an object currently defined, IPython will
713 718 try to interpret it as a filename (automatically adding a .py extension
714 719 if needed). You can thus use %pfile as a syntax highlighting code
715 720 viewer."""
716 721
717 722 # first interpret argument as an object name
718 723 out = self._inspect('pfile',parameter_s)
719 724 # if not, try the input as a filename
720 725 if out == 'not found':
721 726 try:
722 727 filename = get_py_filename(parameter_s)
723 728 except IOError,msg:
724 729 print msg
725 730 return
726 731 page(self.shell.inspector.format(file(filename).read()))
727 732
728 733 def magic_pinfo(self, parameter_s='', namespaces=None):
729 734 """Provide detailed information about an object.
730 735
731 736 '%pinfo object' is just a synonym for object? or ?object."""
732 737
733 738 #print 'pinfo par: <%s>' % parameter_s # dbg
734 739
735 740 # detail_level: 0 -> obj? , 1 -> obj??
736 741 detail_level = 0
737 742 # We need to detect if we got called as 'pinfo pinfo foo', which can
738 743 # happen if the user types 'pinfo foo?' at the cmd line.
739 744 pinfo,qmark1,oname,qmark2 = \
740 745 re.match('(pinfo )?(\?*)(.*?)(\??$)',parameter_s).groups()
741 746 if pinfo or qmark1 or qmark2:
742 747 detail_level = 1
743 748 if "*" in oname:
744 749 self.magic_psearch(oname)
745 750 else:
746 751 self._inspect('pinfo', oname, detail_level=detail_level,
747 752 namespaces=namespaces)
748 753
749 754 def magic_psearch(self, parameter_s=''):
750 755 """Search for object in namespaces by wildcard.
751 756
752 757 %psearch [options] PATTERN [OBJECT TYPE]
753 758
754 759 Note: ? can be used as a synonym for %psearch, at the beginning or at
755 760 the end: both a*? and ?a* are equivalent to '%psearch a*'. Still, the
756 761 rest of the command line must be unchanged (options come first), so
757 762 for example the following forms are equivalent
758 763
759 764 %psearch -i a* function
760 765 -i a* function?
761 766 ?-i a* function
762 767
763 768 Arguments:
764 769
765 770 PATTERN
766 771
767 772 where PATTERN is a string containing * as a wildcard similar to its
768 773 use in a shell. The pattern is matched in all namespaces on the
769 774 search path. By default objects starting with a single _ are not
770 775 matched, many IPython generated objects have a single
771 776 underscore. The default is case insensitive matching. Matching is
772 777 also done on the attributes of objects and not only on the objects
773 778 in a module.
774 779
775 780 [OBJECT TYPE]
776 781
777 782 Is the name of a python type from the types module. The name is
778 783 given in lowercase without the ending type, ex. StringType is
779 784 written string. By adding a type here only objects matching the
780 785 given type are matched. Using all here makes the pattern match all
781 786 types (this is the default).
782 787
783 788 Options:
784 789
785 790 -a: makes the pattern match even objects whose names start with a
786 791 single underscore. These names are normally ommitted from the
787 792 search.
788 793
789 794 -i/-c: make the pattern case insensitive/sensitive. If neither of
790 795 these options is given, the default is read from your ipythonrc
791 796 file. The option name which sets this value is
792 797 'wildcards_case_sensitive'. If this option is not specified in your
793 798 ipythonrc file, IPython's internal default is to do a case sensitive
794 799 search.
795 800
796 801 -e/-s NAMESPACE: exclude/search a given namespace. The pattern you
797 802 specifiy can be searched in any of the following namespaces:
798 803 'builtin', 'user', 'user_global','internal', 'alias', where
799 804 'builtin' and 'user' are the search defaults. Note that you should
800 805 not use quotes when specifying namespaces.
801 806
802 807 'Builtin' contains the python module builtin, 'user' contains all
803 808 user data, 'alias' only contain the shell aliases and no python
804 809 objects, 'internal' contains objects used by IPython. The
805 810 'user_global' namespace is only used by embedded IPython instances,
806 811 and it contains module-level globals. You can add namespaces to the
807 812 search with -s or exclude them with -e (these options can be given
808 813 more than once).
809 814
810 815 Examples:
811 816
812 817 %psearch a* -> objects beginning with an a
813 818 %psearch -e builtin a* -> objects NOT in the builtin space starting in a
814 819 %psearch a* function -> all functions beginning with an a
815 820 %psearch re.e* -> objects beginning with an e in module re
816 821 %psearch r*.e* -> objects that start with e in modules starting in r
817 822 %psearch r*.* string -> all strings in modules beginning with r
818 823
819 824 Case sensitve search:
820 825
821 826 %psearch -c a* list all object beginning with lower case a
822 827
823 828 Show objects beginning with a single _:
824 829
825 830 %psearch -a _* list objects beginning with a single underscore"""
826 831
827 832 # default namespaces to be searched
828 833 def_search = ['user','builtin']
829 834
830 835 # Process options/args
831 836 opts,args = self.parse_options(parameter_s,'cias:e:',list_all=True)
832 837 opt = opts.get
833 838 shell = self.shell
834 839 psearch = shell.inspector.psearch
835 840
836 841 # select case options
837 842 if opts.has_key('i'):
838 843 ignore_case = True
839 844 elif opts.has_key('c'):
840 845 ignore_case = False
841 846 else:
842 847 ignore_case = not shell.rc.wildcards_case_sensitive
843 848
844 849 # Build list of namespaces to search from user options
845 850 def_search.extend(opt('s',[]))
846 851 ns_exclude = ns_exclude=opt('e',[])
847 852 ns_search = [nm for nm in def_search if nm not in ns_exclude]
848 853
849 854 # Call the actual search
850 855 try:
851 856 psearch(args,shell.ns_table,ns_search,
852 857 show_all=opt('a'),ignore_case=ignore_case)
853 858 except:
854 859 shell.showtraceback()
855 860
856 861 def magic_who_ls(self, parameter_s=''):
857 862 """Return a sorted list of all interactive variables.
858 863
859 864 If arguments are given, only variables of types matching these
860 865 arguments are returned."""
861 866
862 867 user_ns = self.shell.user_ns
863 868 internal_ns = self.shell.internal_ns
864 869 user_config_ns = self.shell.user_config_ns
865 870 out = []
866 871 typelist = parameter_s.split()
867 872
868 873 for i in user_ns:
869 874 if not (i.startswith('_') or i.startswith('_i')) \
870 875 and not (i in internal_ns or i in user_config_ns):
871 876 if typelist:
872 877 if type(user_ns[i]).__name__ in typelist:
873 878 out.append(i)
874 879 else:
875 880 out.append(i)
876 881 out.sort()
877 882 return out
878 883
879 884 def magic_who(self, parameter_s=''):
880 885 """Print all interactive variables, with some minimal formatting.
881 886
882 887 If any arguments are given, only variables whose type matches one of
883 888 these are printed. For example:
884 889
885 890 %who function str
886 891
887 892 will only list functions and strings, excluding all other types of
888 893 variables. To find the proper type names, simply use type(var) at a
889 894 command line to see how python prints type names. For example:
890 895
891 896 In [1]: type('hello')\\
892 897 Out[1]: <type 'str'>
893 898
894 899 indicates that the type name for strings is 'str'.
895 900
896 901 %who always excludes executed names loaded through your configuration
897 902 file and things which are internal to IPython.
898 903
899 904 This is deliberate, as typically you may load many modules and the
900 905 purpose of %who is to show you only what you've manually defined."""
901 906
902 907 varlist = self.magic_who_ls(parameter_s)
903 908 if not varlist:
904 909 print 'Interactive namespace is empty.'
905 910 return
906 911
907 912 # if we have variables, move on...
908 913
909 914 # stupid flushing problem: when prompts have no separators, stdout is
910 915 # getting lost. I'm starting to think this is a python bug. I'm having
911 916 # to force a flush with a print because even a sys.stdout.flush
912 917 # doesn't seem to do anything!
913 918
914 919 count = 0
915 920 for i in varlist:
916 921 print i+'\t',
917 922 count += 1
918 923 if count > 8:
919 924 count = 0
920 925 print
921 926 sys.stdout.flush() # FIXME. Why the hell isn't this flushing???
922 927
923 928 print # well, this does force a flush at the expense of an extra \n
924 929
925 930 def magic_whos(self, parameter_s=''):
926 931 """Like %who, but gives some extra information about each variable.
927 932
928 933 The same type filtering of %who can be applied here.
929 934
930 935 For all variables, the type is printed. Additionally it prints:
931 936
932 937 - For {},[],(): their length.
933 938
934 939 - For Numeric arrays, a summary with shape, number of elements,
935 940 typecode and size in memory.
936 941
937 942 - Everything else: a string representation, snipping their middle if
938 943 too long."""
939 944
940 945 varnames = self.magic_who_ls(parameter_s)
941 946 if not varnames:
942 947 print 'Interactive namespace is empty.'
943 948 return
944 949
945 950 # if we have variables, move on...
946 951
947 952 # for these types, show len() instead of data:
948 953 seq_types = [types.DictType,types.ListType,types.TupleType]
949 954
950 955 # for Numeric arrays, display summary info
951 956 try:
952 957 import Numeric
953 958 except ImportError:
954 959 array_type = None
955 960 else:
956 961 array_type = Numeric.ArrayType.__name__
957 962
958 963 # Find all variable names and types so we can figure out column sizes
959 964 get_vars = lambda i: self.shell.user_ns[i]
960 965 type_name = lambda v: type(v).__name__
961 966 varlist = map(get_vars,varnames)
962 967
963 968 typelist = []
964 969 for vv in varlist:
965 970 tt = type_name(vv)
966 971 if tt=='instance':
967 972 typelist.append(str(vv.__class__))
968 973 else:
969 974 typelist.append(tt)
970 975
971 976 # column labels and # of spaces as separator
972 977 varlabel = 'Variable'
973 978 typelabel = 'Type'
974 979 datalabel = 'Data/Info'
975 980 colsep = 3
976 981 # variable format strings
977 982 vformat = "$vname.ljust(varwidth)$vtype.ljust(typewidth)"
978 983 vfmt_short = '$vstr[:25]<...>$vstr[-25:]'
979 984 aformat = "%s: %s elems, type `%s`, %s bytes"
980 985 # find the size of the columns to format the output nicely
981 986 varwidth = max(max(map(len,varnames)), len(varlabel)) + colsep
982 987 typewidth = max(max(map(len,typelist)), len(typelabel)) + colsep
983 988 # table header
984 989 print varlabel.ljust(varwidth) + typelabel.ljust(typewidth) + \
985 990 ' '+datalabel+'\n' + '-'*(varwidth+typewidth+len(datalabel)+1)
986 991 # and the table itself
987 992 kb = 1024
988 993 Mb = 1048576 # kb**2
989 994 for vname,var,vtype in zip(varnames,varlist,typelist):
990 995 print itpl(vformat),
991 996 if vtype in seq_types:
992 997 print len(var)
993 998 elif vtype==array_type:
994 999 vshape = str(var.shape).replace(',','').replace(' ','x')[1:-1]
995 1000 vsize = Numeric.size(var)
996 1001 vbytes = vsize*var.itemsize()
997 1002 if vbytes < 100000:
998 1003 print aformat % (vshape,vsize,var.typecode(),vbytes)
999 1004 else:
1000 1005 print aformat % (vshape,vsize,var.typecode(),vbytes),
1001 1006 if vbytes < Mb:
1002 1007 print '(%s kb)' % (vbytes/kb,)
1003 1008 else:
1004 1009 print '(%s Mb)' % (vbytes/Mb,)
1005 1010 else:
1006 1011 vstr = str(var).replace('\n','\\n')
1007 1012 if len(vstr) < 50:
1008 1013 print vstr
1009 1014 else:
1010 1015 printpl(vfmt_short)
1011 1016
1012 1017 def magic_reset(self, parameter_s=''):
1013 1018 """Resets the namespace by removing all names defined by the user.
1014 1019
1015 1020 Input/Output history are left around in case you need them."""
1016 1021
1017 1022 ans = self.shell.ask_yes_no(
1018 1023 "Once deleted, variables cannot be recovered. Proceed (y/[n])? ")
1019 1024 if not ans:
1020 1025 print 'Nothing done.'
1021 1026 return
1022 1027 user_ns = self.shell.user_ns
1023 1028 for i in self.magic_who_ls():
1024 1029 del(user_ns[i])
1025 1030
1026 1031 def magic_config(self,parameter_s=''):
1027 1032 """Handle IPython's internal configuration.
1028 1033
1029 1034 If called without arguments, it will print IPython's complete internal
1030 1035 configuration.
1031 1036
1032 1037 If called with one argument, it will print the value of that key in
1033 1038 the configuration.
1034 1039
1035 1040 If called with more than one argument, the first is interpreted as a
1036 1041 key and the rest as a Python expression which gets eval()'d.
1037 1042
1038 1043 Examples:
1039 1044
1040 1045 In [1]: s='A Python string'
1041 1046
1042 1047 In [2]: !echo $s
1043 1048 A Python string
1044 1049
1045 1050 In [3]: config system_verbose True
1046 1051
1047 1052 In [4]: !echo $s
1048 1053 IPython system call: echo A Python string
1049 1054 A Python string
1050 1055
1051 1056 In [5]: %config system_header 'sys> '
1052 1057
1053 1058 In [6]: !echo $s
1054 1059 sys> echo A Python string
1055 1060 A Python string
1056 1061
1057 1062 # Notice the extra quotes to protect the string after interpolation:
1058 1063 In [7]: header = "'sys2> '"
1059 1064
1060 1065 In [8]: %config system_header $header
1061 1066
1062 1067 In [9]: !echo $s
1063 1068 sys2> echo A Python string
1064 1069 A Python string
1065 1070 """
1066 1071
1067 1072 args = parameter_s.split(None,1)
1068 1073 key = args[0]
1069 1074 if len(args)==1:
1070 1075 self.shell.ipconfig(key)
1071 1076 else:
1072 1077 self.shell.ipconfig(key,eval(args[1]))
1073 1078
1074 1079 def magic_logstart(self,parameter_s=''):
1075 1080 """Start logging anywhere in a session.
1076 1081
1077 1082 %logstart [-o|-r|-t] [log_name [log_mode]]
1078 1083
1079 1084 If no name is given, it defaults to a file named 'ipython_log.py' in your
1080 1085 current directory, in 'rotate' mode (see below).
1081 1086
1082 1087 '%logstart name' saves to file 'name' in 'backup' mode. It saves your
1083 1088 history up to that point and then continues logging.
1084 1089
1085 1090 %logstart takes a second optional parameter: logging mode. This can be one
1086 1091 of (note that the modes are given unquoted):\\
1087 1092 append: well, that says it.\\
1088 1093 backup: rename (if exists) to name~ and start name.\\
1089 1094 global: single logfile in your home dir, appended to.\\
1090 1095 over : overwrite existing log.\\
1091 1096 rotate: create rotating logs name.1~, name.2~, etc.
1092 1097
1093 1098 Options:
1094 1099
1095 1100 -o: log also IPython's output. In this mode, all commands which
1096 1101 generate an Out[NN] prompt are recorded to the logfile, right after
1097 1102 their corresponding input line. The output lines are always
1098 1103 prepended with a '#[Out]# ' marker, so that the log remains valid
1099 1104 Python code.
1100 1105
1101 1106 Since this marker is always the same, filtering only the output from
1102 1107 a log is very easy, using for example a simple awk call:
1103 1108
1104 1109 awk -F'#\\[Out\\]# ' '{if($2) {print $2}}' ipython_log.py
1105 1110
1106 1111 -r: log 'raw' input. Normally, IPython's logs contain the processed
1107 1112 input, so that user lines are logged in their final form, converted
1108 1113 into valid Python. For example, %Exit is logged as
1109 1114 '_ip.magic("Exit"). If the -r flag is given, all input is logged
1110 1115 exactly as typed, with no transformations applied.
1111 1116
1112 1117 -t: put timestamps before each input line logged (these are put in
1113 1118 comments)."""
1114 1119
1115 1120 opts,par = self.parse_options(parameter_s,'ort')
1116 1121 log_output = 'o' in opts
1117 1122 log_raw_input = 'r' in opts
1118 1123 timestamp = 't' in opts
1119 1124
1120 1125 rc = self.shell.rc
1121 1126 logger = self.shell.logger
1122 1127
1123 1128 # if no args are given, the defaults set in the logger constructor by
1124 1129 # ipytohn remain valid
1125 1130 if par:
1126 1131 try:
1127 1132 logfname,logmode = par.split()
1128 1133 except:
1129 1134 logfname = par
1130 1135 logmode = 'backup'
1131 1136 else:
1132 1137 logfname = logger.logfname
1133 1138 logmode = logger.logmode
1134 1139 # put logfname into rc struct as if it had been called on the command
1135 1140 # line, so it ends up saved in the log header Save it in case we need
1136 1141 # to restore it...
1137 1142 old_logfile = rc.opts.get('logfile','')
1138 1143 if logfname:
1139 1144 logfname = os.path.expanduser(logfname)
1140 1145 rc.opts.logfile = logfname
1141 1146 loghead = self.shell.loghead_tpl % (rc.opts,rc.args)
1142 1147 try:
1143 1148 started = logger.logstart(logfname,loghead,logmode,
1144 1149 log_output,timestamp,log_raw_input)
1145 1150 except:
1146 1151 rc.opts.logfile = old_logfile
1147 1152 warn("Couldn't start log: %s" % sys.exc_info()[1])
1148 1153 else:
1149 1154 # log input history up to this point, optionally interleaving
1150 1155 # output if requested
1151 1156
1152 1157 if timestamp:
1153 1158 # disable timestamping for the previous history, since we've
1154 1159 # lost those already (no time machine here).
1155 1160 logger.timestamp = False
1156 1161
1157 1162 if log_raw_input:
1158 1163 input_hist = self.shell.input_hist_raw
1159 1164 else:
1160 1165 input_hist = self.shell.input_hist
1161 1166
1162 1167 if log_output:
1163 1168 log_write = logger.log_write
1164 1169 output_hist = self.shell.output_hist
1165 1170 for n in range(1,len(input_hist)-1):
1166 1171 log_write(input_hist[n].rstrip())
1167 1172 if n in output_hist:
1168 1173 log_write(repr(output_hist[n]),'output')
1169 1174 else:
1170 1175 logger.log_write(input_hist[1:])
1171 1176 if timestamp:
1172 1177 # re-enable timestamping
1173 1178 logger.timestamp = True
1174 1179
1175 1180 print ('Activating auto-logging. '
1176 1181 'Current session state plus future input saved.')
1177 1182 logger.logstate()
1178 1183
1179 1184 def magic_logoff(self,parameter_s=''):
1180 1185 """Temporarily stop logging.
1181 1186
1182 1187 You must have previously started logging."""
1183 1188 self.shell.logger.switch_log(0)
1184 1189
1185 1190 def magic_logon(self,parameter_s=''):
1186 1191 """Restart logging.
1187 1192
1188 1193 This function is for restarting logging which you've temporarily
1189 1194 stopped with %logoff. For starting logging for the first time, you
1190 1195 must use the %logstart function, which allows you to specify an
1191 1196 optional log filename."""
1192 1197
1193 1198 self.shell.logger.switch_log(1)
1194 1199
1195 1200 def magic_logstate(self,parameter_s=''):
1196 1201 """Print the status of the logging system."""
1197 1202
1198 1203 self.shell.logger.logstate()
1199 1204
1200 1205 def magic_pdb(self, parameter_s=''):
1201 1206 """Control the calling of the pdb interactive debugger.
1202 1207
1203 1208 Call as '%pdb on', '%pdb 1', '%pdb off' or '%pdb 0'. If called without
1204 1209 argument it works as a toggle.
1205 1210
1206 1211 When an exception is triggered, IPython can optionally call the
1207 1212 interactive pdb debugger after the traceback printout. %pdb toggles
1208 1213 this feature on and off."""
1209 1214
1210 1215 par = parameter_s.strip().lower()
1211 1216
1212 1217 if par:
1213 1218 try:
1214 1219 new_pdb = {'off':0,'0':0,'on':1,'1':1}[par]
1215 1220 except KeyError:
1216 1221 print ('Incorrect argument. Use on/1, off/0, '
1217 1222 'or nothing for a toggle.')
1218 1223 return
1219 1224 else:
1220 1225 # toggle
1221 1226 new_pdb = not self.shell.InteractiveTB.call_pdb
1222 1227
1223 1228 # set on the shell
1224 1229 self.shell.call_pdb = new_pdb
1225 1230 print 'Automatic pdb calling has been turned',on_off(new_pdb)
1226 1231
1227 1232 def magic_prun(self, parameter_s ='',user_mode=1,
1228 1233 opts=None,arg_lst=None,prog_ns=None):
1229 1234
1230 1235 """Run a statement through the python code profiler.
1231 1236
1232 1237 Usage:\\
1233 1238 %prun [options] statement
1234 1239
1235 1240 The given statement (which doesn't require quote marks) is run via the
1236 1241 python profiler in a manner similar to the profile.run() function.
1237 1242 Namespaces are internally managed to work correctly; profile.run
1238 1243 cannot be used in IPython because it makes certain assumptions about
1239 1244 namespaces which do not hold under IPython.
1240 1245
1241 1246 Options:
1242 1247
1243 1248 -l <limit>: you can place restrictions on what or how much of the
1244 1249 profile gets printed. The limit value can be:
1245 1250
1246 1251 * A string: only information for function names containing this string
1247 1252 is printed.
1248 1253
1249 1254 * An integer: only these many lines are printed.
1250 1255
1251 1256 * A float (between 0 and 1): this fraction of the report is printed
1252 1257 (for example, use a limit of 0.4 to see the topmost 40% only).
1253 1258
1254 1259 You can combine several limits with repeated use of the option. For
1255 1260 example, '-l __init__ -l 5' will print only the topmost 5 lines of
1256 1261 information about class constructors.
1257 1262
1258 1263 -r: return the pstats.Stats object generated by the profiling. This
1259 1264 object has all the information about the profile in it, and you can
1260 1265 later use it for further analysis or in other functions.
1261 1266
1262 1267 -s <key>: sort profile by given key. You can provide more than one key
1263 1268 by using the option several times: '-s key1 -s key2 -s key3...'. The
1264 1269 default sorting key is 'time'.
1265 1270
1266 1271 The following is copied verbatim from the profile documentation
1267 1272 referenced below:
1268 1273
1269 1274 When more than one key is provided, additional keys are used as
1270 1275 secondary criteria when the there is equality in all keys selected
1271 1276 before them.
1272 1277
1273 1278 Abbreviations can be used for any key names, as long as the
1274 1279 abbreviation is unambiguous. The following are the keys currently
1275 1280 defined:
1276 1281
1277 1282 Valid Arg Meaning\\
1278 1283 "calls" call count\\
1279 1284 "cumulative" cumulative time\\
1280 1285 "file" file name\\
1281 1286 "module" file name\\
1282 1287 "pcalls" primitive call count\\
1283 1288 "line" line number\\
1284 1289 "name" function name\\
1285 1290 "nfl" name/file/line\\
1286 1291 "stdname" standard name\\
1287 1292 "time" internal time
1288 1293
1289 1294 Note that all sorts on statistics are in descending order (placing
1290 1295 most time consuming items first), where as name, file, and line number
1291 1296 searches are in ascending order (i.e., alphabetical). The subtle
1292 1297 distinction between "nfl" and "stdname" is that the standard name is a
1293 1298 sort of the name as printed, which means that the embedded line
1294 1299 numbers get compared in an odd way. For example, lines 3, 20, and 40
1295 1300 would (if the file names were the same) appear in the string order
1296 1301 "20" "3" and "40". In contrast, "nfl" does a numeric compare of the
1297 1302 line numbers. In fact, sort_stats("nfl") is the same as
1298 1303 sort_stats("name", "file", "line").
1299 1304
1300 1305 -T <filename>: save profile results as shown on screen to a text
1301 1306 file. The profile is still shown on screen.
1302 1307
1303 1308 -D <filename>: save (via dump_stats) profile statistics to given
1304 1309 filename. This data is in a format understod by the pstats module, and
1305 1310 is generated by a call to the dump_stats() method of profile
1306 1311 objects. The profile is still shown on screen.
1307 1312
1308 1313 If you want to run complete programs under the profiler's control, use
1309 1314 '%run -p [prof_opts] filename.py [args to program]' where prof_opts
1310 1315 contains profiler specific options as described here.
1311 1316
1312 1317 You can read the complete documentation for the profile module with:\\
1313 1318 In [1]: import profile; profile.help() """
1314 1319
1315 1320 opts_def = Struct(D=[''],l=[],s=['time'],T=[''])
1316 1321 # protect user quote marks
1317 1322 parameter_s = parameter_s.replace('"',r'\"').replace("'",r"\'")
1318 1323
1319 1324 if user_mode: # regular user call
1320 1325 opts,arg_str = self.parse_options(parameter_s,'D:l:rs:T:',
1321 1326 list_all=1)
1322 1327 namespace = self.shell.user_ns
1323 1328 else: # called to run a program by %run -p
1324 1329 try:
1325 1330 filename = get_py_filename(arg_lst[0])
1326 1331 except IOError,msg:
1327 1332 error(msg)
1328 1333 return
1329 1334
1330 1335 arg_str = 'execfile(filename,prog_ns)'
1331 1336 namespace = locals()
1332 1337
1333 1338 opts.merge(opts_def)
1334 1339
1335 1340 prof = profile.Profile()
1336 1341 try:
1337 1342 prof = prof.runctx(arg_str,namespace,namespace)
1338 1343 sys_exit = ''
1339 1344 except SystemExit:
1340 1345 sys_exit = """*** SystemExit exception caught in code being profiled."""
1341 1346
1342 1347 stats = pstats.Stats(prof).strip_dirs().sort_stats(*opts.s)
1343 1348
1344 1349 lims = opts.l
1345 1350 if lims:
1346 1351 lims = [] # rebuild lims with ints/floats/strings
1347 1352 for lim in opts.l:
1348 1353 try:
1349 1354 lims.append(int(lim))
1350 1355 except ValueError:
1351 1356 try:
1352 1357 lims.append(float(lim))
1353 1358 except ValueError:
1354 1359 lims.append(lim)
1355 1360
1356 1361 # trap output
1357 1362 sys_stdout = sys.stdout
1358 1363 stdout_trap = StringIO()
1359 1364 try:
1360 1365 sys.stdout = stdout_trap
1361 1366 stats.print_stats(*lims)
1362 1367 finally:
1363 1368 sys.stdout = sys_stdout
1364 1369 output = stdout_trap.getvalue()
1365 1370 output = output.rstrip()
1366 1371
1367 1372 page(output,screen_lines=self.shell.rc.screen_length)
1368 1373 print sys_exit,
1369 1374
1370 1375 dump_file = opts.D[0]
1371 1376 text_file = opts.T[0]
1372 1377 if dump_file:
1373 1378 prof.dump_stats(dump_file)
1374 1379 print '\n*** Profile stats marshalled to file',\
1375 1380 `dump_file`+'.',sys_exit
1376 1381 if text_file:
1377 1382 file(text_file,'w').write(output)
1378 1383 print '\n*** Profile printout saved to text file',\
1379 1384 `text_file`+'.',sys_exit
1380 1385
1381 1386 if opts.has_key('r'):
1382 1387 return stats
1383 1388 else:
1384 1389 return None
1385 1390
1386 1391 def magic_run(self, parameter_s ='',runner=None):
1387 1392 """Run the named file inside IPython as a program.
1388 1393
1389 1394 Usage:\\
1390 1395 %run [-n -i -t [-N<N>] -d [-b<N>] -p [profile options]] file [args]
1391 1396
1392 1397 Parameters after the filename are passed as command-line arguments to
1393 1398 the program (put in sys.argv). Then, control returns to IPython's
1394 1399 prompt.
1395 1400
1396 1401 This is similar to running at a system prompt:\\
1397 1402 $ python file args\\
1398 1403 but with the advantage of giving you IPython's tracebacks, and of
1399 1404 loading all variables into your interactive namespace for further use
1400 1405 (unless -p is used, see below).
1401 1406
1402 1407 The file is executed in a namespace initially consisting only of
1403 1408 __name__=='__main__' and sys.argv constructed as indicated. It thus
1404 1409 sees its environment as if it were being run as a stand-alone
1405 1410 program. But after execution, the IPython interactive namespace gets
1406 1411 updated with all variables defined in the program (except for __name__
1407 1412 and sys.argv). This allows for very convenient loading of code for
1408 1413 interactive work, while giving each program a 'clean sheet' to run in.
1409 1414
1410 1415 Options:
1411 1416
1412 1417 -n: __name__ is NOT set to '__main__', but to the running file's name
1413 1418 without extension (as python does under import). This allows running
1414 1419 scripts and reloading the definitions in them without calling code
1415 1420 protected by an ' if __name__ == "__main__" ' clause.
1416 1421
1417 1422 -i: run the file in IPython's namespace instead of an empty one. This
1418 1423 is useful if you are experimenting with code written in a text editor
1419 1424 which depends on variables defined interactively.
1420 1425
1421 1426 -e: ignore sys.exit() calls or SystemExit exceptions in the script
1422 1427 being run. This is particularly useful if IPython is being used to
1423 1428 run unittests, which always exit with a sys.exit() call. In such
1424 1429 cases you are interested in the output of the test results, not in
1425 1430 seeing a traceback of the unittest module.
1426 1431
1427 1432 -t: print timing information at the end of the run. IPython will give
1428 1433 you an estimated CPU time consumption for your script, which under
1429 1434 Unix uses the resource module to avoid the wraparound problems of
1430 1435 time.clock(). Under Unix, an estimate of time spent on system tasks
1431 1436 is also given (for Windows platforms this is reported as 0.0).
1432 1437
1433 1438 If -t is given, an additional -N<N> option can be given, where <N>
1434 1439 must be an integer indicating how many times you want the script to
1435 1440 run. The final timing report will include total and per run results.
1436 1441
1437 1442 For example (testing the script uniq_stable.py):
1438 1443
1439 1444 In [1]: run -t uniq_stable
1440 1445
1441 1446 IPython CPU timings (estimated):\\
1442 1447 User : 0.19597 s.\\
1443 1448 System: 0.0 s.\\
1444 1449
1445 1450 In [2]: run -t -N5 uniq_stable
1446 1451
1447 1452 IPython CPU timings (estimated):\\
1448 1453 Total runs performed: 5\\
1449 1454 Times : Total Per run\\
1450 1455 User : 0.910862 s, 0.1821724 s.\\
1451 1456 System: 0.0 s, 0.0 s.
1452 1457
1453 1458 -d: run your program under the control of pdb, the Python debugger.
1454 1459 This allows you to execute your program step by step, watch variables,
1455 1460 etc. Internally, what IPython does is similar to calling:
1456 1461
1457 1462 pdb.run('execfile("YOURFILENAME")')
1458 1463
1459 1464 with a breakpoint set on line 1 of your file. You can change the line
1460 1465 number for this automatic breakpoint to be <N> by using the -bN option
1461 1466 (where N must be an integer). For example:
1462 1467
1463 1468 %run -d -b40 myscript
1464 1469
1465 1470 will set the first breakpoint at line 40 in myscript.py. Note that
1466 1471 the first breakpoint must be set on a line which actually does
1467 1472 something (not a comment or docstring) for it to stop execution.
1468 1473
1469 1474 When the pdb debugger starts, you will see a (Pdb) prompt. You must
1470 1475 first enter 'c' (without qoutes) to start execution up to the first
1471 1476 breakpoint.
1472 1477
1473 1478 Entering 'help' gives information about the use of the debugger. You
1474 1479 can easily see pdb's full documentation with "import pdb;pdb.help()"
1475 1480 at a prompt.
1476 1481
1477 1482 -p: run program under the control of the Python profiler module (which
1478 1483 prints a detailed report of execution times, function calls, etc).
1479 1484
1480 1485 You can pass other options after -p which affect the behavior of the
1481 1486 profiler itself. See the docs for %prun for details.
1482 1487
1483 1488 In this mode, the program's variables do NOT propagate back to the
1484 1489 IPython interactive namespace (because they remain in the namespace
1485 1490 where the profiler executes them).
1486 1491
1487 1492 Internally this triggers a call to %prun, see its documentation for
1488 1493 details on the options available specifically for profiling."""
1489 1494
1490 1495 # get arguments and set sys.argv for program to be run.
1491 1496 opts,arg_lst = self.parse_options(parameter_s,'nidtN:b:pD:l:rs:T:e',
1492 1497 mode='list',list_all=1)
1493 1498
1494 1499 try:
1495 1500 filename = get_py_filename(arg_lst[0])
1496 1501 except IndexError:
1497 1502 warn('you must provide at least a filename.')
1498 1503 print '\n%run:\n',OInspect.getdoc(self.magic_run)
1499 1504 return
1500 1505 except IOError,msg:
1501 1506 error(msg)
1502 1507 return
1503 1508
1504 1509 # Control the response to exit() calls made by the script being run
1505 1510 exit_ignore = opts.has_key('e')
1506 1511
1507 1512 # Make sure that the running script gets a proper sys.argv as if it
1508 1513 # were run from a system shell.
1509 1514 save_argv = sys.argv # save it for later restoring
1510 1515 sys.argv = [filename]+ arg_lst[1:] # put in the proper filename
1511 1516
1512 1517 if opts.has_key('i'):
1513 1518 prog_ns = self.shell.user_ns
1514 1519 __name__save = self.shell.user_ns['__name__']
1515 1520 prog_ns['__name__'] = '__main__'
1516 1521 else:
1517 1522 if opts.has_key('n'):
1518 1523 name = os.path.splitext(os.path.basename(filename))[0]
1519 1524 else:
1520 1525 name = '__main__'
1521 1526 prog_ns = {'__name__':name}
1522 1527
1523 1528 # Since '%run foo' emulates 'python foo.py' at the cmd line, we must
1524 1529 # set the __file__ global in the script's namespace
1525 1530 prog_ns['__file__'] = filename
1526 1531
1527 1532 # pickle fix. See iplib for an explanation. But we need to make sure
1528 1533 # that, if we overwrite __main__, we replace it at the end
1529 1534 if prog_ns['__name__'] == '__main__':
1530 1535 restore_main = sys.modules['__main__']
1531 1536 else:
1532 1537 restore_main = False
1533 1538
1534 1539 sys.modules[prog_ns['__name__']] = FakeModule(prog_ns)
1535 1540
1536 1541 stats = None
1537 1542 try:
1538 1543 if self.shell.has_readline:
1539 1544 self.shell.savehist()
1540 1545
1541 1546 if opts.has_key('p'):
1542 1547 stats = self.magic_prun('',0,opts,arg_lst,prog_ns)
1543 1548 else:
1544 1549 if opts.has_key('d'):
1545 1550 deb = Debugger.Pdb(self.shell.rc.colors)
1546 1551 # reset Breakpoint state, which is moronically kept
1547 1552 # in a class
1548 1553 bdb.Breakpoint.next = 1
1549 1554 bdb.Breakpoint.bplist = {}
1550 1555 bdb.Breakpoint.bpbynumber = [None]
1551 1556 # Set an initial breakpoint to stop execution
1552 1557 maxtries = 10
1553 1558 bp = int(opts.get('b',[1])[0])
1554 1559 checkline = deb.checkline(filename,bp)
1555 1560 if not checkline:
1556 1561 for bp in range(bp+1,bp+maxtries+1):
1557 1562 if deb.checkline(filename,bp):
1558 1563 break
1559 1564 else:
1560 1565 msg = ("\nI failed to find a valid line to set "
1561 1566 "a breakpoint\n"
1562 1567 "after trying up to line: %s.\n"
1563 1568 "Please set a valid breakpoint manually "
1564 1569 "with the -b option." % bp)
1565 1570 error(msg)
1566 1571 return
1567 1572 # if we find a good linenumber, set the breakpoint
1568 1573 deb.do_break('%s:%s' % (filename,bp))
1569 1574 # Start file run
1570 1575 print "NOTE: Enter 'c' at the",
1571 1576 print "%s prompt to start your script." % deb.prompt
1572 1577 try:
1573 1578 deb.run('execfile("%s")' % filename,prog_ns)
1574 1579
1575 1580 except:
1576 1581 etype, value, tb = sys.exc_info()
1577 1582 # Skip three frames in the traceback: the %run one,
1578 1583 # one inside bdb.py, and the command-line typed by the
1579 1584 # user (run by exec in pdb itself).
1580 1585 self.shell.InteractiveTB(etype,value,tb,tb_offset=3)
1581 1586 else:
1582 1587 if runner is None:
1583 1588 runner = self.shell.safe_execfile
1584 1589 if opts.has_key('t'):
1585 1590 try:
1586 1591 nruns = int(opts['N'][0])
1587 1592 if nruns < 1:
1588 1593 error('Number of runs must be >=1')
1589 1594 return
1590 1595 except (KeyError):
1591 1596 nruns = 1
1592 1597 if nruns == 1:
1593 1598 t0 = clock2()
1594 1599 runner(filename,prog_ns,prog_ns,
1595 1600 exit_ignore=exit_ignore)
1596 1601 t1 = clock2()
1597 1602 t_usr = t1[0]-t0[0]
1598 1603 t_sys = t1[1]-t1[1]
1599 1604 print "\nIPython CPU timings (estimated):"
1600 1605 print " User : %10s s." % t_usr
1601 1606 print " System: %10s s." % t_sys
1602 1607 else:
1603 1608 runs = range(nruns)
1604 1609 t0 = clock2()
1605 1610 for nr in runs:
1606 1611 runner(filename,prog_ns,prog_ns,
1607 1612 exit_ignore=exit_ignore)
1608 1613 t1 = clock2()
1609 1614 t_usr = t1[0]-t0[0]
1610 1615 t_sys = t1[1]-t1[1]
1611 1616 print "\nIPython CPU timings (estimated):"
1612 1617 print "Total runs performed:",nruns
1613 1618 print " Times : %10s %10s" % ('Total','Per run')
1614 1619 print " User : %10s s, %10s s." % (t_usr,t_usr/nruns)
1615 1620 print " System: %10s s, %10s s." % (t_sys,t_sys/nruns)
1616 1621
1617 1622 else:
1618 1623 runner(filename,prog_ns,prog_ns,exit_ignore=exit_ignore)
1619 1624 if opts.has_key('i'):
1620 1625 self.shell.user_ns['__name__'] = __name__save
1621 1626 else:
1622 1627 # update IPython interactive namespace
1623 1628 del prog_ns['__name__']
1624 1629 self.shell.user_ns.update(prog_ns)
1625 1630 finally:
1626 1631 sys.argv = save_argv
1627 1632 if restore_main:
1628 1633 sys.modules['__main__'] = restore_main
1629 1634 if self.shell.has_readline:
1630 1635 self.shell.readline.read_history_file(self.shell.histfile)
1631 1636
1632 1637 return stats
1633 1638
1634 1639 def magic_runlog(self, parameter_s =''):
1635 1640 """Run files as logs.
1636 1641
1637 1642 Usage:\\
1638 1643 %runlog file1 file2 ...
1639 1644
1640 1645 Run the named files (treating them as log files) in sequence inside
1641 1646 the interpreter, and return to the prompt. This is much slower than
1642 1647 %run because each line is executed in a try/except block, but it
1643 1648 allows running files with syntax errors in them.
1644 1649
1645 1650 Normally IPython will guess when a file is one of its own logfiles, so
1646 1651 you can typically use %run even for logs. This shorthand allows you to
1647 1652 force any file to be treated as a log file."""
1648 1653
1649 1654 for f in parameter_s.split():
1650 1655 self.shell.safe_execfile(f,self.shell.user_ns,
1651 1656 self.shell.user_ns,islog=1)
1652 1657
1653 1658 def magic_timeit(self, parameter_s =''):
1654 1659 """Time execution of a Python statement or expression
1655 1660
1656 1661 Usage:\\
1657 1662 %timeit [-n<N> -r<R> [-t|-c]] statement
1658 1663
1659 1664 Time execution of a Python statement or expression using the timeit
1660 1665 module.
1661 1666
1662 1667 Options:
1663 1668 -n<N>: execute the given statement <N> times in a loop. If this value
1664 1669 is not given, a fitting value is chosen.
1665 1670
1666 1671 -r<R>: repeat the loop iteration <R> times and take the best result.
1667 1672 Default: 3
1668 1673
1669 1674 -t: use time.time to measure the time, which is the default on Unix.
1670 1675 This function measures wall time.
1671 1676
1672 1677 -c: use time.clock to measure the time, which is the default on
1673 1678 Windows and measures wall time. On Unix, resource.getrusage is used
1674 1679 instead and returns the CPU user time.
1675 1680
1676 1681 -p<P>: use a precision of <P> digits to display the timing result.
1677 1682 Default: 3
1678 1683
1679 1684
1680 1685 Examples:\\
1681 1686 In [1]: %timeit pass
1682 1687 10000000 loops, best of 3: 53.3 ns per loop
1683 1688
1684 1689 In [2]: u = None
1685 1690
1686 1691 In [3]: %timeit u is None
1687 1692 10000000 loops, best of 3: 184 ns per loop
1688 1693
1689 1694 In [4]: %timeit -r 4 u == None
1690 1695 1000000 loops, best of 4: 242 ns per loop
1691 1696
1692 1697 In [5]: import time
1693 1698
1694 1699 In [6]: %timeit -n1 time.sleep(2)
1695 1700 1 loops, best of 3: 2 s per loop
1696 1701
1697 1702
1698 1703 The times reported by %timeit will be slightly higher than those
1699 1704 reported by the timeit.py script when variables are accessed. This is
1700 1705 due to the fact that %timeit executes the statement in the namespace
1701 1706 of the shell, compared with timeit.py, which uses a single setup
1702 1707 statement to import function or create variables. Generally, the bias
1703 1708 does not matter as long as results from timeit.py are not mixed with
1704 1709 those from %timeit."""
1705 1710
1706 1711 import timeit
1707 1712 import math
1708 1713
1709 1714 units = ["s", "ms", "\xc2\xb5s", "ns"]
1710 1715 scaling = [1, 1e3, 1e6, 1e9]
1711 1716
1712 1717 opts, stmt = self.parse_options(parameter_s,'n:r:tcp:',
1713 1718 posix=False)
1714 1719 if stmt == "":
1715 1720 return
1716 1721 timefunc = timeit.default_timer
1717 1722 number = int(getattr(opts, "n", 0))
1718 1723 repeat = int(getattr(opts, "r", timeit.default_repeat))
1719 1724 precision = int(getattr(opts, "p", 3))
1720 1725 if hasattr(opts, "t"):
1721 1726 timefunc = time.time
1722 1727 if hasattr(opts, "c"):
1723 1728 timefunc = clock
1724 1729
1725 1730 timer = timeit.Timer(timer=timefunc)
1726 1731 # this code has tight coupling to the inner workings of timeit.Timer,
1727 1732 # but is there a better way to achieve that the code stmt has access
1728 1733 # to the shell namespace?
1729 1734
1730 1735 src = timeit.template % {'stmt': timeit.reindent(stmt, 8),
1731 1736 'setup': "pass"}
1732 1737 code = compile(src, "<magic-timeit>", "exec")
1733 1738 ns = {}
1734 1739 exec code in self.shell.user_ns, ns
1735 1740 timer.inner = ns["inner"]
1736 1741
1737 1742 if number == 0:
1738 1743 # determine number so that 0.2 <= total time < 2.0
1739 1744 number = 1
1740 1745 for i in range(1, 10):
1741 1746 number *= 10
1742 1747 if timer.timeit(number) >= 0.2:
1743 1748 break
1744 1749
1745 1750 best = min(timer.repeat(repeat, number)) / number
1746 1751
1747 1752 if best > 0.0:
1748 1753 order = min(-int(math.floor(math.log10(best)) // 3), 3)
1749 1754 else:
1750 1755 order = 3
1751 1756 print "%d loops, best of %d: %.*g %s per loop" % (number, repeat,
1752 1757 precision,
1753 1758 best * scaling[order],
1754 1759 units[order])
1755 1760
1756 1761 def magic_time(self,parameter_s = ''):
1757 1762 """Time execution of a Python statement or expression.
1758 1763
1759 1764 The CPU and wall clock times are printed, and the value of the
1760 1765 expression (if any) is returned. Note that under Win32, system time
1761 1766 is always reported as 0, since it can not be measured.
1762 1767
1763 1768 This function provides very basic timing functionality. In Python
1764 1769 2.3, the timeit module offers more control and sophistication, so this
1765 1770 could be rewritten to use it (patches welcome).
1766 1771
1767 1772 Some examples:
1768 1773
1769 1774 In [1]: time 2**128
1770 1775 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1771 1776 Wall time: 0.00
1772 1777 Out[1]: 340282366920938463463374607431768211456L
1773 1778
1774 1779 In [2]: n = 1000000
1775 1780
1776 1781 In [3]: time sum(range(n))
1777 1782 CPU times: user 1.20 s, sys: 0.05 s, total: 1.25 s
1778 1783 Wall time: 1.37
1779 1784 Out[3]: 499999500000L
1780 1785
1781 1786 In [4]: time print 'hello world'
1782 1787 hello world
1783 1788 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
1784 1789 Wall time: 0.00
1785 1790 """
1786 1791
1787 1792 # fail immediately if the given expression can't be compiled
1788 1793 try:
1789 1794 mode = 'eval'
1790 1795 code = compile(parameter_s,'<timed eval>',mode)
1791 1796 except SyntaxError:
1792 1797 mode = 'exec'
1793 1798 code = compile(parameter_s,'<timed exec>',mode)
1794 1799 # skew measurement as little as possible
1795 1800 glob = self.shell.user_ns
1796 1801 clk = clock2
1797 1802 wtime = time.time
1798 1803 # time execution
1799 1804 wall_st = wtime()
1800 1805 if mode=='eval':
1801 1806 st = clk()
1802 1807 out = eval(code,glob)
1803 1808 end = clk()
1804 1809 else:
1805 1810 st = clk()
1806 1811 exec code in glob
1807 1812 end = clk()
1808 1813 out = None
1809 1814 wall_end = wtime()
1810 1815 # Compute actual times and report
1811 1816 wall_time = wall_end-wall_st
1812 1817 cpu_user = end[0]-st[0]
1813 1818 cpu_sys = end[1]-st[1]
1814 1819 cpu_tot = cpu_user+cpu_sys
1815 1820 print "CPU times: user %.2f s, sys: %.2f s, total: %.2f s" % \
1816 1821 (cpu_user,cpu_sys,cpu_tot)
1817 1822 print "Wall time: %.2f" % wall_time
1818 1823 return out
1819 1824
1820 1825 def magic_macro(self,parameter_s = ''):
1821 1826 """Define a set of input lines as a macro for future re-execution.
1822 1827
1823 1828 Usage:\\
1824 1829 %macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
1825 1830
1826 1831 Options:
1827 1832
1828 1833 -r: use 'raw' input. By default, the 'processed' history is used,
1829 1834 so that magics are loaded in their transformed version to valid
1830 1835 Python. If this option is given, the raw input as typed as the
1831 1836 command line is used instead.
1832 1837
1833 1838 This will define a global variable called `name` which is a string
1834 1839 made of joining the slices and lines you specify (n1,n2,... numbers
1835 1840 above) from your input history into a single string. This variable
1836 1841 acts like an automatic function which re-executes those lines as if
1837 1842 you had typed them. You just type 'name' at the prompt and the code
1838 1843 executes.
1839 1844
1840 1845 The notation for indicating number ranges is: n1-n2 means 'use line
1841 1846 numbers n1,...n2' (the endpoint is included). That is, '5-7' means
1842 1847 using the lines numbered 5,6 and 7.
1843 1848
1844 1849 Note: as a 'hidden' feature, you can also use traditional python slice
1845 1850 notation, where N:M means numbers N through M-1.
1846 1851
1847 1852 For example, if your history contains (%hist prints it):
1848 1853
1849 1854 44: x=1\\
1850 1855 45: y=3\\
1851 1856 46: z=x+y\\
1852 1857 47: print x\\
1853 1858 48: a=5\\
1854 1859 49: print 'x',x,'y',y\\
1855 1860
1856 1861 you can create a macro with lines 44 through 47 (included) and line 49
1857 1862 called my_macro with:
1858 1863
1859 1864 In [51]: %macro my_macro 44-47 49
1860 1865
1861 1866 Now, typing `my_macro` (without quotes) will re-execute all this code
1862 1867 in one pass.
1863 1868
1864 1869 You don't need to give the line-numbers in order, and any given line
1865 1870 number can appear multiple times. You can assemble macros with any
1866 1871 lines from your input history in any order.
1867 1872
1868 1873 The macro is a simple object which holds its value in an attribute,
1869 1874 but IPython's display system checks for macros and executes them as
1870 1875 code instead of printing them when you type their name.
1871 1876
1872 1877 You can view a macro's contents by explicitly printing it with:
1873 1878
1874 1879 'print macro_name'.
1875 1880
1876 1881 For one-off cases which DON'T contain magic function calls in them you
1877 1882 can obtain similar results by explicitly executing slices from your
1878 1883 input history with:
1879 1884
1880 1885 In [60]: exec In[44:48]+In[49]"""
1881 1886
1882 1887 opts,args = self.parse_options(parameter_s,'r',mode='list')
1883 1888 name,ranges = args[0], args[1:]
1884 1889 #print 'rng',ranges # dbg
1885 1890 lines = self.extract_input_slices(ranges,opts.has_key('r'))
1886 1891 macro = Macro(lines)
1887 1892 self.shell.user_ns.update({name:macro})
1888 1893 print 'Macro `%s` created. To execute, type its name (without quotes).' % name
1889 1894 print 'Macro contents:'
1890 1895 print macro,
1891 1896
1892 1897 def magic_save(self,parameter_s = ''):
1893 1898 """Save a set of lines to a given filename.
1894 1899
1895 1900 Usage:\\
1896 1901 %save [options] filename n1-n2 n3-n4 ... n5 .. n6 ...
1897 1902
1898 1903 Options:
1899 1904
1900 1905 -r: use 'raw' input. By default, the 'processed' history is used,
1901 1906 so that magics are loaded in their transformed version to valid
1902 1907 Python. If this option is given, the raw input as typed as the
1903 1908 command line is used instead.
1904 1909
1905 1910 This function uses the same syntax as %macro for line extraction, but
1906 1911 instead of creating a macro it saves the resulting string to the
1907 1912 filename you specify.
1908 1913
1909 1914 It adds a '.py' extension to the file if you don't do so yourself, and
1910 1915 it asks for confirmation before overwriting existing files."""
1911 1916
1912 1917 opts,args = self.parse_options(parameter_s,'r',mode='list')
1913 1918 fname,ranges = args[0], args[1:]
1914 1919 if not fname.endswith('.py'):
1915 1920 fname += '.py'
1916 1921 if os.path.isfile(fname):
1917 1922 ans = raw_input('File `%s` exists. Overwrite (y/[N])? ' % fname)
1918 1923 if ans.lower() not in ['y','yes']:
1919 1924 print 'Operation cancelled.'
1920 1925 return
1921 1926 cmds = ''.join(self.extract_input_slices(ranges,opts.has_key('r')))
1922 1927 f = file(fname,'w')
1923 1928 f.write(cmds)
1924 1929 f.close()
1925 1930 print 'The following commands were written to file `%s`:' % fname
1926 1931 print cmds
1927 1932
1928 1933 def _edit_macro(self,mname,macro):
1929 1934 """open an editor with the macro data in a file"""
1930 1935 filename = self.shell.mktempfile(macro.value)
1931 1936 self.shell.hooks.editor(filename)
1932 1937
1933 1938 # and make a new macro object, to replace the old one
1934 1939 mfile = open(filename)
1935 1940 mvalue = mfile.read()
1936 1941 mfile.close()
1937 1942 self.shell.user_ns[mname] = Macro(mvalue)
1938 1943
1939 1944 def magic_ed(self,parameter_s=''):
1940 1945 """Alias to %edit."""
1941 1946 return self.magic_edit(parameter_s)
1942 1947
1943 1948 def magic_edit(self,parameter_s='',last_call=['','']):
1944 1949 """Bring up an editor and execute the resulting code.
1945 1950
1946 1951 Usage:
1947 1952 %edit [options] [args]
1948 1953
1949 1954 %edit runs IPython's editor hook. The default version of this hook is
1950 1955 set to call the __IPYTHON__.rc.editor command. This is read from your
1951 1956 environment variable $EDITOR. If this isn't found, it will default to
1952 1957 vi under Linux/Unix and to notepad under Windows. See the end of this
1953 1958 docstring for how to change the editor hook.
1954 1959
1955 1960 You can also set the value of this editor via the command line option
1956 1961 '-editor' or in your ipythonrc file. This is useful if you wish to use
1957 1962 specifically for IPython an editor different from your typical default
1958 1963 (and for Windows users who typically don't set environment variables).
1959 1964
1960 1965 This command allows you to conveniently edit multi-line code right in
1961 1966 your IPython session.
1962 1967
1963 1968 If called without arguments, %edit opens up an empty editor with a
1964 1969 temporary file and will execute the contents of this file when you
1965 1970 close it (don't forget to save it!).
1966 1971
1967 1972
1968 1973 Options:
1969 1974
1970 1975 -n <number>: open the editor at a specified line number. By default,
1971 1976 the IPython editor hook uses the unix syntax 'editor +N filename', but
1972 1977 you can configure this by providing your own modified hook if your
1973 1978 favorite editor supports line-number specifications with a different
1974 1979 syntax.
1975 1980
1976 1981 -p: this will call the editor with the same data as the previous time
1977 1982 it was used, regardless of how long ago (in your current session) it
1978 1983 was.
1979 1984
1980 1985 -r: use 'raw' input. This option only applies to input taken from the
1981 1986 user's history. By default, the 'processed' history is used, so that
1982 1987 magics are loaded in their transformed version to valid Python. If
1983 1988 this option is given, the raw input as typed as the command line is
1984 1989 used instead. When you exit the editor, it will be executed by
1985 1990 IPython's own processor.
1986 1991
1987 1992 -x: do not execute the edited code immediately upon exit. This is
1988 1993 mainly useful if you are editing programs which need to be called with
1989 1994 command line arguments, which you can then do using %run.
1990 1995
1991 1996
1992 1997 Arguments:
1993 1998
1994 1999 If arguments are given, the following possibilites exist:
1995 2000
1996 2001 - The arguments are numbers or pairs of colon-separated numbers (like
1997 2002 1 4:8 9). These are interpreted as lines of previous input to be
1998 2003 loaded into the editor. The syntax is the same of the %macro command.
1999 2004
2000 2005 - If the argument doesn't start with a number, it is evaluated as a
2001 2006 variable and its contents loaded into the editor. You can thus edit
2002 2007 any string which contains python code (including the result of
2003 2008 previous edits).
2004 2009
2005 2010 - If the argument is the name of an object (other than a string),
2006 2011 IPython will try to locate the file where it was defined and open the
2007 2012 editor at the point where it is defined. You can use `%edit function`
2008 2013 to load an editor exactly at the point where 'function' is defined,
2009 2014 edit it and have the file be executed automatically.
2010 2015
2011 2016 If the object is a macro (see %macro for details), this opens up your
2012 2017 specified editor with a temporary file containing the macro's data.
2013 2018 Upon exit, the macro is reloaded with the contents of the file.
2014 2019
2015 2020 Note: opening at an exact line is only supported under Unix, and some
2016 2021 editors (like kedit and gedit up to Gnome 2.8) do not understand the
2017 2022 '+NUMBER' parameter necessary for this feature. Good editors like
2018 2023 (X)Emacs, vi, jed, pico and joe all do.
2019 2024
2020 2025 - If the argument is not found as a variable, IPython will look for a
2021 2026 file with that name (adding .py if necessary) and load it into the
2022 2027 editor. It will execute its contents with execfile() when you exit,
2023 2028 loading any code in the file into your interactive namespace.
2024 2029
2025 2030 After executing your code, %edit will return as output the code you
2026 2031 typed in the editor (except when it was an existing file). This way
2027 2032 you can reload the code in further invocations of %edit as a variable,
2028 2033 via _<NUMBER> or Out[<NUMBER>], where <NUMBER> is the prompt number of
2029 2034 the output.
2030 2035
2031 2036 Note that %edit is also available through the alias %ed.
2032 2037
2033 2038 This is an example of creating a simple function inside the editor and
2034 2039 then modifying it. First, start up the editor:
2035 2040
2036 2041 In [1]: ed\\
2037 2042 Editing... done. Executing edited code...\\
2038 2043 Out[1]: 'def foo():\\n print "foo() was defined in an editing session"\\n'
2039 2044
2040 2045 We can then call the function foo():
2041 2046
2042 2047 In [2]: foo()\\
2043 2048 foo() was defined in an editing session
2044 2049
2045 2050 Now we edit foo. IPython automatically loads the editor with the
2046 2051 (temporary) file where foo() was previously defined:
2047 2052
2048 2053 In [3]: ed foo\\
2049 2054 Editing... done. Executing edited code...
2050 2055
2051 2056 And if we call foo() again we get the modified version:
2052 2057
2053 2058 In [4]: foo()\\
2054 2059 foo() has now been changed!
2055 2060
2056 2061 Here is an example of how to edit a code snippet successive
2057 2062 times. First we call the editor:
2058 2063
2059 2064 In [8]: ed\\
2060 2065 Editing... done. Executing edited code...\\
2061 2066 hello\\
2062 2067 Out[8]: "print 'hello'\\n"
2063 2068
2064 2069 Now we call it again with the previous output (stored in _):
2065 2070
2066 2071 In [9]: ed _\\
2067 2072 Editing... done. Executing edited code...\\
2068 2073 hello world\\
2069 2074 Out[9]: "print 'hello world'\\n"
2070 2075
2071 2076 Now we call it with the output #8 (stored in _8, also as Out[8]):
2072 2077
2073 2078 In [10]: ed _8\\
2074 2079 Editing... done. Executing edited code...\\
2075 2080 hello again\\
2076 2081 Out[10]: "print 'hello again'\\n"
2077 2082
2078 2083
2079 2084 Changing the default editor hook:
2080 2085
2081 2086 If you wish to write your own editor hook, you can put it in a
2082 2087 configuration file which you load at startup time. The default hook
2083 2088 is defined in the IPython.hooks module, and you can use that as a
2084 2089 starting example for further modifications. That file also has
2085 2090 general instructions on how to set a new hook for use once you've
2086 2091 defined it."""
2087 2092
2088 2093 # FIXME: This function has become a convoluted mess. It needs a
2089 2094 # ground-up rewrite with clean, simple logic.
2090 2095
2091 2096 def make_filename(arg):
2092 2097 "Make a filename from the given args"
2093 2098 try:
2094 2099 filename = get_py_filename(arg)
2095 2100 except IOError:
2096 2101 if args.endswith('.py'):
2097 2102 filename = arg
2098 2103 else:
2099 2104 filename = None
2100 2105 return filename
2101 2106
2102 2107 # custom exceptions
2103 2108 class DataIsObject(Exception): pass
2104 2109
2105 2110 opts,args = self.parse_options(parameter_s,'prxn:')
2106 2111 # Set a few locals from the options for convenience:
2107 2112 opts_p = opts.has_key('p')
2108 2113 opts_r = opts.has_key('r')
2109 2114
2110 2115 # Default line number value
2111 2116 lineno = opts.get('n',None)
2112 2117
2113 2118 if opts_p:
2114 2119 args = '_%s' % last_call[0]
2115 2120 if not self.shell.user_ns.has_key(args):
2116 2121 args = last_call[1]
2117 2122
2118 2123 # use last_call to remember the state of the previous call, but don't
2119 2124 # let it be clobbered by successive '-p' calls.
2120 2125 try:
2121 2126 last_call[0] = self.shell.outputcache.prompt_count
2122 2127 if not opts_p:
2123 2128 last_call[1] = parameter_s
2124 2129 except:
2125 2130 pass
2126 2131
2127 2132 # by default this is done with temp files, except when the given
2128 2133 # arg is a filename
2129 2134 use_temp = 1
2130 2135
2131 2136 if re.match(r'\d',args):
2132 2137 # Mode where user specifies ranges of lines, like in %macro.
2133 2138 # This means that you can't edit files whose names begin with
2134 2139 # numbers this way. Tough.
2135 2140 ranges = args.split()
2136 2141 data = ''.join(self.extract_input_slices(ranges,opts_r))
2137 2142 elif args.endswith('.py'):
2138 2143 filename = make_filename(args)
2139 2144 data = ''
2140 2145 use_temp = 0
2141 2146 elif args:
2142 2147 try:
2143 2148 # Load the parameter given as a variable. If not a string,
2144 2149 # process it as an object instead (below)
2145 2150
2146 2151 #print '*** args',args,'type',type(args) # dbg
2147 2152 data = eval(args,self.shell.user_ns)
2148 2153 if not type(data) in StringTypes:
2149 2154 raise DataIsObject
2150 2155
2151 2156 except (NameError,SyntaxError):
2152 2157 # given argument is not a variable, try as a filename
2153 2158 filename = make_filename(args)
2154 2159 if filename is None:
2155 2160 warn("Argument given (%s) can't be found as a variable "
2156 2161 "or as a filename." % args)
2157 2162 return
2158 2163
2159 2164 data = ''
2160 2165 use_temp = 0
2161 2166 except DataIsObject:
2162 2167
2163 2168 # macros have a special edit function
2164 2169 if isinstance(data,Macro):
2165 2170 self._edit_macro(args,data)
2166 2171 return
2167 2172
2168 2173 # For objects, try to edit the file where they are defined
2169 2174 try:
2170 2175 filename = inspect.getabsfile(data)
2171 2176 datafile = 1
2172 2177 except TypeError:
2173 2178 filename = make_filename(args)
2174 2179 datafile = 1
2175 2180 warn('Could not find file where `%s` is defined.\n'
2176 2181 'Opening a file named `%s`' % (args,filename))
2177 2182 # Now, make sure we can actually read the source (if it was in
2178 2183 # a temp file it's gone by now).
2179 2184 if datafile:
2180 2185 try:
2181 2186 if lineno is None:
2182 2187 lineno = inspect.getsourcelines(data)[1]
2183 2188 except IOError:
2184 2189 filename = make_filename(args)
2185 2190 if filename is None:
2186 2191 warn('The file `%s` where `%s` was defined cannot '
2187 2192 'be read.' % (filename,data))
2188 2193 return
2189 2194 use_temp = 0
2190 2195 else:
2191 2196 data = ''
2192 2197
2193 2198 if use_temp:
2194 2199 filename = self.shell.mktempfile(data)
2195 2200 print 'IPython will make a temporary file named:',filename
2196 2201
2197 2202 # do actual editing here
2198 2203 print 'Editing...',
2199 2204 sys.stdout.flush()
2200 2205 self.shell.hooks.editor(filename,lineno)
2201 2206 if opts.has_key('x'): # -x prevents actual execution
2202 2207 print
2203 2208 else:
2204 2209 print 'done. Executing edited code...'
2205 2210 if opts_r:
2206 2211 self.shell.runlines(file_read(filename))
2207 2212 else:
2208 2213 self.shell.safe_execfile(filename,self.shell.user_ns)
2209 2214 if use_temp:
2210 2215 try:
2211 2216 return open(filename).read()
2212 2217 except IOError,msg:
2213 2218 if msg.filename == filename:
2214 2219 warn('File not found. Did you forget to save?')
2215 2220 return
2216 2221 else:
2217 2222 self.shell.showtraceback()
2218 2223
2219 2224 def magic_xmode(self,parameter_s = ''):
2220 2225 """Switch modes for the exception handlers.
2221 2226
2222 2227 Valid modes: Plain, Context and Verbose.
2223 2228
2224 2229 If called without arguments, acts as a toggle."""
2225 2230
2226 2231 def xmode_switch_err(name):
2227 2232 warn('Error changing %s exception modes.\n%s' %
2228 2233 (name,sys.exc_info()[1]))
2229 2234
2230 2235 shell = self.shell
2231 2236 new_mode = parameter_s.strip().capitalize()
2232 2237 try:
2233 2238 shell.InteractiveTB.set_mode(mode=new_mode)
2234 2239 print 'Exception reporting mode:',shell.InteractiveTB.mode
2235 2240 except:
2236 2241 xmode_switch_err('user')
2237 2242
2238 2243 # threaded shells use a special handler in sys.excepthook
2239 2244 if shell.isthreaded:
2240 2245 try:
2241 2246 shell.sys_excepthook.set_mode(mode=new_mode)
2242 2247 except:
2243 2248 xmode_switch_err('threaded')
2244 2249
2245 2250 def magic_colors(self,parameter_s = ''):
2246 2251 """Switch color scheme for prompts, info system and exception handlers.
2247 2252
2248 2253 Currently implemented schemes: NoColor, Linux, LightBG.
2249 2254
2250 2255 Color scheme names are not case-sensitive."""
2251 2256
2252 2257 def color_switch_err(name):
2253 2258 warn('Error changing %s color schemes.\n%s' %
2254 2259 (name,sys.exc_info()[1]))
2255 2260
2256 2261
2257 2262 new_scheme = parameter_s.strip()
2258 2263 if not new_scheme:
2259 2264 print 'You must specify a color scheme.'
2260 2265 return
2261 2266 import IPython.rlineimpl as readline
2262 2267 if not readline.have_readline:
2263 2268 msg = """\
2264 2269 Proper color support under MS Windows requires the pyreadline library.
2265 2270 You can find it at:
2266 2271 http://ipython.scipy.org/moin/PyReadline/Intro
2267 2272 Gary's readline needs the ctypes module, from:
2268 2273 http://starship.python.net/crew/theller/ctypes
2269 2274 (Note that ctypes is already part of Python versions 2.5 and newer).
2270 2275
2271 2276 Defaulting color scheme to 'NoColor'"""
2272 2277 new_scheme = 'NoColor'
2273 2278 warn(msg)
2274 2279 # local shortcut
2275 2280 shell = self.shell
2276 2281
2277 2282 # Set prompt colors
2278 2283 try:
2279 2284 shell.outputcache.set_colors(new_scheme)
2280 2285 except:
2281 2286 color_switch_err('prompt')
2282 2287 else:
2283 2288 shell.rc.colors = \
2284 2289 shell.outputcache.color_table.active_scheme_name
2285 2290 # Set exception colors
2286 2291 try:
2287 2292 shell.InteractiveTB.set_colors(scheme = new_scheme)
2288 2293 shell.SyntaxTB.set_colors(scheme = new_scheme)
2289 2294 except:
2290 2295 color_switch_err('exception')
2291 2296
2292 2297 # threaded shells use a verbose traceback in sys.excepthook
2293 2298 if shell.isthreaded:
2294 2299 try:
2295 2300 shell.sys_excepthook.set_colors(scheme=new_scheme)
2296 2301 except:
2297 2302 color_switch_err('system exception handler')
2298 2303
2299 2304 # Set info (for 'object?') colors
2300 2305 if shell.rc.color_info:
2301 2306 try:
2302 2307 shell.inspector.set_active_scheme(new_scheme)
2303 2308 except:
2304 2309 color_switch_err('object inspector')
2305 2310 else:
2306 2311 shell.inspector.set_active_scheme('NoColor')
2307 2312
2308 2313 def magic_color_info(self,parameter_s = ''):
2309 2314 """Toggle color_info.
2310 2315
2311 2316 The color_info configuration parameter controls whether colors are
2312 2317 used for displaying object details (by things like %psource, %pfile or
2313 2318 the '?' system). This function toggles this value with each call.
2314 2319
2315 2320 Note that unless you have a fairly recent pager (less works better
2316 2321 than more) in your system, using colored object information displays
2317 2322 will not work properly. Test it and see."""
2318 2323
2319 2324 self.shell.rc.color_info = 1 - self.shell.rc.color_info
2320 2325 self.magic_colors(self.shell.rc.colors)
2321 2326 print 'Object introspection functions have now coloring:',
2322 2327 print ['OFF','ON'][self.shell.rc.color_info]
2323 2328
2324 2329 def magic_Pprint(self, parameter_s=''):
2325 2330 """Toggle pretty printing on/off."""
2326 2331
2327 2332 self.shell.rc.pprint = 1 - self.shell.rc.pprint
2328 2333 print 'Pretty printing has been turned', \
2329 2334 ['OFF','ON'][self.shell.rc.pprint]
2330 2335
2331 2336 def magic_exit(self, parameter_s=''):
2332 2337 """Exit IPython, confirming if configured to do so.
2333 2338
2334 2339 You can configure whether IPython asks for confirmation upon exit by
2335 2340 setting the confirm_exit flag in the ipythonrc file."""
2336 2341
2337 2342 self.shell.exit()
2338 2343
2339 2344 def magic_quit(self, parameter_s=''):
2340 2345 """Exit IPython, confirming if configured to do so (like %exit)"""
2341 2346
2342 2347 self.shell.exit()
2343 2348
2344 2349 def magic_Exit(self, parameter_s=''):
2345 2350 """Exit IPython without confirmation."""
2346 2351
2347 2352 self.shell.exit_now = True
2348 2353
2349 2354 def magic_Quit(self, parameter_s=''):
2350 2355 """Exit IPython without confirmation (like %Exit)."""
2351 2356
2352 2357 self.shell.exit_now = True
2353 2358
2354 2359 #......................................................................
2355 2360 # Functions to implement unix shell-type things
2356 2361
2357 2362 def magic_alias(self, parameter_s = ''):
2358 2363 """Define an alias for a system command.
2359 2364
2360 2365 '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
2361 2366
2362 2367 Then, typing 'alias_name params' will execute the system command 'cmd
2363 2368 params' (from your underlying operating system).
2364 2369
2365 2370 Aliases have lower precedence than magic functions and Python normal
2366 2371 variables, so if 'foo' is both a Python variable and an alias, the
2367 2372 alias can not be executed until 'del foo' removes the Python variable.
2368 2373
2369 2374 You can use the %l specifier in an alias definition to represent the
2370 2375 whole line when the alias is called. For example:
2371 2376
2372 2377 In [2]: alias all echo "Input in brackets: <%l>"\\
2373 2378 In [3]: all hello world\\
2374 2379 Input in brackets: <hello world>
2375 2380
2376 2381 You can also define aliases with parameters using %s specifiers (one
2377 2382 per parameter):
2378 2383
2379 2384 In [1]: alias parts echo first %s second %s\\
2380 2385 In [2]: %parts A B\\
2381 2386 first A second B\\
2382 2387 In [3]: %parts A\\
2383 2388 Incorrect number of arguments: 2 expected.\\
2384 2389 parts is an alias to: 'echo first %s second %s'
2385 2390
2386 2391 Note that %l and %s are mutually exclusive. You can only use one or
2387 2392 the other in your aliases.
2388 2393
2389 2394 Aliases expand Python variables just like system calls using ! or !!
2390 2395 do: all expressions prefixed with '$' get expanded. For details of
2391 2396 the semantic rules, see PEP-215:
2392 2397 http://www.python.org/peps/pep-0215.html. This is the library used by
2393 2398 IPython for variable expansion. If you want to access a true shell
2394 2399 variable, an extra $ is necessary to prevent its expansion by IPython:
2395 2400
2396 2401 In [6]: alias show echo\\
2397 2402 In [7]: PATH='A Python string'\\
2398 2403 In [8]: show $PATH\\
2399 2404 A Python string\\
2400 2405 In [9]: show $$PATH\\
2401 2406 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2402 2407
2403 2408 You can use the alias facility to acess all of $PATH. See the %rehash
2404 2409 and %rehashx functions, which automatically create aliases for the
2405 2410 contents of your $PATH.
2406 2411
2407 2412 If called with no parameters, %alias prints the current alias table."""
2408 2413
2409 2414 par = parameter_s.strip()
2410 2415 if not par:
2411 2416 stored = self.db.get('stored_aliases', {} )
2412 2417 atab = self.shell.alias_table
2413 2418 aliases = atab.keys()
2414 2419 aliases.sort()
2415 2420 res = []
2416 2421 showlast = []
2417 2422 for alias in aliases:
2418 2423 tgt = atab[alias][1]
2419 2424 # 'interesting' aliases
2420 2425 if (alias in stored or
2421 2426 alias != os.path.splitext(tgt)[0] or
2422 2427 ' ' in tgt):
2423 2428 showlast.append((alias, tgt))
2424 2429 else:
2425 2430 res.append((alias, tgt ))
2426 2431
2427 2432 # show most interesting aliases last
2428 2433 res.extend(showlast)
2429 2434 print "Total number of aliases:",len(aliases)
2430 2435 return res
2431 2436 try:
2432 2437 alias,cmd = par.split(None,1)
2433 2438 except:
2434 2439 print OInspect.getdoc(self.magic_alias)
2435 2440 else:
2436 2441 nargs = cmd.count('%s')
2437 2442 if nargs>0 and cmd.find('%l')>=0:
2438 2443 error('The %s and %l specifiers are mutually exclusive '
2439 2444 'in alias definitions.')
2440 2445 else: # all looks OK
2441 2446 self.shell.alias_table[alias] = (nargs,cmd)
2442 2447 self.shell.alias_table_validate(verbose=0)
2443 2448 # end magic_alias
2444 2449
2445 2450 def magic_unalias(self, parameter_s = ''):
2446 2451 """Remove an alias"""
2447 2452
2448 2453 aname = parameter_s.strip()
2449 2454 if aname in self.shell.alias_table:
2450 2455 del self.shell.alias_table[aname]
2451 2456 stored = self.db.get('stored_aliases', {} )
2452 2457 if aname in stored:
2453 2458 print "Removing %stored alias",aname
2454 2459 del stored[aname]
2455 2460 self.db['stored_aliases'] = stored
2456 2461
2457 2462 def magic_rehash(self, parameter_s = ''):
2458 2463 """Update the alias table with all entries in $PATH.
2459 2464
2460 2465 This version does no checks on execute permissions or whether the
2461 2466 contents of $PATH are truly files (instead of directories or something
2462 2467 else). For such a safer (but slower) version, use %rehashx."""
2463 2468
2464 2469 # This function (and rehashx) manipulate the alias_table directly
2465 2470 # rather than calling magic_alias, for speed reasons. A rehash on a
2466 2471 # typical Linux box involves several thousand entries, so efficiency
2467 2472 # here is a top concern.
2468 2473
2469 2474 path = filter(os.path.isdir,os.environ['PATH'].split(os.pathsep))
2470 2475 alias_table = self.shell.alias_table
2471 2476 for pdir in path:
2472 2477 for ff in os.listdir(pdir):
2473 2478 # each entry in the alias table must be (N,name), where
2474 2479 # N is the number of positional arguments of the alias.
2475 2480 alias_table[ff] = (0,ff)
2476 2481 # Make sure the alias table doesn't contain keywords or builtins
2477 2482 self.shell.alias_table_validate()
2478 2483 # Call again init_auto_alias() so we get 'rm -i' and other modified
2479 2484 # aliases since %rehash will probably clobber them
2480 2485 self.shell.init_auto_alias()
2481 2486
2482 2487 def magic_rehashx(self, parameter_s = ''):
2483 2488 """Update the alias table with all executable files in $PATH.
2484 2489
2485 2490 This version explicitly checks that every entry in $PATH is a file
2486 2491 with execute access (os.X_OK), so it is much slower than %rehash.
2487 2492
2488 2493 Under Windows, it checks executability as a match agains a
2489 2494 '|'-separated string of extensions, stored in the IPython config
2490 2495 variable win_exec_ext. This defaults to 'exe|com|bat'. """
2491 2496
2492 2497 path = [os.path.abspath(os.path.expanduser(p)) for p in
2493 2498 os.environ['PATH'].split(os.pathsep)]
2494 2499 path = filter(os.path.isdir,path)
2495 2500
2496 2501 alias_table = self.shell.alias_table
2497 2502 syscmdlist = []
2498 2503 if os.name == 'posix':
2499 2504 isexec = lambda fname:os.path.isfile(fname) and \
2500 2505 os.access(fname,os.X_OK)
2501 2506 else:
2502 2507
2503 2508 try:
2504 2509 winext = os.environ['pathext'].replace(';','|').replace('.','')
2505 2510 except KeyError:
2506 2511 winext = 'exe|com|bat|py'
2507 2512 if 'py' not in winext:
2508 2513 winext += '|py'
2509 2514 execre = re.compile(r'(.*)\.(%s)$' % winext,re.IGNORECASE)
2510 2515 isexec = lambda fname:os.path.isfile(fname) and execre.match(fname)
2511 2516 savedir = os.getcwd()
2512 2517 try:
2513 2518 # write the whole loop for posix/Windows so we don't have an if in
2514 2519 # the innermost part
2515 2520 if os.name == 'posix':
2516 2521 for pdir in path:
2517 2522 os.chdir(pdir)
2518 2523 for ff in os.listdir(pdir):
2519 2524 if isexec(ff) and ff not in self.shell.no_alias:
2520 2525 # each entry in the alias table must be (N,name),
2521 2526 # where N is the number of positional arguments of the
2522 2527 # alias.
2523 2528 alias_table[ff] = (0,ff)
2524 2529 syscmdlist.append(ff)
2525 2530 else:
2526 2531 for pdir in path:
2527 2532 os.chdir(pdir)
2528 2533 for ff in os.listdir(pdir):
2529 2534 if isexec(ff) and os.path.splitext(ff)[0] not in self.shell.no_alias:
2530 2535 alias_table[execre.sub(r'\1',ff)] = (0,ff)
2531 2536 syscmdlist.append(ff)
2532 2537 # Make sure the alias table doesn't contain keywords or builtins
2533 2538 self.shell.alias_table_validate()
2534 2539 # Call again init_auto_alias() so we get 'rm -i' and other
2535 2540 # modified aliases since %rehashx will probably clobber them
2536 2541 self.shell.init_auto_alias()
2537 2542 db = self.getapi().db
2538 2543 db['syscmdlist'] = syscmdlist
2539 2544 finally:
2540 2545 os.chdir(savedir)
2541 2546
2542 2547 def magic_pwd(self, parameter_s = ''):
2543 2548 """Return the current working directory path."""
2544 2549 return os.getcwd()
2545 2550
2546 2551 def magic_cd(self, parameter_s=''):
2547 2552 """Change the current working directory.
2548 2553
2549 2554 This command automatically maintains an internal list of directories
2550 2555 you visit during your IPython session, in the variable _dh. The
2551 2556 command %dhist shows this history nicely formatted.
2552 2557
2553 2558 Usage:
2554 2559
2555 2560 cd 'dir': changes to directory 'dir'.
2556 2561
2557 2562 cd -: changes to the last visited directory.
2558 2563
2559 2564 cd -<n>: changes to the n-th directory in the directory history.
2560 2565
2561 2566 cd -b <bookmark_name>: jump to a bookmark set by %bookmark
2562 2567 (note: cd <bookmark_name> is enough if there is no
2563 2568 directory <bookmark_name>, but a bookmark with the name exists.)
2564 2569
2565 2570 Options:
2566 2571
2567 2572 -q: quiet. Do not print the working directory after the cd command is
2568 2573 executed. By default IPython's cd command does print this directory,
2569 2574 since the default prompts do not display path information.
2570 2575
2571 2576 Note that !cd doesn't work for this purpose because the shell where
2572 2577 !command runs is immediately discarded after executing 'command'."""
2573 2578
2574 2579 parameter_s = parameter_s.strip()
2575 2580 #bkms = self.shell.persist.get("bookmarks",{})
2576 2581
2577 2582 numcd = re.match(r'(-)(\d+)$',parameter_s)
2578 2583 # jump in directory history by number
2579 2584 if numcd:
2580 2585 nn = int(numcd.group(2))
2581 2586 try:
2582 2587 ps = self.shell.user_ns['_dh'][nn]
2583 2588 except IndexError:
2584 2589 print 'The requested directory does not exist in history.'
2585 2590 return
2586 2591 else:
2587 2592 opts = {}
2588 2593 else:
2589 2594 #turn all non-space-escaping backslashes to slashes,
2590 2595 # for c:\windows\directory\names\
2591 2596 parameter_s = re.sub(r'\\(?! )','/', parameter_s)
2592 2597 opts,ps = self.parse_options(parameter_s,'qb',mode='string')
2593 2598 # jump to previous
2594 2599 if ps == '-':
2595 2600 try:
2596 2601 ps = self.shell.user_ns['_dh'][-2]
2597 2602 except IndexError:
2598 2603 print 'No previous directory to change to.'
2599 2604 return
2600 2605 # jump to bookmark if needed
2601 2606 else:
2602 2607 if not os.path.isdir(ps) or opts.has_key('b'):
2603 2608 bkms = self.db.get('bookmarks', {})
2604 2609
2605 2610 if bkms.has_key(ps):
2606 2611 target = bkms[ps]
2607 2612 print '(bookmark:%s) -> %s' % (ps,target)
2608 2613 ps = target
2609 2614 else:
2610 2615 if opts.has_key('b'):
2611 2616 error("Bookmark '%s' not found. "
2612 2617 "Use '%%bookmark -l' to see your bookmarks." % ps)
2613 2618 return
2614 2619
2615 2620 # at this point ps should point to the target dir
2616 2621 if ps:
2617 2622 try:
2618 2623 os.chdir(os.path.expanduser(ps))
2619 2624 ttitle = ("IPy:" + (
2620 2625 os.getcwd() == '/' and '/' or os.path.basename(os.getcwd())))
2621 2626 platutils.set_term_title(ttitle)
2622 2627 except OSError:
2623 2628 print sys.exc_info()[1]
2624 2629 else:
2625 2630 self.shell.user_ns['_dh'].append(os.getcwd())
2626 2631 else:
2627 2632 os.chdir(self.shell.home_dir)
2628 2633 platutils.set_term_title("IPy:~")
2629 2634 self.shell.user_ns['_dh'].append(os.getcwd())
2630 2635 if not 'q' in opts:
2631 2636 print self.shell.user_ns['_dh'][-1]
2632 2637
2633 2638 def magic_dhist(self, parameter_s=''):
2634 2639 """Print your history of visited directories.
2635 2640
2636 2641 %dhist -> print full history\\
2637 2642 %dhist n -> print last n entries only\\
2638 2643 %dhist n1 n2 -> print entries between n1 and n2 (n1 not included)\\
2639 2644
2640 2645 This history is automatically maintained by the %cd command, and
2641 2646 always available as the global list variable _dh. You can use %cd -<n>
2642 2647 to go to directory number <n>."""
2643 2648
2644 2649 dh = self.shell.user_ns['_dh']
2645 2650 if parameter_s:
2646 2651 try:
2647 2652 args = map(int,parameter_s.split())
2648 2653 except:
2649 2654 self.arg_err(Magic.magic_dhist)
2650 2655 return
2651 2656 if len(args) == 1:
2652 2657 ini,fin = max(len(dh)-(args[0]),0),len(dh)
2653 2658 elif len(args) == 2:
2654 2659 ini,fin = args
2655 2660 else:
2656 2661 self.arg_err(Magic.magic_dhist)
2657 2662 return
2658 2663 else:
2659 2664 ini,fin = 0,len(dh)
2660 2665 nlprint(dh,
2661 2666 header = 'Directory history (kept in _dh)',
2662 2667 start=ini,stop=fin)
2663 2668
2664 2669 def magic_env(self, parameter_s=''):
2665 2670 """List environment variables."""
2666 2671
2667 2672 return os.environ.data
2668 2673
2669 2674 def magic_pushd(self, parameter_s=''):
2670 2675 """Place the current dir on stack and change directory.
2671 2676
2672 2677 Usage:\\
2673 2678 %pushd ['dirname']
2674 2679
2675 2680 %pushd with no arguments does a %pushd to your home directory.
2676 2681 """
2677 2682 if parameter_s == '': parameter_s = '~'
2678 2683 dir_s = self.shell.dir_stack
2679 2684 if len(dir_s)>0 and os.path.expanduser(parameter_s) != \
2680 2685 os.path.expanduser(self.shell.dir_stack[0]):
2681 2686 try:
2682 2687 self.magic_cd(parameter_s)
2683 2688 dir_s.insert(0,os.getcwd().replace(self.home_dir,'~'))
2684 2689 self.magic_dirs()
2685 2690 except:
2686 2691 print 'Invalid directory'
2687 2692 else:
2688 2693 print 'You are already there!'
2689 2694
2690 2695 def magic_popd(self, parameter_s=''):
2691 2696 """Change to directory popped off the top of the stack.
2692 2697 """
2693 2698 if len (self.shell.dir_stack) > 1:
2694 2699 self.shell.dir_stack.pop(0)
2695 2700 self.magic_cd(self.shell.dir_stack[0])
2696 2701 print self.shell.dir_stack[0]
2697 2702 else:
2698 2703 print "You can't remove the starting directory from the stack:",\
2699 2704 self.shell.dir_stack
2700 2705
2701 2706 def magic_dirs(self, parameter_s=''):
2702 2707 """Return the current directory stack."""
2703 2708
2704 2709 return self.shell.dir_stack[:]
2705 2710
2706 2711 def magic_sc(self, parameter_s=''):
2707 2712 """Shell capture - execute a shell command and capture its output.
2708 2713
2709 2714 DEPRECATED. Suboptimal, retained for backwards compatibility.
2710 2715
2711 2716 You should use the form 'var = !command' instead. Example:
2712 2717
2713 2718 "%sc -l myfiles = ls ~" should now be written as
2714 2719
2715 2720 "myfiles = !ls ~"
2716 2721
2717 2722 myfiles.s, myfiles.l and myfiles.n still apply as documented
2718 2723 below.
2719 2724
2720 2725 --
2721 2726 %sc [options] varname=command
2722 2727
2723 2728 IPython will run the given command using commands.getoutput(), and
2724 2729 will then update the user's interactive namespace with a variable
2725 2730 called varname, containing the value of the call. Your command can
2726 2731 contain shell wildcards, pipes, etc.
2727 2732
2728 2733 The '=' sign in the syntax is mandatory, and the variable name you
2729 2734 supply must follow Python's standard conventions for valid names.
2730 2735
2731 2736 (A special format without variable name exists for internal use)
2732 2737
2733 2738 Options:
2734 2739
2735 2740 -l: list output. Split the output on newlines into a list before
2736 2741 assigning it to the given variable. By default the output is stored
2737 2742 as a single string.
2738 2743
2739 2744 -v: verbose. Print the contents of the variable.
2740 2745
2741 2746 In most cases you should not need to split as a list, because the
2742 2747 returned value is a special type of string which can automatically
2743 2748 provide its contents either as a list (split on newlines) or as a
2744 2749 space-separated string. These are convenient, respectively, either
2745 2750 for sequential processing or to be passed to a shell command.
2746 2751
2747 2752 For example:
2748 2753
2749 2754 # Capture into variable a
2750 2755 In [9]: sc a=ls *py
2751 2756
2752 2757 # a is a string with embedded newlines
2753 2758 In [10]: a
2754 2759 Out[10]: 'setup.py\nwin32_manual_post_install.py'
2755 2760
2756 2761 # which can be seen as a list:
2757 2762 In [11]: a.l
2758 2763 Out[11]: ['setup.py', 'win32_manual_post_install.py']
2759 2764
2760 2765 # or as a whitespace-separated string:
2761 2766 In [12]: a.s
2762 2767 Out[12]: 'setup.py win32_manual_post_install.py'
2763 2768
2764 2769 # a.s is useful to pass as a single command line:
2765 2770 In [13]: !wc -l $a.s
2766 2771 146 setup.py
2767 2772 130 win32_manual_post_install.py
2768 2773 276 total
2769 2774
2770 2775 # while the list form is useful to loop over:
2771 2776 In [14]: for f in a.l:
2772 2777 ....: !wc -l $f
2773 2778 ....:
2774 2779 146 setup.py
2775 2780 130 win32_manual_post_install.py
2776 2781
2777 2782 Similiarly, the lists returned by the -l option are also special, in
2778 2783 the sense that you can equally invoke the .s attribute on them to
2779 2784 automatically get a whitespace-separated string from their contents:
2780 2785
2781 2786 In [1]: sc -l b=ls *py
2782 2787
2783 2788 In [2]: b
2784 2789 Out[2]: ['setup.py', 'win32_manual_post_install.py']
2785 2790
2786 2791 In [3]: b.s
2787 2792 Out[3]: 'setup.py win32_manual_post_install.py'
2788 2793
2789 2794 In summary, both the lists and strings used for ouptut capture have
2790 2795 the following special attributes:
2791 2796
2792 2797 .l (or .list) : value as list.
2793 2798 .n (or .nlstr): value as newline-separated string.
2794 2799 .s (or .spstr): value as space-separated string.
2795 2800 """
2796 2801
2797 2802 opts,args = self.parse_options(parameter_s,'lv')
2798 2803 # Try to get a variable name and command to run
2799 2804 try:
2800 2805 # the variable name must be obtained from the parse_options
2801 2806 # output, which uses shlex.split to strip options out.
2802 2807 var,_ = args.split('=',1)
2803 2808 var = var.strip()
2804 2809 # But the the command has to be extracted from the original input
2805 2810 # parameter_s, not on what parse_options returns, to avoid the
2806 2811 # quote stripping which shlex.split performs on it.
2807 2812 _,cmd = parameter_s.split('=',1)
2808 2813 except ValueError:
2809 2814 var,cmd = '',''
2810 2815 # If all looks ok, proceed
2811 2816 out,err = self.shell.getoutputerror(cmd)
2812 2817 if err:
2813 2818 print >> Term.cerr,err
2814 2819 if opts.has_key('l'):
2815 2820 out = SList(out.split('\n'))
2816 2821 else:
2817 2822 out = LSString(out)
2818 2823 if opts.has_key('v'):
2819 2824 print '%s ==\n%s' % (var,pformat(out))
2820 2825 if var:
2821 2826 self.shell.user_ns.update({var:out})
2822 2827 else:
2823 2828 return out
2824 2829
2825 2830 def magic_sx(self, parameter_s=''):
2826 2831 """Shell execute - run a shell command and capture its output.
2827 2832
2828 2833 %sx command
2829 2834
2830 2835 IPython will run the given command using commands.getoutput(), and
2831 2836 return the result formatted as a list (split on '\\n'). Since the
2832 2837 output is _returned_, it will be stored in ipython's regular output
2833 2838 cache Out[N] and in the '_N' automatic variables.
2834 2839
2835 2840 Notes:
2836 2841
2837 2842 1) If an input line begins with '!!', then %sx is automatically
2838 2843 invoked. That is, while:
2839 2844 !ls
2840 2845 causes ipython to simply issue system('ls'), typing
2841 2846 !!ls
2842 2847 is a shorthand equivalent to:
2843 2848 %sx ls
2844 2849
2845 2850 2) %sx differs from %sc in that %sx automatically splits into a list,
2846 2851 like '%sc -l'. The reason for this is to make it as easy as possible
2847 2852 to process line-oriented shell output via further python commands.
2848 2853 %sc is meant to provide much finer control, but requires more
2849 2854 typing.
2850 2855
2851 2856 3) Just like %sc -l, this is a list with special attributes:
2852 2857
2853 2858 .l (or .list) : value as list.
2854 2859 .n (or .nlstr): value as newline-separated string.
2855 2860 .s (or .spstr): value as whitespace-separated string.
2856 2861
2857 2862 This is very useful when trying to use such lists as arguments to
2858 2863 system commands."""
2859 2864
2860 2865 if parameter_s:
2861 2866 out,err = self.shell.getoutputerror(parameter_s)
2862 2867 if err:
2863 2868 print >> Term.cerr,err
2864 2869 return SList(out.split('\n'))
2865 2870
2866 2871 def magic_bg(self, parameter_s=''):
2867 2872 """Run a job in the background, in a separate thread.
2868 2873
2869 2874 For example,
2870 2875
2871 2876 %bg myfunc(x,y,z=1)
2872 2877
2873 2878 will execute 'myfunc(x,y,z=1)' in a background thread. As soon as the
2874 2879 execution starts, a message will be printed indicating the job
2875 2880 number. If your job number is 5, you can use
2876 2881
2877 2882 myvar = jobs.result(5) or myvar = jobs[5].result
2878 2883
2879 2884 to assign this result to variable 'myvar'.
2880 2885
2881 2886 IPython has a job manager, accessible via the 'jobs' object. You can
2882 2887 type jobs? to get more information about it, and use jobs.<TAB> to see
2883 2888 its attributes. All attributes not starting with an underscore are
2884 2889 meant for public use.
2885 2890
2886 2891 In particular, look at the jobs.new() method, which is used to create
2887 2892 new jobs. This magic %bg function is just a convenience wrapper
2888 2893 around jobs.new(), for expression-based jobs. If you want to create a
2889 2894 new job with an explicit function object and arguments, you must call
2890 2895 jobs.new() directly.
2891 2896
2892 2897 The jobs.new docstring also describes in detail several important
2893 2898 caveats associated with a thread-based model for background job
2894 2899 execution. Type jobs.new? for details.
2895 2900
2896 2901 You can check the status of all jobs with jobs.status().
2897 2902
2898 2903 The jobs variable is set by IPython into the Python builtin namespace.
2899 2904 If you ever declare a variable named 'jobs', you will shadow this
2900 2905 name. You can either delete your global jobs variable to regain
2901 2906 access to the job manager, or make a new name and assign it manually
2902 2907 to the manager (stored in IPython's namespace). For example, to
2903 2908 assign the job manager to the Jobs name, use:
2904 2909
2905 2910 Jobs = __builtins__.jobs"""
2906 2911
2907 2912 self.shell.jobs.new(parameter_s,self.shell.user_ns)
2908 2913
2909 2914
2910 2915 def magic_bookmark(self, parameter_s=''):
2911 2916 """Manage IPython's bookmark system.
2912 2917
2913 2918 %bookmark <name> - set bookmark to current dir
2914 2919 %bookmark <name> <dir> - set bookmark to <dir>
2915 2920 %bookmark -l - list all bookmarks
2916 2921 %bookmark -d <name> - remove bookmark
2917 2922 %bookmark -r - remove all bookmarks
2918 2923
2919 2924 You can later on access a bookmarked folder with:
2920 2925 %cd -b <name>
2921 2926 or simply '%cd <name>' if there is no directory called <name> AND
2922 2927 there is such a bookmark defined.
2923 2928
2924 2929 Your bookmarks persist through IPython sessions, but they are
2925 2930 associated with each profile."""
2926 2931
2927 2932 opts,args = self.parse_options(parameter_s,'drl',mode='list')
2928 2933 if len(args) > 2:
2929 2934 error('You can only give at most two arguments')
2930 2935 return
2931 2936
2932 2937 bkms = self.db.get('bookmarks',{})
2933 2938
2934 2939 if opts.has_key('d'):
2935 2940 try:
2936 2941 todel = args[0]
2937 2942 except IndexError:
2938 2943 error('You must provide a bookmark to delete')
2939 2944 else:
2940 2945 try:
2941 2946 del bkms[todel]
2942 2947 except:
2943 2948 error("Can't delete bookmark '%s'" % todel)
2944 2949 elif opts.has_key('r'):
2945 2950 bkms = {}
2946 2951 elif opts.has_key('l'):
2947 2952 bks = bkms.keys()
2948 2953 bks.sort()
2949 2954 if bks:
2950 2955 size = max(map(len,bks))
2951 2956 else:
2952 2957 size = 0
2953 2958 fmt = '%-'+str(size)+'s -> %s'
2954 2959 print 'Current bookmarks:'
2955 2960 for bk in bks:
2956 2961 print fmt % (bk,bkms[bk])
2957 2962 else:
2958 2963 if not args:
2959 2964 error("You must specify the bookmark name")
2960 2965 elif len(args)==1:
2961 2966 bkms[args[0]] = os.getcwd()
2962 2967 elif len(args)==2:
2963 2968 bkms[args[0]] = args[1]
2964 2969 self.db['bookmarks'] = bkms
2965 2970
2966 2971 def magic_pycat(self, parameter_s=''):
2967 2972 """Show a syntax-highlighted file through a pager.
2968 2973
2969 2974 This magic is similar to the cat utility, but it will assume the file
2970 2975 to be Python source and will show it with syntax highlighting. """
2971 2976
2972 2977 try:
2973 2978 filename = get_py_filename(parameter_s)
2974 2979 cont = file_read(filename)
2975 2980 except IOError:
2976 2981 try:
2977 2982 cont = eval(parameter_s,self.user_ns)
2978 2983 except NameError:
2979 2984 cont = None
2980 2985 if cont is None:
2981 2986 print "Error: no such file or variable"
2982 2987 return
2983 2988
2984 2989 page(self.shell.pycolorize(cont),
2985 2990 screen_lines=self.shell.rc.screen_length)
2986 2991
2987 2992 def magic_cpaste(self, parameter_s=''):
2988 2993 """Allows you to paste & execute a pre-formatted code block from clipboard
2989 2994
2990 2995 You must terminate the block with '--' (two minus-signs) alone on the
2991 2996 line. You can also provide your own sentinel with '%paste -s %%' ('%%'
2992 2997 is the new sentinel for this operation)
2993 2998
2994 2999 The block is dedented prior to execution to enable execution of
2995 3000 method definitions. '>' characters at the beginning of a line is
2996 3001 ignored, to allow pasting directly from e-mails. The executed block
2997 3002 is also assigned to variable named 'pasted_block' for later editing
2998 3003 with '%edit pasted_block'.
2999 3004
3000 3005 You can also pass a variable name as an argument, e.g. '%cpaste foo'.
3001 3006 This assigns the pasted block to variable 'foo' as string, without
3002 3007 dedenting or executing it.
3003 3008
3004 3009 Do not be alarmed by garbled output on Windows (it's a readline bug).
3005 3010 Just press enter and type -- (and press enter again) and the block
3006 3011 will be what was just pasted.
3007 3012
3008 3013 IPython statements (magics, shell escapes) are not supported (yet).
3009 3014 """
3010 3015 opts,args = self.parse_options(parameter_s,'s:',mode='string')
3011 3016 par = args.strip()
3012 3017 sentinel = opts.get('s','--')
3013 3018
3014 3019 from IPython import iplib
3015 3020 lines = []
3016 3021 print "Pasting code; enter '%s' alone on the line to stop." % sentinel
3017 3022 while 1:
3018 3023 l = iplib.raw_input_original(':')
3019 3024 if l ==sentinel:
3020 3025 break
3021 3026 lines.append(l.lstrip('>'))
3022 3027 block = "\n".join(lines) + '\n'
3023 3028 #print "block:\n",block
3024 3029 if not par:
3025 3030 b = textwrap.dedent(block)
3026 3031 exec b in self.user_ns
3027 3032 self.user_ns['pasted_block'] = b
3028 3033 else:
3029 3034 self.user_ns[par] = block
3030 3035 print "Block assigned to '%s'" % par
3031 3036
3032 3037 def magic_quickref(self,arg):
3033 3038 """ Show a quick reference sheet """
3034 3039 import IPython.usage
3035 3040 qr = IPython.usage.quick_reference + self.magic_magic('-brief')
3036 3041
3037 3042 page(qr)
3038 3043
3039 3044 def magic_upgrade(self,arg):
3040 3045 """ Upgrade your IPython installation
3041 3046
3042 3047 This will copy the config files that don't yet exist in your
3043 3048 ipython dir from the system config dir. Use this after upgrading
3044 3049 IPython if you don't wish to delete your .ipython dir.
3045 3050
3046 3051 Call with -nolegacy to get rid of ipythonrc* files (recommended for
3047 3052 new users)
3048 3053
3049 3054 """
3050 3055 ip = self.getapi()
3051 3056 ipinstallation = path(IPython.__file__).dirname()
3052 3057 upgrade_script = '%s "%s"' % (sys.executable,ipinstallation / 'upgrade_dir.py')
3053 3058 src_config = ipinstallation / 'UserConfig'
3054 3059 userdir = path(ip.options.ipythondir)
3055 3060 cmd = '%s "%s" "%s"' % (upgrade_script, src_config, userdir)
3056 3061 print ">",cmd
3057 3062 shell(cmd)
3058 3063 if arg == '-nolegacy':
3059 3064 legacy = userdir.files('ipythonrc*')
3060 3065 print "Nuking legacy files:",legacy
3061 3066
3062 3067 [p.remove() for p in legacy]
3063 3068 suffix = (sys.platform == 'win32' and '.ini' or '')
3064 3069 (userdir / ('ipythonrc' + suffix)).write_text('# Empty, see ipy_user_conf.py\n')
3065 3070
3066 3071
3067 3072 # end Magic
@@ -1,9545 +1,9549 b''
1 1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 2 \lyxformat 221
3 3 \textclass article
4 4 \begin_preamble
5 5 %\usepackage{ae,aecompl}
6 6 \usepackage{color}
7 7
8 8 % A few colors to replace the defaults for certain link types
9 9 \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
10 10 \definecolor{darkorange}{rgb}{.71,0.21,0.01}
11 11 \definecolor{darkred}{rgb}{.52,0.08,0.01}
12 12 \definecolor{darkgreen}{rgb}{.12,.54,.11}
13 13
14 14 % Use and configure listings package for nicely formatted code
15 15 \usepackage{listings}
16 16 \lstset{
17 17 language=Python,
18 18 basicstyle=\small\ttfamily,
19 19 commentstyle=\ttfamily\color{blue},
20 20 stringstyle=\ttfamily\color{darkorange},
21 21 showstringspaces=false,
22 22 breaklines=true,
23 23 postbreak = \space\dots
24 24 }
25 25
26 26 \usepackage[%pdftex, % needed for pdflatex
27 27 breaklinks=true, % so long urls are correctly broken across lines
28 28 colorlinks=true,
29 29 urlcolor=blue,
30 30 linkcolor=darkred,
31 31 citecolor=darkgreen,
32 32 ]{hyperref}
33 33
34 34 \usepackage{html}
35 35
36 36 % This helps prevent overly long lines that stretch beyond the margins
37 37 \sloppy
38 38
39 39 % Define a \codelist command which either uses listings for latex, or
40 40 % plain verbatim for html (since latex2html doesn't understand the
41 41 % listings package).
42 42 \usepackage{verbatim}
43 43 \newcommand{\codelist}[1] {
44 44 \latex{\lstinputlisting{#1}}
45 45 \html{\verbatiminput{#1}}
46 46 }
47 47 \end_preamble
48 48 \language english
49 49 \inputencoding latin1
50 50 \fontscheme palatino
51 51 \graphics default
52 52 \paperfontsize 11
53 53 \spacing single
54 54 \papersize Default
55 55 \paperpackage a4
56 56 \use_geometry 1
57 57 \use_amsmath 0
58 58 \use_natbib 0
59 59 \use_numerical_citations 0
60 60 \paperorientation portrait
61 61 \leftmargin 1in
62 62 \topmargin 1in
63 63 \rightmargin 1in
64 64 \bottommargin 1in
65 65 \secnumdepth 3
66 66 \tocdepth 3
67 67 \paragraph_separation skip
68 68 \defskip medskip
69 69 \quotes_language english
70 70 \quotes_times 2
71 71 \papercolumns 1
72 72 \papersides 2
73 73 \paperpagestyle fancy
74 74
75 75 \layout Title
76 76
77 77 IPython
78 78 \newline
79 79
80 80 \size larger
81 81 An enhanced Interactive Python
82 82 \size large
83 83
84 84 \newline
85 85 User Manual, v.
86 86 __version__
87 87 \layout Author
88 88
89 89 Fernando PοΏ½rez
90 90 \begin_inset Foot
91 91 collapsed true
92 92
93 93 \layout Standard
94 94
95 95
96 96 \size scriptsize
97 97 Department of Applied Mathematics, University of Colorado at Boulder.
98 98
99 99 \family typewriter
100 100 <Fernando.Perez@colorado.edu>
101 101 \end_inset
102 102
103 103
104 104 \layout Standard
105 105
106 106
107 107 \begin_inset ERT
108 108 status Collapsed
109 109
110 110 \layout Standard
111 111
112 112 \backslash
113 113 latex{
114 114 \end_inset
115 115
116 116
117 117 \begin_inset LatexCommand \tableofcontents{}
118 118
119 119 \end_inset
120 120
121 121
122 122 \begin_inset ERT
123 123 status Collapsed
124 124
125 125 \layout Standard
126 126 }
127 127 \end_inset
128 128
129 129
130 130 \layout Standard
131 131
132 132
133 133 \begin_inset ERT
134 134 status Open
135 135
136 136 \layout Standard
137 137
138 138 \backslash
139 139 html{
140 140 \backslash
141 141 bodytext{bgcolor=#ffffff}}
142 142 \end_inset
143 143
144 144
145 145 \layout Section
146 146 \pagebreak_top
147 147 Overview
148 148 \layout Standard
149 149
150 150 One of Python's most useful features is its interactive interpreter.
151 151 This system allows very fast testing of ideas without the overhead of creating
152 152 test files as is typical in most programming languages.
153 153 However, the interpreter supplied with the standard Python distribution
154 154 is somewhat limited for extended interactive use.
155 155 \layout Standard
156 156
157 157 IPython is a free software project (released under the BSD license) which
158 158 tries to:
159 159 \layout Enumerate
160 160
161 161 Provide an interactive shell superior to Python's default.
162 162 IPython has many features for object introspection, system shell access,
163 163 and its own special command system for adding functionality when working
164 164 interactively.
165 165 It tries to be a very efficient environment both for Python code development
166 166 and for exploration of problems using Python objects (in situations like
167 167 data analysis).
168 168 \layout Enumerate
169 169
170 170 Serve as an embeddable, ready to use interpreter for your own programs.
171 171 IPython can be started with a single call from inside another program,
172 172 providing access to the current namespace.
173 173 This can be very useful both for debugging purposes and for situations
174 174 where a blend of batch-processing and interactive exploration are needed.
175 175 \layout Enumerate
176 176
177 177 Offer a flexible framework which can be used as the base environment for
178 178 other systems with Python as the underlying language.
179 179 Specifically scientific environments like Mathematica, IDL and Matlab inspired
180 180 its design, but similar ideas can be useful in many fields.
181 181 \layout Enumerate
182 182
183 183 Allow interactive testing of threaded graphical toolkits.
184 184 IPython has support for interactive, non-blocking control of GTK, Qt and
185 185 WX applications via special threading flags.
186 186 The normal Python shell can only do this for Tkinter applications.
187 187 \layout Subsection
188 188
189 189 Main features
190 190 \layout Itemize
191 191
192 192 Dynamic object introspection.
193 193 One can access docstrings, function definition prototypes, source code,
194 194 source files and other details of any object accessible to the interpreter
195 195 with a single keystroke (`
196 196 \family typewriter
197 197 ?
198 198 \family default
199 199 ', and using `
200 200 \family typewriter
201 201 ??
202 202 \family default
203 203 ' provides additional detail).
204 204 \layout Itemize
205 205
206 206 Searching through modules and namespaces with `
207 207 \family typewriter
208 208 *
209 209 \family default
210 210 ' wildcards, both when using the `
211 211 \family typewriter
212 212 ?
213 213 \family default
214 214 ' system and via the
215 215 \family typewriter
216 216 %psearch
217 217 \family default
218 218 command.
219 219 \layout Itemize
220 220
221 221 Completion in the local namespace, by typing TAB at the prompt.
222 222 This works for keywords, methods, variables and files in the current directory.
223 223 This is supported via the readline library, and full access to configuring
224 224 readline's behavior is provided.
225 225 \layout Itemize
226 226
227 227 Numbered input/output prompts with command history (persistent across sessions
228 228 and tied to each profile), full searching in this history and caching of
229 229 all input and output.
230 230 \layout Itemize
231 231
232 232 User-extensible `magic' commands.
233 233 A set of commands prefixed with
234 234 \family typewriter
235 235 %
236 236 \family default
237 237 is available for controlling IPython itself and provides directory control,
238 238 namespace information and many aliases to common system shell commands.
239 239 \layout Itemize
240 240
241 241 Alias facility for defining your own system aliases.
242 242 \layout Itemize
243 243
244 244 Complete system shell access.
245 245 Lines starting with ! are passed directly to the system shell, and using
246 246 !! captures shell output into python variables for further use.
247 247 \layout Itemize
248 248
249 249 Background execution of Python commands in a separate thread.
250 250 IPython has an internal job manager called
251 251 \family typewriter
252 252 jobs
253 253 \family default
254 254 , and a conveninence backgrounding magic function called
255 255 \family typewriter
256 256 %bg
257 257 \family default
258 258 .
259 259 \layout Itemize
260 260
261 261 The ability to expand python variables when calling the system shell.
262 262 In a shell command, any python variable prefixed with
263 263 \family typewriter
264 264 $
265 265 \family default
266 266 is expanded.
267 267 A double
268 268 \family typewriter
269 269 $$
270 270 \family default
271 271 allows passing a literal
272 272 \family typewriter
273 273 $
274 274 \family default
275 275 to the shell (for access to shell and environment variables like
276 276 \family typewriter
277 277 $PATH
278 278 \family default
279 279 ).
280 280 \layout Itemize
281 281
282 282 Filesystem navigation, via a magic
283 283 \family typewriter
284 284 %cd
285 285 \family default
286 286 command, along with a persistent bookmark system (using
287 287 \family typewriter
288 288 %bookmark
289 289 \family default
290 290 ) for fast access to frequently visited directories.
291 291 \layout Itemize
292 292
293 293 A lightweight persistence framework via the
294 294 \family typewriter
295 295 %store
296 296 \family default
297 297 command, which allows you to save arbitrary Python variables.
298 298 These get restored automatically when your session restarts.
299 299 \layout Itemize
300 300
301 301 Automatic indentation (optional) of code as you type (through the readline
302 302 library).
303 303 \layout Itemize
304 304
305 305 Macro system for quickly re-executing multiple lines of previous input with
306 306 a single name.
307 307 Macros can be stored persistently via
308 308 \family typewriter
309 309 %store
310 310 \family default
311 311 and edited via
312 312 \family typewriter
313 313 %edit
314 314 \family default
315 315 .
316 316
317 317 \layout Itemize
318 318
319 319 Session logging (you can then later use these logs as code in your programs).
320 320 Logs can optionally timestamp all input, and also store session output
321 321 (marked as comments, so the log remains valid Python source code).
322 322 \layout Itemize
323 323
324 324 Session restoring: logs can be replayed to restore a previous session to
325 325 the state where you left it.
326 326 \layout Itemize
327 327
328 328 Verbose and colored exception traceback printouts.
329 329 Easier to parse visually, and in verbose mode they produce a lot of useful
330 330 debugging information (basically a terminal version of the cgitb module).
331 331 \layout Itemize
332 332
333 333 Auto-parentheses: callable objects can be executed without parentheses:
334 334
335 335 \family typewriter
336 336 `sin 3'
337 337 \family default
338 338 is automatically converted to
339 339 \family typewriter
340 340 `sin(3)
341 341 \family default
342 342 '.
343 343 \layout Itemize
344 344
345 345 Auto-quoting: using `
346 346 \family typewriter
347 347 ,
348 348 \family default
349 349 ' or `
350 350 \family typewriter
351 351 ;
352 352 \family default
353 353 ' as the first character forces auto-quoting of the rest of the line:
354 354 \family typewriter
355 355 `,my_function a\SpecialChar ~
356 356 b'
357 357 \family default
358 358 becomes automatically
359 359 \family typewriter
360 360 `my_function("a","b")'
361 361 \family default
362 362 , while
363 363 \family typewriter
364 364 `;my_function a\SpecialChar ~
365 365 b'
366 366 \family default
367 367 becomes
368 368 \family typewriter
369 369 `my_function("a b")'
370 370 \family default
371 371 .
372 372 \layout Itemize
373 373
374 374 Extensible input syntax.
375 375 You can define filters that pre-process user input to simplify input in
376 376 special situations.
377 377 This allows for example pasting multi-line code fragments which start with
378 378
379 379 \family typewriter
380 380 `>>>'
381 381 \family default
382 382 or
383 383 \family typewriter
384 384 `...'
385 385 \family default
386 386 such as those from other python sessions or the standard Python documentation.
387 387 \layout Itemize
388 388
389 389 Flexible configuration system.
390 390 It uses a configuration file which allows permanent setting of all command-line
391 391 options, module loading, code and file execution.
392 392 The system allows recursive file inclusion, so you can have a base file
393 393 with defaults and layers which load other customizations for particular
394 394 projects.
395 395 \layout Itemize
396 396
397 397 Embeddable.
398 398 You can call IPython as a python shell inside your own python programs.
399 399 This can be used both for debugging code or for providing interactive abilities
400 400 to your programs with knowledge about the local namespaces (very useful
401 401 in debugging and data analysis situations).
402 402 \layout Itemize
403 403
404 404 Easy debugger access.
405 405 You can set IPython to call up an enhanced version of the Python debugger
406 406 (
407 407 \family typewriter
408 408 pdb
409 409 \family default
410 410 ) every time there is an uncaught exception.
411 411 This drops you inside the code which triggered the exception with all the
412 412 data live and it is possible to navigate the stack to rapidly isolate the
413 413 source of a bug.
414 414 The
415 415 \family typewriter
416 416 %run
417 417 \family default
418 418 magic command --with the
419 419 \family typewriter
420 420 -d
421 421 \family default
422 422 option-- can run any script under
423 423 \family typewriter
424 424 pdb
425 425 \family default
426 426 's control, automatically setting initial breakpoints for you.
427 427 This version of
428 428 \family typewriter
429 429 pdb
430 430 \family default
431 431 has IPython-specific improvements, including tab-completion and traceback
432 432 coloring support.
433 433 \layout Itemize
434 434
435 435 Profiler support.
436 436 You can run single statements (similar to
437 437 \family typewriter
438 438 profile.run()
439 439 \family default
440 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 446 \family typewriter
443 447 profile
444 448 \family default
445 module, IPython wraps this functionality with magic commands (see
449 modules, IPython wraps this functionality with magic commands (see
446 450 \family typewriter
447 451 `%prun'
448 452 \family default
449 453 and
450 454 \family typewriter
451 455 `%run -p
452 456 \family default
453 457 ') convenient for rapid interactive work.
454 458 \layout Subsection
455 459
456 460 Portability and Python requirements
457 461 \layout Standard
458 462
459 463
460 464 \series bold
461 465 Python requirements:
462 466 \series default
463 467 IPython requires with Python version 2.3 or newer.
464 468 If you are still using Python 2.2 and can not upgrade, the last version
465 469 of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
466 470 that.
467 471 \layout Standard
468 472
469 473 IPython is developed under
470 474 \series bold
471 475 Linux
472 476 \series default
473 477 , but it should work in any reasonable Unix-type system (tested OK under
474 478 Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
475 479 \layout Standard
476 480
477 481
478 482 \series bold
479 483 Mac OS X
480 484 \series default
481 485 : it works, apparently without any problems (thanks to Jim Boyle at Lawrence
482 486 Livermore for the information).
483 487 Thanks to Andrea Riciputi, Fink support is available.
484 488 \layout Standard
485 489
486 490
487 491 \series bold
488 492 CygWin
489 493 \series default
490 494 : it works mostly OK, though some users have reported problems with prompt
491 495 coloring.
492 496 No satisfactory solution to this has been found so far, you may want to
493 497 disable colors permanently in the
494 498 \family typewriter
495 499 ipythonrc
496 500 \family default
497 501 configuration file if you experience problems.
498 502 If you have proper color support under cygwin, please post to the IPython
499 503 mailing list so this issue can be resolved for all users.
500 504 \layout Standard
501 505
502 506
503 507 \series bold
504 508 Windows
505 509 \series default
506 510 : it works well under Windows XP/2k, and I suspect NT should behave similarly.
507 511 Section\SpecialChar ~
508 512
509 513 \begin_inset LatexCommand \ref{sub:Under-Windows}
510 514
511 515 \end_inset
512 516
513 517 describes installation details for Windows, including some additional tools
514 518 needed on this platform.
515 519 \layout Standard
516 520
517 521 Windows 9x support is present, and has been reported to work fine (at least
518 522 on WinME).
519 523 \layout Standard
520 524
521 525 Note, that I have very little access to and experience with Windows development.
522 526 However, an excellent group of Win32 users (led by Ville Vainio), consistently
523 527 contribute bugfixes and platform-specific enhancements, so they more than
524 528 make up for my deficiencies on that front.
525 529 In fact, Win32 users report using IPython as a system shell (see Sec.\SpecialChar ~
526 530
527 531 \begin_inset LatexCommand \ref{sec:IPython-as-shell}
528 532
529 533 \end_inset
530 534
531 535 for details), as it offers a level of control and features which the default
532 536
533 537 \family typewriter
534 538 cmd.exe
535 539 \family default
536 540 doesn't provide.
537 541 \layout Subsection
538 542
539 543 Location
540 544 \layout Standard
541 545
542 546 IPython is generously hosted at
543 547 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
544 548
545 549 \end_inset
546 550
547 551 by the Enthought, Inc and the SciPy project.
548 552 This site offers downloads, subversion access, mailing lists and a bug
549 553 tracking system.
550 554 I am very grateful to Enthought (
551 555 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
552 556
553 557 \end_inset
554 558
555 559 ) and all of the SciPy team for their contribution.
556 560 \layout Section
557 561
558 562
559 563 \begin_inset LatexCommand \label{sec:install}
560 564
561 565 \end_inset
562 566
563 567 Installation
564 568 \layout Subsection
565 569
566 570 Instant instructions
567 571 \layout Standard
568 572
569 573 If you are of the impatient kind, under Linux/Unix simply untar/unzip the
570 574 download, then install with
571 575 \family typewriter
572 576 `python setup.py install'
573 577 \family default
574 578 .
575 579 Under Windows, double-click on the provided
576 580 \family typewriter
577 581 .exe
578 582 \family default
579 583 binary installer.
580 584 \layout Standard
581 585
582 586 Then, take a look at Sections
583 587 \begin_inset LatexCommand \ref{sec:good_config}
584 588
585 589 \end_inset
586 590
587 591 for configuring things optimally and
588 592 \begin_inset LatexCommand \ref{sec:quick_tips}
589 593
590 594 \end_inset
591 595
592 596 for quick tips on efficient use of IPython.
593 597 You can later refer to the rest of the manual for all the gory details.
594 598 \layout Standard
595 599
596 600 See the notes in sec.
597 601
598 602 \begin_inset LatexCommand \ref{sec:upgrade}
599 603
600 604 \end_inset
601 605
602 606 for upgrading IPython versions.
603 607 \layout Subsection
604 608
605 609 Detailed Unix instructions (Linux, Mac OS X, etc.)
606 610 \layout Standard
607 611
608 612 For RPM based systems, simply install the supplied package in the usual
609 613 manner.
610 614 If you download the tar archive, the process is:
611 615 \layout Enumerate
612 616
613 617 Unzip/untar the
614 618 \family typewriter
615 619 ipython-XXX.tar.gz
616 620 \family default
617 621 file wherever you want (
618 622 \family typewriter
619 623 XXX
620 624 \family default
621 625 is the version number).
622 626 It will make a directory called
623 627 \family typewriter
624 628 ipython-XXX.
625 629
626 630 \family default
627 631 Change into that directory where you will find the files
628 632 \family typewriter
629 633 README
630 634 \family default
631 635 and
632 636 \family typewriter
633 637 setup.py
634 638 \family default
635 639 .
636 640
637 641 \family typewriter
638 642 O
639 643 \family default
640 644 nce you've completed the installation, you can safely remove this directory.
641 645
642 646 \layout Enumerate
643 647
644 648 If you are installing over a previous installation of version 0.2.0 or earlier,
645 649 first remove your
646 650 \family typewriter
647 651 $HOME/.ipython
648 652 \family default
649 653 directory, since the configuration file format has changed somewhat (the
650 654 '=' were removed from all option specifications).
651 655 Or you can call ipython with the
652 656 \family typewriter
653 657 -upgrade
654 658 \family default
655 659 option and it will do this automatically for you.
656 660 \layout Enumerate
657 661
658 662 IPython uses distutils, so you can install it by simply typing at the system
659 663 prompt (don't type the
660 664 \family typewriter
661 665 $
662 666 \family default
663 667 )
664 668 \newline
665 669
666 670 \family typewriter
667 671 $ python setup.py install
668 672 \family default
669 673
670 674 \newline
671 675 Note that this assumes you have root access to your machine.
672 676 If you don't have root access or don't want IPython to go in the default
673 677 python directories, you'll need to use the
674 678 \begin_inset ERT
675 679 status Collapsed
676 680
677 681 \layout Standard
678 682
679 683 \backslash
680 684 verb|--home|
681 685 \end_inset
682 686
683 687 option (or
684 688 \begin_inset ERT
685 689 status Collapsed
686 690
687 691 \layout Standard
688 692
689 693 \backslash
690 694 verb|--prefix|
691 695 \end_inset
692 696
693 697 ).
694 698 For example:
695 699 \newline
696 700
697 701 \begin_inset ERT
698 702 status Collapsed
699 703
700 704 \layout Standard
701 705
702 706 \backslash
703 707 verb|$ python setup.py install --home $HOME/local|
704 708 \end_inset
705 709
706 710
707 711 \newline
708 712 will install IPython into
709 713 \family typewriter
710 714 $HOME/local
711 715 \family default
712 716 and its subdirectories (creating them if necessary).
713 717 \newline
714 718 You can type
715 719 \newline
716 720
717 721 \begin_inset ERT
718 722 status Collapsed
719 723
720 724 \layout Standard
721 725
722 726 \backslash
723 727 verb|$ python setup.py --help|
724 728 \end_inset
725 729
726 730
727 731 \newline
728 732 for more details.
729 733 \newline
730 734 Note that if you change the default location for
731 735 \begin_inset ERT
732 736 status Collapsed
733 737
734 738 \layout Standard
735 739
736 740 \backslash
737 741 verb|--home|
738 742 \end_inset
739 743
740 744 at installation, IPython may end up installed at a location which is not
741 745 part of your
742 746 \family typewriter
743 747 $PYTHONPATH
744 748 \family default
745 749 environment variable.
746 750 In this case, you'll need to configure this variable to include the actual
747 751 directory where the
748 752 \family typewriter
749 753 IPython/
750 754 \family default
751 755 directory ended (typically the value you give to
752 756 \begin_inset ERT
753 757 status Collapsed
754 758
755 759 \layout Standard
756 760
757 761 \backslash
758 762 verb|--home|
759 763 \end_inset
760 764
761 765 plus
762 766 \family typewriter
763 767 /lib/python
764 768 \family default
765 769 ).
766 770 \layout Subsubsection
767 771
768 772 Mac OSX information
769 773 \layout Standard
770 774
771 775 Under OSX, there is a choice you need to make.
772 776 Apple ships its own build of Python, which lives in the core OSX filesystem
773 777 hierarchy.
774 778 You can also manually install a separate Python, either purely by hand
775 779 (typically in
776 780 \family typewriter
777 781 /usr/local
778 782 \family default
779 783 ) or by using Fink, which puts everything under
780 784 \family typewriter
781 785 /sw
782 786 \family default
783 787 .
784 788 Which route to follow is a matter of personal preference, as I've seen
785 789 users who favor each of the approaches.
786 790 Here I will simply list the known installation issues under OSX, along
787 791 with their solutions.
788 792 \layout Standard
789 793
790 794 This page:
791 795 \begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
792 796
793 797 \end_inset
794 798
795 799 contains information on this topic, with additional details on how to make
796 800 IPython and matplotlib play nicely under OSX.
797 801 \layout Subsubsection*
798 802
799 803 GUI problems
800 804 \layout Standard
801 805
802 806 The following instructions apply to an install of IPython under OSX from
803 807 unpacking the
804 808 \family typewriter
805 809 .tar.gz
806 810 \family default
807 811 distribution and installing it for the default Python interpreter shipped
808 812 by Apple.
809 813 If you are using a fink install, fink will take care of these details for
810 814 you, by installing IPython against fink's Python.
811 815 \layout Standard
812 816
813 817 IPython offers various forms of support for interacting with graphical applicati
814 818 ons from the command line, from simple Tk apps (which are in principle always
815 819 supported by Python) to interactive control of WX, Qt and GTK apps.
816 820 Under OSX, however, this requires that ipython is installed by calling
817 821 the special
818 822 \family typewriter
819 823 pythonw
820 824 \family default
821 825 script at installation time, which takes care of coordinating things with
822 826 Apple's graphical environment.
823 827 \layout Standard
824 828
825 829 So when installing under OSX, it is best to use the following command:
826 830 \family typewriter
827 831
828 832 \newline
829 833
830 834 \family default
831 835
832 836 \begin_inset ERT
833 837 status Collapsed
834 838
835 839 \layout Standard
836 840
837 841 \backslash
838 842 verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
839 843 \end_inset
840 844
841 845
842 846 \newline
843 847 or
844 848 \newline
845 849
846 850 \begin_inset ERT
847 851 status Collapsed
848 852
849 853 \layout Standard
850 854
851 855 \backslash
852 856 verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
853 857 \end_inset
854 858
855 859
856 860 \newline
857 861 depending on where you like to keep hand-installed executables.
858 862 \layout Standard
859 863
860 864 The resulting script will have an appropriate shebang line (the first line
861 865 in the script whic begins with
862 866 \family typewriter
863 867 #!...
864 868 \family default
865 869 ) such that the ipython interpreter can interact with the OS X GUI.
866 870 If the installed version does not work and has a shebang line that points
867 871 to, for example, just
868 872 \family typewriter
869 873 /usr/bin/python
870 874 \family default
871 875 , then you might have a stale, cached version in your
872 876 \family typewriter
873 877 build/scripts-<python-version>
874 878 \family default
875 879 directory.
876 880 Delete that directory and rerun the
877 881 \family typewriter
878 882 setup.py
879 883 \family default
880 884 .
881 885
882 886 \layout Standard
883 887
884 888 It is also a good idea to use the special flag
885 889 \begin_inset ERT
886 890 status Collapsed
887 891
888 892 \layout Standard
889 893
890 894 \backslash
891 895 verb|--install-scripts|
892 896 \end_inset
893 897
894 898 as indicated above, to ensure that the ipython scripts end up in a location
895 899 which is part of your
896 900 \family typewriter
897 901 $PATH
898 902 \family default
899 903 .
900 904 Otherwise Apple's Python will put the scripts in an internal directory
901 905 not available by default at the command line (if you use
902 906 \family typewriter
903 907 /usr/local/bin
904 908 \family default
905 909 , you need to make sure this is in your
906 910 \family typewriter
907 911 $PATH
908 912 \family default
909 913 , which may not be true by default).
910 914 \layout Subsubsection*
911 915
912 916 Readline problems
913 917 \layout Standard
914 918
915 919 By default, the Python version shipped by Apple does
916 920 \emph on
917 921 not
918 922 \emph default
919 923 include the readline library, so central to IPython's behavior.
920 924 If you install IPython against Apple's Python, you will not have arrow
921 925 keys, tab completion, etc.
922 926 For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
923 927 \newline
924 928
925 929 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
926 930
927 931 \end_inset
928 932
929 933
930 934 \layout Standard
931 935
932 936 If you are using OSX 10.4 (Tiger), after installing this package you need
933 937 to either:
934 938 \layout Enumerate
935 939
936 940 move
937 941 \family typewriter
938 942 readline.so
939 943 \family default
940 944 from
941 945 \family typewriter
942 946 /Library/Python/2.3
943 947 \family default
944 948 to
945 949 \family typewriter
946 950 /Library/Python/2.3/site-packages
947 951 \family default
948 952 , or
949 953 \layout Enumerate
950 954
951 955 install
952 956 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
953 957
954 958 \end_inset
955 959
956 960
957 961 \layout Standard
958 962
959 963 Users installing against Fink's Python or a properly hand-built one should
960 964 not have this problem.
961 965 \layout Subsubsection*
962 966
963 967 DarwinPorts
964 968 \layout Standard
965 969
966 970 I report here a message from an OSX user, who suggests an alternative means
967 971 of using IPython under this operating system with good results.
968 972 Please let me know of any updates that may be useful for this section.
969 973 His message is reproduced verbatim below:
970 974 \layout Quote
971 975
972 976 From: Markus Banfi
973 977 \family typewriter
974 978 <markus.banfi-AT-mospheira.net>
975 979 \layout Quote
976 980
977 981 As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
978 982 of Fink.
979 983 I had no problems installing ipython with DarwinPorts.
980 984 It's just:
981 985 \layout Quote
982 986
983 987
984 988 \family typewriter
985 989 sudo port install py-ipython
986 990 \layout Quote
987 991
988 992 It automatically resolved all dependencies (python24, readline, py-readline).
989 993 So far I did not encounter any problems with the DarwinPorts port of ipython.
990 994
991 995 \layout Subsection
992 996
993 997
994 998 \begin_inset LatexCommand \label{sub:Under-Windows}
995 999
996 1000 \end_inset
997 1001
998 1002 Windows instructions
999 1003 \layout Standard
1000 1004
1001 1005 Some of IPython's very useful features are:
1002 1006 \layout Itemize
1003 1007
1004 1008 Integrated readline support (Tab-based file, object and attribute completion,
1005 1009 input history across sessions, editable command line, etc.)
1006 1010 \layout Itemize
1007 1011
1008 1012 Coloring of prompts, code and tracebacks.
1009 1013 \layout Standard
1010 1014
1011 1015 These, by default, are only available under Unix-like operating systems.
1012 1016 However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
1013 1017 from them.
1014 1018 His readline library originally implemented both GNU readline functionality
1015 1019 and color support, so that IPython under Windows XP/2k can be as friendly
1016 1020 and powerful as under Unix-like environments.
1017 1021
1018 1022 \layout Standard
1019 1023
1020 1024 This library, now named
1021 1025 \family typewriter
1022 1026 PyReadline
1023 1027 \family default
1024 1028 , has been absorbed by the IPython team (JοΏ½rgen Stenarson, in particular),
1025 1029 and it continues to be developed with new features, as well as being distribute
1026 1030 d directly from the IPython site.
1027 1031 \layout Standard
1028 1032
1029 1033 The
1030 1034 \family typewriter
1031 1035 PyReadline
1032 1036 \family default
1033 1037 extension requires
1034 1038 \family typewriter
1035 1039 CTypes
1036 1040 \family default
1037 1041 and the windows IPython installer needs
1038 1042 \family typewriter
1039 1043 PyWin32
1040 1044 \family default
1041 1045 , so in all you need:
1042 1046 \layout Enumerate
1043 1047
1044 1048
1045 1049 \family typewriter
1046 1050 PyWin32
1047 1051 \family default
1048 1052 from
1049 1053 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond}
1050 1054
1051 1055 \end_inset
1052 1056
1053 1057 .
1054 1058 \layout Enumerate
1055 1059
1056 1060
1057 1061 \family typewriter
1058 1062 CTypes
1059 1063 \family default
1060 1064 from
1061 1065 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1062 1066
1063 1067 \end_inset
1064 1068
1065 1069 (you
1066 1070 \emph on
1067 1071 must
1068 1072 \emph default
1069 1073 use version 0.9.1 or newer).
1070 1074 \layout Enumerate
1071 1075
1072 1076
1073 1077 \family typewriter
1074 1078 PyReadline
1075 1079 \family default
1076 1080 for Windows from
1077 1081 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro}
1078 1082
1079 1083 \end_inset
1080 1084
1081 1085 .
1082 1086 That page contains further details on using and configuring the system
1083 1087 to your liking.
1084 1088 \layout Standard
1085 1089
1086 1090
1087 1091 \series bold
1088 1092 Warning about a broken readline-like library:
1089 1093 \series default
1090 1094 several users have reported problems stemming from using the pseudo-readline
1091 1095 library at
1092 1096 \begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
1093 1097
1094 1098 \end_inset
1095 1099
1096 1100 .
1097 1101 This is a broken library which, while called readline, only implements
1098 1102 an incomplete subset of the readline API.
1099 1103 Since it is still called readline, it fools IPython's detection mechanisms
1100 1104 and causes unpredictable crashes later.
1101 1105 If you wish to use IPython under Windows, you must NOT use this library,
1102 1106 which for all purposes is (at least as of version 1.6) terminally broken.
1103 1107 \layout Subsubsection
1104 1108
1105 1109 Installation procedure
1106 1110 \layout Standard
1107 1111
1108 1112 Once you have the above installed, from the IPython download directory grab
1109 1113 the
1110 1114 \family typewriter
1111 1115 ipython-XXX.win32.exe
1112 1116 \family default
1113 1117 file, where
1114 1118 \family typewriter
1115 1119 XXX
1116 1120 \family default
1117 1121 represents the version number.
1118 1122 This is a regular windows executable installer, which you can simply double-cli
1119 1123 ck to install.
1120 1124 It will add an entry for IPython to your Start Menu, as well as registering
1121 1125 IPython in the Windows list of applications, so you can later uninstall
1122 1126 it from the Control Panel.
1123 1127
1124 1128 \layout Standard
1125 1129
1126 1130 IPython tries to install the configuration information in a directory named
1127 1131
1128 1132 \family typewriter
1129 1133 .ipython
1130 1134 \family default
1131 1135 (
1132 1136 \family typewriter
1133 1137 _ipython
1134 1138 \family default
1135 1139 under Windows) located in your `home' directory.
1136 1140 IPython sets this directory by looking for a
1137 1141 \family typewriter
1138 1142 HOME
1139 1143 \family default
1140 1144 environment variable; if such a variable does not exist, it uses
1141 1145 \family typewriter
1142 1146 HOMEDRIVE
1143 1147 \backslash
1144 1148 HOMEPATH
1145 1149 \family default
1146 1150 (these are always defined by Windows).
1147 1151 This typically gives something like
1148 1152 \family typewriter
1149 1153 C:
1150 1154 \backslash
1151 1155 Documents and Settings
1152 1156 \backslash
1153 1157 YourUserName
1154 1158 \family default
1155 1159 , but your local details may vary.
1156 1160 In this directory you will find all the files that configure IPython's
1157 1161 defaults, and you can put there your profiles and extensions.
1158 1162 This directory is automatically added by IPython to
1159 1163 \family typewriter
1160 1164 sys.path
1161 1165 \family default
1162 1166 , so anything you place there can be found by
1163 1167 \family typewriter
1164 1168 import
1165 1169 \family default
1166 1170 statements.
1167 1171 \layout Paragraph
1168 1172
1169 1173 Upgrading
1170 1174 \layout Standard
1171 1175
1172 1176 For an IPython upgrade, you should first uninstall the previous version.
1173 1177 This will ensure that all files and directories (such as the documentation)
1174 1178 which carry embedded version strings in their names are properly removed.
1175 1179 \layout Paragraph
1176 1180
1177 1181 Manual installation under Win32
1178 1182 \layout Standard
1179 1183
1180 1184 In case the automatic installer does not work for some reason, you can download
1181 1185 the
1182 1186 \family typewriter
1183 1187 ipython-XXX.tar.gz
1184 1188 \family default
1185 1189 file, which contains the full IPython source distribution (the popular
1186 1190 WinZip can read
1187 1191 \family typewriter
1188 1192 .tar.gz
1189 1193 \family default
1190 1194 files).
1191 1195 After uncompressing the archive, you can install it at a command terminal
1192 1196 just like any other Python module, by using
1193 1197 \family typewriter
1194 1198 `python setup.py install'
1195 1199 \family default
1196 1200 .
1197 1201
1198 1202 \layout Standard
1199 1203
1200 1204 After the installation, run the supplied
1201 1205 \family typewriter
1202 1206 win32_manual_post_install.py
1203 1207 \family default
1204 1208 script, which creates the necessary Start Menu shortcuts for you.
1205 1209 \layout Subsection
1206 1210
1207 1211
1208 1212 \begin_inset LatexCommand \label{sec:upgrade}
1209 1213
1210 1214 \end_inset
1211 1215
1212 1216 Upgrading from a previous version
1213 1217 \layout Standard
1214 1218
1215 1219 If you are upgrading from a previous version of IPython, after doing the
1216 1220 routine installation described above, you should call IPython with the
1217 1221
1218 1222 \family typewriter
1219 1223 -upgrade
1220 1224 \family default
1221 1225 option the first time you run your new copy.
1222 1226 This will automatically update your configuration directory while preserving
1223 1227 copies of your old files.
1224 1228 You can then later merge back any personal customizations you may have
1225 1229 made into the new files.
1226 1230 It is a good idea to do this as there may be new options available in the
1227 1231 new configuration files which you will not have.
1228 1232 \layout Standard
1229 1233
1230 1234 Under Windows, if you don't know how to call python scripts with arguments
1231 1235 from a command line, simply delete the old config directory and IPython
1232 1236 will make a new one.
1233 1237 Win2k and WinXP users will find it in
1234 1238 \family typewriter
1235 1239 C:
1236 1240 \backslash
1237 1241 Documents and Settings
1238 1242 \backslash
1239 1243 YourUserName
1240 1244 \backslash
1241 1245 _ipython
1242 1246 \family default
1243 1247 , and Win 9x users under
1244 1248 \family typewriter
1245 1249 C:
1246 1250 \backslash
1247 1251 Program Files
1248 1252 \backslash
1249 1253 IPython
1250 1254 \backslash
1251 1255 _ipython.
1252 1256 \layout Section
1253 1257
1254 1258
1255 1259 \begin_inset LatexCommand \label{sec:good_config}
1256 1260
1257 1261 \end_inset
1258 1262
1259 1263
1260 1264 \begin_inset OptArg
1261 1265 collapsed true
1262 1266
1263 1267 \layout Standard
1264 1268
1265 1269 Initial configuration
1266 1270 \begin_inset ERT
1267 1271 status Collapsed
1268 1272
1269 1273 \layout Standard
1270 1274
1271 1275 \backslash
1272 1276 ldots
1273 1277 \end_inset
1274 1278
1275 1279
1276 1280 \end_inset
1277 1281
1278 1282 Initial configuration of your environment
1279 1283 \layout Standard
1280 1284
1281 1285 This section will help you set various things in your environment for your
1282 1286 IPython sessions to be as efficient as possible.
1283 1287 All of IPython's configuration information, along with several example
1284 1288 files, is stored in a directory named by default
1285 1289 \family typewriter
1286 1290 $HOME/.ipython
1287 1291 \family default
1288 1292 .
1289 1293 You can change this by defining the environment variable
1290 1294 \family typewriter
1291 1295 IPYTHONDIR
1292 1296 \family default
1293 1297 , or at runtime with the command line option
1294 1298 \family typewriter
1295 1299 -ipythondir
1296 1300 \family default
1297 1301 .
1298 1302 \layout Standard
1299 1303
1300 1304 If all goes well, the first time you run IPython it should automatically
1301 1305 create a user copy of the config directory for you, based on its builtin
1302 1306 defaults.
1303 1307 You can look at the files it creates to learn more about configuring the
1304 1308 system.
1305 1309 The main file you will modify to configure IPython's behavior is called
1306 1310
1307 1311 \family typewriter
1308 1312 ipythonrc
1309 1313 \family default
1310 1314 (with a
1311 1315 \family typewriter
1312 1316 .ini
1313 1317 \family default
1314 1318 extension under Windows), included for reference in Sec.
1315 1319
1316 1320 \begin_inset LatexCommand \ref{sec:ipytonrc-sample}
1317 1321
1318 1322 \end_inset
1319 1323
1320 1324 .
1321 1325 This file is very commented and has many variables you can change to suit
1322 1326 your taste, you can find more details in Sec.
1323 1327
1324 1328 \begin_inset LatexCommand \ref{sec:customization}
1325 1329
1326 1330 \end_inset
1327 1331
1328 1332 .
1329 1333 Here we discuss the basic things you will want to make sure things are
1330 1334 working properly from the beginning.
1331 1335 \layout Subsection
1332 1336
1333 1337
1334 1338 \begin_inset LatexCommand \label{sec:help-access}
1335 1339
1336 1340 \end_inset
1337 1341
1338 1342 Access to the Python help system
1339 1343 \layout Standard
1340 1344
1341 1345 This is true for Python in general (not just for IPython): you should have
1342 1346 an environment variable called
1343 1347 \family typewriter
1344 1348 PYTHONDOCS
1345 1349 \family default
1346 1350 pointing to the directory where your HTML Python documentation lives.
1347 1351 In my system it's
1348 1352 \family typewriter
1349 1353 /usr/share/doc/python-docs-2.3.4/html
1350 1354 \family default
1351 1355 , check your local details or ask your systems administrator.
1352 1356
1353 1357 \layout Standard
1354 1358
1355 1359 This is the directory which holds the HTML version of the Python manuals.
1356 1360 Unfortunately it seems that different Linux distributions package these
1357 1361 files differently, so you may have to look around a bit.
1358 1362 Below I show the contents of this directory on my system for reference:
1359 1363 \layout Standard
1360 1364
1361 1365
1362 1366 \family typewriter
1363 1367 [html]> ls
1364 1368 \newline
1365 1369 about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat tut/
1366 1370 about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
1367 1371 \layout Standard
1368 1372
1369 1373 You should really make sure this variable is correctly set so that Python's
1370 1374 pydoc-based help system works.
1371 1375 It is a powerful and convenient system with full access to the Python manuals
1372 1376 and all modules accessible to you.
1373 1377 \layout Standard
1374 1378
1375 1379 Under Windows it seems that pydoc finds the documentation automatically,
1376 1380 so no extra setup appears necessary.
1377 1381 \layout Subsection
1378 1382
1379 1383 Editor
1380 1384 \layout Standard
1381 1385
1382 1386 The
1383 1387 \family typewriter
1384 1388 %edit
1385 1389 \family default
1386 1390 command (and its alias
1387 1391 \family typewriter
1388 1392 %ed
1389 1393 \family default
1390 1394 ) will invoke the editor set in your environment as
1391 1395 \family typewriter
1392 1396 EDITOR
1393 1397 \family default
1394 1398 .
1395 1399 If this variable is not set, it will default to
1396 1400 \family typewriter
1397 1401 vi
1398 1402 \family default
1399 1403 under Linux/Unix and to
1400 1404 \family typewriter
1401 1405 notepad
1402 1406 \family default
1403 1407 under Windows.
1404 1408 You may want to set this variable properly and to a lightweight editor
1405 1409 which doesn't take too long to start (that is, something other than a new
1406 1410 instance of
1407 1411 \family typewriter
1408 1412 Emacs
1409 1413 \family default
1410 1414 ).
1411 1415 This way you can edit multi-line code quickly and with the power of a real
1412 1416 editor right inside IPython.
1413 1417
1414 1418 \layout Standard
1415 1419
1416 1420 If you are a dedicated
1417 1421 \family typewriter
1418 1422 Emacs
1419 1423 \family default
1420 1424 user, you should set up the
1421 1425 \family typewriter
1422 1426 Emacs
1423 1427 \family default
1424 1428 server so that new requests are handled by the original process.
1425 1429 This means that almost no time is spent in handling the request (assuming
1426 1430 an
1427 1431 \family typewriter
1428 1432 Emacs
1429 1433 \family default
1430 1434 process is already running).
1431 1435 For this to work, you need to set your
1432 1436 \family typewriter
1433 1437 EDITOR
1434 1438 \family default
1435 1439 environment variable to
1436 1440 \family typewriter
1437 1441 'emacsclient'
1438 1442 \family default
1439 1443 .
1440 1444
1441 1445 \family typewriter
1442 1446
1443 1447 \family default
1444 1448 The code below, supplied by Francois Pinard, can then be used in your
1445 1449 \family typewriter
1446 1450 .emacs
1447 1451 \family default
1448 1452 file to enable the server:
1449 1453 \layout Standard
1450 1454
1451 1455
1452 1456 \family typewriter
1453 1457 (defvar server-buffer-clients)
1454 1458 \newline
1455 1459 (when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
1456 1460 \newline
1457 1461
1458 1462 \begin_inset ERT
1459 1463 status Collapsed
1460 1464
1461 1465 \layout Standard
1462 1466
1463 1467 \backslash
1464 1468 hspace*{0mm}
1465 1469 \end_inset
1466 1470
1467 1471 \SpecialChar ~
1468 1472 \SpecialChar ~
1469 1473 (server-start)
1470 1474 \newline
1471 1475
1472 1476 \begin_inset ERT
1473 1477 status Collapsed
1474 1478
1475 1479 \layout Standard
1476 1480
1477 1481 \backslash
1478 1482 hspace*{0mm}
1479 1483 \end_inset
1480 1484
1481 1485 \SpecialChar ~
1482 1486 \SpecialChar ~
1483 1487 (defun fp-kill-server-with-buffer-routine ()
1484 1488 \newline
1485 1489
1486 1490 \begin_inset ERT
1487 1491 status Collapsed
1488 1492
1489 1493 \layout Standard
1490 1494
1491 1495 \backslash
1492 1496 hspace*{0mm}
1493 1497 \end_inset
1494 1498
1495 1499 \SpecialChar ~
1496 1500 \SpecialChar ~
1497 1501 \SpecialChar ~
1498 1502 \SpecialChar ~
1499 1503 (and server-buffer-clients (server-done)))
1500 1504 \newline
1501 1505
1502 1506 \begin_inset ERT
1503 1507 status Collapsed
1504 1508
1505 1509 \layout Standard
1506 1510
1507 1511 \backslash
1508 1512 hspace*{0mm}
1509 1513 \end_inset
1510 1514
1511 1515 \SpecialChar ~
1512 1516 \SpecialChar ~
1513 1517 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
1514 1518 \layout Standard
1515 1519
1516 1520 You can also set the value of this editor via the commmand-line option '-
1517 1521 \family typewriter
1518 1522 editor'
1519 1523 \family default
1520 1524 or in your
1521 1525 \family typewriter
1522 1526 ipythonrc
1523 1527 \family default
1524 1528 file.
1525 1529 This is useful if you wish to use specifically for IPython an editor different
1526 1530 from your typical default (and for Windows users who tend to use fewer
1527 1531 environment variables).
1528 1532 \layout Subsection
1529 1533
1530 1534 Color
1531 1535 \layout Standard
1532 1536
1533 1537 The default IPython configuration has most bells and whistles turned on
1534 1538 (they're pretty safe).
1535 1539 But there's one that
1536 1540 \emph on
1537 1541 may
1538 1542 \emph default
1539 1543 cause problems on some systems: the use of color on screen for displaying
1540 1544 information.
1541 1545 This is very useful, since IPython can show prompts and exception tracebacks
1542 1546 with various colors, display syntax-highlighted source code, and in general
1543 1547 make it easier to visually parse information.
1544 1548 \layout Standard
1545 1549
1546 1550 The following terminals seem to handle the color sequences fine:
1547 1551 \layout Itemize
1548 1552
1549 1553 Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
1550 1554 \layout Itemize
1551 1555
1552 1556 CDE terminal (tested under Solaris).
1553 1557 This one boldfaces light colors.
1554 1558 \layout Itemize
1555 1559
1556 1560 (X)Emacs buffers.
1557 1561 See sec.
1558 1562 \begin_inset LatexCommand \ref{sec:emacs}
1559 1563
1560 1564 \end_inset
1561 1565
1562 1566 for more details on using IPython with (X)Emacs.
1563 1567 \layout Itemize
1564 1568
1565 1569 A Windows (XP/2k) command prompt
1566 1570 \emph on
1567 1571 with Gary Bishop's support extensions
1568 1572 \emph default
1569 1573 .
1570 1574 Gary's extensions are discussed in Sec.\SpecialChar ~
1571 1575
1572 1576 \begin_inset LatexCommand \ref{sub:Under-Windows}
1573 1577
1574 1578 \end_inset
1575 1579
1576 1580 .
1577 1581 \layout Itemize
1578 1582
1579 1583 A Windows (XP/2k) CygWin shell.
1580 1584 Although some users have reported problems; it is not clear whether there
1581 1585 is an issue for everyone or only under specific configurations.
1582 1586 If you have full color support under cygwin, please post to the IPython
1583 1587 mailing list so this issue can be resolved for all users.
1584 1588 \layout Standard
1585 1589
1586 1590 These have shown problems:
1587 1591 \layout Itemize
1588 1592
1589 1593 Windows command prompt in WinXP/2k logged into a Linux machine via telnet
1590 1594 or ssh.
1591 1595 \layout Itemize
1592 1596
1593 1597 Windows native command prompt in WinXP/2k,
1594 1598 \emph on
1595 1599 without
1596 1600 \emph default
1597 1601 Gary Bishop's extensions.
1598 1602 Once Gary's readline library is installed, the normal WinXP/2k command
1599 1603 prompt works perfectly.
1600 1604 \layout Standard
1601 1605
1602 1606 Currently the following color schemes are available:
1603 1607 \layout Itemize
1604 1608
1605 1609
1606 1610 \family typewriter
1607 1611 NoColor
1608 1612 \family default
1609 1613 : uses no color escapes at all (all escapes are empty
1610 1614 \begin_inset Quotes eld
1611 1615 \end_inset
1612 1616
1613 1617
1614 1618 \begin_inset Quotes eld
1615 1619 \end_inset
1616 1620
1617 1621 strings).
1618 1622 This 'scheme' is thus fully safe to use in any terminal.
1619 1623 \layout Itemize
1620 1624
1621 1625
1622 1626 \family typewriter
1623 1627 Linux
1624 1628 \family default
1625 1629 : works well in Linux console type environments: dark background with light
1626 1630 fonts.
1627 1631 It uses bright colors for information, so it is difficult to read if you
1628 1632 have a light colored background.
1629 1633 \layout Itemize
1630 1634
1631 1635
1632 1636 \family typewriter
1633 1637 LightBG
1634 1638 \family default
1635 1639 : the basic colors are similar to those in the
1636 1640 \family typewriter
1637 1641 Linux
1638 1642 \family default
1639 1643 scheme but darker.
1640 1644 It is easy to read in terminals with light backgrounds.
1641 1645 \layout Standard
1642 1646
1643 1647 IPython uses colors for two main groups of things: prompts and tracebacks
1644 1648 which are directly printed to the terminal, and the object introspection
1645 1649 system which passes large sets of data through a pager.
1646 1650 \layout Subsubsection
1647 1651
1648 1652 Input/Output prompts and exception tracebacks
1649 1653 \layout Standard
1650 1654
1651 1655 You can test whether the colored prompts and tracebacks work on your system
1652 1656 interactively by typing
1653 1657 \family typewriter
1654 1658 '%colors Linux'
1655 1659 \family default
1656 1660 at the prompt (use '
1657 1661 \family typewriter
1658 1662 %colors LightBG'
1659 1663 \family default
1660 1664 if your terminal has a light background).
1661 1665 If the input prompt shows garbage like:
1662 1666 \newline
1663 1667
1664 1668 \family typewriter
1665 1669 [0;32mIn [[1;32m1[0;32m]: [0;00m
1666 1670 \family default
1667 1671
1668 1672 \newline
1669 1673 instead of (in color) something like:
1670 1674 \newline
1671 1675
1672 1676 \family typewriter
1673 1677 In [1]:
1674 1678 \family default
1675 1679
1676 1680 \newline
1677 1681 this means that your terminal doesn't properly handle color escape sequences.
1678 1682 You can go to a 'no color' mode by typing '
1679 1683 \family typewriter
1680 1684 %colors NoColor
1681 1685 \family default
1682 1686 '.
1683 1687
1684 1688 \layout Standard
1685 1689
1686 1690 You can try using a different terminal emulator program (Emacs users, see
1687 1691 below).
1688 1692 To permanently set your color preferences, edit the file
1689 1693 \family typewriter
1690 1694 $HOME/.ipython/ipythonrc
1691 1695 \family default
1692 1696 and set the
1693 1697 \family typewriter
1694 1698 colors
1695 1699 \family default
1696 1700 option to the desired value.
1697 1701 \layout Subsubsection
1698 1702
1699 1703 Object details (types, docstrings, source code, etc.)
1700 1704 \layout Standard
1701 1705
1702 1706 IPython has a set of special functions for studying the objects you are
1703 1707 working with, discussed in detail in Sec.
1704 1708
1705 1709 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1706 1710
1707 1711 \end_inset
1708 1712
1709 1713 .
1710 1714 But this system relies on passing information which is longer than your
1711 1715 screen through a data pager, such as the common Unix
1712 1716 \family typewriter
1713 1717 less
1714 1718 \family default
1715 1719 and
1716 1720 \family typewriter
1717 1721 more
1718 1722 \family default
1719 1723 programs.
1720 1724 In order to be able to see this information in color, your pager needs
1721 1725 to be properly configured.
1722 1726 I strongly recommend using
1723 1727 \family typewriter
1724 1728 less
1725 1729 \family default
1726 1730 instead of
1727 1731 \family typewriter
1728 1732 more
1729 1733 \family default
1730 1734 , as it seems that
1731 1735 \family typewriter
1732 1736 more
1733 1737 \family default
1734 1738 simply can not understand colored text correctly.
1735 1739 \layout Standard
1736 1740
1737 1741 In order to configure
1738 1742 \family typewriter
1739 1743 less
1740 1744 \family default
1741 1745 as your default pager, do the following:
1742 1746 \layout Enumerate
1743 1747
1744 1748 Set the environment
1745 1749 \family typewriter
1746 1750 PAGER
1747 1751 \family default
1748 1752 variable to
1749 1753 \family typewriter
1750 1754 less
1751 1755 \family default
1752 1756 .
1753 1757 \layout Enumerate
1754 1758
1755 1759 Set the environment
1756 1760 \family typewriter
1757 1761 LESS
1758 1762 \family default
1759 1763 variable to
1760 1764 \family typewriter
1761 1765 -r
1762 1766 \family default
1763 1767 (plus any other options you always want to pass to
1764 1768 \family typewriter
1765 1769 less
1766 1770 \family default
1767 1771 by default).
1768 1772 This tells
1769 1773 \family typewriter
1770 1774 less
1771 1775 \family default
1772 1776 to properly interpret control sequences, which is how color information
1773 1777 is given to your terminal.
1774 1778 \layout Standard
1775 1779
1776 1780 For the
1777 1781 \family typewriter
1778 1782 csh
1779 1783 \family default
1780 1784 or
1781 1785 \family typewriter
1782 1786 tcsh
1783 1787 \family default
1784 1788 shells, add to your
1785 1789 \family typewriter
1786 1790 ~/.cshrc
1787 1791 \family default
1788 1792 file the lines:
1789 1793 \layout Standard
1790 1794
1791 1795
1792 1796 \family typewriter
1793 1797 setenv PAGER less
1794 1798 \newline
1795 1799 setenv LESS -r
1796 1800 \layout Standard
1797 1801
1798 1802 There is similar syntax for other Unix shells, look at your system documentation
1799 1803 for details.
1800 1804 \layout Standard
1801 1805
1802 1806 If you are on a system which lacks proper data pagers (such as Windows),
1803 1807 IPython will use a very limited builtin pager.
1804 1808 \layout Subsection
1805 1809
1806 1810
1807 1811 \begin_inset LatexCommand \label{sec:emacs}
1808 1812
1809 1813 \end_inset
1810 1814
1811 1815 (X)Emacs configuration
1812 1816 \layout Standard
1813 1817
1814 1818 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
1815 1819 (X)Emacs and IPython get along very well.
1816 1820
1817 1821 \layout Standard
1818 1822
1819 1823
1820 1824 \series bold
1821 1825 Important note:
1822 1826 \series default
1823 1827 You will need to use a recent enough version of
1824 1828 \family typewriter
1825 1829 python-mode.el
1826 1830 \family default
1827 1831 , along with the file
1828 1832 \family typewriter
1829 1833 ipython.el
1830 1834 \family default
1831 1835 .
1832 1836 You can check that the version you have of
1833 1837 \family typewriter
1834 1838 python-mode.el
1835 1839 \family default
1836 1840 is new enough by either looking at the revision number in the file itself,
1837 1841 or asking for it in (X)Emacs via
1838 1842 \family typewriter
1839 1843 M-x py-version
1840 1844 \family default
1841 1845 .
1842 1846 Versions 4.68 and newer contain the necessary fixes for proper IPython support.
1843 1847 \layout Standard
1844 1848
1845 1849 The file
1846 1850 \family typewriter
1847 1851 ipython.el
1848 1852 \family default
1849 1853 is included with the IPython distribution, in the documentation directory
1850 1854 (where this manual resides in PDF and HTML formats).
1851 1855 \layout Standard
1852 1856
1853 1857 Once you put these files in your Emacs path, all you need in your
1854 1858 \family typewriter
1855 1859 .emacs
1856 1860 \family default
1857 1861 file is:
1858 1862 \layout LyX-Code
1859 1863
1860 1864 (require 'ipython)
1861 1865 \layout Standard
1862 1866
1863 1867 This should give you full support for executing code snippets via IPython,
1864 1868 opening IPython as your Python shell via
1865 1869 \family typewriter
1866 1870 C-c\SpecialChar ~
1867 1871 !
1868 1872 \family default
1869 1873 , etc.
1870 1874
1871 1875 \layout Standard
1872 1876
1873 1877 If you happen to get garbage instead of colored prompts as described in
1874 1878 the previous section, you may need to set also in your
1875 1879 \family typewriter
1876 1880 .emacs
1877 1881 \family default
1878 1882 file:
1879 1883 \layout LyX-Code
1880 1884
1881 1885 (setq ansi-color-for-comint-mode t)
1882 1886 \layout Subsubsection*
1883 1887
1884 1888 Notes
1885 1889 \layout Itemize
1886 1890
1887 1891 There is one caveat you should be aware of: you must start the IPython shell
1888 1892
1889 1893 \emph on
1890 1894 before
1891 1895 \emph default
1892 1896 attempting to execute any code regions via
1893 1897 \family typewriter
1894 1898 C-c\SpecialChar ~
1895 1899 |
1896 1900 \family default
1897 1901 .
1898 1902 Simply type
1899 1903 \family typewriter
1900 1904 C-c\SpecialChar ~
1901 1905 !
1902 1906 \family default
1903 1907 to start IPython before passing any code regions to the interpreter, and
1904 1908 you shouldn't experience any problems.
1905 1909 \newline
1906 1910 This is due to a bug in Python itself, which has been fixed for Python 2.3,
1907 1911 but exists as of Python 2.2.2 (reported as SF bug [ 737947 ]).
1908 1912 \layout Itemize
1909 1913
1910 1914 The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
1911 1915 ts should be directed to him through the IPython mailing lists.
1912 1916
1913 1917 \layout Itemize
1914 1918
1915 1919 This code is still somewhat experimental so it's a bit rough around the
1916 1920 edges (although in practice, it works quite well).
1917 1921 \layout Itemize
1918 1922
1919 1923 Be aware that if you customize
1920 1924 \family typewriter
1921 1925 py-python-command
1922 1926 \family default
1923 1927 previously, this value will override what
1924 1928 \family typewriter
1925 1929 ipython.el
1926 1930 \family default
1927 1931 does (because loading the customization variables comes later).
1928 1932 \layout Section
1929 1933
1930 1934
1931 1935 \begin_inset LatexCommand \label{sec:quick_tips}
1932 1936
1933 1937 \end_inset
1934 1938
1935 1939 Quick tips
1936 1940 \layout Standard
1937 1941
1938 1942 IPython can be used as an improved replacement for the Python prompt, and
1939 1943 for that you don't really need to read any more of this manual.
1940 1944 But in this section we'll try to summarize a few tips on how to make the
1941 1945 most effective use of it for everyday Python development, highlighting
1942 1946 things you might miss in the rest of the manual (which is getting long).
1943 1947 We'll give references to parts in the manual which provide more detail
1944 1948 when appropriate.
1945 1949 \layout Standard
1946 1950
1947 1951 The following article by Jeremy Jones provides an introductory tutorial
1948 1952 about IPython:
1949 1953 \newline
1950 1954
1951 1955 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
1952 1956
1953 1957 \end_inset
1954 1958
1955 1959
1956 1960 \layout Itemize
1957 1961
1958 1962 The TAB key.
1959 1963 TAB-completion, especially for attributes, is a convenient way to explore
1960 1964 the structure of any object you're dealing with.
1961 1965 Simply type
1962 1966 \family typewriter
1963 1967 object_name.<TAB>
1964 1968 \family default
1965 1969 and a list of the object's attributes will be printed (see sec.
1966 1970
1967 1971 \begin_inset LatexCommand \ref{sec:readline}
1968 1972
1969 1973 \end_inset
1970 1974
1971 1975 for more).
1972 1976 Tab completion also works on file and directory names, which combined with
1973 1977 IPython's alias system allows you to do from within IPython many of the
1974 1978 things you normally would need the system shell for.
1975 1979
1976 1980 \layout Itemize
1977 1981
1978 1982 Explore your objects.
1979 1983 Typing
1980 1984 \family typewriter
1981 1985 object_name?
1982 1986 \family default
1983 1987 will print all sorts of details about any object, including docstrings,
1984 1988 function definition lines (for call arguments) and constructor details
1985 1989 for classes.
1986 1990 The magic commands
1987 1991 \family typewriter
1988 1992 %pdoc
1989 1993 \family default
1990 1994 ,
1991 1995 \family typewriter
1992 1996 %pdef
1993 1997 \family default
1994 1998 ,
1995 1999 \family typewriter
1996 2000 %psource
1997 2001 \family default
1998 2002 and
1999 2003 \family typewriter
2000 2004 %pfile
2001 2005 \family default
2002 2006 will respectively print the docstring, function definition line, full source
2003 2007 code and the complete file for any object (when they can be found).
2004 2008 If automagic is on (it is by default), you don't need to type the '
2005 2009 \family typewriter
2006 2010 %
2007 2011 \family default
2008 2012 ' explicitly.
2009 2013 See sec.
2010 2014
2011 2015 \begin_inset LatexCommand \ref{sec:dyn-object-info}
2012 2016
2013 2017 \end_inset
2014 2018
2015 2019 for more.
2016 2020 \layout Itemize
2017 2021
2018 2022 The
2019 2023 \family typewriter
2020 2024 %run
2021 2025 \family default
2022 2026 magic command allows you to run any python script and load all of its data
2023 2027 directly into the interactive namespace.
2024 2028 Since the file is re-read from disk each time, changes you make to it are
2025 2029 reflected immediately (in contrast to the behavior of
2026 2030 \family typewriter
2027 2031 import
2028 2032 \family default
2029 2033 ).
2030 2034 I rarely use
2031 2035 \family typewriter
2032 2036 import
2033 2037 \family default
2034 2038 for code I am testing, relying on
2035 2039 \family typewriter
2036 2040 %run
2037 2041 \family default
2038 2042 instead.
2039 2043 See sec.
2040 2044
2041 2045 \begin_inset LatexCommand \ref{sec:magic}
2042 2046
2043 2047 \end_inset
2044 2048
2045 2049 for more on this and other magic commands, or type the name of any magic
2046 2050 command and ? to get details on it.
2047 2051 See also sec.
2048 2052
2049 2053 \begin_inset LatexCommand \ref{sec:dreload}
2050 2054
2051 2055 \end_inset
2052 2056
2053 2057 for a recursive reload command.
2054 2058 \newline
2055 2059
2056 2060 \family typewriter
2057 2061 %run
2058 2062 \family default
2059 2063 also has special flags for timing the execution of your scripts (
2060 2064 \family typewriter
2061 2065 -t
2062 2066 \family default
2063 2067 ) and for executing them under the control of either Python's
2064 2068 \family typewriter
2065 2069 pdb
2066 2070 \family default
2067 2071 debugger (
2068 2072 \family typewriter
2069 2073 -d
2070 2074 \family default
2071 2075 ) or profiler (
2072 2076 \family typewriter
2073 2077 -p
2074 2078 \family default
2075 2079 ).
2076 2080 With all of these,
2077 2081 \family typewriter
2078 2082 %run
2079 2083 \family default
2080 2084 can be used as the main tool for efficient interactive development of code
2081 2085 which you write in your editor of choice.
2082 2086 \layout Itemize
2083 2087
2084 2088 Use the Python debugger,
2085 2089 \family typewriter
2086 2090 pdb
2087 2091 \family default
2088 2092
2089 2093 \begin_inset Foot
2090 2094 collapsed true
2091 2095
2092 2096 \layout Standard
2093 2097
2094 2098 Thanks to Christian Hart and Matthew Arnison for the suggestions leading
2095 2099 to IPython's improved debugger and profiler support.
2096 2100 \end_inset
2097 2101
2098 2102 .
2099 2103 The
2100 2104 \family typewriter
2101 2105 %pdb
2102 2106 \family default
2103 2107 command allows you to toggle on and off the automatic invocation of an
2104 2108 IPython-enhanced
2105 2109 \family typewriter
2106 2110 pdb
2107 2111 \family default
2108 2112 debugger (with coloring, tab completion and more) at any uncaught exception.
2109 2113 The advantage of this is that
2110 2114 \family typewriter
2111 2115 pdb
2112 2116 \family default
2113 2117 starts
2114 2118 \emph on
2115 2119 inside
2116 2120 \emph default
2117 2121 the function where the exception occurred, with all data still available.
2118 2122 You can print variables, see code, execute statements and even walk up
2119 2123 and down the call stack to track down the true source of the problem (which
2120 2124 often is many layers in the stack above where the exception gets triggered).
2121 2125 \newline
2122 2126 Running programs with
2123 2127 \family typewriter
2124 2128 %run
2125 2129 \family default
2126 2130 and pdb active can be an efficient to develop and debug code, in many cases
2127 2131 eliminating the need for
2128 2132 \family typewriter
2129 2133 print
2130 2134 \family default
2131 2135 statements or external debugging tools.
2132 2136 I often simply put a
2133 2137 \family typewriter
2134 2138 1/0
2135 2139 \family default
2136 2140 in a place where I want to take a look so that pdb gets called, quickly
2137 2141 view whatever variables I need to or test various pieces of code and then
2138 2142 remove the
2139 2143 \family typewriter
2140 2144 1/0
2141 2145 \family default
2142 2146 .
2143 2147 \newline
2144 2148 Note also that `
2145 2149 \family typewriter
2146 2150 %run -d
2147 2151 \family default
2148 2152 ' activates
2149 2153 \family typewriter
2150 2154 pdb
2151 2155 \family default
2152 2156 and automatically sets initial breakpoints for you to step through your
2153 2157 code, watch variables, etc.
2154 2158 See Sec.\SpecialChar ~
2155 2159
2156 2160 \begin_inset LatexCommand \ref{sec:cache_output}
2157 2161
2158 2162 \end_inset
2159 2163
2160 2164 for details.
2161 2165 \layout Itemize
2162 2166
2163 2167 Use the output cache.
2164 2168 All output results are automatically stored in a global dictionary named
2165 2169
2166 2170 \family typewriter
2167 2171 Out
2168 2172 \family default
2169 2173 and variables named
2170 2174 \family typewriter
2171 2175 _1
2172 2176 \family default
2173 2177 ,
2174 2178 \family typewriter
2175 2179 _2
2176 2180 \family default
2177 2181 , etc.
2178 2182 alias them.
2179 2183 For example, the result of input line 4 is available either as
2180 2184 \family typewriter
2181 2185 Out[4]
2182 2186 \family default
2183 2187 or as
2184 2188 \family typewriter
2185 2189 _4
2186 2190 \family default
2187 2191 .
2188 2192 Additionally, three variables named
2189 2193 \family typewriter
2190 2194 _
2191 2195 \family default
2192 2196 ,
2193 2197 \family typewriter
2194 2198 __
2195 2199 \family default
2196 2200 and
2197 2201 \family typewriter
2198 2202 ___
2199 2203 \family default
2200 2204 are always kept updated with the for the last three results.
2201 2205 This allows you to recall any previous result and further use it for new
2202 2206 calculations.
2203 2207 See Sec.\SpecialChar ~
2204 2208
2205 2209 \begin_inset LatexCommand \ref{sec:cache_output}
2206 2210
2207 2211 \end_inset
2208 2212
2209 2213 for more.
2210 2214 \layout Itemize
2211 2215
2212 2216 Put a '
2213 2217 \family typewriter
2214 2218 ;
2215 2219 \family default
2216 2220 ' at the end of a line to supress the printing of output.
2217 2221 This is useful when doing calculations which generate long output you are
2218 2222 not interested in seeing.
2219 2223 The
2220 2224 \family typewriter
2221 2225 _*
2222 2226 \family default
2223 2227 variables and the
2224 2228 \family typewriter
2225 2229 Out[]
2226 2230 \family default
2227 2231 list do get updated with the contents of the output, even if it is not
2228 2232 printed.
2229 2233 You can thus still access the generated results this way for further processing.
2230 2234 \layout Itemize
2231 2235
2232 2236 A similar system exists for caching input.
2233 2237 All input is stored in a global list called
2234 2238 \family typewriter
2235 2239 In
2236 2240 \family default
2237 2241 , so you can re-execute lines 22 through 28 plus line 34 by typing
2238 2242 \family typewriter
2239 2243 'exec In[22:29]+In[34]'
2240 2244 \family default
2241 2245 (using Python slicing notation).
2242 2246 If you need to execute the same set of lines often, you can assign them
2243 2247 to a macro with the
2244 2248 \family typewriter
2245 2249 %macro
2246 2250 \family default
2247 2251
2248 2252 \family typewriter
2249 2253 function.
2250 2254
2251 2255 \family default
2252 2256 See sec.
2253 2257
2254 2258 \begin_inset LatexCommand \ref{sec:cache_input}
2255 2259
2256 2260 \end_inset
2257 2261
2258 2262 for more.
2259 2263 \layout Itemize
2260 2264
2261 2265 Use your input history.
2262 2266 The
2263 2267 \family typewriter
2264 2268 %hist
2265 2269 \family default
2266 2270 command can show you all previous input, without line numbers if desired
2267 2271 (option
2268 2272 \family typewriter
2269 2273 -n
2270 2274 \family default
2271 2275 ) so you can directly copy and paste code either back in IPython or in a
2272 2276 text editor.
2273 2277 You can also save all your history by turning on logging via
2274 2278 \family typewriter
2275 2279 %logstart
2276 2280 \family default
2277 2281 ; these logs can later be either reloaded as IPython sessions or used as
2278 2282 code for your programs.
2279 2283 \layout Itemize
2280 2284
2281 2285 Define your own system aliases.
2282 2286 Even though IPython gives you access to your system shell via the
2283 2287 \family typewriter
2284 2288 !
2285 2289 \family default
2286 2290 prefix, it is convenient to have aliases to the system commands you use
2287 2291 most often.
2288 2292 This allows you to work seamlessly from inside IPython with the same commands
2289 2293 you are used to in your system shell.
2290 2294 \newline
2291 2295 IPython comes with some pre-defined aliases and a complete system for changing
2292 2296 directories, both via a stack (see
2293 2297 \family typewriter
2294 2298 %pushd
2295 2299 \family default
2296 2300 ,
2297 2301 \family typewriter
2298 2302 %popd
2299 2303 \family default
2300 2304 and
2301 2305 \family typewriter
2302 2306 %dhist
2303 2307 \family default
2304 2308 ) and via direct
2305 2309 \family typewriter
2306 2310 %cd
2307 2311 \family default
2308 2312 .
2309 2313 The latter keeps a history of visited directories and allows you to go
2310 2314 to any previously visited one.
2311 2315 \layout Itemize
2312 2316
2313 2317 Use Python to manipulate the results of system commands.
2314 2318 The `
2315 2319 \family typewriter
2316 2320 !!
2317 2321 \family default
2318 2322 ' special syntax, and the
2319 2323 \family typewriter
2320 2324 %sc
2321 2325 \family default
2322 2326 and
2323 2327 \family typewriter
2324 2328 %sx
2325 2329 \family default
2326 2330 magic commands allow you to capture system output into Python variables.
2327 2331 \layout Itemize
2328 2332
2329 2333 Expand python variables when calling the shell (either via
2330 2334 \family typewriter
2331 2335 `!'
2332 2336 \family default
2333 2337 and
2334 2338 \family typewriter
2335 2339 `!!'
2336 2340 \family default
2337 2341 or via aliases) by prepending a
2338 2342 \family typewriter
2339 2343 $
2340 2344 \family default
2341 2345 in front of them.
2342 2346 You can also expand complete python expressions.
2343 2347 See sec.\SpecialChar ~
2344 2348
2345 2349 \begin_inset LatexCommand \ref{sub:System-shell-access}
2346 2350
2347 2351 \end_inset
2348 2352
2349 2353 for more.
2350 2354 \layout Itemize
2351 2355
2352 2356 Use profiles to maintain different configurations (modules to load, function
2353 2357 definitions, option settings) for particular tasks.
2354 2358 You can then have customized versions of IPython for specific purposes.
2355 2359 See sec.\SpecialChar ~
2356 2360
2357 2361 \begin_inset LatexCommand \ref{sec:profiles}
2358 2362
2359 2363 \end_inset
2360 2364
2361 2365 for more.
2362 2366 \layout Itemize
2363 2367
2364 2368 Embed IPython in your programs.
2365 2369 A few lines of code are enough to load a complete IPython inside your own
2366 2370 programs, giving you the ability to work with your data interactively after
2367 2371 automatic processing has been completed.
2368 2372 See sec.\SpecialChar ~
2369 2373
2370 2374 \begin_inset LatexCommand \ref{sec:embed}
2371 2375
2372 2376 \end_inset
2373 2377
2374 2378 for more.
2375 2379 \layout Itemize
2376 2380
2377 2381 Use the Python profiler.
2378 2382 When dealing with performance issues, the
2379 2383 \family typewriter
2380 2384 %run
2381 2385 \family default
2382 2386 command with a
2383 2387 \family typewriter
2384 2388 -p
2385 2389 \family default
2386 2390 option allows you to run complete programs under the control of the Python
2387 2391 profiler.
2388 2392 The
2389 2393 \family typewriter
2390 2394 %prun
2391 2395 \family default
2392 2396 command does a similar job for single Python expressions (like function
2393 2397 calls).
2394 2398 \layout Itemize
2395 2399
2396 2400 Use the IPython.demo.Demo class to load any Python script as an interactive
2397 2401 demo.
2398 2402 With a minimal amount of simple markup, you can control the execution of
2399 2403 the script, stopping as needed.
2400 2404 See sec.\SpecialChar ~
2401 2405
2402 2406 \begin_inset LatexCommand \ref{sec:interactive-demos}
2403 2407
2404 2408 \end_inset
2405 2409
2406 2410 for more.
2407 2411 \layout Subsection
2408 2412
2409 2413 Source code handling tips
2410 2414 \layout Standard
2411 2415
2412 2416 IPython is a line-oriented program, without full control of the terminal.
2413 2417 Therefore, it doesn't support true multiline editing.
2414 2418 However, it has a number of useful tools to help you in dealing effectively
2415 2419 with more complex editing.
2416 2420 \layout Standard
2417 2421
2418 2422 The
2419 2423 \family typewriter
2420 2424 %edit
2421 2425 \family default
2422 2426 command gives a reasonable approximation of multiline editing, by invoking
2423 2427 your favorite editor on the spot.
2424 2428 IPython will execute the code you type in there as if it were typed interactive
2425 2429 ly.
2426 2430 Type
2427 2431 \family typewriter
2428 2432 %edit?
2429 2433 \family default
2430 2434 for the full details on the edit command.
2431 2435 \layout Standard
2432 2436
2433 2437 If you have typed various commands during a session, which you'd like to
2434 2438 reuse, IPython provides you with a number of tools.
2435 2439 Start by using
2436 2440 \family typewriter
2437 2441 %hist
2438 2442 \family default
2439 2443 to see your input history, so you can see the line numbers of all input.
2440 2444 Let us say that you'd like to reuse lines 10 through 20, plus lines 24
2441 2445 and 28.
2442 2446 All the commands below can operate on these with the syntax
2443 2447 \layout LyX-Code
2444 2448
2445 2449 %command 10-20 24 28
2446 2450 \layout Standard
2447 2451
2448 2452 where the command given can be:
2449 2453 \layout Itemize
2450 2454
2451 2455
2452 2456 \family typewriter
2453 2457 %macro <macroname>
2454 2458 \family default
2455 2459 : this stores the lines into a variable which, when called at the prompt,
2456 2460 re-executes the input.
2457 2461 Macros can be edited later using
2458 2462 \family typewriter
2459 2463 `%edit macroname
2460 2464 \family default
2461 2465 ', and they can be stored persistently across sessions with `
2462 2466 \family typewriter
2463 2467 %store macroname
2464 2468 \family default
2465 2469 ' (the storage system is per-profile).
2466 2470 The combination of quick macros, persistent storage and editing, allows
2467 2471 you to easily refine quick-and-dirty interactive input into permanent utilities
2468 2472 , always available both in IPython and as files for general reuse.
2469 2473 \layout Itemize
2470 2474
2471 2475
2472 2476 \family typewriter
2473 2477 %edit
2474 2478 \family default
2475 2479 : this will open a text editor with those lines pre-loaded for further modificat
2476 2480 ion.
2477 2481 It will then execute the resulting file's contents as if you had typed
2478 2482 it at the prompt.
2479 2483 \layout Itemize
2480 2484
2481 2485
2482 2486 \family typewriter
2483 2487 %save <filename>
2484 2488 \family default
2485 2489 : this saves the lines directly to a named file on disk.
2486 2490 \layout Standard
2487 2491
2488 2492 While
2489 2493 \family typewriter
2490 2494 %macro
2491 2495 \family default
2492 2496 saves input lines into memory for interactive re-execution, sometimes you'd
2493 2497 like to save your input directly to a file.
2494 2498 The
2495 2499 \family typewriter
2496 2500 %save
2497 2501 \family default
2498 2502 magic does this: its input sytnax is the same as
2499 2503 \family typewriter
2500 2504 %macro
2501 2505 \family default
2502 2506 , but it saves your input directly to a Python file.
2503 2507 Note that the
2504 2508 \family typewriter
2505 2509 %logstart
2506 2510 \family default
2507 2511 command also saves input, but it logs
2508 2512 \emph on
2509 2513 all
2510 2514 \emph default
2511 2515 input to disk (though you can temporarily suspend it and reactivate it
2512 2516 with
2513 2517 \family typewriter
2514 2518 %logoff/%logon
2515 2519 \family default
2516 2520 );
2517 2521 \family typewriter
2518 2522 %save
2519 2523 \family default
2520 2524 allows you to select which lines of input you need to save.
2521 2525 \layout Subsubsection*
2522 2526
2523 2527 Lightweight 'version control'
2524 2528 \layout Standard
2525 2529
2526 2530 When you call
2527 2531 \family typewriter
2528 2532 %edit
2529 2533 \family default
2530 2534 with no arguments, IPython opens an empty editor with a temporary file,
2531 2535 and it returns the contents of your editing session as a string variable.
2532 2536 Thanks to IPython's output caching mechanism, this is automatically stored:
2533 2537 \layout LyX-Code
2534 2538
2535 2539 In [1]: %edit
2536 2540 \layout LyX-Code
2537 2541
2538 2542 IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
2539 2543 \layout LyX-Code
2540 2544
2541 2545 Editing...
2542 2546 done.
2543 2547 Executing edited code...
2544 2548 \layout LyX-Code
2545 2549
2546 2550 hello - this is a temporary file
2547 2551 \layout LyX-Code
2548 2552
2549 2553 Out[1]: "print 'hello - this is a temporary file'
2550 2554 \backslash
2551 2555 n"
2552 2556 \layout Standard
2553 2557
2554 2558 Now, if you call
2555 2559 \family typewriter
2556 2560 `%edit -p'
2557 2561 \family default
2558 2562 , IPython tries to open an editor with the same data as the last time you
2559 2563 used
2560 2564 \family typewriter
2561 2565 %edit
2562 2566 \family default
2563 2567 .
2564 2568 So if you haven't used
2565 2569 \family typewriter
2566 2570 %edit
2567 2571 \family default
2568 2572 in the meantime, this same contents will reopen; however, it will be done
2569 2573 in a
2570 2574 \emph on
2571 2575 new file
2572 2576 \emph default
2573 2577 .
2574 2578 This means that if you make changes and you later want to find an old version,
2575 2579 you can always retrieve it by using its output number, via
2576 2580 \family typewriter
2577 2581 `%edit _NN'
2578 2582 \family default
2579 2583 , where
2580 2584 \family typewriter
2581 2585 NN
2582 2586 \family default
2583 2587 is the number of the output prompt.
2584 2588 \layout Standard
2585 2589
2586 2590 Continuing with the example above, this should illustrate this idea:
2587 2591 \layout LyX-Code
2588 2592
2589 2593 In [2]: edit -p
2590 2594 \layout LyX-Code
2591 2595
2592 2596 IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
2593 2597 \layout LyX-Code
2594 2598
2595 2599 Editing...
2596 2600 done.
2597 2601 Executing edited code...
2598 2602 \layout LyX-Code
2599 2603
2600 2604 hello - now I made some changes
2601 2605 \layout LyX-Code
2602 2606
2603 2607 Out[2]: "print 'hello - now I made some changes'
2604 2608 \backslash
2605 2609 n"
2606 2610 \layout LyX-Code
2607 2611
2608 2612 In [3]: edit _1
2609 2613 \layout LyX-Code
2610 2614
2611 2615 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
2612 2616 \layout LyX-Code
2613 2617
2614 2618 Editing...
2615 2619 done.
2616 2620 Executing edited code...
2617 2621 \layout LyX-Code
2618 2622
2619 2623 hello - this is a temporary file
2620 2624 \layout LyX-Code
2621 2625
2622 2626 IPython version control at work :)
2623 2627 \layout LyX-Code
2624 2628
2625 2629 Out[3]: "print 'hello - this is a temporary file'
2626 2630 \backslash
2627 2631 nprint 'IPython version control at work :)'
2628 2632 \backslash
2629 2633 n"
2630 2634 \layout Standard
2631 2635
2632 2636 This section was written after a contribution by Alexander Belchenko on
2633 2637 the IPython user list.
2634 2638 \layout LyX-Code
2635 2639
2636 2640 \layout Subsection
2637 2641
2638 2642 Effective logging
2639 2643 \layout Standard
2640 2644
2641 2645 A very useful suggestion sent in by Robert Kern follows:
2642 2646 \layout Standard
2643 2647
2644 2648 I recently happened on a nifty way to keep tidy per-project log files.
2645 2649 I made a profile for my project (which is called "parkfield").
2646 2650 \layout LyX-Code
2647 2651
2648 2652 include ipythonrc
2649 2653 \layout LyX-Code
2650 2654
2651 2655 # cancel earlier logfile invocation:
2652 2656 \layout LyX-Code
2653 2657
2654 2658 logfile ''
2655 2659 \layout LyX-Code
2656 2660
2657 2661 execute import time
2658 2662 \layout LyX-Code
2659 2663
2660 2664 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
2661 2665 \layout LyX-Code
2662 2666
2663 2667 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
2664 2668 \layout Standard
2665 2669
2666 2670 I also added a shell alias for convenience:
2667 2671 \layout LyX-Code
2668 2672
2669 2673 alias parkfield="ipython -pylab -profile parkfield"
2670 2674 \layout Standard
2671 2675
2672 2676 Now I have a nice little directory with everything I ever type in, organized
2673 2677 by project and date.
2674 2678 \layout Standard
2675 2679
2676 2680
2677 2681 \series bold
2678 2682 Contribute your own:
2679 2683 \series default
2680 2684 If you have your own favorite tip on using IPython efficiently for a certain
2681 2685 task (especially things which can't be done in the normal Python interpreter),
2682 2686 don't hesitate to send it!
2683 2687 \layout Section
2684 2688
2685 2689 Command-line use
2686 2690 \layout Standard
2687 2691
2688 2692 You start IPython with the command:
2689 2693 \layout Standard
2690 2694
2691 2695
2692 2696 \family typewriter
2693 2697 $ ipython [options] files
2694 2698 \layout Standard
2695 2699
2696 2700 If invoked with no options, it executes all the files listed in sequence
2697 2701 and drops you into the interpreter while still acknowledging any options
2698 2702 you may have set in your ipythonrc file.
2699 2703 This behavior is different from standard Python, which when called as
2700 2704 \family typewriter
2701 2705 python -i
2702 2706 \family default
2703 2707 will only execute one file and ignore your configuration setup.
2704 2708 \layout Standard
2705 2709
2706 2710 Please note that some of the configuration options are not available at
2707 2711 the command line, simply because they are not practical here.
2708 2712 Look into your ipythonrc configuration file for details on those.
2709 2713 This file typically installed in the
2710 2714 \family typewriter
2711 2715 $HOME/.ipython
2712 2716 \family default
2713 2717 directory.
2714 2718 For Windows users,
2715 2719 \family typewriter
2716 2720 $HOME
2717 2721 \family default
2718 2722 resolves to
2719 2723 \family typewriter
2720 2724 C:
2721 2725 \backslash
2722 2726
2723 2727 \backslash
2724 2728 Documents and Settings
2725 2729 \backslash
2726 2730
2727 2731 \backslash
2728 2732 YourUserName
2729 2733 \family default
2730 2734 in most instances.
2731 2735 In the rest of this text, we will refer to this directory as
2732 2736 \family typewriter
2733 2737 IPYTHONDIR
2734 2738 \family default
2735 2739 .
2736 2740 \layout Subsection
2737 2741
2738 2742
2739 2743 \begin_inset LatexCommand \label{sec:threading-opts}
2740 2744
2741 2745 \end_inset
2742 2746
2743 2747 Special Threading Options
2744 2748 \layout Standard
2745 2749
2746 2750 The following special options are ONLY valid at the beginning of the command
2747 2751 line, and not later.
2748 2752 This is because they control the initial- ization of ipython itself, before
2749 2753 the normal option-handling mechanism is active.
2750 2754 \layout List
2751 2755 \labelwidthstring 00.00.0000
2752 2756
2753 2757
2754 2758 \family typewriter
2755 2759 \series bold
2756 2760 -gthread,\SpecialChar ~
2757 2761 -qthread,\SpecialChar ~
2758 2762 -wthread,\SpecialChar ~
2759 2763 -pylab:
2760 2764 \family default
2761 2765 \series default
2762 2766 Only
2763 2767 \emph on
2764 2768 one
2765 2769 \emph default
2766 2770 of these can be given, and it can only be given as the first option passed
2767 2771 to IPython (it will have no effect in any other position).
2768 2772 They provide threading support for the GTK Qt and WXPython toolkits, and
2769 2773 for the matplotlib library.
2770 2774 \layout List
2771 2775 \labelwidthstring 00.00.0000
2772 2776
2773 2777 \SpecialChar ~
2774 2778 With any of the first three options, IPython starts running a separate
2775 2779 thread for the graphical toolkit's operation, so that you can open and
2776 2780 control graphical elements from within an IPython command line, without
2777 2781 blocking.
2778 2782 All three provide essentially the same functionality, respectively for
2779 2783 GTK, QT and WXWidgets (via their Python interfaces).
2780 2784 \layout List
2781 2785 \labelwidthstring 00.00.0000
2782 2786
2783 2787 \SpecialChar ~
2784 2788 Note that with
2785 2789 \family typewriter
2786 2790 -wthread
2787 2791 \family default
2788 2792 , you can additionally use the -wxversion option to request a specific version
2789 2793 of wx to be used.
2790 2794 This requires that you have the
2791 2795 \family typewriter
2792 2796 wxversion
2793 2797 \family default
2794 2798 Python module installed, which is part of recent wxPython distributions.
2795 2799 \layout List
2796 2800 \labelwidthstring 00.00.0000
2797 2801
2798 2802 \SpecialChar ~
2799 2803 If
2800 2804 \family typewriter
2801 2805 -pylab
2802 2806 \family default
2803 2807 is given, IPython loads special support for the mat plotlib library (
2804 2808 \begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
2805 2809
2806 2810 \end_inset
2807 2811
2808 2812 ), allowing interactive usage of any of its backends as defined in the user's
2809 2813
2810 2814 \family typewriter
2811 2815 ~/.matplotlib/matplotlibrc
2812 2816 \family default
2813 2817 file.
2814 2818 It automatically activates GTK, Qt or WX threading for IPyhton if the choice
2815 2819 of matplotlib backend requires it.
2816 2820 It also modifies the
2817 2821 \family typewriter
2818 2822 %run
2819 2823 \family default
2820 2824 command to correctly execute (without blocking) any matplotlib-based script
2821 2825 which calls
2822 2826 \family typewriter
2823 2827 show()
2824 2828 \family default
2825 2829 at the end.
2826 2830
2827 2831 \layout List
2828 2832 \labelwidthstring 00.00.0000
2829 2833
2830 2834
2831 2835 \family typewriter
2832 2836 \series bold
2833 2837 -tk
2834 2838 \family default
2835 2839 \series default
2836 2840 The
2837 2841 \family typewriter
2838 2842 -g/q/wthread
2839 2843 \family default
2840 2844 options, and
2841 2845 \family typewriter
2842 2846 -pylab
2843 2847 \family default
2844 2848 (if matplotlib is configured to use GTK, Qt or WX), will normally block
2845 2849 Tk graphical interfaces.
2846 2850 This means that when either GTK, Qt or WX threading is active, any attempt
2847 2851 to open a Tk GUI will result in a dead window, and possibly cause the Python
2848 2852 interpreter to crash.
2849 2853 An extra option,
2850 2854 \family typewriter
2851 2855 -tk
2852 2856 \family default
2853 2857 , is available to address this issue.
2854 2858 It can
2855 2859 \emph on
2856 2860 only
2857 2861 \emph default
2858 2862 be given as a
2859 2863 \emph on
2860 2864 second
2861 2865 \emph default
2862 2866 option after any of the above (
2863 2867 \family typewriter
2864 2868 -gthread
2865 2869 \family default
2866 2870 ,
2867 2871 \family typewriter
2868 2872 -wthread
2869 2873 \family default
2870 2874 or
2871 2875 \family typewriter
2872 2876 -pylab
2873 2877 \family default
2874 2878 ).
2875 2879 \layout List
2876 2880 \labelwidthstring 00.00.0000
2877 2881
2878 2882 \SpecialChar ~
2879 2883 If
2880 2884 \family typewriter
2881 2885 -tk
2882 2886 \family default
2883 2887 is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
2884 2888 This is however potentially unreliable, and you will have to test on your
2885 2889 platform and Python configuration to determine whether it works for you.
2886 2890 Debian users have reported success, apparently due to the fact that Debian
2887 2891 builds all of Tcl, Tk, Tkinter and Python with pthreads support.
2888 2892 Under other Linux environments (such as Fedora Core 2/3), this option has
2889 2893 caused random crashes and lockups of the Python interpreter.
2890 2894 Under other operating systems (Mac OSX and Windows), you'll need to try
2891 2895 it to find out, since currently no user reports are available.
2892 2896 \layout List
2893 2897 \labelwidthstring 00.00.0000
2894 2898
2895 2899 \SpecialChar ~
2896 2900 There is unfortunately no way for IPython to determine at run time whether
2897 2901
2898 2902 \family typewriter
2899 2903 -tk
2900 2904 \family default
2901 2905 will work reliably or not, so you will need to do some experiments before
2902 2906 relying on it for regular work.
2903 2907
2904 2908 \layout Subsection
2905 2909
2906 2910
2907 2911 \begin_inset LatexCommand \label{sec:cmd-line-opts}
2908 2912
2909 2913 \end_inset
2910 2914
2911 2915 Regular Options
2912 2916 \layout Standard
2913 2917
2914 2918 After the above threading options have been given, regular options can follow
2915 2919 in any order.
2916 2920 All options can be abbreviated to their shortest non-ambiguous form and
2917 2921 are case-sensitive.
2918 2922 One or two dashes can be used.
2919 2923 Some options have an alternate short form, indicated after a
2920 2924 \family typewriter
2921 2925 |
2922 2926 \family default
2923 2927 .
2924 2928 \layout Standard
2925 2929
2926 2930 Most options can also be set from your ipythonrc configuration file.
2927 2931 See the provided example for more details on what the options do.
2928 2932 Options given at the command line override the values set in the ipythonrc
2929 2933 file.
2930 2934 \layout Standard
2931 2935
2932 2936 All options with a
2933 2937 \family typewriter
2934 2938 [no]
2935 2939 \family default
2936 2940 prepended can be specified in negated form (
2937 2941 \family typewriter
2938 2942 -nooption
2939 2943 \family default
2940 2944 instead of
2941 2945 \family typewriter
2942 2946 -option
2943 2947 \family default
2944 2948 ) to turn the feature off.
2945 2949 \layout List
2946 2950 \labelwidthstring 00.00.0000
2947 2951
2948 2952
2949 2953 \family typewriter
2950 2954 \series bold
2951 2955 -help
2952 2956 \family default
2953 2957 \series default
2954 2958 : print a help message and exit.
2955 2959 \layout List
2956 2960 \labelwidthstring 00.00.0000
2957 2961
2958 2962
2959 2963 \family typewriter
2960 2964 \series bold
2961 2965 -pylab:
2962 2966 \family default
2963 2967 \series default
2964 2968 this can
2965 2969 \emph on
2966 2970 only
2967 2971 \emph default
2968 2972 be given as the
2969 2973 \emph on
2970 2974 first
2971 2975 \emph default
2972 2976 option passed to IPython (it will have no effect in any other position).
2973 2977 It adds special support for the matplotlib library (
2974 2978 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
2975 2979
2976 2980 \end_inset
2977 2981
2978 2982 ), allowing interactive usage of any of its backends as defined in the user's
2979 2983
2980 2984 \family typewriter
2981 2985 .matplotlibrc
2982 2986 \family default
2983 2987 file.
2984 2988 It automatically activates GTK or WX threading for IPyhton if the choice
2985 2989 of matplotlib backend requires it.
2986 2990 It also modifies the
2987 2991 \family typewriter
2988 2992 %run
2989 2993 \family default
2990 2994 command to correctly execute (without blocking) any matplotlib-based script
2991 2995 which calls
2992 2996 \family typewriter
2993 2997 show()
2994 2998 \family default
2995 2999 at the end.
2996 3000 See Sec.\SpecialChar ~
2997 3001
2998 3002 \begin_inset LatexCommand \ref{sec:matplotlib-support}
2999 3003
3000 3004 \end_inset
3001 3005
3002 3006 for more details.
3003 3007 \layout List
3004 3008 \labelwidthstring 00.00.0000
3005 3009
3006 3010
3007 3011 \family typewriter
3008 3012 \series bold
3009 3013 -autocall <val>:
3010 3014 \family default
3011 3015 \series default
3012 3016 Make IPython automatically call any callable object even if you didn't
3013 3017 type explicit parentheses.
3014 3018 For example, `str 43' becomes `str(43)' automatically.
3015 3019 The value can be `0' to disable the feature, `1' for
3016 3020 \emph on
3017 3021 smart
3018 3022 \emph default
3019 3023 autocall, where it is not applied if there are no more arguments on the
3020 3024 line, and `2' for
3021 3025 \emph on
3022 3026 full
3023 3027 \emph default
3024 3028 autocall, where all callable objects are automatically called (even if
3025 3029 no arguments are present).
3026 3030 The default is `1'.
3027 3031 \layout List
3028 3032 \labelwidthstring 00.00.0000
3029 3033
3030 3034
3031 3035 \family typewriter
3032 3036 \series bold
3033 3037 -[no]autoindent:
3034 3038 \family default
3035 3039 \series default
3036 3040 Turn automatic indentation on/off.
3037 3041 \layout List
3038 3042 \labelwidthstring 00.00.0000
3039 3043
3040 3044
3041 3045 \family typewriter
3042 3046 \series bold
3043 3047 -[no]automagic
3044 3048 \series default
3045 3049 :
3046 3050 \family default
3047 3051 make magic commands automatic (without needing their first character to
3048 3052 be
3049 3053 \family typewriter
3050 3054 %
3051 3055 \family default
3052 3056 ).
3053 3057 Type
3054 3058 \family typewriter
3055 3059 %magic
3056 3060 \family default
3057 3061 at the IPython prompt for more information.
3058 3062 \layout List
3059 3063 \labelwidthstring 00.00.0000
3060 3064
3061 3065
3062 3066 \family typewriter
3063 3067 \series bold
3064 3068 -[no]autoedit_syntax:
3065 3069 \family default
3066 3070 \series default
3067 3071 When a syntax error occurs after editing a file, automatically open the
3068 3072 file to the trouble causing line for convenient fixing.
3069 3073
3070 3074 \layout List
3071 3075 \labelwidthstring 00.00.0000
3072 3076
3073 3077
3074 3078 \family typewriter
3075 3079 \series bold
3076 3080 -[no]banner
3077 3081 \series default
3078 3082 :
3079 3083 \family default
3080 3084 Print the initial information banner (default on).
3081 3085 \layout List
3082 3086 \labelwidthstring 00.00.0000
3083 3087
3084 3088
3085 3089 \family typewriter
3086 3090 \series bold
3087 3091 -c\SpecialChar ~
3088 3092 <command>:
3089 3093 \family default
3090 3094 \series default
3091 3095 execute the given command string, and set sys.argv to
3092 3096 \family typewriter
3093 3097 ['c']
3094 3098 \family default
3095 3099 .
3096 3100 This is similar to the
3097 3101 \family typewriter
3098 3102 -c
3099 3103 \family default
3100 3104 option in the normal Python interpreter.
3101 3105
3102 3106 \layout List
3103 3107 \labelwidthstring 00.00.0000
3104 3108
3105 3109
3106 3110 \family typewriter
3107 3111 \series bold
3108 3112 -cache_size|cs\SpecialChar ~
3109 3113 <n>
3110 3114 \series default
3111 3115 :
3112 3116 \family default
3113 3117 size of the output cache (maximum number of entries to hold in memory).
3114 3118 The default is 1000, you can change it permanently in your config file.
3115 3119 Setting it to 0 completely disables the caching system, and the minimum
3116 3120 value accepted is 20 (if you provide a value less than 20, it is reset
3117 3121 to 0 and a warning is issued) This limit is defined because otherwise you'll
3118 3122 spend more time re-flushing a too small cache than working.
3119 3123 \layout List
3120 3124 \labelwidthstring 00.00.0000
3121 3125
3122 3126
3123 3127 \family typewriter
3124 3128 \series bold
3125 3129 -classic|cl
3126 3130 \series default
3127 3131 :
3128 3132 \family default
3129 3133 Gives IPython a similar feel to the classic Python prompt.
3130 3134 \layout List
3131 3135 \labelwidthstring 00.00.0000
3132 3136
3133 3137
3134 3138 \family typewriter
3135 3139 \series bold
3136 3140 -colors\SpecialChar ~
3137 3141 <scheme>:
3138 3142 \family default
3139 3143 \series default
3140 3144 Color scheme for prompts and exception reporting.
3141 3145 Currently implemented: NoColor, Linux and LightBG.
3142 3146 \layout List
3143 3147 \labelwidthstring 00.00.0000
3144 3148
3145 3149
3146 3150 \family typewriter
3147 3151 \series bold
3148 3152 -[no]color_info:
3149 3153 \family default
3150 3154 \series default
3151 3155 IPython can display information about objects via a set of functions, and
3152 3156 optionally can use colors for this, syntax highlighting source code and
3153 3157 various other elements.
3154 3158 However, because this information is passed through a pager (like 'less')
3155 3159 and many pagers get confused with color codes, this option is off by default.
3156 3160 You can test it and turn it on permanently in your ipythonrc file if it
3157 3161 works for you.
3158 3162 As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
3159 3163 that in RedHat 7.2 doesn't.
3160 3164 \layout List
3161 3165 \labelwidthstring 00.00.0000
3162 3166
3163 3167 \SpecialChar ~
3164 3168 Test it and turn it on permanently if it works with your system.
3165 3169 The magic function
3166 3170 \family typewriter
3167 3171 %color_info
3168 3172 \family default
3169 3173 allows you to toggle this interactively for testing.
3170 3174 \layout List
3171 3175 \labelwidthstring 00.00.0000
3172 3176
3173 3177
3174 3178 \family typewriter
3175 3179 \series bold
3176 3180 -[no]debug
3177 3181 \family default
3178 3182 \series default
3179 3183 : Show information about the loading process.
3180 3184 Very useful to pin down problems with your configuration files or to get
3181 3185 details about session restores.
3182 3186 \layout List
3183 3187 \labelwidthstring 00.00.0000
3184 3188
3185 3189
3186 3190 \family typewriter
3187 3191 \series bold
3188 3192 -[no]deep_reload
3189 3193 \series default
3190 3194 :
3191 3195 \family default
3192 3196 IPython can use the
3193 3197 \family typewriter
3194 3198 deep_reload
3195 3199 \family default
3196 3200 module which reloads changes in modules recursively (it replaces the
3197 3201 \family typewriter
3198 3202 reload()
3199 3203 \family default
3200 3204 function, so you don't need to change anything to use it).
3201 3205
3202 3206 \family typewriter
3203 3207 deep_reload()
3204 3208 \family default
3205 3209 forces a full reload of modules whose code may have changed, which the
3206 3210 default
3207 3211 \family typewriter
3208 3212 reload()
3209 3213 \family default
3210 3214 function does not.
3211 3215 \layout List
3212 3216 \labelwidthstring 00.00.0000
3213 3217
3214 3218 \SpecialChar ~
3215 3219 When deep_reload is off, IPython will use the normal
3216 3220 \family typewriter
3217 3221 reload()
3218 3222 \family default
3219 3223 , but deep_reload will still be available as
3220 3224 \family typewriter
3221 3225 dreload()
3222 3226 \family default
3223 3227 .
3224 3228 This feature is off by default [which means that you have both normal
3225 3229 \family typewriter
3226 3230 reload()
3227 3231 \family default
3228 3232 and
3229 3233 \family typewriter
3230 3234 dreload()
3231 3235 \family default
3232 3236 ].
3233 3237 \layout List
3234 3238 \labelwidthstring 00.00.0000
3235 3239
3236 3240
3237 3241 \family typewriter
3238 3242 \series bold
3239 3243 -editor\SpecialChar ~
3240 3244 <name>
3241 3245 \family default
3242 3246 \series default
3243 3247 : Which editor to use with the
3244 3248 \family typewriter
3245 3249 %edit
3246 3250 \family default
3247 3251 command.
3248 3252 By default, IPython will honor your
3249 3253 \family typewriter
3250 3254 EDITOR
3251 3255 \family default
3252 3256 environment variable (if not set, vi is the Unix default and notepad the
3253 3257 Windows one).
3254 3258 Since this editor is invoked on the fly by IPython and is meant for editing
3255 3259 small code snippets, you may want to use a small, lightweight editor here
3256 3260 (in case your default
3257 3261 \family typewriter
3258 3262 EDITOR
3259 3263 \family default
3260 3264 is something like Emacs).
3261 3265 \layout List
3262 3266 \labelwidthstring 00.00.0000
3263 3267
3264 3268
3265 3269 \family typewriter
3266 3270 \series bold
3267 3271 -ipythondir\SpecialChar ~
3268 3272 <name>
3269 3273 \series default
3270 3274 :
3271 3275 \family default
3272 3276 name of your IPython configuration directory
3273 3277 \family typewriter
3274 3278 IPYTHONDIR
3275 3279 \family default
3276 3280 .
3277 3281 This can also be specified through the environment variable
3278 3282 \family typewriter
3279 3283 IPYTHONDIR
3280 3284 \family default
3281 3285 .
3282 3286 \layout List
3283 3287 \labelwidthstring 00.00.0000
3284 3288
3285 3289
3286 3290 \family typewriter
3287 3291 \series bold
3288 3292 -log|l
3289 3293 \family default
3290 3294 \series default
3291 3295 : generate a log file of all input.
3292 3296 The file is named
3293 3297 \family typewriter
3294 3298 ipython_log.py
3295 3299 \family default
3296 3300 in your current directory (which prevents logs from multiple IPython sessions
3297 3301 from trampling each other).
3298 3302 You can use this to later restore a session by loading your logfile as
3299 3303 a file to be executed with option
3300 3304 \family typewriter
3301 3305 -logplay
3302 3306 \family default
3303 3307 (see below).
3304 3308 \layout List
3305 3309 \labelwidthstring 00.00.0000
3306 3310
3307 3311
3308 3312 \family typewriter
3309 3313 \series bold
3310 3314 -logfile|lf\SpecialChar ~
3311 3315 <name>
3312 3316 \series default
3313 3317 :
3314 3318 \family default
3315 3319 specify the name of your logfile.
3316 3320 \layout List
3317 3321 \labelwidthstring 00.00.0000
3318 3322
3319 3323
3320 3324 \family typewriter
3321 3325 \series bold
3322 3326 -logplay|lp\SpecialChar ~
3323 3327 <name>
3324 3328 \series default
3325 3329 :
3326 3330 \family default
3327 3331 you can replay a previous log.
3328 3332 For restoring a session as close as possible to the state you left it in,
3329 3333 use this option (don't just run the logfile).
3330 3334 With
3331 3335 \family typewriter
3332 3336 -logplay
3333 3337 \family default
3334 3338 , IPython will try to reconstruct the previous working environment in full,
3335 3339 not just execute the commands in the logfile.
3336 3340 \layout List
3337 3341 \labelwidthstring 00.00.0000
3338 3342
3339 3343 \SpecialChar ~
3340 3344 When a session is restored, logging is automatically turned on again with
3341 3345 the name of the logfile it was invoked with (it is read from the log header).
3342 3346 So once you've turned logging on for a session, you can quit IPython and
3343 3347 reload it as many times as you want and it will continue to log its history
3344 3348 and restore from the beginning every time.
3345 3349 \layout List
3346 3350 \labelwidthstring 00.00.0000
3347 3351
3348 3352 \SpecialChar ~
3349 3353 Caveats: there are limitations in this option.
3350 3354 The history variables
3351 3355 \family typewriter
3352 3356 _i*
3353 3357 \family default
3354 3358 ,
3355 3359 \family typewriter
3356 3360 _*
3357 3361 \family default
3358 3362 and
3359 3363 \family typewriter
3360 3364 _dh
3361 3365 \family default
3362 3366 don't get restored properly.
3363 3367 In the future we will try to implement full session saving by writing and
3364 3368 retrieving a 'snapshot' of the memory state of IPython.
3365 3369 But our first attempts failed because of inherent limitations of Python's
3366 3370 Pickle module, so this may have to wait.
3367 3371 \layout List
3368 3372 \labelwidthstring 00.00.0000
3369 3373
3370 3374
3371 3375 \family typewriter
3372 3376 \series bold
3373 3377 -[no]messages
3374 3378 \series default
3375 3379 :
3376 3380 \family default
3377 3381 Print messages which IPython collects about its startup process (default
3378 3382 on).
3379 3383 \layout List
3380 3384 \labelwidthstring 00.00.0000
3381 3385
3382 3386
3383 3387 \family typewriter
3384 3388 \series bold
3385 3389 -[no]pdb
3386 3390 \family default
3387 3391 \series default
3388 3392 : Automatically call the pdb debugger after every uncaught exception.
3389 3393 If you are used to debugging using pdb, this puts you automatically inside
3390 3394 of it after any call (either in IPython or in code called by it) which
3391 3395 triggers an exception which goes uncaught.
3392 3396 \layout List
3393 3397 \labelwidthstring 00.00.0000
3394 3398
3395 3399
3396 3400 \family typewriter
3397 3401 \series bold
3398 3402 -[no]pprint
3399 3403 \series default
3400 3404 :
3401 3405 \family default
3402 3406 ipython can optionally use the pprint (pretty printer) module for displaying
3403 3407 results.
3404 3408 pprint tends to give a nicer display of nested data structures.
3405 3409 If you like it, you can turn it on permanently in your config file (default
3406 3410 off).
3407 3411 \layout List
3408 3412 \labelwidthstring 00.00.0000
3409 3413
3410 3414
3411 3415 \family typewriter
3412 3416 \series bold
3413 3417 -profile|p <name>
3414 3418 \series default
3415 3419 :
3416 3420 \family default
3417 3421 assume that your config file is
3418 3422 \family typewriter
3419 3423 ipythonrc-<name>
3420 3424 \family default
3421 3425 (looks in current dir first, then in
3422 3426 \family typewriter
3423 3427 IPYTHONDIR
3424 3428 \family default
3425 3429 ).
3426 3430 This is a quick way to keep and load multiple config files for different
3427 3431 tasks, especially if you use the include option of config files.
3428 3432 You can keep a basic
3429 3433 \family typewriter
3430 3434 IPYTHONDIR/ipythonrc
3431 3435 \family default
3432 3436 file and then have other 'profiles' which include this one and load extra
3433 3437 things for particular tasks.
3434 3438 For example:
3435 3439 \layout List
3436 3440 \labelwidthstring 00.00.0000
3437 3441
3438 3442
3439 3443 \family typewriter
3440 3444 \SpecialChar ~
3441 3445
3442 3446 \family default
3443 3447 1.
3444 3448
3445 3449 \family typewriter
3446 3450 $HOME/.ipython/ipythonrc
3447 3451 \family default
3448 3452 : load basic things you always want.
3449 3453 \layout List
3450 3454 \labelwidthstring 00.00.0000
3451 3455
3452 3456
3453 3457 \family typewriter
3454 3458 \SpecialChar ~
3455 3459
3456 3460 \family default
3457 3461 2.
3458 3462
3459 3463 \family typewriter
3460 3464 $HOME/.ipython/ipythonrc-math
3461 3465 \family default
3462 3466 : load (1) and basic math-related modules.
3463 3467
3464 3468 \layout List
3465 3469 \labelwidthstring 00.00.0000
3466 3470
3467 3471
3468 3472 \family typewriter
3469 3473 \SpecialChar ~
3470 3474
3471 3475 \family default
3472 3476 3.
3473 3477
3474 3478 \family typewriter
3475 3479 $HOME/.ipython/ipythonrc-numeric
3476 3480 \family default
3477 3481 : load (1) and Numeric and plotting modules.
3478 3482 \layout List
3479 3483 \labelwidthstring 00.00.0000
3480 3484
3481 3485 \SpecialChar ~
3482 3486 Since it is possible to create an endless loop by having circular file
3483 3487 inclusions, IPython will stop if it reaches 15 recursive inclusions.
3484 3488 \layout List
3485 3489 \labelwidthstring 00.00.0000
3486 3490
3487 3491
3488 3492 \family typewriter
3489 3493 \series bold
3490 3494 -prompt_in1|pi1\SpecialChar ~
3491 3495 <string>:
3492 3496 \family default
3493 3497 \series default
3494 3498 Specify the string used for input prompts.
3495 3499 Note that if you are using numbered prompts, the number is represented
3496 3500 with a '
3497 3501 \backslash
3498 3502 #' in the string.
3499 3503 Don't forget to quote strings with spaces embedded in them.
3500 3504 Default: '
3501 3505 \family typewriter
3502 3506 In\SpecialChar ~
3503 3507 [
3504 3508 \backslash
3505 3509 #]:
3506 3510 \family default
3507 3511 '.
3508 3512 Sec.\SpecialChar ~
3509 3513
3510 3514 \begin_inset LatexCommand \ref{sec:prompts}
3511 3515
3512 3516 \end_inset
3513 3517
3514 3518 discusses in detail all the available escapes to customize your prompts.
3515 3519 \layout List
3516 3520 \labelwidthstring 00.00.0000
3517 3521
3518 3522
3519 3523 \family typewriter
3520 3524 \series bold
3521 3525 -prompt_in2|pi2\SpecialChar ~
3522 3526 <string>:
3523 3527 \family default
3524 3528 \series default
3525 3529 Similar to the previous option, but used for the continuation prompts.
3526 3530 The special sequence '
3527 3531 \family typewriter
3528 3532
3529 3533 \backslash
3530 3534 D
3531 3535 \family default
3532 3536 ' is similar to '
3533 3537 \family typewriter
3534 3538
3535 3539 \backslash
3536 3540 #
3537 3541 \family default
3538 3542 ', but with all digits replaced dots (so you can have your continuation
3539 3543 prompt aligned with your input prompt).
3540 3544 Default: '
3541 3545 \family typewriter
3542 3546 \SpecialChar ~
3543 3547 \SpecialChar ~
3544 3548 \SpecialChar ~
3545 3549 .
3546 3550 \backslash
3547 3551 D.:
3548 3552 \family default
3549 3553 ' (note three spaces at the start for alignment with '
3550 3554 \family typewriter
3551 3555 In\SpecialChar ~
3552 3556 [
3553 3557 \backslash
3554 3558 #]
3555 3559 \family default
3556 3560 ').
3557 3561 \layout List
3558 3562 \labelwidthstring 00.00.0000
3559 3563
3560 3564
3561 3565 \family typewriter
3562 3566 \series bold
3563 3567 -prompt_out|po\SpecialChar ~
3564 3568 <string>:
3565 3569 \family default
3566 3570 \series default
3567 3571 String used for output prompts, also uses numbers like
3568 3572 \family typewriter
3569 3573 prompt_in1
3570 3574 \family default
3571 3575 .
3572 3576 Default: '
3573 3577 \family typewriter
3574 3578 Out[
3575 3579 \backslash
3576 3580 #]:
3577 3581 \family default
3578 3582 '
3579 3583 \layout List
3580 3584 \labelwidthstring 00.00.0000
3581 3585
3582 3586
3583 3587 \family typewriter
3584 3588 \series bold
3585 3589 -quick
3586 3590 \family default
3587 3591 \series default
3588 3592 : start in bare bones mode (no config file loaded).
3589 3593 \layout List
3590 3594 \labelwidthstring 00.00.0000
3591 3595
3592 3596
3593 3597 \family typewriter
3594 3598 \series bold
3595 3599 -rcfile\SpecialChar ~
3596 3600 <name>
3597 3601 \series default
3598 3602 :
3599 3603 \family default
3600 3604 name of your IPython resource configuration file.
3601 3605 Normally IPython loads ipythonrc (from current directory) or
3602 3606 \family typewriter
3603 3607 IPYTHONDIR/ipythonrc
3604 3608 \family default
3605 3609 .
3606 3610 \layout List
3607 3611 \labelwidthstring 00.00.0000
3608 3612
3609 3613 \SpecialChar ~
3610 3614 If the loading of your config file fails, IPython starts with a bare bones
3611 3615 configuration (no modules loaded at all).
3612 3616 \layout List
3613 3617 \labelwidthstring 00.00.0000
3614 3618
3615 3619
3616 3620 \family typewriter
3617 3621 \series bold
3618 3622 -[no]readline
3619 3623 \family default
3620 3624 \series default
3621 3625 : use the readline library, which is needed to support name completion and
3622 3626 command history, among other things.
3623 3627 It is enabled by default, but may cause problems for users of X/Emacs in
3624 3628 Python comint or shell buffers.
3625 3629 \layout List
3626 3630 \labelwidthstring 00.00.0000
3627 3631
3628 3632 \SpecialChar ~
3629 3633 Note that X/Emacs 'eterm' buffers (opened with
3630 3634 \family typewriter
3631 3635 M-x\SpecialChar ~
3632 3636 term
3633 3637 \family default
3634 3638 ) support IPython's readline and syntax coloring fine, only 'emacs' (
3635 3639 \family typewriter
3636 3640 M-x\SpecialChar ~
3637 3641 shell
3638 3642 \family default
3639 3643 and
3640 3644 \family typewriter
3641 3645 C-c\SpecialChar ~
3642 3646 !
3643 3647 \family default
3644 3648 ) buffers do not.
3645 3649 \layout List
3646 3650 \labelwidthstring 00.00.0000
3647 3651
3648 3652
3649 3653 \family typewriter
3650 3654 \series bold
3651 3655 -screen_length|sl\SpecialChar ~
3652 3656 <n>
3653 3657 \series default
3654 3658 :
3655 3659 \family default
3656 3660 number of lines of your screen.
3657 3661 This is used to control printing of very long strings.
3658 3662 Strings longer than this number of lines will be sent through a pager instead
3659 3663 of directly printed.
3660 3664 \layout List
3661 3665 \labelwidthstring 00.00.0000
3662 3666
3663 3667 \SpecialChar ~
3664 3668 The default value for this is 0, which means IPython will auto-detect your
3665 3669 screen size every time it needs to print certain potentially long strings
3666 3670 (this doesn't change the behavior of the 'print' keyword, it's only triggered
3667 3671 internally).
3668 3672 If for some reason this isn't working well (it needs curses support), specify
3669 3673 it yourself.
3670 3674 Otherwise don't change the default.
3671 3675 \layout List
3672 3676 \labelwidthstring 00.00.0000
3673 3677
3674 3678
3675 3679 \family typewriter
3676 3680 \series bold
3677 3681 -separate_in|si\SpecialChar ~
3678 3682 <string>
3679 3683 \series default
3680 3684 :
3681 3685 \family default
3682 3686 separator before input prompts.
3683 3687 Default: '
3684 3688 \family typewriter
3685 3689
3686 3690 \backslash
3687 3691 n
3688 3692 \family default
3689 3693 '
3690 3694 \layout List
3691 3695 \labelwidthstring 00.00.0000
3692 3696
3693 3697
3694 3698 \family typewriter
3695 3699 \series bold
3696 3700 -separate_out|so\SpecialChar ~
3697 3701 <string>
3698 3702 \family default
3699 3703 \series default
3700 3704 : separator before output prompts.
3701 3705 Default: nothing.
3702 3706 \layout List
3703 3707 \labelwidthstring 00.00.0000
3704 3708
3705 3709
3706 3710 \family typewriter
3707 3711 \series bold
3708 3712 -separate_out2|so2\SpecialChar ~
3709 3713 <string>
3710 3714 \series default
3711 3715 :
3712 3716 \family default
3713 3717 separator after output prompts.
3714 3718 Default: nothing.
3715 3719 \layout List
3716 3720 \labelwidthstring 00.00.0000
3717 3721
3718 3722 \SpecialChar ~
3719 3723 For these three options, use the value 0 to specify no separator.
3720 3724 \layout List
3721 3725 \labelwidthstring 00.00.0000
3722 3726
3723 3727
3724 3728 \family typewriter
3725 3729 \series bold
3726 3730 -nosep
3727 3731 \series default
3728 3732 :
3729 3733 \family default
3730 3734 shorthand for
3731 3735 \family typewriter
3732 3736 '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
3733 3737 \family default
3734 3738 .
3735 3739 Simply removes all input/output separators.
3736 3740 \layout List
3737 3741 \labelwidthstring 00.00.0000
3738 3742
3739 3743
3740 3744 \family typewriter
3741 3745 \series bold
3742 3746 -upgrade
3743 3747 \family default
3744 3748 \series default
3745 3749 : allows you to upgrade your
3746 3750 \family typewriter
3747 3751 IPYTHONDIR
3748 3752 \family default
3749 3753 configuration when you install a new version of IPython.
3750 3754 Since new versions may include new command line options or example files,
3751 3755 this copies updated ipythonrc-type files.
3752 3756 However, it backs up (with a
3753 3757 \family typewriter
3754 3758 .old
3755 3759 \family default
3756 3760 extension) all files which it overwrites so that you can merge back any
3757 3761 customizations you might have in your personal files.
3758 3762 \layout List
3759 3763 \labelwidthstring 00.00.0000
3760 3764
3761 3765
3762 3766 \family typewriter
3763 3767 \series bold
3764 3768 -Version
3765 3769 \series default
3766 3770 :
3767 3771 \family default
3768 3772 print version information and exit.
3769 3773 \layout List
3770 3774 \labelwidthstring 00.00.0000
3771 3775
3772 3776
3773 3777 \family typewriter
3774 3778 \series bold
3775 3779 -wxversion\SpecialChar ~
3776 3780 <string>:
3777 3781 \family default
3778 3782 \series default
3779 3783 Select a specific version of wxPython (used in conjunction with
3780 3784 \family typewriter
3781 3785 -wthread
3782 3786 \family default
3783 3787 ).
3784 3788 Requires the wxversion module, part of recent wxPython distributions
3785 3789 \layout List
3786 3790 \labelwidthstring 00.00.0000
3787 3791
3788 3792
3789 3793 \family typewriter
3790 3794 \series bold
3791 3795 -xmode\SpecialChar ~
3792 3796 <modename>
3793 3797 \series default
3794 3798 :
3795 3799 \family default
3796 3800 Mode for exception reporting.
3797 3801 \layout List
3798 3802 \labelwidthstring 00.00.0000
3799 3803
3800 3804 \SpecialChar ~
3801 3805 Valid modes: Plain, Context and Verbose.
3802 3806 \layout List
3803 3807 \labelwidthstring 00.00.0000
3804 3808
3805 3809 \SpecialChar ~
3806 3810 Plain: similar to python's normal traceback printing.
3807 3811 \layout List
3808 3812 \labelwidthstring 00.00.0000
3809 3813
3810 3814 \SpecialChar ~
3811 3815 Context: prints 5 lines of context source code around each line in the
3812 3816 traceback.
3813 3817 \layout List
3814 3818 \labelwidthstring 00.00.0000
3815 3819
3816 3820 \SpecialChar ~
3817 3821 Verbose: similar to Context, but additionally prints the variables currently
3818 3822 visible where the exception happened (shortening their strings if too long).
3819 3823 This can potentially be very slow, if you happen to have a huge data structure
3820 3824 whose string representation is complex to compute.
3821 3825 Your computer may appear to freeze for a while with cpu usage at 100%.
3822 3826 If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
3823 3827 it more than once).
3824 3828 \layout Section
3825 3829
3826 3830 Interactive use
3827 3831 \layout Standard
3828 3832
3829 3833
3830 3834 \series bold
3831 3835 Warning
3832 3836 \series default
3833 3837 : IPython relies on the existence of a global variable called
3834 3838 \family typewriter
3835 3839 __IP
3836 3840 \family default
3837 3841 which controls the shell itself.
3838 3842 If you redefine
3839 3843 \family typewriter
3840 3844 __IP
3841 3845 \family default
3842 3846 to anything, bizarre behavior will quickly occur.
3843 3847 \layout Standard
3844 3848
3845 3849 Other than the above warning, IPython is meant to work as a drop-in replacement
3846 3850 for the standard interactive interpreter.
3847 3851 As such, any code which is valid python should execute normally under IPython
3848 3852 (cases where this is not true should be reported as bugs).
3849 3853 It does, however, offer many features which are not available at a standard
3850 3854 python prompt.
3851 3855 What follows is a list of these.
3852 3856 \layout Subsection
3853 3857
3854 3858 Caution for Windows users
3855 3859 \layout Standard
3856 3860
3857 3861 Windows, unfortunately, uses the `
3858 3862 \family typewriter
3859 3863
3860 3864 \backslash
3861 3865
3862 3866 \family default
3863 3867 ' character as a path separator.
3864 3868 This is a terrible choice, because `
3865 3869 \family typewriter
3866 3870
3867 3871 \backslash
3868 3872
3869 3873 \family default
3870 3874 ' also represents the escape character in most modern programming languages,
3871 3875 including Python.
3872 3876 For this reason, issuing many of the commands discussed below (especially
3873 3877 magics which affect the filesystem) with `
3874 3878 \family typewriter
3875 3879
3876 3880 \backslash
3877 3881
3878 3882 \family default
3879 3883 ' in them will cause strange errors.
3880 3884 \layout Standard
3881 3885
3882 3886 A partial solution is to use instead the `
3883 3887 \family typewriter
3884 3888 /
3885 3889 \family default
3886 3890 ' character as a path separator, which Windows recognizes in
3887 3891 \emph on
3888 3892 most
3889 3893 \emph default
3890 3894 situations.
3891 3895 However, in Windows commands `
3892 3896 \family typewriter
3893 3897 /
3894 3898 \family default
3895 3899 ' flags options, so you can not use it for the root directory.
3896 3900 This means that paths beginning at the root must be typed in a contrived
3897 3901 manner like:
3898 3902 \newline
3899 3903
3900 3904 \family typewriter
3901 3905 %copy
3902 3906 \backslash
3903 3907 opt/foo/bar.txt
3904 3908 \backslash
3905 3909 tmp
3906 3910 \layout Standard
3907 3911
3908 3912 There is no sensible thing IPython can do to truly work around this flaw
3909 3913 in Windows
3910 3914 \begin_inset Foot
3911 3915 collapsed true
3912 3916
3913 3917 \layout Standard
3914 3918
3915 3919 If anyone comes up with a
3916 3920 \emph on
3917 3921 clean
3918 3922 \emph default
3919 3923 solution which works consistently and does not negatively impact other
3920 3924 platforms at all, I'll gladly accept a patch.
3921 3925 \end_inset
3922 3926
3923 3927 .
3924 3928 \layout Subsection
3925 3929
3926 3930
3927 3931 \begin_inset LatexCommand \label{sec:magic}
3928 3932
3929 3933 \end_inset
3930 3934
3931 3935 Magic command system
3932 3936 \layout Standard
3933 3937
3934 3938 IPython will treat any line whose first character is a
3935 3939 \family typewriter
3936 3940 %
3937 3941 \family default
3938 3942 as a special call to a 'magic' function.
3939 3943 These allow you to control the behavior of IPython itself, plus a lot of
3940 3944 system-type features.
3941 3945 They are all prefixed with a
3942 3946 \family typewriter
3943 3947 %
3944 3948 \family default
3945 3949 character, but parameters are given without parentheses or quotes.
3946 3950 \layout Standard
3947 3951
3948 3952 Example: typing
3949 3953 \family typewriter
3950 3954 '%cd mydir'
3951 3955 \family default
3952 3956 (without the quotes) changes you working directory to
3953 3957 \family typewriter
3954 3958 'mydir'
3955 3959 \family default
3956 3960 , if it exists.
3957 3961 \layout Standard
3958 3962
3959 3963 If you have 'automagic' enabled (in your
3960 3964 \family typewriter
3961 3965 ipythonrc
3962 3966 \family default
3963 3967 file, via the command line option
3964 3968 \family typewriter
3965 3969 -automagic
3966 3970 \family default
3967 3971 or with the
3968 3972 \family typewriter
3969 3973 %automagic
3970 3974 \family default
3971 3975 function), you don't need to type in the
3972 3976 \family typewriter
3973 3977 %
3974 3978 \family default
3975 3979 explicitly.
3976 3980 IPython will scan its internal list of magic functions and call one if
3977 3981 it exists.
3978 3982 With automagic on you can then just type '
3979 3983 \family typewriter
3980 3984 cd mydir
3981 3985 \family default
3982 3986 ' to go to directory '
3983 3987 \family typewriter
3984 3988 mydir
3985 3989 \family default
3986 3990 '.
3987 3991 The automagic system has the lowest possible precedence in name searches,
3988 3992 so defining an identifier with the same name as an existing magic function
3989 3993 will shadow it for automagic use.
3990 3994 You can still access the shadowed magic function by explicitly using the
3991 3995
3992 3996 \family typewriter
3993 3997 %
3994 3998 \family default
3995 3999 character at the beginning of the line.
3996 4000 \layout Standard
3997 4001
3998 4002 An example (with automagic on) should clarify all this:
3999 4003 \layout LyX-Code
4000 4004
4001 4005 In [1]: cd ipython # %cd is called by automagic
4002 4006 \layout LyX-Code
4003 4007
4004 4008 /home/fperez/ipython
4005 4009 \layout LyX-Code
4006 4010
4007 4011 In [2]: cd=1 # now cd is just a variable
4008 4012 \layout LyX-Code
4009 4013
4010 4014 In [3]: cd ..
4011 4015 # and doesn't work as a function anymore
4012 4016 \layout LyX-Code
4013 4017
4014 4018 ------------------------------------------------------------
4015 4019 \layout LyX-Code
4016 4020
4017 4021 File "<console>", line 1
4018 4022 \layout LyX-Code
4019 4023
4020 4024 cd ..
4021 4025 \layout LyX-Code
4022 4026
4023 4027 ^
4024 4028 \layout LyX-Code
4025 4029
4026 4030 SyntaxError: invalid syntax
4027 4031 \layout LyX-Code
4028 4032
4029 4033 \layout LyX-Code
4030 4034
4031 4035 In [4]: %cd ..
4032 4036 # but %cd always works
4033 4037 \layout LyX-Code
4034 4038
4035 4039 /home/fperez
4036 4040 \layout LyX-Code
4037 4041
4038 4042 In [5]: del cd # if you remove the cd variable
4039 4043 \layout LyX-Code
4040 4044
4041 4045 In [6]: cd ipython # automagic can work again
4042 4046 \layout LyX-Code
4043 4047
4044 4048 /home/fperez/ipython
4045 4049 \layout Standard
4046 4050
4047 4051 You can define your own magic functions to extend the system.
4048 4052 The following is a snippet of code which shows how to do it.
4049 4053 It is provided as file
4050 4054 \family typewriter
4051 4055 example-magic.py
4052 4056 \family default
4053 4057 in the examples directory:
4054 4058 \layout Standard
4055 4059
4056 4060
4057 4061 \begin_inset ERT
4058 4062 status Open
4059 4063
4060 4064 \layout Standard
4061 4065
4062 4066 \backslash
4063 4067 codelist{examples/example-magic.py}
4064 4068 \end_inset
4065 4069
4066 4070
4067 4071 \layout Standard
4068 4072
4069 4073 You can also define your own aliased names for magic functions.
4070 4074 In your
4071 4075 \family typewriter
4072 4076 ipythonrc
4073 4077 \family default
4074 4078 file, placing a line like:
4075 4079 \layout Standard
4076 4080
4077 4081
4078 4082 \family typewriter
4079 4083 execute __IP.magic_cl = __IP.magic_clear
4080 4084 \layout Standard
4081 4085
4082 4086 will define
4083 4087 \family typewriter
4084 4088 %cl
4085 4089 \family default
4086 4090 as a new name for
4087 4091 \family typewriter
4088 4092 %clear
4089 4093 \family default
4090 4094 .
4091 4095 \layout Standard
4092 4096
4093 4097 Type
4094 4098 \family typewriter
4095 4099 %magic
4096 4100 \family default
4097 4101 for more information, including a list of all available magic functions
4098 4102 at any time and their docstrings.
4099 4103 You can also type
4100 4104 \family typewriter
4101 4105 %magic_function_name?
4102 4106 \family default
4103 4107 (see sec.
4104 4108
4105 4109 \begin_inset LatexCommand \ref{sec:dyn-object-info}
4106 4110
4107 4111 \end_inset
4108 4112
4109 4113 for information on the
4110 4114 \family typewriter
4111 4115 '?'
4112 4116 \family default
4113 4117 system) to get information about any particular magic function you are
4114 4118 interested in.
4115 4119 \layout Subsubsection
4116 4120
4117 4121 Magic commands
4118 4122 \layout Standard
4119 4123
4120 4124 The rest of this section is automatically generated for each release from
4121 4125 the docstrings in the IPython code.
4122 4126 Therefore the formatting is somewhat minimal, but this method has the advantage
4123 4127 of having information always in sync with the code.
4124 4128 \layout Standard
4125 4129
4126 4130 A list of all the magic commands available in IPython's
4127 4131 \emph on
4128 4132 default
4129 4133 \emph default
4130 4134 installation follows.
4131 4135 This is similar to what you'll see by simply typing
4132 4136 \family typewriter
4133 4137 %magic
4134 4138 \family default
4135 4139 at the prompt, but that will also give you information about magic commands
4136 4140 you may have added as part of your personal customizations.
4137 4141 \layout Standard
4138 4142
4139 4143
4140 4144 \begin_inset Include \input{magic.tex}
4141 4145 preview false
4142 4146
4143 4147 \end_inset
4144 4148
4145 4149
4146 4150 \layout Subsection
4147 4151
4148 4152 Access to the standard Python help
4149 4153 \layout Standard
4150 4154
4151 4155 As of Python 2.1, a help system is available with access to object docstrings
4152 4156 and the Python manuals.
4153 4157 Simply type
4154 4158 \family typewriter
4155 4159 'help'
4156 4160 \family default
4157 4161 (no quotes) to access it.
4158 4162 You can also type
4159 4163 \family typewriter
4160 4164 help(object)
4161 4165 \family default
4162 4166 to obtain information about a given object, and
4163 4167 \family typewriter
4164 4168 help('keyword')
4165 4169 \family default
4166 4170 for information on a keyword.
4167 4171 As noted in sec.
4168 4172
4169 4173 \begin_inset LatexCommand \ref{sec:help-access}
4170 4174
4171 4175 \end_inset
4172 4176
4173 4177 , you need to properly configure your environment variable
4174 4178 \family typewriter
4175 4179 PYTHONDOCS
4176 4180 \family default
4177 4181 for this feature to work correctly.
4178 4182 \layout Subsection
4179 4183
4180 4184
4181 4185 \begin_inset LatexCommand \label{sec:dyn-object-info}
4182 4186
4183 4187 \end_inset
4184 4188
4185 4189 Dynamic object information
4186 4190 \layout Standard
4187 4191
4188 4192 Typing
4189 4193 \family typewriter
4190 4194 ?word
4191 4195 \family default
4192 4196 or
4193 4197 \family typewriter
4194 4198 word?
4195 4199 \family default
4196 4200 prints detailed information about an object.
4197 4201 If certain strings in the object are too long (docstrings, code, etc.) they
4198 4202 get snipped in the center for brevity.
4199 4203 This system gives access variable types and values, full source code for
4200 4204 any object (if available), function prototypes and other useful information.
4201 4205 \layout Standard
4202 4206
4203 4207 Typing
4204 4208 \family typewriter
4205 4209 ??word
4206 4210 \family default
4207 4211 or
4208 4212 \family typewriter
4209 4213 word??
4210 4214 \family default
4211 4215 gives access to the full information without snipping long strings.
4212 4216 Long strings are sent to the screen through the
4213 4217 \family typewriter
4214 4218 less
4215 4219 \family default
4216 4220 pager if longer than the screen and printed otherwise.
4217 4221 On systems lacking the
4218 4222 \family typewriter
4219 4223 less
4220 4224 \family default
4221 4225 command, IPython uses a very basic internal pager.
4222 4226 \layout Standard
4223 4227
4224 4228 The following magic functions are particularly useful for gathering information
4225 4229 about your working environment.
4226 4230 You can get more details by typing
4227 4231 \family typewriter
4228 4232 %magic
4229 4233 \family default
4230 4234 or querying them individually (use
4231 4235 \family typewriter
4232 4236 %function_name?
4233 4237 \family default
4234 4238 with or without the
4235 4239 \family typewriter
4236 4240 %
4237 4241 \family default
4238 4242 ), this is just a summary:
4239 4243 \layout List
4240 4244 \labelwidthstring 00.00.0000
4241 4245
4242 4246
4243 4247 \family typewriter
4244 4248 \series bold
4245 4249 %pdoc\SpecialChar ~
4246 4250 <object>
4247 4251 \family default
4248 4252 \series default
4249 4253 : Print (or run through a pager if too long) the docstring for an object.
4250 4254 If the given object is a class, it will print both the class and the constructo
4251 4255 r docstrings.
4252 4256 \layout List
4253 4257 \labelwidthstring 00.00.0000
4254 4258
4255 4259
4256 4260 \family typewriter
4257 4261 \series bold
4258 4262 %pdef\SpecialChar ~
4259 4263 <object>
4260 4264 \family default
4261 4265 \series default
4262 4266 : Print the definition header for any callable object.
4263 4267 If the object is a class, print the constructor information.
4264 4268 \layout List
4265 4269 \labelwidthstring 00.00.0000
4266 4270
4267 4271
4268 4272 \family typewriter
4269 4273 \series bold
4270 4274 %psource\SpecialChar ~
4271 4275 <object>
4272 4276 \family default
4273 4277 \series default
4274 4278 : Print (or run through a pager if too long) the source code for an object.
4275 4279 \layout List
4276 4280 \labelwidthstring 00.00.0000
4277 4281
4278 4282
4279 4283 \family typewriter
4280 4284 \series bold
4281 4285 %pfile\SpecialChar ~
4282 4286 <object>
4283 4287 \family default
4284 4288 \series default
4285 4289 : Show the entire source file where an object was defined via a pager, opening
4286 4290 it at the line where the object definition begins.
4287 4291 \layout List
4288 4292 \labelwidthstring 00.00.0000
4289 4293
4290 4294
4291 4295 \family typewriter
4292 4296 \series bold
4293 4297 %who/%whos
4294 4298 \family default
4295 4299 \series default
4296 4300 : These functions give information about identifiers you have defined interactiv
4297 4301 ely (not things you loaded or defined in your configuration files).
4298 4302
4299 4303 \family typewriter
4300 4304 %who
4301 4305 \family default
4302 4306 just prints a list of identifiers and
4303 4307 \family typewriter
4304 4308 %whos
4305 4309 \family default
4306 4310 prints a table with some basic details about each identifier.
4307 4311 \layout Standard
4308 4312
4309 4313 Note that the dynamic object information functions (
4310 4314 \family typewriter
4311 4315 ?/??, %pdoc, %pfile, %pdef, %psource
4312 4316 \family default
4313 4317 ) give you access to documentation even on things which are not really defined
4314 4318 as separate identifiers.
4315 4319 Try for example typing
4316 4320 \family typewriter
4317 4321 {}.get?
4318 4322 \family default
4319 4323 or after doing
4320 4324 \family typewriter
4321 4325 import os
4322 4326 \family default
4323 4327 , type
4324 4328 \family typewriter
4325 4329 os.path.abspath??
4326 4330 \family default
4327 4331 .
4328 4332 \layout Subsection
4329 4333
4330 4334
4331 4335 \begin_inset LatexCommand \label{sec:readline}
4332 4336
4333 4337 \end_inset
4334 4338
4335 4339 Readline-based features
4336 4340 \layout Standard
4337 4341
4338 4342 These features require the GNU readline library, so they won't work if your
4339 4343 Python installation lacks readline support.
4340 4344 We will first describe the default behavior IPython uses, and then how
4341 4345 to change it to suit your preferences.
4342 4346 \layout Subsubsection
4343 4347
4344 4348 Command line completion
4345 4349 \layout Standard
4346 4350
4347 4351 At any time, hitting TAB will complete any available python commands or
4348 4352 variable names, and show you a list of the possible completions if there's
4349 4353 no unambiguous one.
4350 4354 It will also complete filenames in the current directory if no python names
4351 4355 match what you've typed so far.
4352 4356 \layout Subsubsection
4353 4357
4354 4358 Search command history
4355 4359 \layout Standard
4356 4360
4357 4361 IPython provides two ways for searching through previous input and thus
4358 4362 reduce the need for repetitive typing:
4359 4363 \layout Enumerate
4360 4364
4361 4365 Start typing, and then use
4362 4366 \family typewriter
4363 4367 Ctrl-p
4364 4368 \family default
4365 4369 (previous,up) and
4366 4370 \family typewriter
4367 4371 Ctrl-n
4368 4372 \family default
4369 4373 (next,down) to search through only the history items that match what you've
4370 4374 typed so far.
4371 4375 If you use
4372 4376 \family typewriter
4373 4377 Ctrl-p/Ctrl-n
4374 4378 \family default
4375 4379 at a blank prompt, they just behave like normal arrow keys.
4376 4380 \layout Enumerate
4377 4381
4378 4382 Hit
4379 4383 \family typewriter
4380 4384 Ctrl-r
4381 4385 \family default
4382 4386 : opens a search prompt.
4383 4387 Begin typing and the system searches your history for lines that contain
4384 4388 what you've typed so far, completing as much as it can.
4385 4389 \layout Subsubsection
4386 4390
4387 4391 Persistent command history across sessions
4388 4392 \layout Standard
4389 4393
4390 4394 IPython will save your input history when it leaves and reload it next time
4391 4395 you restart it.
4392 4396 By default, the history file is named
4393 4397 \family typewriter
4394 4398 $IPYTHONDIR/history
4395 4399 \family default
4396 4400 , but if you've loaded a named profile, '
4397 4401 \family typewriter
4398 4402 -PROFILE_NAME
4399 4403 \family default
4400 4404 ' is appended to the name.
4401 4405 This allows you to keep separate histories related to various tasks: commands
4402 4406 related to numerical work will not be clobbered by a system shell history,
4403 4407 for example.
4404 4408 \layout Subsubsection
4405 4409
4406 4410 Autoindent
4407 4411 \layout Standard
4408 4412
4409 4413 IPython can recognize lines ending in ':' and indent the next line, while
4410 4414 also un-indenting automatically after 'raise' or 'return'.
4411 4415
4412 4416 \layout Standard
4413 4417
4414 4418 This feature uses the readline library, so it will honor your
4415 4419 \family typewriter
4416 4420 ~/.inputrc
4417 4421 \family default
4418 4422 configuration (or whatever file your
4419 4423 \family typewriter
4420 4424 INPUTRC
4421 4425 \family default
4422 4426 variable points to).
4423 4427 Adding the following lines to your
4424 4428 \family typewriter
4425 4429 .inputrc
4426 4430 \family default
4427 4431 file can make indenting/unindenting more convenient (
4428 4432 \family typewriter
4429 4433 M-i
4430 4434 \family default
4431 4435 indents,
4432 4436 \family typewriter
4433 4437 M-u
4434 4438 \family default
4435 4439 unindents):
4436 4440 \layout Standard
4437 4441
4438 4442
4439 4443 \family typewriter
4440 4444 $if Python
4441 4445 \newline
4442 4446 "
4443 4447 \backslash
4444 4448 M-i": "\SpecialChar ~
4445 4449 \SpecialChar ~
4446 4450 \SpecialChar ~
4447 4451 \SpecialChar ~
4448 4452 "
4449 4453 \newline
4450 4454 "
4451 4455 \backslash
4452 4456 M-u": "
4453 4457 \backslash
4454 4458 d
4455 4459 \backslash
4456 4460 d
4457 4461 \backslash
4458 4462 d
4459 4463 \backslash
4460 4464 d"
4461 4465 \newline
4462 4466 $endif
4463 4467 \layout Standard
4464 4468
4465 4469 Note that there are 4 spaces between the quote marks after
4466 4470 \family typewriter
4467 4471 "M-i"
4468 4472 \family default
4469 4473 above.
4470 4474 \layout Standard
4471 4475
4472 4476
4473 4477 \series bold
4474 4478 Warning:
4475 4479 \series default
4476 4480 this feature is ON by default, but it can cause problems with the pasting
4477 4481 of multi-line indented code (the pasted code gets re-indented on each line).
4478 4482 A magic function
4479 4483 \family typewriter
4480 4484 %autoindent
4481 4485 \family default
4482 4486 allows you to toggle it on/off at runtime.
4483 4487 You can also disable it permanently on in your
4484 4488 \family typewriter
4485 4489 ipythonrc
4486 4490 \family default
4487 4491 file (set
4488 4492 \family typewriter
4489 4493 autoindent 0
4490 4494 \family default
4491 4495 ).
4492 4496 \layout Subsubsection
4493 4497
4494 4498 Customizing readline behavior
4495 4499 \layout Standard
4496 4500
4497 4501 All these features are based on the GNU readline library, which has an extremely
4498 4502 customizable interface.
4499 4503 Normally, readline is configured via a file which defines the behavior
4500 4504 of the library; the details of the syntax for this can be found in the
4501 4505 readline documentation available with your system or on the Internet.
4502 4506 IPython doesn't read this file (if it exists) directly, but it does support
4503 4507 passing to readline valid options via a simple interface.
4504 4508 In brief, you can customize readline by setting the following options in
4505 4509 your
4506 4510 \family typewriter
4507 4511 ipythonrc
4508 4512 \family default
4509 4513 configuration file (note that these options can
4510 4514 \emph on
4511 4515 not
4512 4516 \emph default
4513 4517 be specified at the command line):
4514 4518 \layout List
4515 4519 \labelwidthstring 00.00.0000
4516 4520
4517 4521
4518 4522 \family typewriter
4519 4523 \series bold
4520 4524 readline_parse_and_bind:
4521 4525 \family default
4522 4526 \series default
4523 4527 this option can appear as many times as you want, each time defining a
4524 4528 string to be executed via a
4525 4529 \family typewriter
4526 4530 readline.parse_and_bind()
4527 4531 \family default
4528 4532 command.
4529 4533 The syntax for valid commands of this kind can be found by reading the
4530 4534 documentation for the GNU readline library, as these commands are of the
4531 4535 kind which readline accepts in its configuration file.
4532 4536 \layout List
4533 4537 \labelwidthstring 00.00.0000
4534 4538
4535 4539
4536 4540 \family typewriter
4537 4541 \series bold
4538 4542 readline_remove_delims:
4539 4543 \family default
4540 4544 \series default
4541 4545 a string of characters to be removed from the default word-delimiters list
4542 4546 used by readline, so that completions may be performed on strings which
4543 4547 contain them.
4544 4548 Do not change the default value unless you know what you're doing.
4545 4549 \layout List
4546 4550 \labelwidthstring 00.00.0000
4547 4551
4548 4552
4549 4553 \family typewriter
4550 4554 \series bold
4551 4555 readline_omit__names
4552 4556 \family default
4553 4557 \series default
4554 4558 : when tab-completion is enabled, hitting
4555 4559 \family typewriter
4556 4560 <tab>
4557 4561 \family default
4558 4562 after a '
4559 4563 \family typewriter
4560 4564 .
4561 4565 \family default
4562 4566 ' in a name will complete all attributes of an object, including all the
4563 4567 special methods whose names include double underscores (like
4564 4568 \family typewriter
4565 4569 __getitem__
4566 4570 \family default
4567 4571 or
4568 4572 \family typewriter
4569 4573 __class__
4570 4574 \family default
4571 4575 ).
4572 4576 If you'd rather not see these names by default, you can set this option
4573 4577 to 1.
4574 4578 Note that even when this option is set, you can still see those names by
4575 4579 explicitly typing a
4576 4580 \family typewriter
4577 4581 _
4578 4582 \family default
4579 4583 after the period and hitting
4580 4584 \family typewriter
4581 4585 <tab>
4582 4586 \family default
4583 4587 : '
4584 4588 \family typewriter
4585 4589 name._<tab>
4586 4590 \family default
4587 4591 ' will always complete attribute names starting with '
4588 4592 \family typewriter
4589 4593 _
4590 4594 \family default
4591 4595 '.
4592 4596 \layout List
4593 4597 \labelwidthstring 00.00.0000
4594 4598
4595 4599 \SpecialChar ~
4596 4600 This option is off by default so that new users see all attributes of any
4597 4601 objects they are dealing with.
4598 4602 \layout Standard
4599 4603
4600 4604 You will find the default values along with a corresponding detailed explanation
4601 4605 in your
4602 4606 \family typewriter
4603 4607 ipythonrc
4604 4608 \family default
4605 4609 file.
4606 4610 \layout Subsection
4607 4611
4608 4612 Session logging and restoring
4609 4613 \layout Standard
4610 4614
4611 4615 You can log all input from a session either by starting IPython with the
4612 4616 command line switches
4613 4617 \family typewriter
4614 4618 -log
4615 4619 \family default
4616 4620 or
4617 4621 \family typewriter
4618 4622 -logfile
4619 4623 \family default
4620 4624 (see sec.
4621 4625
4622 4626 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
4623 4627
4624 4628 \end_inset
4625 4629
4626 4630 )or by activating the logging at any moment with the magic function
4627 4631 \family typewriter
4628 4632 %logstart
4629 4633 \family default
4630 4634 .
4631 4635
4632 4636 \layout Standard
4633 4637
4634 4638 Log files can later be reloaded with the
4635 4639 \family typewriter
4636 4640 -logplay
4637 4641 \family default
4638 4642 option and IPython will attempt to 'replay' the log by executing all the
4639 4643 lines in it, thus restoring the state of a previous session.
4640 4644 This feature is not quite perfect, but can still be useful in many cases.
4641 4645 \layout Standard
4642 4646
4643 4647 The log files can also be used as a way to have a permanent record of any
4644 4648 code you wrote while experimenting.
4645 4649 Log files are regular text files which you can later open in your favorite
4646 4650 text editor to extract code or to 'clean them up' before using them to
4647 4651 replay a session.
4648 4652 \layout Standard
4649 4653
4650 4654 The
4651 4655 \family typewriter
4652 4656 %logstart
4653 4657 \family default
4654 4658 function for activating logging in mid-session is used as follows:
4655 4659 \layout Standard
4656 4660
4657 4661
4658 4662 \family typewriter
4659 4663 %logstart [log_name [log_mode]]
4660 4664 \layout Standard
4661 4665
4662 4666 If no name is given, it defaults to a file named
4663 4667 \family typewriter
4664 4668 'log'
4665 4669 \family default
4666 4670 in your IPYTHONDIR directory, in
4667 4671 \family typewriter
4668 4672 'rotate'
4669 4673 \family default
4670 4674 mode (see below).
4671 4675 \layout Standard
4672 4676
4673 4677 '
4674 4678 \family typewriter
4675 4679 %logstart name
4676 4680 \family default
4677 4681 ' saves to file
4678 4682 \family typewriter
4679 4683 'name'
4680 4684 \family default
4681 4685 in
4682 4686 \family typewriter
4683 4687 'backup'
4684 4688 \family default
4685 4689 mode.
4686 4690 It saves your history up to that point and then continues logging.
4687 4691 \layout Standard
4688 4692
4689 4693
4690 4694 \family typewriter
4691 4695 %logstart
4692 4696 \family default
4693 4697 takes a second optional parameter: logging mode.
4694 4698 This can be one of (note that the modes are given unquoted):
4695 4699 \layout List
4696 4700 \labelwidthstring 00.00.0000
4697 4701
4698 4702
4699 4703 \family typewriter
4700 4704 over
4701 4705 \family default
4702 4706 : overwrite existing
4703 4707 \family typewriter
4704 4708 log_name
4705 4709 \family default
4706 4710 .
4707 4711 \layout List
4708 4712 \labelwidthstring 00.00.0000
4709 4713
4710 4714
4711 4715 \family typewriter
4712 4716 backup
4713 4717 \family default
4714 4718 : rename (if exists) to
4715 4719 \family typewriter
4716 4720 log_name~
4717 4721 \family default
4718 4722 and start
4719 4723 \family typewriter
4720 4724 log_name
4721 4725 \family default
4722 4726 .
4723 4727 \layout List
4724 4728 \labelwidthstring 00.00.0000
4725 4729
4726 4730
4727 4731 \family typewriter
4728 4732 append
4729 4733 \family default
4730 4734 : well, that says it.
4731 4735 \layout List
4732 4736 \labelwidthstring 00.00.0000
4733 4737
4734 4738
4735 4739 \family typewriter
4736 4740 rotate
4737 4741 \family default
4738 4742 : create rotating logs
4739 4743 \family typewriter
4740 4744 log_name
4741 4745 \family default
4742 4746 .
4743 4747 \family typewriter
4744 4748 1~
4745 4749 \family default
4746 4750 ,
4747 4751 \family typewriter
4748 4752 log_name.2~
4749 4753 \family default
4750 4754 , etc.
4751 4755 \layout Standard
4752 4756
4753 4757 The
4754 4758 \family typewriter
4755 4759 %logoff
4756 4760 \family default
4757 4761 and
4758 4762 \family typewriter
4759 4763 %logon
4760 4764 \family default
4761 4765 functions allow you to temporarily stop and resume logging to a file which
4762 4766 had previously been started with
4763 4767 \family typewriter
4764 4768 %logstart
4765 4769 \family default
4766 4770 .
4767 4771 They will fail (with an explanation) if you try to use them before logging
4768 4772 has been started.
4769 4773 \layout Subsection
4770 4774
4771 4775
4772 4776 \begin_inset LatexCommand \label{sub:System-shell-access}
4773 4777
4774 4778 \end_inset
4775 4779
4776 4780 System shell access
4777 4781 \layout Standard
4778 4782
4779 4783 Any input line beginning with a
4780 4784 \family typewriter
4781 4785 !
4782 4786 \family default
4783 4787 character is passed verbatim (minus the
4784 4788 \family typewriter
4785 4789 !
4786 4790 \family default
4787 4791 , of course) to the underlying operating system.
4788 4792 For example, typing
4789 4793 \family typewriter
4790 4794 !ls
4791 4795 \family default
4792 4796 will run
4793 4797 \family typewriter
4794 4798 'ls'
4795 4799 \family default
4796 4800 in the current directory.
4797 4801 \layout Subsubsection
4798 4802
4799 4803 Manual capture of command output
4800 4804 \layout Standard
4801 4805
4802 4806 If the input line begins with
4803 4807 \emph on
4804 4808 two
4805 4809 \emph default
4806 4810 exclamation marks,
4807 4811 \family typewriter
4808 4812 !!
4809 4813 \family default
4810 4814 , the command is executed but its output is captured and returned as a python
4811 4815 list, split on newlines.
4812 4816 Any output sent by the subprocess to standard error is printed separately,
4813 4817 so that the resulting list only captures standard output.
4814 4818 The
4815 4819 \family typewriter
4816 4820 !!
4817 4821 \family default
4818 4822 syntax is a shorthand for the
4819 4823 \family typewriter
4820 4824 %sx
4821 4825 \family default
4822 4826 magic command.
4823 4827 \layout Standard
4824 4828
4825 4829 Finally, the
4826 4830 \family typewriter
4827 4831 %sc
4828 4832 \family default
4829 4833 magic (short for `shell capture') is similar to
4830 4834 \family typewriter
4831 4835 %sx
4832 4836 \family default
4833 4837 , but allowing more fine-grained control of the capture details, and storing
4834 4838 the result directly into a named variable.
4835 4839 \layout Standard
4836 4840
4837 4841 See Sec.\SpecialChar ~
4838 4842
4839 4843 \begin_inset LatexCommand \ref{sec:magic}
4840 4844
4841 4845 \end_inset
4842 4846
4843 4847 for details on the magics
4844 4848 \family typewriter
4845 4849 %sc
4846 4850 \family default
4847 4851 and
4848 4852 \family typewriter
4849 4853 %sx
4850 4854 \family default
4851 4855 , or use IPython's own help (
4852 4856 \family typewriter
4853 4857 sc?
4854 4858 \family default
4855 4859 and
4856 4860 \family typewriter
4857 4861 sx?
4858 4862 \family default
4859 4863 ) for further details.
4860 4864 \layout Standard
4861 4865
4862 4866 IPython also allows you to expand the value of python variables when making
4863 4867 system calls.
4864 4868 Any python variable or expression which you prepend with
4865 4869 \family typewriter
4866 4870 $
4867 4871 \family default
4868 4872 will get expanded before the system call is made.
4869 4873
4870 4874 \layout Standard
4871 4875
4872 4876
4873 4877 \family typewriter
4874 4878 In [1]: pyvar='Hello world'
4875 4879 \newline
4876 4880 In [2]: !echo "A python variable: $pyvar"
4877 4881 \newline
4878 4882 A python variable: Hello world
4879 4883 \layout Standard
4880 4884
4881 4885 If you want the shell to actually see a literal
4882 4886 \family typewriter
4883 4887 $
4884 4888 \family default
4885 4889 , you need to type it twice:
4886 4890 \layout Standard
4887 4891
4888 4892
4889 4893 \family typewriter
4890 4894 In [3]: !echo "A system variable: $$HOME"
4891 4895 \newline
4892 4896 A system variable: /home/fperez
4893 4897 \layout Standard
4894 4898
4895 4899 You can pass arbitrary expressions, though you'll need to delimit them with
4896 4900
4897 4901 \family typewriter
4898 4902 {}
4899 4903 \family default
4900 4904 if there is ambiguity as to the extent of the expression:
4901 4905 \layout Standard
4902 4906
4903 4907
4904 4908 \family typewriter
4905 4909 In [5]: x=10
4906 4910 \newline
4907 4911 In [6]: y=20
4908 4912 \newline
4909 4913 In [13]: !echo $x+y
4910 4914 \newline
4911 4915 10+y
4912 4916 \newline
4913 4917 In [7]: !echo ${x+y}
4914 4918 \newline
4915 4919 30
4916 4920 \layout Standard
4917 4921
4918 4922 Even object attributes can be expanded:
4919 4923 \layout Standard
4920 4924
4921 4925
4922 4926 \family typewriter
4923 4927 In [12]: !echo $sys.argv
4924 4928 \newline
4925 4929 [/home/fperez/usr/bin/ipython]
4926 4930 \layout Subsection
4927 4931
4928 4932 System command aliases
4929 4933 \layout Standard
4930 4934
4931 4935 The
4932 4936 \family typewriter
4933 4937 %alias
4934 4938 \family default
4935 4939 magic function and the
4936 4940 \family typewriter
4937 4941 alias
4938 4942 \family default
4939 4943 option in the
4940 4944 \family typewriter
4941 4945 ipythonrc
4942 4946 \family default
4943 4947 configuration file allow you to define magic functions which are in fact
4944 4948 system shell commands.
4945 4949 These aliases can have parameters.
4946 4950
4947 4951 \layout Standard
4948 4952
4949 4953 '
4950 4954 \family typewriter
4951 4955 %alias alias_name cmd
4952 4956 \family default
4953 4957 ' defines '
4954 4958 \family typewriter
4955 4959 alias_name
4956 4960 \family default
4957 4961 ' as an alias for '
4958 4962 \family typewriter
4959 4963 cmd
4960 4964 \family default
4961 4965 '
4962 4966 \layout Standard
4963 4967
4964 4968 Then, typing '
4965 4969 \family typewriter
4966 4970 %alias_name params
4967 4971 \family default
4968 4972 ' will execute the system command '
4969 4973 \family typewriter
4970 4974 cmd params
4971 4975 \family default
4972 4976 ' (from your underlying operating system).
4973 4977
4974 4978 \layout Standard
4975 4979
4976 4980 You can also define aliases with parameters using
4977 4981 \family typewriter
4978 4982 %s
4979 4983 \family default
4980 4984 specifiers (one per parameter).
4981 4985 The following example defines the
4982 4986 \family typewriter
4983 4987 %parts
4984 4988 \family default
4985 4989 function as an alias to the command '
4986 4990 \family typewriter
4987 4991 echo first %s second %s
4988 4992 \family default
4989 4993 ' where each
4990 4994 \family typewriter
4991 4995 %s
4992 4996 \family default
4993 4997 will be replaced by a positional parameter to the call to
4994 4998 \family typewriter
4995 4999 %parts:
4996 5000 \layout Standard
4997 5001
4998 5002
4999 5003 \family typewriter
5000 5004 In [1]: alias parts echo first %s second %s
5001 5005 \newline
5002 5006 In [2]: %parts A B
5003 5007 \newline
5004 5008 first A second B
5005 5009 \newline
5006 5010 In [3]: %parts A
5007 5011 \newline
5008 5012 Incorrect number of arguments: 2 expected.
5009 5013
5010 5014 \newline
5011 5015 parts is an alias to: 'echo first %s second %s'
5012 5016 \layout Standard
5013 5017
5014 5018 If called with no parameters,
5015 5019 \family typewriter
5016 5020 %alias
5017 5021 \family default
5018 5022 prints the table of currently defined aliases.
5019 5023 \layout Standard
5020 5024
5021 5025 The
5022 5026 \family typewriter
5023 5027 %rehash/rehashx
5024 5028 \family default
5025 5029 magics allow you to load your entire
5026 5030 \family typewriter
5027 5031 $PATH
5028 5032 \family default
5029 5033 as ipython aliases.
5030 5034 See their respective docstrings (or sec.\SpecialChar ~
5031 5035
5032 5036 \begin_inset LatexCommand \ref{sec:magic}
5033 5037
5034 5038 \end_inset
5035 5039
5036 5040 for further details).
5037 5041 \layout Subsection
5038 5042
5039 5043
5040 5044 \begin_inset LatexCommand \label{sec:dreload}
5041 5045
5042 5046 \end_inset
5043 5047
5044 5048 Recursive reload
5045 5049 \layout Standard
5046 5050
5047 5051 The
5048 5052 \family typewriter
5049 5053 dreload
5050 5054 \family default
5051 5055 function does a recursive reload of a module: changes made to the module
5052 5056 since you imported will actually be available without having to exit.
5053 5057 \layout Subsection
5054 5058
5055 5059 Verbose and colored exception traceback printouts
5056 5060 \layout Standard
5057 5061
5058 5062 IPython provides the option to see very detailed exception tracebacks, which
5059 5063 can be especially useful when debugging large programs.
5060 5064 You can run any Python file with the
5061 5065 \family typewriter
5062 5066 %run
5063 5067 \family default
5064 5068 function to benefit from these detailed tracebacks.
5065 5069 Furthermore, both normal and verbose tracebacks can be colored (if your
5066 5070 terminal supports it) which makes them much easier to parse visually.
5067 5071 \layout Standard
5068 5072
5069 5073 See the magic
5070 5074 \family typewriter
5071 5075 xmode
5072 5076 \family default
5073 5077 and
5074 5078 \family typewriter
5075 5079 colors
5076 5080 \family default
5077 5081 functions for details (just type
5078 5082 \family typewriter
5079 5083 %magic
5080 5084 \family default
5081 5085 ).
5082 5086 \layout Standard
5083 5087
5084 5088 These features are basically a terminal version of Ka-Ping Yee's
5085 5089 \family typewriter
5086 5090 cgitb
5087 5091 \family default
5088 5092 module, now part of the standard Python library.
5089 5093 \layout Subsection
5090 5094
5091 5095
5092 5096 \begin_inset LatexCommand \label{sec:cache_input}
5093 5097
5094 5098 \end_inset
5095 5099
5096 5100 Input caching system
5097 5101 \layout Standard
5098 5102
5099 5103 IPython offers numbered prompts (In/Out) with input and output caching.
5100 5104 All input is saved and can be retrieved as variables (besides the usual
5101 5105 arrow key recall).
5102 5106 \layout Standard
5103 5107
5104 5108 The following GLOBAL variables always exist (so don't overwrite them!):
5105 5109
5106 5110 \family typewriter
5107 5111 _i
5108 5112 \family default
5109 5113 : stores previous input.
5110 5114
5111 5115 \family typewriter
5112 5116 _ii
5113 5117 \family default
5114 5118 : next previous.
5115 5119
5116 5120 \family typewriter
5117 5121 _iii
5118 5122 \family default
5119 5123 : next-next previous.
5120 5124
5121 5125 \family typewriter
5122 5126 _ih
5123 5127 \family default
5124 5128 : a list of all input
5125 5129 \family typewriter
5126 5130 _ih[n]
5127 5131 \family default
5128 5132 is the input from line
5129 5133 \family typewriter
5130 5134 n
5131 5135 \family default
5132 5136 and this list is aliased to the global variable
5133 5137 \family typewriter
5134 5138 In
5135 5139 \family default
5136 5140 .
5137 5141 If you overwrite
5138 5142 \family typewriter
5139 5143 In
5140 5144 \family default
5141 5145 with a variable of your own, you can remake the assignment to the internal
5142 5146 list with a simple
5143 5147 \family typewriter
5144 5148 'In=_ih'
5145 5149 \family default
5146 5150 .
5147 5151 \layout Standard
5148 5152
5149 5153 Additionally, global variables named
5150 5154 \family typewriter
5151 5155 _i<n>
5152 5156 \family default
5153 5157 are dynamically created (
5154 5158 \family typewriter
5155 5159 <n>
5156 5160 \family default
5157 5161 being the prompt counter), such that
5158 5162 \newline
5159 5163
5160 5164 \family typewriter
5161 5165 _i<n> == _ih[<n>] == In[<n>].
5162 5166 \layout Standard
5163 5167
5164 5168 For example, what you typed at prompt 14 is available as
5165 5169 \family typewriter
5166 5170 _i14,
5167 5171 \family default
5168 5172
5169 5173 \family typewriter
5170 5174 _ih[14]
5171 5175 \family default
5172 5176 and
5173 5177 \family typewriter
5174 5178 In[14]
5175 5179 \family default
5176 5180 .
5177 5181 \layout Standard
5178 5182
5179 5183 This allows you to easily cut and paste multi line interactive prompts by
5180 5184 printing them out: they print like a clean string, without prompt characters.
5181 5185 You can also manipulate them like regular variables (they are strings),
5182 5186 modify or exec them (typing
5183 5187 \family typewriter
5184 5188 'exec _i9'
5185 5189 \family default
5186 5190 will re-execute the contents of input prompt 9, '
5187 5191 \family typewriter
5188 5192 exec In[9:14]+In[18]
5189 5193 \family default
5190 5194 ' will re-execute lines 9 through 13 and line 18).
5191 5195 \layout Standard
5192 5196
5193 5197 You can also re-execute multiple lines of input easily by using the magic
5194 5198
5195 5199 \family typewriter
5196 5200 %macro
5197 5201 \family default
5198 5202 function (which automates the process and allows re-execution without having
5199 5203 to type '
5200 5204 \family typewriter
5201 5205 exec
5202 5206 \family default
5203 5207 ' every time).
5204 5208 The macro system also allows you to re-execute previous lines which include
5205 5209 magic function calls (which require special processing).
5206 5210 Type
5207 5211 \family typewriter
5208 5212 %macro?
5209 5213 \family default
5210 5214 or see sec.
5211 5215
5212 5216 \begin_inset LatexCommand \ref{sec:magic}
5213 5217
5214 5218 \end_inset
5215 5219
5216 5220 for more details on the macro system.
5217 5221 \layout Standard
5218 5222
5219 5223 A history function
5220 5224 \family typewriter
5221 5225 %hist
5222 5226 \family default
5223 5227 allows you to see any part of your input history by printing a range of
5224 5228 the
5225 5229 \family typewriter
5226 5230 _i
5227 5231 \family default
5228 5232 variables.
5229 5233 \layout Subsection
5230 5234
5231 5235
5232 5236 \begin_inset LatexCommand \label{sec:cache_output}
5233 5237
5234 5238 \end_inset
5235 5239
5236 5240 Output caching system
5237 5241 \layout Standard
5238 5242
5239 5243 For output that is returned from actions, a system similar to the input
5240 5244 cache exists but using
5241 5245 \family typewriter
5242 5246 _
5243 5247 \family default
5244 5248 instead of
5245 5249 \family typewriter
5246 5250 _i
5247 5251 \family default
5248 5252 .
5249 5253 Only actions that produce a result (NOT assignments, for example) are cached.
5250 5254 If you are familiar with Mathematica, IPython's
5251 5255 \family typewriter
5252 5256 _
5253 5257 \family default
5254 5258 variables behave exactly like Mathematica's
5255 5259 \family typewriter
5256 5260 %
5257 5261 \family default
5258 5262 variables.
5259 5263 \layout Standard
5260 5264
5261 5265 The following GLOBAL variables always exist (so don't overwrite them!):
5262 5266
5263 5267 \layout List
5264 5268 \labelwidthstring 00.00.0000
5265 5269
5266 5270
5267 5271 \family typewriter
5268 5272 \series bold
5269 5273 _
5270 5274 \family default
5271 5275 \series default
5272 5276 (a
5273 5277 \emph on
5274 5278 single
5275 5279 \emph default
5276 5280 underscore) : stores previous output, like Python's default interpreter.
5277 5281 \layout List
5278 5282 \labelwidthstring 00.00.0000
5279 5283
5280 5284
5281 5285 \family typewriter
5282 5286 \series bold
5283 5287 __
5284 5288 \family default
5285 5289 \series default
5286 5290 (two underscores): next previous.
5287 5291 \layout List
5288 5292 \labelwidthstring 00.00.0000
5289 5293
5290 5294
5291 5295 \family typewriter
5292 5296 \series bold
5293 5297 ___
5294 5298 \family default
5295 5299 \series default
5296 5300 (three underscores): next-next previous.
5297 5301 \layout Standard
5298 5302
5299 5303 Additionally, global variables named
5300 5304 \family typewriter
5301 5305 _<n>
5302 5306 \family default
5303 5307 are dynamically created (
5304 5308 \family typewriter
5305 5309 <n>
5306 5310 \family default
5307 5311 being the prompt counter), such that the result of output
5308 5312 \family typewriter
5309 5313 <n>
5310 5314 \family default
5311 5315 is always available as
5312 5316 \family typewriter
5313 5317 _<n>
5314 5318 \family default
5315 5319 (don't use the angle brackets, just the number, e.g.
5316 5320
5317 5321 \family typewriter
5318 5322 _21
5319 5323 \family default
5320 5324 ).
5321 5325 \layout Standard
5322 5326
5323 5327 These global variables are all stored in a global dictionary (not a list,
5324 5328 since it only has entries for lines which returned a result) available
5325 5329 under the names
5326 5330 \family typewriter
5327 5331 _oh
5328 5332 \family default
5329 5333 and
5330 5334 \family typewriter
5331 5335 Out
5332 5336 \family default
5333 5337 (similar to
5334 5338 \family typewriter
5335 5339 _ih
5336 5340 \family default
5337 5341 and
5338 5342 \family typewriter
5339 5343 In
5340 5344 \family default
5341 5345 ).
5342 5346 So the output from line 12 can be obtained as
5343 5347 \family typewriter
5344 5348 _12
5345 5349 \family default
5346 5350 ,
5347 5351 \family typewriter
5348 5352 Out[12]
5349 5353 \family default
5350 5354 or
5351 5355 \family typewriter
5352 5356 _oh[12]
5353 5357 \family default
5354 5358 .
5355 5359 If you accidentally overwrite the
5356 5360 \family typewriter
5357 5361 Out
5358 5362 \family default
5359 5363 variable you can recover it by typing
5360 5364 \family typewriter
5361 5365 'Out=_oh
5362 5366 \family default
5363 5367 ' at the prompt.
5364 5368 \layout Standard
5365 5369
5366 5370 This system obviously can potentially put heavy memory demands on your system,
5367 5371 since it prevents Python's garbage collector from removing any previously
5368 5372 computed results.
5369 5373 You can control how many results are kept in memory with the option (at
5370 5374 the command line or in your
5371 5375 \family typewriter
5372 5376 ipythonrc
5373 5377 \family default
5374 5378 file)
5375 5379 \family typewriter
5376 5380 cache_size
5377 5381 \family default
5378 5382 .
5379 5383 If you set it to 0, the whole system is completely disabled and the prompts
5380 5384 revert to the classic
5381 5385 \family typewriter
5382 5386 '>>>'
5383 5387 \family default
5384 5388 of normal Python.
5385 5389 \layout Subsection
5386 5390
5387 5391 Directory history
5388 5392 \layout Standard
5389 5393
5390 5394 Your history of visited directories is kept in the global list
5391 5395 \family typewriter
5392 5396 _dh
5393 5397 \family default
5394 5398 , and the magic
5395 5399 \family typewriter
5396 5400 %cd
5397 5401 \family default
5398 5402 command can be used to go to any entry in that list.
5399 5403 The
5400 5404 \family typewriter
5401 5405 %dhist
5402 5406 \family default
5403 5407 command allows you to view this history.
5404 5408 \layout Subsection
5405 5409
5406 5410 Automatic parentheses and quotes
5407 5411 \layout Standard
5408 5412
5409 5413 These features were adapted from Nathan Gray's LazyPython.
5410 5414 They are meant to allow less typing for common situations.
5411 5415 \layout Subsubsection
5412 5416
5413 5417 Automatic parentheses
5414 5418 \layout Standard
5415 5419
5416 5420 Callable objects (i.e.
5417 5421 functions, methods, etc) can be invoked like this (notice the commas between
5418 5422 the arguments):
5419 5423 \layout Standard
5420 5424
5421 5425
5422 5426 \family typewriter
5423 5427 >>> callable_ob arg1, arg2, arg3
5424 5428 \layout Standard
5425 5429
5426 5430 and the input will be translated to this:
5427 5431 \layout Standard
5428 5432
5429 5433
5430 5434 \family typewriter
5431 5435 --> callable_ob(arg1, arg2, arg3)
5432 5436 \layout Standard
5433 5437
5434 5438 You can force automatic parentheses by using '/' as the first character
5435 5439 of a line.
5436 5440 For example:
5437 5441 \layout Standard
5438 5442
5439 5443
5440 5444 \family typewriter
5441 5445 >>> /globals # becomes 'globals()'
5442 5446 \layout Standard
5443 5447
5444 5448 Note that the '/' MUST be the first character on the line! This won't work:
5445 5449
5446 5450 \layout Standard
5447 5451
5448 5452
5449 5453 \family typewriter
5450 5454 >>> print /globals # syntax error
5451 5455 \layout Standard
5452 5456
5453 5457 In most cases the automatic algorithm should work, so you should rarely
5454 5458 need to explicitly invoke /.
5455 5459 One notable exception is if you are trying to call a function with a list
5456 5460 of tuples as arguments (the parenthesis will confuse IPython):
5457 5461 \layout Standard
5458 5462
5459 5463
5460 5464 \family typewriter
5461 5465 In [1]: zip (1,2,3),(4,5,6) # won't work
5462 5466 \layout Standard
5463 5467
5464 5468 but this will work:
5465 5469 \layout Standard
5466 5470
5467 5471
5468 5472 \family typewriter
5469 5473 In [2]: /zip (1,2,3),(4,5,6)
5470 5474 \newline
5471 5475 ------> zip ((1,2,3),(4,5,6))
5472 5476 \newline
5473 5477 Out[2]= [(1, 4), (2, 5), (3, 6)]
5474 5478 \layout Standard
5475 5479
5476 5480 IPython tells you that it has altered your command line by displaying the
5477 5481 new command line preceded by
5478 5482 \family typewriter
5479 5483 -->
5480 5484 \family default
5481 5485 .
5482 5486 e.g.:
5483 5487 \layout Standard
5484 5488
5485 5489
5486 5490 \family typewriter
5487 5491 In [18]: callable list
5488 5492 \newline
5489 5493 -------> callable (list)
5490 5494 \layout Subsubsection
5491 5495
5492 5496 Automatic quoting
5493 5497 \layout Standard
5494 5498
5495 5499 You can force automatic quoting of a function's arguments by using
5496 5500 \family typewriter
5497 5501 `,'
5498 5502 \family default
5499 5503 or
5500 5504 \family typewriter
5501 5505 `;'
5502 5506 \family default
5503 5507 as the first character of a line.
5504 5508 For example:
5505 5509 \layout Standard
5506 5510
5507 5511
5508 5512 \family typewriter
5509 5513 >>> ,my_function /home/me # becomes my_function("/home/me")
5510 5514 \layout Standard
5511 5515
5512 5516 If you use
5513 5517 \family typewriter
5514 5518 `;'
5515 5519 \family default
5516 5520 instead, the whole argument is quoted as a single string (while
5517 5521 \family typewriter
5518 5522 `,'
5519 5523 \family default
5520 5524 splits on whitespace):
5521 5525 \layout Standard
5522 5526
5523 5527
5524 5528 \family typewriter
5525 5529 >>> ,my_function a b c # becomes my_function("a","b","c")
5526 5530 \layout Standard
5527 5531
5528 5532
5529 5533 \family typewriter
5530 5534 >>> ;my_function a b c # becomes my_function("a b c")
5531 5535 \layout Standard
5532 5536
5533 5537 Note that the `
5534 5538 \family typewriter
5535 5539 ,
5536 5540 \family default
5537 5541 ' or `
5538 5542 \family typewriter
5539 5543 ;
5540 5544 \family default
5541 5545 ' MUST be the first character on the line! This won't work:
5542 5546 \layout Standard
5543 5547
5544 5548
5545 5549 \family typewriter
5546 5550 >>> x = ,my_function /home/me # syntax error
5547 5551 \layout Section
5548 5552
5549 5553
5550 5554 \begin_inset LatexCommand \label{sec:customization}
5551 5555
5552 5556 \end_inset
5553 5557
5554 5558 Customization
5555 5559 \layout Standard
5556 5560
5557 5561 As we've already mentioned, IPython reads a configuration file which can
5558 5562 be specified at the command line (
5559 5563 \family typewriter
5560 5564 -rcfile
5561 5565 \family default
5562 5566 ) or which by default is assumed to be called
5563 5567 \family typewriter
5564 5568 ipythonrc
5565 5569 \family default
5566 5570 .
5567 5571 Such a file is looked for in the current directory where IPython is started
5568 5572 and then in your
5569 5573 \family typewriter
5570 5574 IPYTHONDIR
5571 5575 \family default
5572 5576 , which allows you to have local configuration files for specific projects.
5573 5577 In this section we will call these types of configuration files simply
5574 5578 rcfiles (short for resource configuration file).
5575 5579 \layout Standard
5576 5580
5577 5581 The syntax of an rcfile is one of key-value pairs separated by whitespace,
5578 5582 one per line.
5579 5583 Lines beginning with a
5580 5584 \family typewriter
5581 5585 #
5582 5586 \family default
5583 5587 are ignored as comments, but comments can
5584 5588 \series bold
5585 5589 not
5586 5590 \series default
5587 5591 be put on lines with data (the parser is fairly primitive).
5588 5592 Note that these are not python files, and this is deliberate, because it
5589 5593 allows us to do some things which would be quite tricky to implement if
5590 5594 they were normal python files.
5591 5595 \layout Standard
5592 5596
5593 5597 First, an rcfile can contain permanent default values for almost all command
5594 5598 line options (except things like
5595 5599 \family typewriter
5596 5600 -help
5597 5601 \family default
5598 5602 or
5599 5603 \family typewriter
5600 5604 -Version
5601 5605 \family default
5602 5606 ).
5603 5607 Sec\SpecialChar ~
5604 5608
5605 5609 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
5606 5610
5607 5611 \end_inset
5608 5612
5609 5613 contains a description of all command-line options.
5610 5614 However, values you explicitly specify at the command line override the
5611 5615 values defined in the rcfile.
5612 5616 \layout Standard
5613 5617
5614 5618 Besides command line option values, the rcfile can specify values for certain
5615 5619 extra special options which are not available at the command line.
5616 5620 These options are briefly described below.
5617 5621
5618 5622 \layout Standard
5619 5623
5620 5624 Each of these options may appear as many times as you need it in the file.
5621 5625 \layout List
5622 5626 \labelwidthstring 00.00.0000
5623 5627
5624 5628
5625 5629 \family typewriter
5626 5630 \series bold
5627 5631 include\SpecialChar ~
5628 5632 <file1>\SpecialChar ~
5629 5633 <file2>\SpecialChar ~
5630 5634 ...
5631 5635 \family default
5632 5636 \series default
5633 5637 : you can name
5634 5638 \emph on
5635 5639 other
5636 5640 \emph default
5637 5641 rcfiles you want to recursively load up to 15 levels (don't use the
5638 5642 \family typewriter
5639 5643 <>
5640 5644 \family default
5641 5645 brackets in your names!).
5642 5646 This feature allows you to define a 'base' rcfile with general options
5643 5647 and special-purpose files which can be loaded only when needed with particular
5644 5648 configuration options.
5645 5649 To make this more convenient, IPython accepts the
5646 5650 \family typewriter
5647 5651 -profile <name>
5648 5652 \family default
5649 5653 option (abbreviates to
5650 5654 \family typewriter
5651 5655 -p <name
5652 5656 \family default
5653 5657 >)
5654 5658 \family typewriter
5655 5659 which
5656 5660 \family default
5657 5661 tells it to look for an rcfile named
5658 5662 \family typewriter
5659 5663 ipythonrc-<name>
5660 5664 \family default
5661 5665 .
5662 5666
5663 5667 \layout List
5664 5668 \labelwidthstring 00.00.0000
5665 5669
5666 5670
5667 5671 \family typewriter
5668 5672 \series bold
5669 5673 import_mod\SpecialChar ~
5670 5674 <mod1>\SpecialChar ~
5671 5675 <mod2>\SpecialChar ~
5672 5676 ...
5673 5677 \family default
5674 5678 \series default
5675 5679 : import modules with '
5676 5680 \family typewriter
5677 5681 import
5678 5682 \family default
5679 5683
5680 5684 \family typewriter
5681 5685 <mod1>,<mod2>,...
5682 5686 \family default
5683 5687 '
5684 5688 \layout List
5685 5689 \labelwidthstring 00.00.0000
5686 5690
5687 5691
5688 5692 \family typewriter
5689 5693 \series bold
5690 5694 import_some\SpecialChar ~
5691 5695 <mod>\SpecialChar ~
5692 5696 <f1>\SpecialChar ~
5693 5697 <f2>\SpecialChar ~
5694 5698 ...
5695 5699 \family default
5696 5700 \series default
5697 5701 : import functions with '
5698 5702 \family typewriter
5699 5703 from <mod> import
5700 5704 \family default
5701 5705
5702 5706 \family typewriter
5703 5707 <f1>,<f2>,...
5704 5708 \family default
5705 5709 '
5706 5710 \layout List
5707 5711 \labelwidthstring 00.00.0000
5708 5712
5709 5713
5710 5714 \family typewriter
5711 5715 \series bold
5712 5716 import_all\SpecialChar ~
5713 5717 <mod1>\SpecialChar ~
5714 5718 <mod2>\SpecialChar ~
5715 5719 ...
5716 5720 \family default
5717 5721 \series default
5718 5722 : for each module listed import functions with '
5719 5723 \family typewriter
5720 5724 from <mod> import *
5721 5725 \family default
5722 5726 '
5723 5727 \layout List
5724 5728 \labelwidthstring 00.00.0000
5725 5729
5726 5730
5727 5731 \family typewriter
5728 5732 \series bold
5729 5733 execute\SpecialChar ~
5730 5734 <python\SpecialChar ~
5731 5735 code>
5732 5736 \family default
5733 5737 \series default
5734 5738 : give any single-line python code to be executed.
5735 5739 \layout List
5736 5740 \labelwidthstring 00.00.0000
5737 5741
5738 5742
5739 5743 \family typewriter
5740 5744 \series bold
5741 5745 execfile\SpecialChar ~
5742 5746 <filename>
5743 5747 \family default
5744 5748 \series default
5745 5749 : execute the python file given with an '
5746 5750 \family typewriter
5747 5751 execfile(filename)
5748 5752 \family default
5749 5753 ' command.
5750 5754 Username expansion is performed on the given names.
5751 5755 So if you need any amount of extra fancy customization that won't fit in
5752 5756 any of the above 'canned' options, you can just put it in a separate python
5753 5757 file and execute it.
5754 5758 \layout List
5755 5759 \labelwidthstring 00.00.0000
5756 5760
5757 5761
5758 5762 \family typewriter
5759 5763 \series bold
5760 5764 alias\SpecialChar ~
5761 5765 <alias_def>
5762 5766 \family default
5763 5767 \series default
5764 5768 : this is equivalent to calling '
5765 5769 \family typewriter
5766 5770 %alias\SpecialChar ~
5767 5771 <alias_def>
5768 5772 \family default
5769 5773 ' at the IPython command line.
5770 5774 This way, from within IPython you can do common system tasks without having
5771 5775 to exit it or use the
5772 5776 \family typewriter
5773 5777 !
5774 5778 \family default
5775 5779 escape.
5776 5780 IPython isn't meant to be a shell replacement, but it is often very useful
5777 5781 to be able to do things with files while testing code.
5778 5782 This gives you the flexibility to have within IPython any aliases you may
5779 5783 be used to under your normal system shell.
5780 5784 \layout Subsection
5781 5785
5782 5786
5783 5787 \begin_inset LatexCommand \label{sec:ipytonrc-sample}
5784 5788
5785 5789 \end_inset
5786 5790
5787 5791 Sample
5788 5792 \family typewriter
5789 5793 ipythonrc
5790 5794 \family default
5791 5795 file
5792 5796 \layout Standard
5793 5797
5794 5798 The default rcfile, called
5795 5799 \family typewriter
5796 5800 ipythonrc
5797 5801 \family default
5798 5802 and supplied in your
5799 5803 \family typewriter
5800 5804 IPYTHONDIR
5801 5805 \family default
5802 5806 directory contains lots of comments on all of these options.
5803 5807 We reproduce it here for reference:
5804 5808 \layout Standard
5805 5809
5806 5810
5807 5811 \begin_inset ERT
5808 5812 status Open
5809 5813
5810 5814 \layout Standard
5811 5815
5812 5816 \backslash
5813 5817 codelist{../IPython/UserConfig/ipythonrc}
5814 5818 \end_inset
5815 5819
5816 5820
5817 5821 \layout Subsection
5818 5822
5819 5823
5820 5824 \begin_inset LatexCommand \label{sec:prompts}
5821 5825
5822 5826 \end_inset
5823 5827
5824 5828 Fine-tuning your prompt
5825 5829 \layout Standard
5826 5830
5827 5831 IPython's prompts can be customized using a syntax similar to that of the
5828 5832
5829 5833 \family typewriter
5830 5834 bash
5831 5835 \family default
5832 5836 shell.
5833 5837 Many of
5834 5838 \family typewriter
5835 5839 bash
5836 5840 \family default
5837 5841 's escapes are supported, as well as a few additional ones.
5838 5842 We list them below:
5839 5843 \layout Description
5840 5844
5841 5845
5842 5846 \backslash
5843 5847 # the prompt/history count number
5844 5848 \layout Description
5845 5849
5846 5850
5847 5851 \backslash
5848 5852 D the prompt/history count, with the actual digits replaced by dots.
5849 5853 Used mainly in continuation prompts (prompt_in2)
5850 5854 \layout Description
5851 5855
5852 5856
5853 5857 \backslash
5854 5858 w the current working directory
5855 5859 \layout Description
5856 5860
5857 5861
5858 5862 \backslash
5859 5863 W the basename of current working directory
5860 5864 \layout Description
5861 5865
5862 5866
5863 5867 \backslash
5864 5868 X
5865 5869 \emph on
5866 5870 n
5867 5871 \emph default
5868 5872 where
5869 5873 \begin_inset Formula $n=0\ldots5.$
5870 5874 \end_inset
5871 5875
5872 5876 The current working directory, with
5873 5877 \family typewriter
5874 5878 $HOME
5875 5879 \family default
5876 5880 replaced by
5877 5881 \family typewriter
5878 5882 ~
5879 5883 \family default
5880 5884 , and filtered out to contain only
5881 5885 \begin_inset Formula $n$
5882 5886 \end_inset
5883 5887
5884 5888 path elements
5885 5889 \layout Description
5886 5890
5887 5891
5888 5892 \backslash
5889 5893 Y
5890 5894 \emph on
5891 5895 n
5892 5896 \emph default
5893 5897 Similar to
5894 5898 \backslash
5895 5899 X
5896 5900 \emph on
5897 5901 n
5898 5902 \emph default
5899 5903 , but with the
5900 5904 \begin_inset Formula $n+1$
5901 5905 \end_inset
5902 5906
5903 5907 element included if it is
5904 5908 \family typewriter
5905 5909 ~
5906 5910 \family default
5907 5911 (this is similar to the behavior of the %c
5908 5912 \emph on
5909 5913 n
5910 5914 \emph default
5911 5915 escapes in
5912 5916 \family typewriter
5913 5917 tcsh
5914 5918 \family default
5915 5919 )
5916 5920 \layout Description
5917 5921
5918 5922
5919 5923 \backslash
5920 5924 u the username of the current user
5921 5925 \layout Description
5922 5926
5923 5927
5924 5928 \backslash
5925 5929 $ if the effective UID is 0, a #, otherwise a $
5926 5930 \layout Description
5927 5931
5928 5932
5929 5933 \backslash
5930 5934 h the hostname up to the first `.'
5931 5935 \layout Description
5932 5936
5933 5937
5934 5938 \backslash
5935 5939 H the hostname
5936 5940 \layout Description
5937 5941
5938 5942
5939 5943 \backslash
5940 5944 n a newline
5941 5945 \layout Description
5942 5946
5943 5947
5944 5948 \backslash
5945 5949 r a carriage return
5946 5950 \layout Description
5947 5951
5948 5952
5949 5953 \backslash
5950 5954 v IPython version string
5951 5955 \layout Standard
5952 5956
5953 5957 In addition to these, ANSI color escapes can be insterted into the prompts,
5954 5958 as
5955 5959 \family typewriter
5956 5960
5957 5961 \backslash
5958 5962 C_
5959 5963 \emph on
5960 5964 ColorName
5961 5965 \family default
5962 5966 \emph default
5963 5967 .
5964 5968 The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
5965 5969 LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
5966 5970 Normal, Purple, Red, White, Yellow.
5967 5971 \layout Standard
5968 5972
5969 5973 Finally, IPython supports the evaluation of arbitrary expressions in your
5970 5974 prompt string.
5971 5975 The prompt strings are evaluated through the syntax of PEP 215, but basically
5972 5976 you can use
5973 5977 \family typewriter
5974 5978 $x.y
5975 5979 \family default
5976 5980 to expand the value of
5977 5981 \family typewriter
5978 5982 x.y
5979 5983 \family default
5980 5984 , and for more complicated expressions you can use braces:
5981 5985 \family typewriter
5982 5986 ${foo()+x}
5983 5987 \family default
5984 5988 will call function
5985 5989 \family typewriter
5986 5990 foo
5987 5991 \family default
5988 5992 and add to it the value of
5989 5993 \family typewriter
5990 5994 x
5991 5995 \family default
5992 5996 , before putting the result into your prompt.
5993 5997 For example, using
5994 5998 \newline
5995 5999
5996 6000 \family typewriter
5997 6001 prompt_in1 '${commands.getoutput("uptime")}
5998 6002 \backslash
5999 6003 nIn [
6000 6004 \backslash
6001 6005 #]: '
6002 6006 \newline
6003 6007
6004 6008 \family default
6005 6009 will print the result of the uptime command on each prompt (assuming the
6006 6010
6007 6011 \family typewriter
6008 6012 commands
6009 6013 \family default
6010 6014 module has been imported in your
6011 6015 \family typewriter
6012 6016 ipythonrc
6013 6017 \family default
6014 6018 file).
6015 6019 \layout Subsubsection
6016 6020
6017 6021 Prompt examples
6018 6022 \layout Standard
6019 6023
6020 6024 The following options in an ipythonrc file will give you IPython's default
6021 6025 prompts:
6022 6026 \layout Standard
6023 6027
6024 6028
6025 6029 \family typewriter
6026 6030 prompt_in1 'In [
6027 6031 \backslash
6028 6032 #]:'
6029 6033 \newline
6030 6034 prompt_in2 '\SpecialChar ~
6031 6035 \SpecialChar ~
6032 6036 \SpecialChar ~
6033 6037 .
6034 6038 \backslash
6035 6039 D.:'
6036 6040 \newline
6037 6041 prompt_out 'Out[
6038 6042 \backslash
6039 6043 #]:'
6040 6044 \layout Standard
6041 6045
6042 6046 which look like this:
6043 6047 \layout Standard
6044 6048
6045 6049
6046 6050 \family typewriter
6047 6051 In [1]: 1+2
6048 6052 \newline
6049 6053 Out[1]: 3
6050 6054 \layout Standard
6051 6055
6052 6056
6053 6057 \family typewriter
6054 6058 In [2]: for i in (1,2,3):
6055 6059 \newline
6056 6060
6057 6061 \begin_inset ERT
6058 6062 status Collapsed
6059 6063
6060 6064 \layout Standard
6061 6065
6062 6066 \backslash
6063 6067 hspace*{0mm}
6064 6068 \end_inset
6065 6069
6066 6070 \SpecialChar ~
6067 6071 \SpecialChar ~
6068 6072 \SpecialChar ~
6069 6073 ...: \SpecialChar ~
6070 6074 \SpecialChar ~
6071 6075 \SpecialChar ~
6072 6076 \SpecialChar ~
6073 6077 print i,
6074 6078 \newline
6075 6079
6076 6080 \begin_inset ERT
6077 6081 status Collapsed
6078 6082
6079 6083 \layout Standard
6080 6084
6081 6085 \backslash
6082 6086 hspace*{0mm}
6083 6087 \end_inset
6084 6088
6085 6089 \SpecialChar ~
6086 6090 \SpecialChar ~
6087 6091 \SpecialChar ~
6088 6092 ...:
6089 6093 \newline
6090 6094 1 2 3
6091 6095 \layout Standard
6092 6096
6093 6097 These will give you a very colorful prompt with path information:
6094 6098 \layout Standard
6095 6099
6096 6100
6097 6101 \family typewriter
6098 6102 #prompt_in1 '
6099 6103 \backslash
6100 6104 C_Red
6101 6105 \backslash
6102 6106 u
6103 6107 \backslash
6104 6108 C_Blue[
6105 6109 \backslash
6106 6110 C_Cyan
6107 6111 \backslash
6108 6112 Y1
6109 6113 \backslash
6110 6114 C_Blue]
6111 6115 \backslash
6112 6116 C_LightGreen
6113 6117 \backslash
6114 6118 #>'
6115 6119 \newline
6116 6120 prompt_in2 ' ..
6117 6121 \backslash
6118 6122 D>'
6119 6123 \newline
6120 6124 prompt_out '<
6121 6125 \backslash
6122 6126 #>'
6123 6127 \layout Standard
6124 6128
6125 6129 which look like this:
6126 6130 \layout Standard
6127 6131
6128 6132
6129 6133 \family typewriter
6130 6134 \color red
6131 6135 fperez
6132 6136 \color blue
6133 6137 [
6134 6138 \color cyan
6135 6139 ~/ipython
6136 6140 \color blue
6137 6141 ]
6138 6142 \color green
6139 6143 1>
6140 6144 \color default
6141 6145 1+2
6142 6146 \newline
6143 6147
6144 6148 \begin_inset ERT
6145 6149 status Collapsed
6146 6150
6147 6151 \layout Standard
6148 6152
6149 6153 \backslash
6150 6154 hspace*{0mm}
6151 6155 \end_inset
6152 6156
6153 6157 \SpecialChar ~
6154 6158 \SpecialChar ~
6155 6159 \SpecialChar ~
6156 6160 \SpecialChar ~
6157 6161 \SpecialChar ~
6158 6162 \SpecialChar ~
6159 6163 \SpecialChar ~
6160 6164 \SpecialChar ~
6161 6165 \SpecialChar ~
6162 6166 \SpecialChar ~
6163 6167 \SpecialChar ~
6164 6168 \SpecialChar ~
6165 6169 \SpecialChar ~
6166 6170 \SpecialChar ~
6167 6171 \SpecialChar ~
6168 6172 \SpecialChar ~
6169 6173
6170 6174 \color red
6171 6175 <1>
6172 6176 \color default
6173 6177 3
6174 6178 \newline
6175 6179
6176 6180 \color red
6177 6181 fperez
6178 6182 \color blue
6179 6183 [
6180 6184 \color cyan
6181 6185 ~/ipython
6182 6186 \color blue
6183 6187 ]
6184 6188 \color green
6185 6189 2>
6186 6190 \color default
6187 6191 for i in (1,2,3):
6188 6192 \newline
6189 6193
6190 6194 \begin_inset ERT
6191 6195 status Collapsed
6192 6196
6193 6197 \layout Standard
6194 6198
6195 6199 \backslash
6196 6200 hspace*{0mm}
6197 6201 \end_inset
6198 6202
6199 6203 \SpecialChar ~
6200 6204 \SpecialChar ~
6201 6205 \SpecialChar ~
6202 6206 \SpecialChar ~
6203 6207 \SpecialChar ~
6204 6208 \SpecialChar ~
6205 6209 \SpecialChar ~
6206 6210 \SpecialChar ~
6207 6211 \SpecialChar ~
6208 6212 \SpecialChar ~
6209 6213 \SpecialChar ~
6210 6214 \SpecialChar ~
6211 6215 \SpecialChar ~
6212 6216 \SpecialChar ~
6213 6217 \SpecialChar ~
6214 6218
6215 6219 \color green
6216 6220 ...>
6217 6221 \color default
6218 6222 \SpecialChar ~
6219 6223 \SpecialChar ~
6220 6224 \SpecialChar ~
6221 6225 \SpecialChar ~
6222 6226 print i,
6223 6227 \newline
6224 6228
6225 6229 \begin_inset ERT
6226 6230 status Collapsed
6227 6231
6228 6232 \layout Standard
6229 6233
6230 6234 \backslash
6231 6235 hspace*{0mm}
6232 6236 \end_inset
6233 6237
6234 6238 \SpecialChar ~
6235 6239 \SpecialChar ~
6236 6240 \SpecialChar ~
6237 6241 \SpecialChar ~
6238 6242 \SpecialChar ~
6239 6243 \SpecialChar ~
6240 6244 \SpecialChar ~
6241 6245 \SpecialChar ~
6242 6246 \SpecialChar ~
6243 6247 \SpecialChar ~
6244 6248 \SpecialChar ~
6245 6249 \SpecialChar ~
6246 6250 \SpecialChar ~
6247 6251 \SpecialChar ~
6248 6252 \SpecialChar ~
6249 6253
6250 6254 \color green
6251 6255 ...>
6252 6256 \color default
6253 6257
6254 6258 \newline
6255 6259 1 2 3
6256 6260 \layout Standard
6257 6261
6258 6262 The following shows the usage of dynamic expression evaluation:
6259 6263 \layout Subsection
6260 6264
6261 6265
6262 6266 \begin_inset LatexCommand \label{sec:profiles}
6263 6267
6264 6268 \end_inset
6265 6269
6266 6270 IPython profiles
6267 6271 \layout Standard
6268 6272
6269 6273 As we already mentioned, IPython supports the
6270 6274 \family typewriter
6271 6275 -profile
6272 6276 \family default
6273 6277 command-line option (see sec.
6274 6278
6275 6279 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6276 6280
6277 6281 \end_inset
6278 6282
6279 6283 ).
6280 6284 A profile is nothing more than a particular configuration file like your
6281 6285 basic
6282 6286 \family typewriter
6283 6287 ipythonrc
6284 6288 \family default
6285 6289 one, but with particular customizations for a specific purpose.
6286 6290 When you start IPython with '
6287 6291 \family typewriter
6288 6292 ipython -profile <name>
6289 6293 \family default
6290 6294 ', it assumes that in your
6291 6295 \family typewriter
6292 6296 IPYTHONDIR
6293 6297 \family default
6294 6298 there is a file called
6295 6299 \family typewriter
6296 6300 ipythonrc-<name>
6297 6301 \family default
6298 6302 , and loads it instead of the normal
6299 6303 \family typewriter
6300 6304 ipythonrc
6301 6305 \family default
6302 6306 .
6303 6307 \layout Standard
6304 6308
6305 6309 This system allows you to maintain multiple configurations which load modules,
6306 6310 set options, define functions, etc.
6307 6311 suitable for different tasks and activate them in a very simple manner.
6308 6312 In order to avoid having to repeat all of your basic options (common things
6309 6313 that don't change such as your color preferences, for example), any profile
6310 6314 can include another configuration file.
6311 6315 The most common way to use profiles is then to have each one include your
6312 6316 basic
6313 6317 \family typewriter
6314 6318 ipythonrc
6315 6319 \family default
6316 6320 file as a starting point, and then add further customizations.
6317 6321 \layout Standard
6318 6322
6319 6323 In sections
6320 6324 \begin_inset LatexCommand \ref{sec:syntax-extensions}
6321 6325
6322 6326 \end_inset
6323 6327
6324 6328 and
6325 6329 \begin_inset LatexCommand \ref{sec:Gnuplot}
6326 6330
6327 6331 \end_inset
6328 6332
6329 6333 we discuss some particular profiles which come as part of the standard
6330 6334 IPython distribution.
6331 6335 You may also look in your
6332 6336 \family typewriter
6333 6337 IPYTHONDIR
6334 6338 \family default
6335 6339 directory, any file whose name begins with
6336 6340 \family typewriter
6337 6341 ipythonrc-
6338 6342 \family default
6339 6343 is a profile.
6340 6344 You can use those as examples for further customizations to suit your own
6341 6345 needs.
6342 6346 \layout Section
6343 6347
6344 6348
6345 6349 \begin_inset OptArg
6346 6350 collapsed false
6347 6351
6348 6352 \layout Standard
6349 6353
6350 6354 IPython as default...
6351 6355 \end_inset
6352 6356
6353 6357 IPython as your default Python environment
6354 6358 \layout Standard
6355 6359
6356 6360 Python honors the environment variable
6357 6361 \family typewriter
6358 6362 PYTHONSTARTUP
6359 6363 \family default
6360 6364 and will execute at startup the file referenced by this variable.
6361 6365 If you put at the end of this file the following two lines of code:
6362 6366 \layout Standard
6363 6367
6364 6368
6365 6369 \family typewriter
6366 6370 import IPython
6367 6371 \newline
6368 6372 IPython.Shell.IPShell().mainloop(sys_exit=1)
6369 6373 \layout Standard
6370 6374
6371 6375 then IPython will be your working environment anytime you start Python.
6372 6376 The
6373 6377 \family typewriter
6374 6378 sys_exit=1
6375 6379 \family default
6376 6380 is needed to have IPython issue a call to
6377 6381 \family typewriter
6378 6382 sys.exit()
6379 6383 \family default
6380 6384 when it finishes, otherwise you'll be back at the normal Python '
6381 6385 \family typewriter
6382 6386 >>>
6383 6387 \family default
6384 6388 ' prompt
6385 6389 \begin_inset Foot
6386 6390 collapsed true
6387 6391
6388 6392 \layout Standard
6389 6393
6390 6394 Based on an idea by Holger Krekel.
6391 6395 \end_inset
6392 6396
6393 6397 .
6394 6398 \layout Standard
6395 6399
6396 6400 This is probably useful to developers who manage multiple Python versions
6397 6401 and don't want to have correspondingly multiple IPython versions.
6398 6402 Note that in this mode, there is no way to pass IPython any command-line
6399 6403 options, as those are trapped first by Python itself.
6400 6404 \layout Section
6401 6405
6402 6406
6403 6407 \begin_inset LatexCommand \label{sec:embed}
6404 6408
6405 6409 \end_inset
6406 6410
6407 6411 Embedding IPython
6408 6412 \layout Standard
6409 6413
6410 6414 It is possible to start an IPython instance
6411 6415 \emph on
6412 6416 inside
6413 6417 \emph default
6414 6418 your own Python programs.
6415 6419 This allows you to evaluate dynamically the state of your code, operate
6416 6420 with your variables, analyze them, etc.
6417 6421 Note however that any changes you make to values while in the shell do
6418 6422
6419 6423 \emph on
6420 6424 not
6421 6425 \emph default
6422 6426 propagate back to the running code, so it is safe to modify your values
6423 6427 because you won't break your code in bizarre ways by doing so.
6424 6428 \layout Standard
6425 6429
6426 6430 This feature allows you to easily have a fully functional python environment
6427 6431 for doing object introspection anywhere in your code with a simple function
6428 6432 call.
6429 6433 In some cases a simple print statement is enough, but if you need to do
6430 6434 more detailed analysis of a code fragment this feature can be very valuable.
6431 6435 \layout Standard
6432 6436
6433 6437 It can also be useful in scientific computing situations where it is common
6434 6438 to need to do some automatic, computationally intensive part and then stop
6435 6439 to look at data, plots, etc
6436 6440 \begin_inset Foot
6437 6441 collapsed true
6438 6442
6439 6443 \layout Standard
6440 6444
6441 6445 This functionality was inspired by IDL's combination of the
6442 6446 \family typewriter
6443 6447 stop
6444 6448 \family default
6445 6449 keyword and the
6446 6450 \family typewriter
6447 6451 .continue
6448 6452 \family default
6449 6453 executive command, which I have found very useful in the past, and by a
6450 6454 posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
6451 6455 06/01 concerning similar uses of pyrepl.
6452 6456 \end_inset
6453 6457
6454 6458 .
6455 6459 Opening an IPython instance will give you full access to your data and
6456 6460 functions, and you can resume program execution once you are done with
6457 6461 the interactive part (perhaps to stop again later, as many times as needed).
6458 6462 \layout Standard
6459 6463
6460 6464 The following code snippet is the bare minimum you need to include in your
6461 6465 Python programs for this to work (detailed examples follow later):
6462 6466 \layout LyX-Code
6463 6467
6464 6468 from IPython.Shell import IPShellEmbed
6465 6469 \layout LyX-Code
6466 6470
6467 6471 ipshell = IPShellEmbed()
6468 6472 \layout LyX-Code
6469 6473
6470 6474 ipshell() # this call anywhere in your program will start IPython
6471 6475 \layout Standard
6472 6476
6473 6477 You can run embedded instances even in code which is itself being run at
6474 6478 the IPython interactive prompt with '
6475 6479 \family typewriter
6476 6480 %run\SpecialChar ~
6477 6481 <filename>
6478 6482 \family default
6479 6483 '.
6480 6484 Since it's easy to get lost as to where you are (in your top-level IPython
6481 6485 or in your embedded one), it's a good idea in such cases to set the in/out
6482 6486 prompts to something different for the embedded instances.
6483 6487 The code examples below illustrate this.
6484 6488 \layout Standard
6485 6489
6486 6490 You can also have multiple IPython instances in your program and open them
6487 6491 separately, for example with different options for data presentation.
6488 6492 If you close and open the same instance multiple times, its prompt counters
6489 6493 simply continue from each execution to the next.
6490 6494 \layout Standard
6491 6495
6492 6496 Please look at the docstrings in the
6493 6497 \family typewriter
6494 6498 Shell.py
6495 6499 \family default
6496 6500 module for more details on the use of this system.
6497 6501 \layout Standard
6498 6502
6499 6503 The following sample file illustrating how to use the embedding functionality
6500 6504 is provided in the examples directory as
6501 6505 \family typewriter
6502 6506 example-embed.py
6503 6507 \family default
6504 6508 .
6505 6509 It should be fairly self-explanatory:
6506 6510 \layout Standard
6507 6511
6508 6512
6509 6513 \begin_inset ERT
6510 6514 status Open
6511 6515
6512 6516 \layout Standard
6513 6517
6514 6518 \backslash
6515 6519 codelist{examples/example-embed.py}
6516 6520 \end_inset
6517 6521
6518 6522
6519 6523 \layout Standard
6520 6524
6521 6525 Once you understand how the system functions, you can use the following
6522 6526 code fragments in your programs which are ready for cut and paste:
6523 6527 \layout Standard
6524 6528
6525 6529
6526 6530 \begin_inset ERT
6527 6531 status Open
6528 6532
6529 6533 \layout Standard
6530 6534
6531 6535 \backslash
6532 6536 codelist{examples/example-embed-short.py}
6533 6537 \end_inset
6534 6538
6535 6539
6536 6540 \layout Section
6537 6541
6538 6542
6539 6543 \begin_inset LatexCommand \label{sec:using-pdb}
6540 6544
6541 6545 \end_inset
6542 6546
6543 6547 Using the Python debugger (
6544 6548 \family typewriter
6545 6549 pdb
6546 6550 \family default
6547 6551 )
6548 6552 \layout Subsection
6549 6553
6550 6554 Running entire programs via
6551 6555 \family typewriter
6552 6556 pdb
6553 6557 \layout Standard
6554 6558
6555 6559
6556 6560 \family typewriter
6557 6561 pdb
6558 6562 \family default
6559 6563 , the Python debugger, is a powerful interactive debugger which allows you
6560 6564 to step through code, set breakpoints, watch variables, etc.
6561 6565 IPython makes it very easy to start any script under the control of
6562 6566 \family typewriter
6563 6567 pdb
6564 6568 \family default
6565 6569 , regardless of whether you have wrapped it into a
6566 6570 \family typewriter
6567 6571 `main()'
6568 6572 \family default
6569 6573 function or not.
6570 6574 For this, simply type
6571 6575 \family typewriter
6572 6576 `%run -d myscript'
6573 6577 \family default
6574 6578 at an IPython prompt.
6575 6579 See the
6576 6580 \family typewriter
6577 6581 %run
6578 6582 \family default
6579 6583 command's documentation (via
6580 6584 \family typewriter
6581 6585 `%run?'
6582 6586 \family default
6583 6587 or in Sec.\SpecialChar ~
6584 6588
6585 6589 \begin_inset LatexCommand \ref{sec:magic}
6586 6590
6587 6591 \end_inset
6588 6592
6589 6593 ) for more details, including how to control where
6590 6594 \family typewriter
6591 6595 pdb
6592 6596 \family default
6593 6597 will stop execution first.
6594 6598 \layout Standard
6595 6599
6596 6600 For more information on the use of the
6597 6601 \family typewriter
6598 6602 pdb
6599 6603 \family default
6600 6604 debugger, read the included
6601 6605 \family typewriter
6602 6606 pdb.doc
6603 6607 \family default
6604 6608 file (part of the standard Python distribution).
6605 6609 On a stock Linux system it is located at
6606 6610 \family typewriter
6607 6611 /usr/lib/python2.3/pdb.doc
6608 6612 \family default
6609 6613 , but the easiest way to read it is by using the
6610 6614 \family typewriter
6611 6615 help()
6612 6616 \family default
6613 6617 function of the
6614 6618 \family typewriter
6615 6619 pdb
6616 6620 \family default
6617 6621 module as follows (in an IPython prompt):
6618 6622 \layout Standard
6619 6623
6620 6624
6621 6625 \family typewriter
6622 6626 In [1]: import pdb
6623 6627 \newline
6624 6628 In [2]: pdb.help()
6625 6629 \layout Standard
6626 6630
6627 6631 This will load the
6628 6632 \family typewriter
6629 6633 pdb.doc
6630 6634 \family default
6631 6635 document in a file viewer for you automatically.
6632 6636 \layout Subsection
6633 6637
6634 6638 Automatic invocation of
6635 6639 \family typewriter
6636 6640 pdb
6637 6641 \family default
6638 6642 on exceptions
6639 6643 \layout Standard
6640 6644
6641 6645 IPython, if started with the
6642 6646 \family typewriter
6643 6647 -pdb
6644 6648 \family default
6645 6649 option (or if the option is set in your rc file) can call the Python
6646 6650 \family typewriter
6647 6651 pdb
6648 6652 \family default
6649 6653 debugger every time your code triggers an uncaught exception
6650 6654 \begin_inset Foot
6651 6655 collapsed true
6652 6656
6653 6657 \layout Standard
6654 6658
6655 6659 Many thanks to Christopher Hart for the request which prompted adding this
6656 6660 feature to IPython.
6657 6661 \end_inset
6658 6662
6659 6663 .
6660 6664 This feature can also be toggled at any time with the
6661 6665 \family typewriter
6662 6666 %pdb
6663 6667 \family default
6664 6668 magic command.
6665 6669 This can be extremely useful in order to find the origin of subtle bugs,
6666 6670 because
6667 6671 \family typewriter
6668 6672 pdb
6669 6673 \family default
6670 6674 opens up at the point in your code which triggered the exception, and while
6671 6675 your program is at this point `dead', all the data is still available and
6672 6676 you can walk up and down the stack frame and understand the origin of the
6673 6677 problem.
6674 6678 \layout Standard
6675 6679
6676 6680 Furthermore, you can use these debugging facilities both with the embedded
6677 6681 IPython mode and without IPython at all.
6678 6682 For an embedded shell (see sec.
6679 6683
6680 6684 \begin_inset LatexCommand \ref{sec:embed}
6681 6685
6682 6686 \end_inset
6683 6687
6684 6688 ), simply call the constructor with
6685 6689 \family typewriter
6686 6690 `-pdb'
6687 6691 \family default
6688 6692 in the argument string and automatically
6689 6693 \family typewriter
6690 6694 pdb
6691 6695 \family default
6692 6696 will be called if an uncaught exception is triggered by your code.
6693 6697
6694 6698 \layout Standard
6695 6699
6696 6700 For stand-alone use of the feature in your programs which do not use IPython
6697 6701 at all, put the following lines toward the top of your `main' routine:
6698 6702 \layout Standard
6699 6703 \align left
6700 6704
6701 6705 \family typewriter
6702 6706 import sys,IPython.ultraTB
6703 6707 \newline
6704 6708 sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbose', color_scheme=`Linux',
6705 6709 call_pdb=1)
6706 6710 \layout Standard
6707 6711
6708 6712 The
6709 6713 \family typewriter
6710 6714 mode
6711 6715 \family default
6712 6716 keyword can be either
6713 6717 \family typewriter
6714 6718 `Verbose'
6715 6719 \family default
6716 6720 or
6717 6721 \family typewriter
6718 6722 `Plain'
6719 6723 \family default
6720 6724 , giving either very detailed or normal tracebacks respectively.
6721 6725 The
6722 6726 \family typewriter
6723 6727 color_scheme
6724 6728 \family default
6725 6729 keyword can be one of
6726 6730 \family typewriter
6727 6731 `NoColor'
6728 6732 \family default
6729 6733 ,
6730 6734 \family typewriter
6731 6735 `Linux'
6732 6736 \family default
6733 6737 (default) or
6734 6738 \family typewriter
6735 6739 `LightBG'
6736 6740 \family default
6737 6741 .
6738 6742 These are the same options which can be set in IPython with
6739 6743 \family typewriter
6740 6744 -colors
6741 6745 \family default
6742 6746 and
6743 6747 \family typewriter
6744 6748 -xmode
6745 6749 \family default
6746 6750 .
6747 6751 \layout Standard
6748 6752
6749 6753 This will give any of your programs detailed, colored tracebacks with automatic
6750 6754 invocation of
6751 6755 \family typewriter
6752 6756 pdb
6753 6757 \family default
6754 6758 .
6755 6759 \layout Section
6756 6760
6757 6761
6758 6762 \begin_inset LatexCommand \label{sec:syntax-extensions}
6759 6763
6760 6764 \end_inset
6761 6765
6762 6766 Extensions for syntax processing
6763 6767 \layout Standard
6764 6768
6765 6769 This isn't for the faint of heart, because the potential for breaking things
6766 6770 is quite high.
6767 6771 But it can be a very powerful and useful feature.
6768 6772 In a nutshell, you can redefine the way IPython processes the user input
6769 6773 line to accept new, special extensions to the syntax without needing to
6770 6774 change any of IPython's own code.
6771 6775 \layout Standard
6772 6776
6773 6777 In the
6774 6778 \family typewriter
6775 6779 IPython/Extensions
6776 6780 \family default
6777 6781 directory you will find some examples supplied, which we will briefly describe
6778 6782 now.
6779 6783 These can be used `as is' (and both provide very useful functionality),
6780 6784 or you can use them as a starting point for writing your own extensions.
6781 6785 \layout Subsection
6782 6786
6783 6787 Pasting of code starting with
6784 6788 \family typewriter
6785 6789 `>>>
6786 6790 \family default
6787 6791 ' or
6788 6792 \family typewriter
6789 6793 `...
6790 6794
6791 6795 \family default
6792 6796 '
6793 6797 \layout Standard
6794 6798
6795 6799 In the python tutorial it is common to find code examples which have been
6796 6800 taken from real python sessions.
6797 6801 The problem with those is that all the lines begin with either
6798 6802 \family typewriter
6799 6803 `>>>
6800 6804 \family default
6801 6805 ' or
6802 6806 \family typewriter
6803 6807 `...
6804 6808
6805 6809 \family default
6806 6810 ', which makes it impossible to paste them all at once.
6807 6811 One must instead do a line by line manual copying, carefully removing the
6808 6812 leading extraneous characters.
6809 6813 \layout Standard
6810 6814
6811 6815 This extension identifies those starting characters and removes them from
6812 6816 the input automatically, so that one can paste multi-line examples directly
6813 6817 into IPython, saving a lot of time.
6814 6818 Please look at the file
6815 6819 \family typewriter
6816 6820 InterpreterPasteInput.py
6817 6821 \family default
6818 6822 in the
6819 6823 \family typewriter
6820 6824 IPython/Extensions
6821 6825 \family default
6822 6826 directory for details on how this is done.
6823 6827 \layout Standard
6824 6828
6825 6829 IPython comes with a special profile enabling this feature, called
6826 6830 \family typewriter
6827 6831 tutorial
6828 6832 \family default
6829 6833 \emph on
6830 6834 .
6831 6835
6832 6836 \emph default
6833 6837 Simply start IPython via
6834 6838 \family typewriter
6835 6839 `ipython\SpecialChar ~
6836 6840 -p\SpecialChar ~
6837 6841 tutorial'
6838 6842 \family default
6839 6843 and the feature will be available.
6840 6844 In a normal IPython session you can activate the feature by importing the
6841 6845 corresponding module with:
6842 6846 \newline
6843 6847
6844 6848 \family typewriter
6845 6849 In [1]: import IPython.Extensions.InterpreterPasteInput
6846 6850 \layout Standard
6847 6851
6848 6852 The following is a 'screenshot' of how things work when this extension is
6849 6853 on, copying an example from the standard tutorial:
6850 6854 \layout Standard
6851 6855
6852 6856
6853 6857 \family typewriter
6854 6858 IPython profile: tutorial
6855 6859 \newline
6856 6860 \SpecialChar ~
6857 6861
6858 6862 \newline
6859 6863 *** Pasting of code with ">>>" or "..." has been enabled.
6860 6864 \newline
6861 6865 \SpecialChar ~
6862 6866
6863 6867 \newline
6864 6868 In [1]: >>> def fib2(n): # return Fibonacci series up to n
6865 6869 \newline
6866 6870
6867 6871 \begin_inset ERT
6868 6872 status Collapsed
6869 6873
6870 6874 \layout Standard
6871 6875
6872 6876 \backslash
6873 6877 hspace*{0mm}
6874 6878 \end_inset
6875 6879
6876 6880 \SpecialChar ~
6877 6881 \SpecialChar ~
6878 6882 ...: ...\SpecialChar ~
6879 6883 \SpecialChar ~
6880 6884 \SpecialChar ~
6881 6885 \SpecialChar ~
6882 6886 """Return a list containing the Fibonacci series up to n."""
6883 6887 \newline
6884 6888
6885 6889 \begin_inset ERT
6886 6890 status Collapsed
6887 6891
6888 6892 \layout Standard
6889 6893
6890 6894 \backslash
6891 6895 hspace*{0mm}
6892 6896 \end_inset
6893 6897
6894 6898 \SpecialChar ~
6895 6899 \SpecialChar ~
6896 6900 ...: ...\SpecialChar ~
6897 6901 \SpecialChar ~
6898 6902 \SpecialChar ~
6899 6903 \SpecialChar ~
6900 6904 result = []
6901 6905 \newline
6902 6906
6903 6907 \begin_inset ERT
6904 6908 status Collapsed
6905 6909
6906 6910 \layout Standard
6907 6911
6908 6912 \backslash
6909 6913 hspace*{0mm}
6910 6914 \end_inset
6911 6915
6912 6916 \SpecialChar ~
6913 6917 \SpecialChar ~
6914 6918 ...: ...\SpecialChar ~
6915 6919 \SpecialChar ~
6916 6920 \SpecialChar ~
6917 6921 \SpecialChar ~
6918 6922 a, b = 0, 1
6919 6923 \newline
6920 6924
6921 6925 \begin_inset ERT
6922 6926 status Collapsed
6923 6927
6924 6928 \layout Standard
6925 6929
6926 6930 \backslash
6927 6931 hspace*{0mm}
6928 6932 \end_inset
6929 6933
6930 6934 \SpecialChar ~
6931 6935 \SpecialChar ~
6932 6936 ...: ...\SpecialChar ~
6933 6937 \SpecialChar ~
6934 6938 \SpecialChar ~
6935 6939 \SpecialChar ~
6936 6940 while b < n:
6937 6941 \newline
6938 6942
6939 6943 \begin_inset ERT
6940 6944 status Collapsed
6941 6945
6942 6946 \layout Standard
6943 6947
6944 6948 \backslash
6945 6949 hspace*{0mm}
6946 6950 \end_inset
6947 6951
6948 6952 \SpecialChar ~
6949 6953 \SpecialChar ~
6950 6954 ...: ...\SpecialChar ~
6951 6955 \SpecialChar ~
6952 6956 \SpecialChar ~
6953 6957 \SpecialChar ~
6954 6958 \SpecialChar ~
6955 6959 \SpecialChar ~
6956 6960 \SpecialChar ~
6957 6961 \SpecialChar ~
6958 6962 result.append(b)\SpecialChar ~
6959 6963 \SpecialChar ~
6960 6964 \SpecialChar ~
6961 6965 # see below
6962 6966 \newline
6963 6967
6964 6968 \begin_inset ERT
6965 6969 status Collapsed
6966 6970
6967 6971 \layout Standard
6968 6972
6969 6973 \backslash
6970 6974 hspace*{0mm}
6971 6975 \end_inset
6972 6976
6973 6977 \SpecialChar ~
6974 6978 \SpecialChar ~
6975 6979 ...: ...\SpecialChar ~
6976 6980 \SpecialChar ~
6977 6981 \SpecialChar ~
6978 6982 \SpecialChar ~
6979 6983 \SpecialChar ~
6980 6984 \SpecialChar ~
6981 6985 \SpecialChar ~
6982 6986 \SpecialChar ~
6983 6987 a, b = b, a+b
6984 6988 \newline
6985 6989
6986 6990 \begin_inset ERT
6987 6991 status Collapsed
6988 6992
6989 6993 \layout Standard
6990 6994
6991 6995 \backslash
6992 6996 hspace*{0mm}
6993 6997 \end_inset
6994 6998
6995 6999 \SpecialChar ~
6996 7000 \SpecialChar ~
6997 7001 ...: ...\SpecialChar ~
6998 7002 \SpecialChar ~
6999 7003 \SpecialChar ~
7000 7004 \SpecialChar ~
7001 7005 return result
7002 7006 \newline
7003 7007
7004 7008 \begin_inset ERT
7005 7009 status Collapsed
7006 7010
7007 7011 \layout Standard
7008 7012
7009 7013 \backslash
7010 7014 hspace*{0mm}
7011 7015 \end_inset
7012 7016
7013 7017 \SpecialChar ~
7014 7018 \SpecialChar ~
7015 7019 ...:
7016 7020 \newline
7017 7021 \SpecialChar ~
7018 7022
7019 7023 \newline
7020 7024 In [2]: fib2(10)
7021 7025 \newline
7022 7026 Out[2]: [1, 1, 2, 3, 5, 8]
7023 7027 \layout Standard
7024 7028
7025 7029 Note that as currently written, this extension does
7026 7030 \emph on
7027 7031 not
7028 7032 \emph default
7029 7033 recognize IPython's prompts for pasting.
7030 7034 Those are more complicated, since the user can change them very easily,
7031 7035 they involve numbers and can vary in length.
7032 7036 One could however extract all the relevant information from the IPython
7033 7037 instance and build an appropriate regular expression.
7034 7038 This is left as an exercise for the reader.
7035 7039 \layout Subsection
7036 7040
7037 7041 Input of physical quantities with units
7038 7042 \layout Standard
7039 7043
7040 7044 The module
7041 7045 \family typewriter
7042 7046 PhysicalQInput
7043 7047 \family default
7044 7048 allows a simplified form of input for physical quantities with units.
7045 7049 This file is meant to be used in conjunction with the
7046 7050 \family typewriter
7047 7051 PhysicalQInteractive
7048 7052 \family default
7049 7053 module (in the same directory) and
7050 7054 \family typewriter
7051 7055 Physics.PhysicalQuantities
7052 7056 \family default
7053 7057 from Konrad Hinsen's ScientificPython (
7054 7058 \begin_inset LatexCommand \htmlurl{http://dirac.cnrs-orleans.fr/ScientificPython/}
7055 7059
7056 7060 \end_inset
7057 7061
7058 7062 ).
7059 7063 \layout Standard
7060 7064
7061 7065 The
7062 7066 \family typewriter
7063 7067 Physics.PhysicalQuantities
7064 7068 \family default
7065 7069 module defines
7066 7070 \family typewriter
7067 7071 PhysicalQuantity
7068 7072 \family default
7069 7073 objects, but these must be declared as instances of a class.
7070 7074 For example, to define
7071 7075 \family typewriter
7072 7076 v
7073 7077 \family default
7074 7078 as a velocity of 3\SpecialChar ~
7075 7079 m/s, normally you would write:
7076 7080 \family typewriter
7077 7081
7078 7082 \newline
7079 7083 In [1]: v = PhysicalQuantity(3,'m/s')
7080 7084 \layout Standard
7081 7085
7082 7086 Using the
7083 7087 \family typewriter
7084 7088 PhysicalQ_Input
7085 7089 \family default
7086 7090 extension this can be input instead as:
7087 7091 \family typewriter
7088 7092
7089 7093 \newline
7090 7094 In [1]: v = 3 m/s
7091 7095 \family default
7092 7096
7093 7097 \newline
7094 7098 which is much more convenient for interactive use (even though it is blatantly
7095 7099 invalid Python syntax).
7096 7100 \layout Standard
7097 7101
7098 7102 The
7099 7103 \family typewriter
7100 7104 physics
7101 7105 \family default
7102 7106 profile supplied with IPython (enabled via
7103 7107 \family typewriter
7104 7108 'ipython -p physics'
7105 7109 \family default
7106 7110 ) uses these extensions, which you can also activate with:
7107 7111 \layout Standard
7108 7112
7109 7113
7110 7114 \family typewriter
7111 7115 from math import * # math MUST be imported BEFORE PhysicalQInteractive
7112 7116 \newline
7113 7117 from IPython.Extensions.PhysicalQInteractive import *
7114 7118 \newline
7115 7119 import IPython.Extensions.PhysicalQInput
7116 7120 \layout Section
7117 7121
7118 7122
7119 7123 \begin_inset LatexCommand \label{sec:IPython-as-shell}
7120 7124
7121 7125 \end_inset
7122 7126
7123 7127 IPython as a system shell
7124 7128 \layout Standard
7125 7129
7126 7130 IPython ships with a special profile called
7127 7131 \family typewriter
7128 7132 pysh
7129 7133 \family default
7130 7134 , which you can activate at the command line as
7131 7135 \family typewriter
7132 7136 `ipython -p pysh'
7133 7137 \family default
7134 7138 .
7135 7139 This loads
7136 7140 \family typewriter
7137 7141 InterpreterExec
7138 7142 \family default
7139 7143 , along with some additional facilities and a prompt customized for filesystem
7140 7144 navigation.
7141 7145 \layout Standard
7142 7146
7143 7147 Note that this does
7144 7148 \emph on
7145 7149 not
7146 7150 \emph default
7147 7151 make IPython a full-fledged system shell.
7148 7152 In particular, it has no job control, so if you type Ctrl-Z (under Unix),
7149 7153 you'll suspend pysh itself, not the process you just started.
7150 7154
7151 7155 \layout Standard
7152 7156
7153 7157 What the shell profile allows you to do is to use the convenient and powerful
7154 7158 syntax of Python to do quick scripting at the command line.
7155 7159 Below we describe some of its features.
7156 7160 \layout Subsection
7157 7161
7158 7162 Aliases
7159 7163 \layout Standard
7160 7164
7161 7165 All of your
7162 7166 \family typewriter
7163 7167 $PATH
7164 7168 \family default
7165 7169 has been loaded as IPython aliases, so you should be able to type any normal
7166 7170 system command and have it executed.
7167 7171 See
7168 7172 \family typewriter
7169 7173 %alias?
7170 7174 \family default
7171 7175 and
7172 7176 \family typewriter
7173 7177 %unalias?
7174 7178 \family default
7175 7179 for details on the alias facilities.
7176 7180 See also
7177 7181 \family typewriter
7178 7182 %rehash?
7179 7183 \family default
7180 7184 and
7181 7185 \family typewriter
7182 7186 %rehashx?
7183 7187 \family default
7184 7188 for details on the mechanism used to load
7185 7189 \family typewriter
7186 7190 $PATH
7187 7191 \family default
7188 7192 .
7189 7193 \layout Subsection
7190 7194
7191 7195 Special syntax
7192 7196 \layout Standard
7193 7197
7194 7198 Any lines which begin with
7195 7199 \family typewriter
7196 7200 `~'
7197 7201 \family default
7198 7202 ,
7199 7203 \family typewriter
7200 7204 `/'
7201 7205 \family default
7202 7206 and
7203 7207 \family typewriter
7204 7208 `.'
7205 7209 \family default
7206 7210 will be executed as shell commands instead of as Python code.
7207 7211 The special escapes below are also recognized.
7208 7212
7209 7213 \family typewriter
7210 7214 !cmd
7211 7215 \family default
7212 7216 is valid in single or multi-line input, all others are only valid in single-lin
7213 7217 e input:
7214 7218 \layout Description
7215 7219
7216 7220
7217 7221 \family typewriter
7218 7222 !cmd
7219 7223 \family default
7220 7224 pass `cmd' directly to the shell
7221 7225 \layout Description
7222 7226
7223 7227
7224 7228 \family typewriter
7225 7229 !!cmd
7226 7230 \family default
7227 7231 execute `cmd' and return output as a list (split on `
7228 7232 \backslash
7229 7233 n')
7230 7234 \layout Description
7231 7235
7232 7236
7233 7237 \family typewriter
7234 7238 $var=cmd
7235 7239 \family default
7236 7240 capture output of cmd into var, as a string
7237 7241 \layout Description
7238 7242
7239 7243
7240 7244 \family typewriter
7241 7245 $$var=cmd
7242 7246 \family default
7243 7247 capture output of cmd into var, as a list (split on `
7244 7248 \backslash
7245 7249 n')
7246 7250 \layout Standard
7247 7251
7248 7252 The
7249 7253 \family typewriter
7250 7254 $
7251 7255 \family default
7252 7256 /
7253 7257 \family typewriter
7254 7258 $$
7255 7259 \family default
7256 7260 syntaxes make Python variables from system output, which you can later
7257 7261 use for further scripting.
7258 7262 The converse is also possible: when executing an alias or calling to the
7259 7263 system via
7260 7264 \family typewriter
7261 7265 !
7262 7266 \family default
7263 7267 /
7264 7268 \family typewriter
7265 7269 !!
7266 7270 \family default
7267 7271 , you can expand any python variable or expression by prepending it with
7268 7272
7269 7273 \family typewriter
7270 7274 $
7271 7275 \family default
7272 7276 .
7273 7277 Full details of the allowed syntax can be found in Python's PEP 215.
7274 7278 \layout Standard
7275 7279
7276 7280 A few brief examples will illustrate these (note that the indentation below
7277 7281 may be incorrectly displayed):
7278 7282 \layout Standard
7279 7283
7280 7284
7281 7285 \family typewriter
7282 7286 fperez[~/test]|3> !ls *s.py
7283 7287 \newline
7284 7288 scopes.py strings.py
7285 7289 \layout Standard
7286 7290
7287 7291 ls is an internal alias, so there's no need to use
7288 7292 \family typewriter
7289 7293 !
7290 7294 \family default
7291 7295 :
7292 7296 \layout Standard
7293 7297
7294 7298
7295 7299 \family typewriter
7296 7300 fperez[~/test]|4> ls *s.py
7297 7301 \newline
7298 7302 scopes.py* strings.py
7299 7303 \layout Standard
7300 7304
7301 7305 !!ls will return the output into a Python variable:
7302 7306 \layout Standard
7303 7307
7304 7308
7305 7309 \family typewriter
7306 7310 fperez[~/test]|5> !!ls *s.py
7307 7311 \newline
7308 7312
7309 7313 \begin_inset ERT
7310 7314 status Collapsed
7311 7315
7312 7316 \layout Standard
7313 7317
7314 7318 \backslash
7315 7319 hspace*{0mm}
7316 7320 \end_inset
7317 7321
7318 7322 \SpecialChar ~
7319 7323 \SpecialChar ~
7320 7324 \SpecialChar ~
7321 7325 \SpecialChar ~
7322 7326 \SpecialChar ~
7323 7327 \SpecialChar ~
7324 7328 \SpecialChar ~
7325 7329 \SpecialChar ~
7326 7330 \SpecialChar ~
7327 7331 \SpecialChar ~
7328 7332 \SpecialChar ~
7329 7333 \SpecialChar ~
7330 7334 \SpecialChar ~
7331 7335 \SpecialChar ~
7332 7336 <5> ['scopes.py', 'strings.py']
7333 7337 \newline
7334 7338 fperez[~/test]|6> print _5
7335 7339 \newline
7336 7340 ['scopes.py', 'strings.py']
7337 7341 \layout Standard
7338 7342
7339 7343
7340 7344 \family typewriter
7341 7345 $
7342 7346 \family default
7343 7347 and
7344 7348 \family typewriter
7345 7349 $$
7346 7350 \family default
7347 7351 allow direct capture to named variables:
7348 7352 \layout Standard
7349 7353
7350 7354
7351 7355 \family typewriter
7352 7356 fperez[~/test]|7> $astr = ls *s.py
7353 7357 \newline
7354 7358 fperez[~/test]|8> astr
7355 7359 \newline
7356 7360
7357 7361 \begin_inset ERT
7358 7362 status Collapsed
7359 7363
7360 7364 \layout Standard
7361 7365
7362 7366 \backslash
7363 7367 hspace*{0mm}
7364 7368 \end_inset
7365 7369
7366 7370 \SpecialChar ~
7367 7371 \SpecialChar ~
7368 7372 \SpecialChar ~
7369 7373 \SpecialChar ~
7370 7374 \SpecialChar ~
7371 7375 \SpecialChar ~
7372 7376 \SpecialChar ~
7373 7377 \SpecialChar ~
7374 7378 \SpecialChar ~
7375 7379 \SpecialChar ~
7376 7380 \SpecialChar ~
7377 7381 \SpecialChar ~
7378 7382 \SpecialChar ~
7379 7383 \SpecialChar ~
7380 7384 <8> 'scopes.py
7381 7385 \backslash
7382 7386 nstrings.py'
7383 7387 \layout Standard
7384 7388
7385 7389
7386 7390 \family typewriter
7387 7391 fperez[~/test]|9> $$alist = ls *s.py
7388 7392 \newline
7389 7393 fperez[~/test]|10> alist
7390 7394 \newline
7391 7395
7392 7396 \begin_inset ERT
7393 7397 status Collapsed
7394 7398
7395 7399 \layout Standard
7396 7400
7397 7401 \backslash
7398 7402 hspace*{0mm}
7399 7403 \end_inset
7400 7404
7401 7405 \SpecialChar ~
7402 7406 \SpecialChar ~
7403 7407 \SpecialChar ~
7404 7408 \SpecialChar ~
7405 7409 \SpecialChar ~
7406 7410 \SpecialChar ~
7407 7411 \SpecialChar ~
7408 7412 \SpecialChar ~
7409 7413 \SpecialChar ~
7410 7414 \SpecialChar ~
7411 7415 \SpecialChar ~
7412 7416 \SpecialChar ~
7413 7417 \SpecialChar ~
7414 7418 \SpecialChar ~
7415 7419 <10> ['scopes.py', 'strings.py']
7416 7420 \layout Standard
7417 7421
7418 7422 alist is now a normal python list you can loop over.
7419 7423 Using
7420 7424 \family typewriter
7421 7425 $
7422 7426 \family default
7423 7427 will expand back the python values when alias calls are made:
7424 7428 \layout Standard
7425 7429
7426 7430
7427 7431 \family typewriter
7428 7432 fperez[~/test]|11> for f in alist:
7429 7433 \newline
7430 7434
7431 7435 \begin_inset ERT
7432 7436 status Collapsed
7433 7437
7434 7438 \layout Standard
7435 7439
7436 7440 \backslash
7437 7441 hspace*{0mm}
7438 7442 \end_inset
7439 7443
7440 7444 \SpecialChar ~
7441 7445 \SpecialChar ~
7442 7446 \SpecialChar ~
7443 7447 \SpecialChar ~
7444 7448 \SpecialChar ~
7445 7449 \SpecialChar ~
7446 7450 \SpecialChar ~
7447 7451 \SpecialChar ~
7448 7452 \SpecialChar ~
7449 7453 \SpecialChar ~
7450 7454 \SpecialChar ~
7451 7455 \SpecialChar ~
7452 7456 \SpecialChar ~
7453 7457 \SpecialChar ~
7454 7458 |..> \SpecialChar ~
7455 7459 \SpecialChar ~
7456 7460 \SpecialChar ~
7457 7461 \SpecialChar ~
7458 7462 print 'file',f,
7459 7463 \newline
7460 7464
7461 7465 \begin_inset ERT
7462 7466 status Collapsed
7463 7467
7464 7468 \layout Standard
7465 7469
7466 7470 \backslash
7467 7471 hspace*{0mm}
7468 7472 \end_inset
7469 7473
7470 7474 \SpecialChar ~
7471 7475 \SpecialChar ~
7472 7476 \SpecialChar ~
7473 7477 \SpecialChar ~
7474 7478 \SpecialChar ~
7475 7479 \SpecialChar ~
7476 7480 \SpecialChar ~
7477 7481 \SpecialChar ~
7478 7482 \SpecialChar ~
7479 7483 \SpecialChar ~
7480 7484 \SpecialChar ~
7481 7485 \SpecialChar ~
7482 7486 \SpecialChar ~
7483 7487 \SpecialChar ~
7484 7488 |..> \SpecialChar ~
7485 7489 \SpecialChar ~
7486 7490 \SpecialChar ~
7487 7491 \SpecialChar ~
7488 7492 wc -l $f
7489 7493 \newline
7490 7494
7491 7495 \begin_inset ERT
7492 7496 status Collapsed
7493 7497
7494 7498 \layout Standard
7495 7499
7496 7500 \backslash
7497 7501 hspace*{0mm}
7498 7502 \end_inset
7499 7503
7500 7504 \SpecialChar ~
7501 7505 \SpecialChar ~
7502 7506 \SpecialChar ~
7503 7507 \SpecialChar ~
7504 7508 \SpecialChar ~
7505 7509 \SpecialChar ~
7506 7510 \SpecialChar ~
7507 7511 \SpecialChar ~
7508 7512 \SpecialChar ~
7509 7513 \SpecialChar ~
7510 7514 \SpecialChar ~
7511 7515 \SpecialChar ~
7512 7516 \SpecialChar ~
7513 7517 \SpecialChar ~
7514 7518 |..>
7515 7519 \newline
7516 7520 file scopes.py 13 scopes.py
7517 7521 \newline
7518 7522 file strings.py 4 strings.py
7519 7523 \layout Standard
7520 7524
7521 7525 Note that you may need to protect your variables with braces if you want
7522 7526 to append strings to their names.
7523 7527 To copy all files in alist to
7524 7528 \family typewriter
7525 7529 .bak
7526 7530 \family default
7527 7531 extensions, you must use:
7528 7532 \layout Standard
7529 7533
7530 7534
7531 7535 \family typewriter
7532 7536 fperez[~/test]|12> for f in alist:
7533 7537 \newline
7534 7538
7535 7539 \begin_inset ERT
7536 7540 status Collapsed
7537 7541
7538 7542 \layout Standard
7539 7543
7540 7544 \backslash
7541 7545 hspace*{0mm}
7542 7546 \end_inset
7543 7547
7544 7548 \SpecialChar ~
7545 7549 \SpecialChar ~
7546 7550 \SpecialChar ~
7547 7551 \SpecialChar ~
7548 7552 \SpecialChar ~
7549 7553 \SpecialChar ~
7550 7554 \SpecialChar ~
7551 7555 \SpecialChar ~
7552 7556 \SpecialChar ~
7553 7557 \SpecialChar ~
7554 7558 \SpecialChar ~
7555 7559 \SpecialChar ~
7556 7560 \SpecialChar ~
7557 7561 \SpecialChar ~
7558 7562 |..> \SpecialChar ~
7559 7563 \SpecialChar ~
7560 7564 \SpecialChar ~
7561 7565 \SpecialChar ~
7562 7566 cp $f ${f}.bak
7563 7567 \layout Standard
7564 7568
7565 7569 If you try using
7566 7570 \family typewriter
7567 7571 $f.bak
7568 7572 \family default
7569 7573 , you'll get an AttributeError exception saying that your string object
7570 7574 doesn't have a
7571 7575 \family typewriter
7572 7576 .bak
7573 7577 \family default
7574 7578 attribute.
7575 7579 This is because the
7576 7580 \family typewriter
7577 7581 $
7578 7582 \family default
7579 7583 expansion mechanism allows you to expand full Python expressions:
7580 7584 \layout Standard
7581 7585
7582 7586
7583 7587 \family typewriter
7584 7588 fperez[~/test]|13> echo "sys.platform is: $sys.platform"
7585 7589 \newline
7586 7590 sys.platform is: linux2
7587 7591 \layout Standard
7588 7592
7589 7593 IPython's input history handling is still active, which allows you to rerun
7590 7594 a single block of multi-line input by simply using exec:
7591 7595 \newline
7592 7596
7593 7597 \family typewriter
7594 7598 fperez[~/test]|14> $$alist = ls *.eps
7595 7599 \newline
7596 7600 fperez[~/test]|15> exec _i11
7597 7601 \newline
7598 7602 file image2.eps 921 image2.eps
7599 7603 \newline
7600 7604 file image.eps 921 image.eps
7601 7605 \layout Standard
7602 7606
7603 7607 While these are new special-case syntaxes, they are designed to allow very
7604 7608 efficient use of the shell with minimal typing.
7605 7609 At an interactive shell prompt, conciseness of expression wins over readability.
7606 7610 \layout Subsection
7607 7611
7608 7612 Useful functions and modules
7609 7613 \layout Standard
7610 7614
7611 7615 The os, sys and shutil modules from the Python standard library are automaticall
7612 7616 y loaded.
7613 7617 Some additional functions, useful for shell usage, are listed below.
7614 7618 You can request more help about them with `
7615 7619 \family typewriter
7616 7620 ?
7617 7621 \family default
7618 7622 '.
7619 7623 \layout Description
7620 7624
7621 7625
7622 7626 \family typewriter
7623 7627 shell
7624 7628 \family default
7625 7629 - execute a command in the underlying system shell
7626 7630 \layout Description
7627 7631
7628 7632
7629 7633 \family typewriter
7630 7634 system
7631 7635 \family default
7632 7636 - like
7633 7637 \family typewriter
7634 7638 shell()
7635 7639 \family default
7636 7640 , but return the exit status of the command
7637 7641 \layout Description
7638 7642
7639 7643
7640 7644 \family typewriter
7641 7645 sout
7642 7646 \family default
7643 7647 - capture the output of a command as a string
7644 7648 \layout Description
7645 7649
7646 7650
7647 7651 \family typewriter
7648 7652 lout
7649 7653 \family default
7650 7654 - capture the output of a command as a list (split on `
7651 7655 \backslash
7652 7656 n')
7653 7657 \layout Description
7654 7658
7655 7659
7656 7660 \family typewriter
7657 7661 getoutputerror
7658 7662 \family default
7659 7663 - capture (output,error) of a shell commandss
7660 7664 \layout Standard
7661 7665
7662 7666
7663 7667 \family typewriter
7664 7668 sout
7665 7669 \family default
7666 7670 /
7667 7671 \family typewriter
7668 7672 lout
7669 7673 \family default
7670 7674 are the functional equivalents of
7671 7675 \family typewriter
7672 7676 $
7673 7677 \family default
7674 7678 /
7675 7679 \family typewriter
7676 7680 $$
7677 7681 \family default
7678 7682 .
7679 7683 They are provided to allow you to capture system output in the middle of
7680 7684 true python code, function definitions, etc (where
7681 7685 \family typewriter
7682 7686 $
7683 7687 \family default
7684 7688 and
7685 7689 \family typewriter
7686 7690 $$
7687 7691 \family default
7688 7692 are invalid).
7689 7693 \layout Subsection
7690 7694
7691 7695 Directory management
7692 7696 \layout Standard
7693 7697
7694 7698 Since each command passed by pysh to the underlying system is executed in
7695 7699 a subshell which exits immediately, you can NOT use !cd to navigate the
7696 7700 filesystem.
7697 7701 \layout Standard
7698 7702
7699 7703 Pysh provides its own builtin
7700 7704 \family typewriter
7701 7705 `%cd
7702 7706 \family default
7703 7707 ' magic command to move in the filesystem (the
7704 7708 \family typewriter
7705 7709 %
7706 7710 \family default
7707 7711 is not required with automagic on).
7708 7712 It also maintains a list of visited directories (use
7709 7713 \family typewriter
7710 7714 %dhist
7711 7715 \family default
7712 7716 to see it) and allows direct switching to any of them.
7713 7717 Type
7714 7718 \family typewriter
7715 7719 `cd?
7716 7720 \family default
7717 7721 ' for more details.
7718 7722 \layout Standard
7719 7723
7720 7724
7721 7725 \family typewriter
7722 7726 %pushd
7723 7727 \family default
7724 7728 ,
7725 7729 \family typewriter
7726 7730 %popd
7727 7731 \family default
7728 7732 and
7729 7733 \family typewriter
7730 7734 %dirs
7731 7735 \family default
7732 7736 are provided for directory stack handling.
7733 7737 \layout Subsection
7734 7738
7735 7739 Prompt customization
7736 7740 \layout Standard
7737 7741
7738 7742 The supplied
7739 7743 \family typewriter
7740 7744 ipythonrc-pysh
7741 7745 \family default
7742 7746 profile comes with an example of a very colored and detailed prompt, mainly
7743 7747 to serve as an illustration.
7744 7748 The valid escape sequences, besides color names, are:
7745 7749 \layout Description
7746 7750
7747 7751
7748 7752 \backslash
7749 7753 # - Prompt number.
7750 7754 \layout Description
7751 7755
7752 7756
7753 7757 \backslash
7754 7758 D - Dots, as many as there are digits in
7755 7759 \backslash
7756 7760 # (so they align).
7757 7761 \layout Description
7758 7762
7759 7763
7760 7764 \backslash
7761 7765 w - Current working directory (cwd).
7762 7766 \layout Description
7763 7767
7764 7768
7765 7769 \backslash
7766 7770 W - Basename of current working directory.
7767 7771 \layout Description
7768 7772
7769 7773
7770 7774 \backslash
7771 7775 X
7772 7776 \emph on
7773 7777 N
7774 7778 \emph default
7775 7779 - Where
7776 7780 \emph on
7777 7781 N
7778 7782 \emph default
7779 7783 =0..5.
7780 7784 N terms of the cwd, with $HOME written as ~.
7781 7785 \layout Description
7782 7786
7783 7787
7784 7788 \backslash
7785 7789 Y
7786 7790 \emph on
7787 7791 N
7788 7792 \emph default
7789 7793 - Where
7790 7794 \emph on
7791 7795 N
7792 7796 \emph default
7793 7797 =0..5.
7794 7798 Like X
7795 7799 \emph on
7796 7800 N
7797 7801 \emph default
7798 7802 , but if ~ is term
7799 7803 \emph on
7800 7804 N
7801 7805 \emph default
7802 7806 +1 it's also shown.
7803 7807 \layout Description
7804 7808
7805 7809
7806 7810 \backslash
7807 7811 u - Username.
7808 7812 \layout Description
7809 7813
7810 7814
7811 7815 \backslash
7812 7816 H - Full hostname.
7813 7817 \layout Description
7814 7818
7815 7819
7816 7820 \backslash
7817 7821 h - Hostname up to first '.'
7818 7822 \layout Description
7819 7823
7820 7824
7821 7825 \backslash
7822 7826 $ - Root symbol ($ or #).
7823 7827
7824 7828 \layout Description
7825 7829
7826 7830
7827 7831 \backslash
7828 7832 t - Current time, in H:M:S format.
7829 7833 \layout Description
7830 7834
7831 7835
7832 7836 \backslash
7833 7837 v - IPython release version.
7834 7838
7835 7839 \layout Description
7836 7840
7837 7841
7838 7842 \backslash
7839 7843 n - Newline.
7840 7844
7841 7845 \layout Description
7842 7846
7843 7847
7844 7848 \backslash
7845 7849 r - Carriage return.
7846 7850
7847 7851 \layout Description
7848 7852
7849 7853
7850 7854 \backslash
7851 7855
7852 7856 \backslash
7853 7857 - An explicitly escaped '
7854 7858 \backslash
7855 7859 '.
7856 7860 \layout Standard
7857 7861
7858 7862 You can configure your prompt colors using any ANSI color escape.
7859 7863 Each color escape sets the color for any subsequent text, until another
7860 7864 escape comes in and changes things.
7861 7865 The valid color escapes are:
7862 7866 \layout Description
7863 7867
7864 7868
7865 7869 \backslash
7866 7870 C_Black
7867 7871 \layout Description
7868 7872
7869 7873
7870 7874 \backslash
7871 7875 C_Blue
7872 7876 \layout Description
7873 7877
7874 7878
7875 7879 \backslash
7876 7880 C_Brown
7877 7881 \layout Description
7878 7882
7879 7883
7880 7884 \backslash
7881 7885 C_Cyan
7882 7886 \layout Description
7883 7887
7884 7888
7885 7889 \backslash
7886 7890 C_DarkGray
7887 7891 \layout Description
7888 7892
7889 7893
7890 7894 \backslash
7891 7895 C_Green
7892 7896 \layout Description
7893 7897
7894 7898
7895 7899 \backslash
7896 7900 C_LightBlue
7897 7901 \layout Description
7898 7902
7899 7903
7900 7904 \backslash
7901 7905 C_LightCyan
7902 7906 \layout Description
7903 7907
7904 7908
7905 7909 \backslash
7906 7910 C_LightGray
7907 7911 \layout Description
7908 7912
7909 7913
7910 7914 \backslash
7911 7915 C_LightGreen
7912 7916 \layout Description
7913 7917
7914 7918
7915 7919 \backslash
7916 7920 C_LightPurple
7917 7921 \layout Description
7918 7922
7919 7923
7920 7924 \backslash
7921 7925 C_LightRed
7922 7926 \layout Description
7923 7927
7924 7928
7925 7929 \backslash
7926 7930 C_Purple
7927 7931 \layout Description
7928 7932
7929 7933
7930 7934 \backslash
7931 7935 C_Red
7932 7936 \layout Description
7933 7937
7934 7938
7935 7939 \backslash
7936 7940 C_White
7937 7941 \layout Description
7938 7942
7939 7943
7940 7944 \backslash
7941 7945 C_Yellow
7942 7946 \layout Description
7943 7947
7944 7948
7945 7949 \backslash
7946 7950 C_Normal Stop coloring, defaults to your terminal settings.
7947 7951 \layout Section
7948 7952
7949 7953
7950 7954 \begin_inset LatexCommand \label{sec:Threading-support}
7951 7955
7952 7956 \end_inset
7953 7957
7954 7958 Threading support
7955 7959 \layout Standard
7956 7960
7957 7961
7958 7962 \series bold
7959 7963 WARNING:
7960 7964 \series default
7961 7965 The threading support is still somewhat experimental, and it has only seen
7962 7966 reasonable testing under Linux.
7963 7967 Threaded code is particularly tricky to debug, and it tends to show extremely
7964 7968 platform-dependent behavior.
7965 7969 Since I only have access to Linux machines, I will have to rely on user's
7966 7970 experiences and assistance for this area of IPython to improve under other
7967 7971 platforms.
7968 7972 \layout Standard
7969 7973
7970 7974 IPython, via the
7971 7975 \family typewriter
7972 7976 -gthread
7973 7977 \family default
7974 7978 ,
7975 7979 \family typewriter
7976 7980 -qthread
7977 7981 \family default
7978 7982 and
7979 7983 \family typewriter
7980 7984 -wthread
7981 7985 \family default
7982 7986 options (described in Sec.\SpecialChar ~
7983 7987
7984 7988 \begin_inset LatexCommand \ref{sec:threading-opts}
7985 7989
7986 7990 \end_inset
7987 7991
7988 7992 ), can run in multithreaded mode to support pyGTK, Qt and WXPython applications
7989 7993 respectively.
7990 7994 These GUI toolkits need to control the python main loop of execution, so
7991 7995 under a normal Python interpreter, starting a pyGTK, Qt or WXPython application
7992 7996 will immediately freeze the shell.
7993 7997
7994 7998 \layout Standard
7995 7999
7996 8000 IPython, with one of these options (you can only use one at a time), separates
7997 8001 the graphical loop and IPython's code execution run into different threads.
7998 8002 This allows you to test interactively (with
7999 8003 \family typewriter
8000 8004 %run
8001 8005 \family default
8002 8006 , for example) your GUI code without blocking.
8003 8007 \layout Standard
8004 8008
8005 8009 A nice mini-tutorial on using IPython along with the Qt Designer application
8006 8010 is available at the SciPy wiki:
8007 8011 \begin_inset LatexCommand \htmlurl{http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer}
8008 8012
8009 8013 \end_inset
8010 8014
8011 8015 .
8012 8016 \layout Subsection
8013 8017
8014 8018 Tk issues
8015 8019 \layout Standard
8016 8020
8017 8021 As indicated in Sec.\SpecialChar ~
8018 8022
8019 8023 \begin_inset LatexCommand \ref{sec:threading-opts}
8020 8024
8021 8025 \end_inset
8022 8026
8023 8027 , a special
8024 8028 \family typewriter
8025 8029 -tk
8026 8030 \family default
8027 8031 option is provided to try and allow Tk graphical applications to coexist
8028 8032 interactively with WX, Qt or GTK ones.
8029 8033 Whether this works at all, however, is very platform and configuration
8030 8034 dependent.
8031 8035 Please experiment with simple test cases before committing to using this
8032 8036 combination of Tk and GTK/Qt/WX threading in a production environment.
8033 8037 \layout Subsection
8034 8038
8035 8039 Signals and Threads
8036 8040 \layout Standard
8037 8041
8038 8042 When any of the thread systems (GTK, Qt or WX) are active, either directly
8039 8043 or via
8040 8044 \family typewriter
8041 8045 -pylab
8042 8046 \family default
8043 8047 with a threaded backend, it is impossible to interrupt long-running Python
8044 8048 code via
8045 8049 \family typewriter
8046 8050 Ctrl-C
8047 8051 \family default
8048 8052 .
8049 8053 IPython can not pass the KeyboardInterrupt exception (or the underlying
8050 8054
8051 8055 \family typewriter
8052 8056 SIGINT
8053 8057 \family default
8054 8058 ) across threads, so any long-running process started from IPython will
8055 8059 run to completion, or will have to be killed via an external (OS-based)
8056 8060 mechanism.
8057 8061 \layout Standard
8058 8062
8059 8063 To the best of my knowledge, this limitation is imposed by the Python interprete
8060 8064 r itself, and it comes from the difficulty of writing portable signal/threaded
8061 8065 code.
8062 8066 If any user is an expert on this topic and can suggest a better solution,
8063 8067 I would love to hear about it.
8064 8068 In the IPython sources, look at the
8065 8069 \family typewriter
8066 8070 Shell.py
8067 8071 \family default
8068 8072 module, and in particular at the
8069 8073 \family typewriter
8070 8074 runcode()
8071 8075 \family default
8072 8076 method.
8073 8077
8074 8078 \layout Subsection
8075 8079
8076 8080 I/O pitfalls
8077 8081 \layout Standard
8078 8082
8079 8083 Be mindful that the Python interpreter switches between threads every
8080 8084 \begin_inset Formula $N$
8081 8085 \end_inset
8082 8086
8083 8087 bytecodes, where the default value as of Python\SpecialChar ~
8084 8088 2.3 is
8085 8089 \begin_inset Formula $N=100.$
8086 8090 \end_inset
8087 8091
8088 8092 This value can be read by using the
8089 8093 \family typewriter
8090 8094 sys.getcheckinterval()
8091 8095 \family default
8092 8096 function, and it can be reset via
8093 8097 \family typewriter
8094 8098 sys.setcheckinterval(
8095 8099 \emph on
8096 8100 N
8097 8101 \emph default
8098 8102 )
8099 8103 \family default
8100 8104 .
8101 8105 This switching of threads can cause subtly confusing effects if one of
8102 8106 your threads is doing file I/O.
8103 8107 In text mode, most systems only flush file buffers when they encounter
8104 8108 a
8105 8109 \family typewriter
8106 8110 `
8107 8111 \backslash
8108 8112 n'
8109 8113 \family default
8110 8114 .
8111 8115 An instruction as simple as
8112 8116 \family typewriter
8113 8117
8114 8118 \newline
8115 8119 \SpecialChar ~
8116 8120 \SpecialChar ~
8117 8121 print >> filehandle,
8118 8122 \begin_inset Quotes eld
8119 8123 \end_inset
8120 8124
8121 8125 hello world
8122 8126 \begin_inset Quotes erd
8123 8127 \end_inset
8124 8128
8125 8129
8126 8130 \family default
8127 8131
8128 8132 \newline
8129 8133 actually consists of several bytecodes, so it is possible that the newline
8130 8134 does not reach your file before the next thread switch.
8131 8135 Similarly, if you are writing to a file in binary mode, the file won't
8132 8136 be flushed until the buffer fills, and your other thread may see apparently
8133 8137 truncated files.
8134 8138
8135 8139 \layout Standard
8136 8140
8137 8141 For this reason, if you are using IPython's thread support and have (for
8138 8142 example) a GUI application which will read data generated by files written
8139 8143 to from the IPython thread, the safest approach is to open all of your
8140 8144 files in unbuffered mode (the third argument to the
8141 8145 \family typewriter
8142 8146 file/open
8143 8147 \family default
8144 8148 function is the buffering value):
8145 8149 \newline
8146 8150
8147 8151 \family typewriter
8148 8152 \SpecialChar ~
8149 8153 \SpecialChar ~
8150 8154 filehandle = open(filename,mode,0)
8151 8155 \layout Standard
8152 8156
8153 8157 This is obviously a brute force way of avoiding race conditions with the
8154 8158 file buffering.
8155 8159 If you want to do it cleanly, and you have a resource which is being shared
8156 8160 by the interactive IPython loop and your GUI thread, you should really
8157 8161 handle it with thread locking and syncrhonization properties.
8158 8162 The Python documentation discusses these.
8159 8163 \layout Section
8160 8164
8161 8165
8162 8166 \begin_inset LatexCommand \label{sec:interactive-demos}
8163 8167
8164 8168 \end_inset
8165 8169
8166 8170 Interactive demos with IPython
8167 8171 \layout Standard
8168 8172
8169 8173 IPython ships with a basic system for running scripts interactively in sections,
8170 8174 useful when presenting code to audiences.
8171 8175 A few tags embedded in comments (so that the script remains valid Python
8172 8176 code) divide a file into separate blocks, and the demo can be run one block
8173 8177 at a time, with IPython printing (with syntax highlighting) the block before
8174 8178 executing it, and returning to the interactive prompt after each block.
8175 8179 The interactive namespace is updated after each block is run with the contents
8176 8180 of the demo's namespace.
8177 8181 \layout Standard
8178 8182
8179 8183 This allows you to show a piece of code, run it and then execute interactively
8180 8184 commands based on the variables just created.
8181 8185 Once you want to continue, you simply execute the next block of the demo.
8182 8186 The following listing shows the markup necessary for dividing a script
8183 8187 into sections for execution as a demo.
8184 8188 \layout Standard
8185 8189
8186 8190
8187 8191 \begin_inset ERT
8188 8192 status Open
8189 8193
8190 8194 \layout Standard
8191 8195
8192 8196 \backslash
8193 8197 codelist{examples/example-demo.py}
8194 8198 \end_inset
8195 8199
8196 8200
8197 8201 \layout Standard
8198 8202
8199 8203 In order to run a file as a demo, you must first make a
8200 8204 \family typewriter
8201 8205 Demo
8202 8206 \family default
8203 8207 object out of it.
8204 8208 If the file is named
8205 8209 \family typewriter
8206 8210 myscript.py
8207 8211 \family default
8208 8212 , the following code will make a demo:
8209 8213 \layout LyX-Code
8210 8214
8211 8215 from IPython.demo import Demo
8212 8216 \layout LyX-Code
8213 8217
8214 8218 mydemo = Demo('myscript.py')
8215 8219 \layout Standard
8216 8220
8217 8221 This creates the
8218 8222 \family typewriter
8219 8223 mydemo
8220 8224 \family default
8221 8225 object, whose blocks you run one at a time by simply calling the object
8222 8226 with no arguments.
8223 8227 If you have autocall active in IPython (the default), all you need to do
8224 8228 is type
8225 8229 \layout LyX-Code
8226 8230
8227 8231 mydemo
8228 8232 \layout Standard
8229 8233
8230 8234 and IPython will call it, executing each block.
8231 8235 Demo objects can be restarted, you can move forward or back skipping blocks,
8232 8236 re-execute the last block, etc.
8233 8237 Simply use the Tab key on a demo object to see its methods, and call
8234 8238 \family typewriter
8235 8239 `?'
8236 8240 \family default
8237 8241 on them to see their docstrings for more usage details.
8238 8242 In addition, the
8239 8243 \family typewriter
8240 8244 demo
8241 8245 \family default
8242 8246 module itself contains a comprehensive docstring, which you can access
8243 8247 via
8244 8248 \layout LyX-Code
8245 8249
8246 8250 from IPython import demo
8247 8251 \layout LyX-Code
8248 8252
8249 8253 demo?
8250 8254 \layout Standard
8251 8255
8252 8256
8253 8257 \series bold
8254 8258 Limitations:
8255 8259 \series default
8256 8260 It is important to note that these demos are limited to fairly simple uses.
8257 8261 In particular, you can
8258 8262 \emph on
8259 8263 not
8260 8264 \emph default
8261 8265 put division marks in indented code (loops, if statements, function definitions
8262 8266 , etc.) Supporting something like this would basically require tracking the
8263 8267 internal execution state of the Python interpreter, so only top-level divisions
8264 8268 are allowed.
8265 8269 If you want to be able to open an IPython instance at an arbitrary point
8266 8270 in a program, you can use IPython's embedding facilities, described in
8267 8271 detail in Sec\SpecialChar \@.
8268 8272 \SpecialChar ~
8269 8273
8270 8274 \begin_inset LatexCommand \ref{sec:embed}
8271 8275
8272 8276 \end_inset
8273 8277
8274 8278 .
8275 8279 \layout Section
8276 8280
8277 8281
8278 8282 \begin_inset LatexCommand \label{sec:matplotlib-support}
8279 8283
8280 8284 \end_inset
8281 8285
8282 8286 Plotting with
8283 8287 \family typewriter
8284 8288 matplotlib
8285 8289 \family default
8286 8290
8287 8291 \layout Standard
8288 8292
8289 8293 The matplotlib library (
8290 8294 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
8291 8295
8292 8296 \end_inset
8293 8297
8294 8298 ) provides high quality 2D plotting for Python.
8295 8299 Matplotlib can produce plots on screen using a variety of GUI toolkits,
8296 8300 including Tk, GTK and WXPython.
8297 8301 It also provides a number of commands useful for scientific computing,
8298 8302 all with a syntax compatible with that of the popular Matlab program.
8299 8303 \layout Standard
8300 8304
8301 8305 IPython accepts the special option
8302 8306 \family typewriter
8303 8307 -pylab
8304 8308 \family default
8305 8309 (Sec.\SpecialChar ~
8306 8310
8307 8311 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
8308 8312
8309 8313 \end_inset
8310 8314
8311 8315 ).
8312 8316 This configures it to support matplotlib, honoring the settings in the
8313 8317
8314 8318 \family typewriter
8315 8319 .matplotlibrc
8316 8320 \family default
8317 8321 file.
8318 8322 IPython will detect the user's choice of matplotlib GUI backend, and automatica
8319 8323 lly select the proper threading model to prevent blocking.
8320 8324 It also sets matplotlib in interactive mode and modifies
8321 8325 \family typewriter
8322 8326 %run
8323 8327 \family default
8324 8328 slightly, so that any matplotlib-based script can be executed using
8325 8329 \family typewriter
8326 8330 %run
8327 8331 \family default
8328 8332 and the final
8329 8333 \family typewriter
8330 8334 show()
8331 8335 \family default
8332 8336 command does not block the interactive shell.
8333 8337 \layout Standard
8334 8338
8335 8339 The
8336 8340 \family typewriter
8337 8341 -pylab
8338 8342 \family default
8339 8343 option must be given first in order for IPython to configure its threading
8340 8344 mode.
8341 8345 However, you can still issue other options afterwards.
8342 8346 This allows you to have a matplotlib-based environment customized with
8343 8347 additional modules using the standard IPython profile mechanism (Sec.\SpecialChar ~
8344 8348
8345 8349 \begin_inset LatexCommand \ref{sec:profiles}
8346 8350
8347 8351 \end_inset
8348 8352
8349 8353 ): ``
8350 8354 \family typewriter
8351 8355 ipython -pylab -p myprofile
8352 8356 \family default
8353 8357 '' will load the profile defined in
8354 8358 \family typewriter
8355 8359 ipythonrc-myprofile
8356 8360 \family default
8357 8361 after configuring matplotlib.
8358 8362 \layout Section
8359 8363
8360 8364
8361 8365 \begin_inset LatexCommand \label{sec:Gnuplot}
8362 8366
8363 8367 \end_inset
8364 8368
8365 8369 Plotting with
8366 8370 \family typewriter
8367 8371 Gnuplot
8368 8372 \layout Standard
8369 8373
8370 8374 Through the magic extension system described in sec.
8371 8375
8372 8376 \begin_inset LatexCommand \ref{sec:magic}
8373 8377
8374 8378 \end_inset
8375 8379
8376 8380 , IPython incorporates a mechanism for conveniently interfacing with the
8377 8381 Gnuplot system (
8378 8382 \begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
8379 8383
8380 8384 \end_inset
8381 8385
8382 8386 ).
8383 8387 Gnuplot is a very complete 2D and 3D plotting package available for many
8384 8388 operating systems and commonly included in modern Linux distributions.
8385 8389
8386 8390 \layout Standard
8387 8391
8388 8392 Besides having Gnuplot installed, this functionality requires the
8389 8393 \family typewriter
8390 8394 Gnuplot.py
8391 8395 \family default
8392 8396 module for interfacing python with Gnuplot.
8393 8397 It can be downloaded from:
8394 8398 \begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
8395 8399
8396 8400 \end_inset
8397 8401
8398 8402 .
8399 8403 \layout Subsection
8400 8404
8401 8405 Proper Gnuplot configuration
8402 8406 \layout Standard
8403 8407
8404 8408 As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
8405 8409 However, as of
8406 8410 \family typewriter
8407 8411 Gnuplot.py
8408 8412 \family default
8409 8413 version 1.7, a new option was added to communicate between Python and Gnuplot
8410 8414 via FIFOs (pipes).
8411 8415 This mechanism, while fast, also breaks the mouse system.
8412 8416 You must therefore set the variable
8413 8417 \family typewriter
8414 8418 prefer_fifo_data
8415 8419 \family default
8416 8420 to
8417 8421 \family typewriter
8418 8422 0
8419 8423 \family default
8420 8424 in file
8421 8425 \family typewriter
8422 8426 gp_unix.py
8423 8427 \family default
8424 8428 if you wish to keep the interactive mouse and keyboard features working
8425 8429 properly (
8426 8430 \family typewriter
8427 8431 prefer_inline_data
8428 8432 \family default
8429 8433 also must be
8430 8434 \family typewriter
8431 8435 0
8432 8436 \family default
8433 8437 , but this is the default so unless you've changed it manually you should
8434 8438 be fine).
8435 8439 \layout Standard
8436 8440
8437 8441 'Out of the box', Gnuplot is configured with a rather poor set of size,
8438 8442 color and linewidth choices which make the graphs fairly hard to read on
8439 8443 modern high-resolution displays (although they work fine on old 640x480
8440 8444 ones).
8441 8445 Below is a section of my
8442 8446 \family typewriter
8443 8447 .Xdefaults
8444 8448 \family default
8445 8449 file which I use for having a more convenient Gnuplot setup.
8446 8450 Remember to load it by running
8447 8451 \family typewriter
8448 8452 `xrdb .Xdefaults`
8449 8453 \family default
8450 8454 :
8451 8455 \layout Standard
8452 8456
8453 8457
8454 8458 \family typewriter
8455 8459 !******************************************************************
8456 8460 \newline
8457 8461 ! gnuplot options
8458 8462 \newline
8459 8463 ! modify this for a convenient window size
8460 8464 \newline
8461 8465 gnuplot*geometry: 780x580
8462 8466 \layout Standard
8463 8467
8464 8468
8465 8469 \family typewriter
8466 8470 ! on-screen font (not for PostScript)
8467 8471 \newline
8468 8472 gnuplot*font: -misc-fixed-bold-r-normal--15-120-100-100-c-90-iso8859-1
8469 8473 \layout Standard
8470 8474
8471 8475
8472 8476 \family typewriter
8473 8477 ! color options
8474 8478 \newline
8475 8479 gnuplot*background: black
8476 8480 \newline
8477 8481 gnuplot*textColor: white
8478 8482 \newline
8479 8483 gnuplot*borderColor: white
8480 8484 \newline
8481 8485 gnuplot*axisColor: white
8482 8486 \newline
8483 8487 gnuplot*line1Color: red
8484 8488 \newline
8485 8489 gnuplot*line2Color: green
8486 8490 \newline
8487 8491 gnuplot*line3Color: blue
8488 8492 \newline
8489 8493 gnuplot*line4Color: magenta
8490 8494 \newline
8491 8495 gnuplot*line5Color: cyan
8492 8496 \newline
8493 8497 gnuplot*line6Color: sienna
8494 8498 \newline
8495 8499 gnuplot*line7Color: orange
8496 8500 \newline
8497 8501 gnuplot*line8Color: coral
8498 8502 \layout Standard
8499 8503
8500 8504
8501 8505 \family typewriter
8502 8506 ! multiplicative factor for point styles
8503 8507 \newline
8504 8508 gnuplot*pointsize: 2
8505 8509 \layout Standard
8506 8510
8507 8511
8508 8512 \family typewriter
8509 8513 ! line width options (in pixels)
8510 8514 \newline
8511 8515 gnuplot*borderWidth: 2
8512 8516 \newline
8513 8517 gnuplot*axisWidth: 2
8514 8518 \newline
8515 8519 gnuplot*line1Width: 2
8516 8520 \newline
8517 8521 gnuplot*line2Width: 2
8518 8522 \newline
8519 8523 gnuplot*line3Width: 2
8520 8524 \newline
8521 8525 gnuplot*line4Width: 2
8522 8526 \newline
8523 8527 gnuplot*line5Width: 2
8524 8528 \newline
8525 8529 gnuplot*line6Width: 2
8526 8530 \newline
8527 8531 gnuplot*line7Width: 2
8528 8532 \newline
8529 8533 gnuplot*line8Width: 2
8530 8534 \layout Subsection
8531 8535
8532 8536 The
8533 8537 \family typewriter
8534 8538 IPython.GnuplotRuntime
8535 8539 \family default
8536 8540 module
8537 8541 \layout Standard
8538 8542
8539 8543 IPython includes a module called
8540 8544 \family typewriter
8541 8545 Gnuplot2.py
8542 8546 \family default
8543 8547 which extends and improves the default
8544 8548 \family typewriter
8545 8549 Gnuplot
8546 8550 \family default
8547 8551 .
8548 8552 \family typewriter
8549 8553 py
8550 8554 \family default
8551 8555 (which it still relies upon).
8552 8556 For example, the new
8553 8557 \family typewriter
8554 8558 plot
8555 8559 \family default
8556 8560 function adds several improvements to the original making it more convenient
8557 8561 for interactive use, and
8558 8562 \family typewriter
8559 8563 hardcopy
8560 8564 \family default
8561 8565 fixes a bug in the original which under some circumstances blocks the creation
8562 8566 of PostScript output.
8563 8567 \layout Standard
8564 8568
8565 8569 For scripting use,
8566 8570 \family typewriter
8567 8571 GnuplotRuntime.py
8568 8572 \family default
8569 8573 is provided, which wraps
8570 8574 \family typewriter
8571 8575 Gnuplot2.py
8572 8576 \family default
8573 8577 and creates a series of global aliases.
8574 8578 These make it easy to control Gnuplot plotting jobs through the Python
8575 8579 language.
8576 8580 \layout Standard
8577 8581
8578 8582 Below is some example code which illustrates how to configure Gnuplot inside
8579 8583 your own programs but have it available for further interactive use through
8580 8584 an embedded IPython instance.
8581 8585 Simply run this file at a system prompt.
8582 8586 This file is provided as
8583 8587 \family typewriter
8584 8588 example-gnuplot.py
8585 8589 \family default
8586 8590 in the examples directory:
8587 8591 \layout Standard
8588 8592
8589 8593
8590 8594 \begin_inset ERT
8591 8595 status Open
8592 8596
8593 8597 \layout Standard
8594 8598
8595 8599 \backslash
8596 8600 codelist{examples/example-gnuplot.py}
8597 8601 \end_inset
8598 8602
8599 8603
8600 8604 \layout Subsection
8601 8605
8602 8606 The
8603 8607 \family typewriter
8604 8608 numeric
8605 8609 \family default
8606 8610 profile: a scientific computing environment
8607 8611 \layout Standard
8608 8612
8609 8613 The
8610 8614 \family typewriter
8611 8615 numeric
8612 8616 \family default
8613 8617 IPython profile, which you can activate with
8614 8618 \family typewriter
8615 8619 `ipython -p numeric
8616 8620 \family default
8617 8621 ' will automatically load the IPython Gnuplot extensions (plus Numeric and
8618 8622 other useful things for numerical computing), contained in the
8619 8623 \family typewriter
8620 8624 IPython.GnuplotInteractive
8621 8625 \family default
8622 8626 module.
8623 8627 This will create the globals
8624 8628 \family typewriter
8625 8629 Gnuplot
8626 8630 \family default
8627 8631 (an alias to the improved Gnuplot2 module),
8628 8632 \family typewriter
8629 8633 gp
8630 8634 \family default
8631 8635 (a Gnuplot active instance), the new magic commands
8632 8636 \family typewriter
8633 8637 %gpc
8634 8638 \family default
8635 8639 and
8636 8640 \family typewriter
8637 8641 %gp_set_instance
8638 8642 \family default
8639 8643 and several other convenient globals.
8640 8644 Type
8641 8645 \family typewriter
8642 8646 gphelp()
8643 8647 \family default
8644 8648 for further details.
8645 8649 \layout Standard
8646 8650
8647 8651 This should turn IPython into a convenient environment for numerical computing,
8648 8652 with all the functions in the NumPy library and the Gnuplot facilities
8649 8653 for plotting.
8650 8654 Further improvements can be obtained by loading the SciPy libraries for
8651 8655 scientific computing, available at
8652 8656 \begin_inset LatexCommand \htmlurl{http://scipy.org}
8653 8657
8654 8658 \end_inset
8655 8659
8656 8660 .
8657 8661 \layout Standard
8658 8662
8659 8663 If you are in the middle of a working session with numerical objects and
8660 8664 need to plot them but you didn't start the
8661 8665 \family typewriter
8662 8666 numeric
8663 8667 \family default
8664 8668 profile, you can load these extensions at any time by typing
8665 8669 \newline
8666 8670
8667 8671 \family typewriter
8668 8672 from IPython.GnuplotInteractive import *
8669 8673 \newline
8670 8674
8671 8675 \family default
8672 8676 at the IPython prompt.
8673 8677 This will allow you to keep your objects intact and start using Gnuplot
8674 8678 to view them.
8675 8679 \layout Section
8676 8680
8677 8681 Reporting bugs
8678 8682 \layout Subsection*
8679 8683
8680 8684 Automatic crash reports
8681 8685 \layout Standard
8682 8686
8683 8687 Ideally, IPython itself shouldn't crash.
8684 8688 It will catch exceptions produced by you, but bugs in its internals will
8685 8689 still crash it.
8686 8690 \layout Standard
8687 8691
8688 8692 In such a situation, IPython will leave a file named
8689 8693 \family typewriter
8690 8694 IPython_crash_report.txt
8691 8695 \family default
8692 8696 in your IPYTHONDIR directory (that way if crashes happen several times
8693 8697 it won't litter many directories, the post-mortem file is always located
8694 8698 in the same place and new occurrences just overwrite the previous one).
8695 8699 If you can mail this file to the developers (see sec.
8696 8700
8697 8701 \begin_inset LatexCommand \ref{sec:credits}
8698 8702
8699 8703 \end_inset
8700 8704
8701 8705 for names and addresses), it will help us
8702 8706 \emph on
8703 8707 a lot
8704 8708 \emph default
8705 8709 in understanding the cause of the problem and fixing it sooner.
8706 8710 \layout Subsection*
8707 8711
8708 8712 The bug tracker
8709 8713 \layout Standard
8710 8714
8711 8715 IPython also has an online bug-tracker, located at
8712 8716 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/report/1}
8713 8717
8714 8718 \end_inset
8715 8719
8716 8720 .
8717 8721 In addition to mailing the developers, it would be a good idea to file
8718 8722 a bug report here.
8719 8723 This will ensure that the issue is properly followed to conclusion.
8720 8724 To report new bugs you will have to register first.
8721 8725 \layout Standard
8722 8726
8723 8727 You can also use this bug tracker to file feature requests.
8724 8728 \layout Section
8725 8729
8726 8730 Brief history
8727 8731 \layout Subsection
8728 8732
8729 8733 Origins
8730 8734 \layout Standard
8731 8735
8732 8736 The current IPython system grew out of the following three projects:
8733 8737 \layout List
8734 8738 \labelwidthstring 00.00.0000
8735 8739
8736 8740 ipython by Fernando P
8737 8741 \begin_inset ERT
8738 8742 status Collapsed
8739 8743
8740 8744 \layout Standard
8741 8745
8742 8746 \backslash
8743 8747 '{e}
8744 8748 \end_inset
8745 8749
8746 8750 rez.
8747 8751 I was working on adding Mathematica-type prompts and a flexible configuration
8748 8752 system (something better than
8749 8753 \family typewriter
8750 8754 $PYTHONSTARTUP
8751 8755 \family default
8752 8756 ) to the standard Python interactive interpreter.
8753 8757 \layout List
8754 8758 \labelwidthstring 00.00.0000
8755 8759
8756 8760 IPP by Janko Hauser.
8757 8761 Very well organized, great usability.
8758 8762 Had an old help system.
8759 8763 IPP was used as the `container' code into which I added the functionality
8760 8764 from ipython and LazyPython.
8761 8765 \layout List
8762 8766 \labelwidthstring 00.00.0000
8763 8767
8764 8768 LazyPython by Nathan Gray.
8765 8769 Simple but
8766 8770 \emph on
8767 8771 very
8768 8772 \emph default
8769 8773 powerful.
8770 8774 The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
8771 8775 were all taken from here.
8772 8776 \layout Standard
8773 8777
8774 8778 When I found out (see sec.
8775 8779
8776 8780 \begin_inset LatexCommand \ref{figgins}
8777 8781
8778 8782 \end_inset
8779 8783
8780 8784 ) about IPP and LazyPython I tried to join all three into a unified system.
8781 8785 I thought this could provide a very nice working environment, both for
8782 8786 regular programming and scientific computing: shell-like features, IDL/Matlab
8783 8787 numerics, Mathematica-type prompt history and great object introspection
8784 8788 and help facilities.
8785 8789 I think it worked reasonably well, though it was a lot more work than I
8786 8790 had initially planned.
8787 8791 \layout Subsection
8788 8792
8789 8793 Current status
8790 8794 \layout Standard
8791 8795
8792 8796 The above listed features work, and quite well for the most part.
8793 8797 But until a major internal restructuring is done (see below), only bug
8794 8798 fixing will be done, no other features will be added (unless very minor
8795 8799 and well localized in the cleaner parts of the code).
8796 8800 \layout Standard
8797 8801
8798 8802 IPython consists of some 18000 lines of pure python code, of which roughly
8799 8803 two thirds is reasonably clean.
8800 8804 The rest is, messy code which needs a massive restructuring before any
8801 8805 further major work is done.
8802 8806 Even the messy code is fairly well documented though, and most of the problems
8803 8807 in the (non-existent) class design are well pointed to by a PyChecker run.
8804 8808 So the rewriting work isn't that bad, it will just be time-consuming.
8805 8809 \layout Subsection
8806 8810
8807 8811 Future
8808 8812 \layout Standard
8809 8813
8810 8814 See the separate
8811 8815 \family typewriter
8812 8816 new_design
8813 8817 \family default
8814 8818 document for details.
8815 8819 Ultimately, I would like to see IPython become part of the standard Python
8816 8820 distribution as a `big brother with batteries' to the standard Python interacti
8817 8821 ve interpreter.
8818 8822 But that will never happen with the current state of the code, so all contribut
8819 8823 ions are welcome.
8820 8824 \layout Section
8821 8825
8822 8826 License
8823 8827 \layout Standard
8824 8828
8825 8829 IPython is released under the terms of the BSD license, whose general form
8826 8830 can be found at:
8827 8831 \begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
8828 8832
8829 8833 \end_inset
8830 8834
8831 8835 .
8832 8836 The full text of the IPython license is reproduced below:
8833 8837 \layout Quote
8834 8838
8835 8839
8836 8840 \family typewriter
8837 8841 \size small
8838 8842 IPython is released under a BSD-type license.
8839 8843 \layout Quote
8840 8844
8841 8845
8842 8846 \family typewriter
8843 8847 \size small
8844 8848 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
8845 8849 \layout Quote
8846 8850
8847 8851
8848 8852 \family typewriter
8849 8853 \size small
8850 8854 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
8851 8855 \newline
8852 8856 Nathaniel Gray <n8gray@caltech.edu>.
8853 8857 \layout Quote
8854 8858
8855 8859
8856 8860 \family typewriter
8857 8861 \size small
8858 8862 All rights reserved.
8859 8863 \layout Quote
8860 8864
8861 8865
8862 8866 \family typewriter
8863 8867 \size small
8864 8868 Redistribution and use in source and binary forms, with or without modification,
8865 8869 are permitted provided that the following conditions are met:
8866 8870 \layout Quote
8867 8871
8868 8872
8869 8873 \family typewriter
8870 8874 \size small
8871 8875 a.
8872 8876 Redistributions of source code must retain the above copyright notice,
8873 8877 this list of conditions and the following disclaimer.
8874 8878 \layout Quote
8875 8879
8876 8880
8877 8881 \family typewriter
8878 8882 \size small
8879 8883 b.
8880 8884 Redistributions in binary form must reproduce the above copyright notice,
8881 8885 this list of conditions and the following disclaimer in the documentation
8882 8886 and/or other materials provided with the distribution.
8883 8887 \layout Quote
8884 8888
8885 8889
8886 8890 \family typewriter
8887 8891 \size small
8888 8892 c.
8889 8893 Neither the name of the copyright holders nor the names of any contributors
8890 8894 to this software may be used to endorse or promote products derived from
8891 8895 this software without specific prior written permission.
8892 8896 \layout Quote
8893 8897
8894 8898
8895 8899 \family typewriter
8896 8900 \size small
8897 8901 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
8898 8902 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
8899 8903 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8900 8904 PURPOSE ARE DISCLAIMED.
8901 8905 IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
8902 8906 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
8903 8907 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
8904 8908 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
8905 8909 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8906 8910 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
8907 8911 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8908 8912
8909 8913 \layout Standard
8910 8914
8911 8915 Individual authors are the holders of the copyright for their code and are
8912 8916 listed in each file.
8913 8917 \layout Standard
8914 8918
8915 8919 Some files (
8916 8920 \family typewriter
8917 8921 DPyGetOpt.py
8918 8922 \family default
8919 8923 , for example) may be licensed under different conditions.
8920 8924 Ultimately each file indicates clearly the conditions under which its author/au
8921 8925 thors have decided to publish the code.
8922 8926 \layout Standard
8923 8927
8924 8928 Versions of IPython up to and including 0.6.3 were released under the GNU
8925 8929 Lesser General Public License (LGPL), available at
8926 8930 \begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
8927 8931
8928 8932 \end_inset
8929 8933
8930 8934 .
8931 8935 \layout Section
8932 8936
8933 8937
8934 8938 \begin_inset LatexCommand \label{sec:credits}
8935 8939
8936 8940 \end_inset
8937 8941
8938 8942 Credits
8939 8943 \layout Standard
8940 8944
8941 8945 IPython is mainly developed by Fernando P
8942 8946 \begin_inset ERT
8943 8947 status Collapsed
8944 8948
8945 8949 \layout Standard
8946 8950
8947 8951 \backslash
8948 8952 '{e}
8949 8953 \end_inset
8950 8954
8951 8955 rez
8952 8956 \family typewriter
8953 8957 <Fernando.Perez@colorado.edu>
8954 8958 \family default
8955 8959 , but the project was born from mixing in Fernando's code with the IPP project
8956 8960 by Janko Hauser
8957 8961 \family typewriter
8958 8962 <jhauser-AT-zscout.de>
8959 8963 \family default
8960 8964 and LazyPython by Nathan Gray
8961 8965 \family typewriter
8962 8966 <n8gray-AT-caltech.edu>
8963 8967 \family default
8964 8968 .
8965 8969 For all IPython-related requests, please contact Fernando.
8966 8970
8967 8971 \layout Standard
8968 8972
8969 8973 As of early 2006, the following developers have joined the core team:
8970 8974 \layout List
8971 8975 \labelwidthstring 00.00.0000
8972 8976
8973 8977 Robert\SpecialChar ~
8974 8978 Kern
8975 8979 \family typewriter
8976 8980 <rkern-AT-enthought.com>
8977 8981 \family default
8978 8982 : co-mentored the 2005 Google Summer of Code project to develop python interacti
8979 8983 ve notebooks (XML documents) and graphical interface.
8980 8984 This project was awarded to the students Tzanko Matev
8981 8985 \family typewriter
8982 8986 <tsanko-AT-gmail.com>
8983 8987 \family default
8984 8988 and Toni Alatalo
8985 8989 \family typewriter
8986 8990 <antont-AT-an.org>
8987 8991 \layout List
8988 8992 \labelwidthstring 00.00.0000
8989 8993
8990 8994 Brian\SpecialChar ~
8991 8995 Granger
8992 8996 \family typewriter
8993 8997 <bgranger-AT-scu.edu>
8994 8998 \family default
8995 8999 : extending IPython to allow support for interactive parallel computing.
8996 9000 \layout List
8997 9001 \labelwidthstring 00.00.0000
8998 9002
8999 9003 Ville\SpecialChar ~
9000 9004 Vainio
9001 9005 \family typewriter
9002 9006 <vivainio-AT-gmail.com>
9003 9007 \family default
9004 9008 : Ville is the new maintainer for the main trunk of IPython after version
9005 9009 0.7.1.
9006 9010 \layout Standard
9007 9011
9008 9012 User or development help should be requested via the IPython mailing lists:
9009 9013 \layout Description
9010 9014
9011 9015 User\SpecialChar ~
9012 9016 list:
9013 9017 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
9014 9018
9015 9019 \end_inset
9016 9020
9017 9021
9018 9022 \layout Description
9019 9023
9020 9024 Developer's\SpecialChar ~
9021 9025 list:
9022 9026 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
9023 9027
9024 9028 \end_inset
9025 9029
9026 9030
9027 9031 \layout Standard
9028 9032
9029 9033 The IPython project is also very grateful to
9030 9034 \begin_inset Foot
9031 9035 collapsed true
9032 9036
9033 9037 \layout Standard
9034 9038
9035 9039 I've mangled email addresses to reduce spam, since the IPython manuals can
9036 9040 be accessed online.
9037 9041 \end_inset
9038 9042
9039 9043 :
9040 9044 \layout Standard
9041 9045
9042 9046 Bill Bumgarner
9043 9047 \family typewriter
9044 9048 <bbum-AT-friday.com>
9045 9049 \family default
9046 9050 : for providing the DPyGetOpt module which gives very powerful and convenient
9047 9051 handling of command-line options (light years ahead of what Python 2.1.1's
9048 9052 getopt module does).
9049 9053 \layout Standard
9050 9054
9051 9055 Ka-Ping Yee
9052 9056 \family typewriter
9053 9057 <ping-AT-lfw.org>
9054 9058 \family default
9055 9059 : for providing the Itpl module for convenient and powerful string interpolation
9056 9060 with a much nicer syntax than formatting through the '%' operator.
9057 9061 \layout Standard
9058 9062
9059 9063 Arnd Baecker
9060 9064 \family typewriter
9061 9065 <baecker-AT-physik.tu-dresden.de>
9062 9066 \family default
9063 9067 : for his many very useful suggestions and comments, and lots of help with
9064 9068 testing and documentation checking.
9065 9069 Many of IPython's newer features are a result of discussions with him (bugs
9066 9070 are still my fault, not his).
9067 9071 \layout Standard
9068 9072
9069 9073 Obviously Guido van\SpecialChar ~
9070 9074 Rossum and the whole Python development team, that goes
9071 9075 without saying.
9072 9076 \layout Standard
9073 9077
9074 9078 IPython's website is generously hosted at
9075 9079 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
9076 9080
9077 9081 \end_inset
9078 9082
9079 9083 by Enthought (
9080 9084 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
9081 9085
9082 9086 \end_inset
9083 9087
9084 9088 ).
9085 9089 I am very grateful to them and all of the SciPy team for their contribution.
9086 9090 \layout Standard
9087 9091
9088 9092
9089 9093 \begin_inset LatexCommand \label{figgins}
9090 9094
9091 9095 \end_inset
9092 9096
9093 9097 Fernando would also like to thank Stephen Figgins
9094 9098 \family typewriter
9095 9099 <fig-AT-monitor.net>
9096 9100 \family default
9097 9101 , an O'Reilly Python editor.
9098 9102 His Oct/11/2001 article about IPP and LazyPython, was what got this project
9099 9103 started.
9100 9104 You can read it at:
9101 9105 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
9102 9106
9103 9107 \end_inset
9104 9108
9105 9109 .
9106 9110 \layout Standard
9107 9111
9108 9112 And last but not least, all the kind IPython users who have emailed new
9109 9113 code, bug reports, fixes, comments and ideas.
9110 9114 A brief list follows, please let me know if I have ommitted your name by
9111 9115 accident:
9112 9116 \layout List
9113 9117 \labelwidthstring 00.00.0000
9114 9118
9115 9119 Jack\SpecialChar ~
9116 9120 Moffit
9117 9121 \family typewriter
9118 9122 <jack-AT-xiph.org>
9119 9123 \family default
9120 9124 Bug fixes, including the infamous color problem.
9121 9125 This bug alone caused many lost hours and frustration, many thanks to him
9122 9126 for the fix.
9123 9127 I've always been a fan of Ogg & friends, now I have one more reason to
9124 9128 like these folks.
9125 9129 \newline
9126 9130 Jack is also contributing with Debian packaging and many other things.
9127 9131 \layout List
9128 9132 \labelwidthstring 00.00.0000
9129 9133
9130 9134 Alexander\SpecialChar ~
9131 9135 Schmolck
9132 9136 \family typewriter
9133 9137 <a.schmolck-AT-gmx.net>
9134 9138 \family default
9135 9139 Emacs work, bug reports, bug fixes, ideas, lots more.
9136 9140 The ipython.el mode for (X)Emacs is Alex's code, providing full support
9137 9141 for IPython under (X)Emacs.
9138 9142 \layout List
9139 9143 \labelwidthstring 00.00.0000
9140 9144
9141 9145 Andrea\SpecialChar ~
9142 9146 Riciputi
9143 9147 \family typewriter
9144 9148 <andrea.riciputi-AT-libero.it>
9145 9149 \family default
9146 9150 Mac OSX information, Fink package management.
9147 9151 \layout List
9148 9152 \labelwidthstring 00.00.0000
9149 9153
9150 9154 Gary\SpecialChar ~
9151 9155 Bishop
9152 9156 \family typewriter
9153 9157 <gb-AT-cs.unc.edu>
9154 9158 \family default
9155 9159 Bug reports, and patches to work around the exception handling idiosyncracies
9156 9160 of WxPython.
9157 9161 Readline and color support for Windows.
9158 9162 \layout List
9159 9163 \labelwidthstring 00.00.0000
9160 9164
9161 9165 Jeffrey\SpecialChar ~
9162 9166 Collins
9163 9167 \family typewriter
9164 9168 <Jeff.Collins-AT-vexcel.com>
9165 9169 \family default
9166 9170 Bug reports.
9167 9171 Much improved readline support, including fixes for Python 2.3.
9168 9172 \layout List
9169 9173 \labelwidthstring 00.00.0000
9170 9174
9171 9175 Dryice\SpecialChar ~
9172 9176 Liu
9173 9177 \family typewriter
9174 9178 <dryice-AT-liu.com.cn>
9175 9179 \family default
9176 9180 FreeBSD port.
9177 9181 \layout List
9178 9182 \labelwidthstring 00.00.0000
9179 9183
9180 9184 Mike\SpecialChar ~
9181 9185 Heeter
9182 9186 \family typewriter
9183 9187 <korora-AT-SDF.LONESTAR.ORG>
9184 9188 \layout List
9185 9189 \labelwidthstring 00.00.0000
9186 9190
9187 9191 Christopher\SpecialChar ~
9188 9192 Hart
9189 9193 \family typewriter
9190 9194 <hart-AT-caltech.edu>
9191 9195 \family default
9192 9196 PDB integration.
9193 9197 \layout List
9194 9198 \labelwidthstring 00.00.0000
9195 9199
9196 9200 Milan\SpecialChar ~
9197 9201 Zamazal
9198 9202 \family typewriter
9199 9203 <pdm-AT-zamazal.org>
9200 9204 \family default
9201 9205 Emacs info.
9202 9206 \layout List
9203 9207 \labelwidthstring 00.00.0000
9204 9208
9205 9209 Philip\SpecialChar ~
9206 9210 Hisley
9207 9211 \family typewriter
9208 9212 <compsys-AT-starpower.net>
9209 9213 \layout List
9210 9214 \labelwidthstring 00.00.0000
9211 9215
9212 9216 Holger\SpecialChar ~
9213 9217 Krekel
9214 9218 \family typewriter
9215 9219 <pyth-AT-devel.trillke.net>
9216 9220 \family default
9217 9221 Tab completion, lots more.
9218 9222 \layout List
9219 9223 \labelwidthstring 00.00.0000
9220 9224
9221 9225 Robin\SpecialChar ~
9222 9226 Siebler
9223 9227 \family typewriter
9224 9228 <robinsiebler-AT-starband.net>
9225 9229 \layout List
9226 9230 \labelwidthstring 00.00.0000
9227 9231
9228 9232 Ralf\SpecialChar ~
9229 9233 Ahlbrink
9230 9234 \family typewriter
9231 9235 <ralf_ahlbrink-AT-web.de>
9232 9236 \layout List
9233 9237 \labelwidthstring 00.00.0000
9234 9238
9235 9239 Thorsten\SpecialChar ~
9236 9240 Kampe
9237 9241 \family typewriter
9238 9242 <thorsten-AT-thorstenkampe.de>
9239 9243 \layout List
9240 9244 \labelwidthstring 00.00.0000
9241 9245
9242 9246 Fredrik\SpecialChar ~
9243 9247 Kant
9244 9248 \family typewriter
9245 9249 <fredrik.kant-AT-front.com>
9246 9250 \family default
9247 9251 Windows setup.
9248 9252 \layout List
9249 9253 \labelwidthstring 00.00.0000
9250 9254
9251 9255 Syver\SpecialChar ~
9252 9256 Enstad
9253 9257 \family typewriter
9254 9258 <syver-en-AT-online.no>
9255 9259 \family default
9256 9260 Windows setup.
9257 9261 \layout List
9258 9262 \labelwidthstring 00.00.0000
9259 9263
9260 9264 Richard
9261 9265 \family typewriter
9262 9266 <rxe-AT-renre-europe.com>
9263 9267 \family default
9264 9268 Global embedding.
9265 9269 \layout List
9266 9270 \labelwidthstring 00.00.0000
9267 9271
9268 9272 Hayden\SpecialChar ~
9269 9273 Callow
9270 9274 \family typewriter
9271 9275 <h.callow-AT-elec.canterbury.ac.nz>
9272 9276 \family default
9273 9277 Gnuplot.py 1.6 compatibility.
9274 9278 \layout List
9275 9279 \labelwidthstring 00.00.0000
9276 9280
9277 9281 Leonardo\SpecialChar ~
9278 9282 Santagada
9279 9283 \family typewriter
9280 9284 <retype-AT-terra.com.br>
9281 9285 \family default
9282 9286 Fixes for Windows installation.
9283 9287 \layout List
9284 9288 \labelwidthstring 00.00.0000
9285 9289
9286 9290 Christopher\SpecialChar ~
9287 9291 Armstrong
9288 9292 \family typewriter
9289 9293 <radix-AT-twistedmatrix.com>
9290 9294 \family default
9291 9295 Bugfixes.
9292 9296 \layout List
9293 9297 \labelwidthstring 00.00.0000
9294 9298
9295 9299 Francois\SpecialChar ~
9296 9300 Pinard
9297 9301 \family typewriter
9298 9302 <pinard-AT-iro.umontreal.ca>
9299 9303 \family default
9300 9304 Code and documentation fixes.
9301 9305 \layout List
9302 9306 \labelwidthstring 00.00.0000
9303 9307
9304 9308 Cory\SpecialChar ~
9305 9309 Dodt
9306 9310 \family typewriter
9307 9311 <cdodt-AT-fcoe.k12.ca.us>
9308 9312 \family default
9309 9313 Bug reports and Windows ideas.
9310 9314 Patches for Windows installer.
9311 9315 \layout List
9312 9316 \labelwidthstring 00.00.0000
9313 9317
9314 9318 Olivier\SpecialChar ~
9315 9319 Aubert
9316 9320 \family typewriter
9317 9321 <oaubert-AT-bat710.univ-lyon1.fr>
9318 9322 \family default
9319 9323 New magics.
9320 9324 \layout List
9321 9325 \labelwidthstring 00.00.0000
9322 9326
9323 9327 King\SpecialChar ~
9324 9328 C.\SpecialChar ~
9325 9329 Shu
9326 9330 \family typewriter
9327 9331 <kingshu-AT-myrealbox.com>
9328 9332 \family default
9329 9333 Autoindent patch.
9330 9334 \layout List
9331 9335 \labelwidthstring 00.00.0000
9332 9336
9333 9337 Chris\SpecialChar ~
9334 9338 Drexler
9335 9339 \family typewriter
9336 9340 <chris-AT-ac-drexler.de>
9337 9341 \family default
9338 9342 Readline packages for Win32/CygWin.
9339 9343 \layout List
9340 9344 \labelwidthstring 00.00.0000
9341 9345
9342 9346 Gustavo\SpecialChar ~
9343 9347 Cordova\SpecialChar ~
9344 9348 Avila
9345 9349 \family typewriter
9346 9350 <gcordova-AT-sismex.com>
9347 9351 \family default
9348 9352 EvalDict code for nice, lightweight string interpolation.
9349 9353 \layout List
9350 9354 \labelwidthstring 00.00.0000
9351 9355
9352 9356 Kasper\SpecialChar ~
9353 9357 Souren
9354 9358 \family typewriter
9355 9359 <Kasper.Souren-AT-ircam.fr>
9356 9360 \family default
9357 9361 Bug reports, ideas.
9358 9362 \layout List
9359 9363 \labelwidthstring 00.00.0000
9360 9364
9361 9365 Gever\SpecialChar ~
9362 9366 Tulley
9363 9367 \family typewriter
9364 9368 <gever-AT-helium.com>
9365 9369 \family default
9366 9370 Code contributions.
9367 9371 \layout List
9368 9372 \labelwidthstring 00.00.0000
9369 9373
9370 9374 Ralf\SpecialChar ~
9371 9375 Schmitt
9372 9376 \family typewriter
9373 9377 <ralf-AT-brainbot.com>
9374 9378 \family default
9375 9379 Bug reports & fixes.
9376 9380 \layout List
9377 9381 \labelwidthstring 00.00.0000
9378 9382
9379 9383 Oliver\SpecialChar ~
9380 9384 Sander
9381 9385 \family typewriter
9382 9386 <osander-AT-gmx.de>
9383 9387 \family default
9384 9388 Bug reports.
9385 9389 \layout List
9386 9390 \labelwidthstring 00.00.0000
9387 9391
9388 9392 Rod\SpecialChar ~
9389 9393 Holland
9390 9394 \family typewriter
9391 9395 <rhh-AT-structurelabs.com>
9392 9396 \family default
9393 9397 Bug reports and fixes to logging module.
9394 9398 \layout List
9395 9399 \labelwidthstring 00.00.0000
9396 9400
9397 9401 Daniel\SpecialChar ~
9398 9402 'Dang'\SpecialChar ~
9399 9403 Griffith
9400 9404 \family typewriter
9401 9405 <pythondev-dang-AT-lazytwinacres.net>
9402 9406 \family default
9403 9407 Fixes, enhancement suggestions for system shell use.
9404 9408 \layout List
9405 9409 \labelwidthstring 00.00.0000
9406 9410
9407 9411 Viktor\SpecialChar ~
9408 9412 Ransmayr
9409 9413 \family typewriter
9410 9414 <viktor.ransmayr-AT-t-online.de>
9411 9415 \family default
9412 9416 Tests and reports on Windows installation issues.
9413 9417 Contributed a true Windows binary installer.
9414 9418 \layout List
9415 9419 \labelwidthstring 00.00.0000
9416 9420
9417 9421 Mike\SpecialChar ~
9418 9422 Salib
9419 9423 \family typewriter
9420 9424 <msalib-AT-mit.edu>
9421 9425 \family default
9422 9426 Help fixing a subtle bug related to traceback printing.
9423 9427 \layout List
9424 9428 \labelwidthstring 00.00.0000
9425 9429
9426 9430 W.J.\SpecialChar ~
9427 9431 van\SpecialChar ~
9428 9432 der\SpecialChar ~
9429 9433 Laan
9430 9434 \family typewriter
9431 9435 <gnufnork-AT-hetdigitalegat.nl>
9432 9436 \family default
9433 9437 Bash-like prompt specials.
9434 9438 \layout List
9435 9439 \labelwidthstring 00.00.0000
9436 9440
9437 9441 Antoon\SpecialChar ~
9438 9442 Pardon
9439 9443 \family typewriter
9440 9444 <Antoon.Pardon-AT-rece.vub.ac.be>
9441 9445 \family default
9442 9446 Critical fix for the multithreaded IPython.
9443 9447 \layout List
9444 9448 \labelwidthstring 00.00.0000
9445 9449
9446 9450 John\SpecialChar ~
9447 9451 Hunter
9448 9452 \family typewriter
9449 9453 <jdhunter-AT-nitace.bsd.uchicago.edu>
9450 9454 \family default
9451 9455 Matplotlib author, helped with all the development of support for matplotlib
9452 9456 in IPyhton, including making necessary changes to matplotlib itself.
9453 9457 \layout List
9454 9458 \labelwidthstring 00.00.0000
9455 9459
9456 9460 Matthew\SpecialChar ~
9457 9461 Arnison
9458 9462 \family typewriter
9459 9463 <maffew-AT-cat.org.au>
9460 9464 \family default
9461 9465 Bug reports, `
9462 9466 \family typewriter
9463 9467 %run -d
9464 9468 \family default
9465 9469 ' idea.
9466 9470 \layout List
9467 9471 \labelwidthstring 00.00.0000
9468 9472
9469 9473 Prabhu\SpecialChar ~
9470 9474 Ramachandran
9471 9475 \family typewriter
9472 9476 <prabhu_r-AT-users.sourceforge.net>
9473 9477 \family default
9474 9478 Help with (X)Emacs support, threading patches, ideas...
9475 9479 \layout List
9476 9480 \labelwidthstring 00.00.0000
9477 9481
9478 9482 Norbert\SpecialChar ~
9479 9483 Tretkowski
9480 9484 \family typewriter
9481 9485 <tretkowski-AT-inittab.de>
9482 9486 \family default
9483 9487 help with Debian packaging and distribution.
9484 9488 \layout List
9485 9489 \labelwidthstring 00.00.0000
9486 9490
9487 9491 George\SpecialChar ~
9488 9492 Sakkis <
9489 9493 \family typewriter
9490 9494 gsakkis-AT-eden.rutgers.edu>
9491 9495 \family default
9492 9496 New matcher for tab-completing named arguments of user-defined functions.
9493 9497 \layout List
9494 9498 \labelwidthstring 00.00.0000
9495 9499
9496 9500 JοΏ½rgen\SpecialChar ~
9497 9501 Stenarson
9498 9502 \family typewriter
9499 9503 <jorgen.stenarson-AT-bostream.nu>
9500 9504 \family default
9501 9505 Wildcard support implementation for searching namespaces.
9502 9506 \layout List
9503 9507 \labelwidthstring 00.00.0000
9504 9508
9505 9509 Vivian\SpecialChar ~
9506 9510 De\SpecialChar ~
9507 9511 Smedt
9508 9512 \family typewriter
9509 9513 <vivian-AT-vdesmedt.com>
9510 9514 \family default
9511 9515 Debugger enhancements, so that when pdb is activated from within IPython,
9512 9516 coloring, tab completion and other features continue to work seamlessly.
9513 9517 \layout List
9514 9518 \labelwidthstring 00.00.0000
9515 9519
9516 9520 Scott\SpecialChar ~
9517 9521 Tsai
9518 9522 \family typewriter
9519 9523 <scottt958-AT-yahoo.com.tw>
9520 9524 \family default
9521 9525 Support for automatic editor invocation on syntax errors (see
9522 9526 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
9523 9527
9524 9528 \end_inset
9525 9529
9526 9530 ).
9527 9531 \layout List
9528 9532 \labelwidthstring 00.00.0000
9529 9533
9530 9534 Alexander\SpecialChar ~
9531 9535 Belchenko
9532 9536 \family typewriter
9533 9537 <bialix-AT-ukr.net>
9534 9538 \family default
9535 9539 Improvements for win32 paging system.
9536 9540 \layout List
9537 9541 \labelwidthstring 00.00.0000
9538 9542
9539 9543 Will\SpecialChar ~
9540 9544 Maier
9541 9545 \family typewriter
9542 9546 <willmaier-AT-ml1.net>
9543 9547 \family default
9544 9548 Official OpenBSD port.
9545 9549 \the_end
General Comments 0
You need to be logged in to leave comments. Login now