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