##// END OF EJS Templates
ipython.rst: add chapter about extensions
Ville M. Vainio -
r1126:13ec426f merge
parent child Browse files
Show More
@@ -1,5402 +1,5456 b''
1 1 .. IPython documentation master file, created by sphinx-quickstart.py on Mon Mar 24 17:01:34 2008.
2 2 You can adapt this file completely to your liking, but it should at least
3 3 contain the root 'toctree' directive.
4 4
5 5 Welcome to IPython's documentation!
6 6 ===================================
7 7
8 8 Contents:
9 9
10 10 .. toctree::
11 11 :maxdepth: 2
12 12
13 13 Indices and tables
14 14 ==================
15 15
16 16 * :ref:`genindex`
17 17 * :ref:`modindex`
18 18 * :ref:`search`
19 19
20 20 Overview
21 21 ========
22 22
23 23 One of Python's most useful features is its interactive interpreter.
24 24 This system allows very fast testing of ideas without the overhead of
25 25 creating test files as is typical in most programming languages.
26 26 However, the interpreter supplied with the standard Python distribution
27 27 is somewhat limited for extended interactive use.
28 28
29 29 IPython is a free software project (released under the BSD license)
30 30 which tries to:
31 31
32 32 1. Provide an interactive shell superior to Python's default. IPython
33 33 has many features for object introspection, system shell access,
34 34 and its own special command system for adding functionality when
35 35 working interactively. It tries to be a very efficient environment
36 36 both for Python code development and for exploration of problems
37 37 using Python objects (in situations like data analysis).
38 38 2. Serve as an embeddable, ready to use interpreter for your own
39 39 programs. IPython can be started with a single call from inside
40 40 another program, providing access to the current namespace. This
41 41 can be very useful both for debugging purposes and for situations
42 42 where a blend of batch-processing and interactive exploration are
43 43 needed.
44 44 3. Offer a flexible framework which can be used as the base
45 45 environment for other systems with Python as the underlying
46 46 language. Specifically scientific environments like Mathematica,
47 47 IDL and Matlab inspired its design, but similar ideas can be
48 48 useful in many fields.
49 49 4. Allow interactive testing of threaded graphical toolkits. IPython
50 50 has support for interactive, non-blocking control of GTK, Qt and
51 51 WX applications via special threading flags. The normal Python
52 52 shell can only do this for Tkinter applications.
53 53
54 54
55 55 Main features
56 56 -------------
57 57
58 58 * Dynamic object introspection. One can access docstrings, function
59 59 definition prototypes, source code, source files and other details
60 60 of any object accessible to the interpreter with a single
61 61 keystroke ('?', and using '??' provides additional detail).
62 62 * Searching through modules and namespaces with '*' wildcards, both
63 63 when using the '?' system and via the %psearch command.
64 64 * Completion in the local namespace, by typing TAB at the prompt.
65 65 This works for keywords, methods, variables and files in the
66 66 current directory. This is supported via the readline library, and
67 67 full access to configuring readline's behavior is provided.
68 68 * Numbered input/output prompts with command history (persistent
69 69 across sessions and tied to each profile), full searching in this
70 70 history and caching of all input and output.
71 71 * User-extensible 'magic' commands. A set of commands prefixed with
72 72 % is available for controlling IPython itself and provides
73 73 directory control, namespace information and many aliases to
74 74 common system shell commands.
75 75 * Alias facility for defining your own system aliases.
76 76 * Complete system shell access. Lines starting with ! are passed
77 77 directly to the system shell, and using !! captures shell output
78 78 into python variables for further use.
79 79 * Background execution of Python commands in a separate thread.
80 80 IPython has an internal job manager called jobs, and a
81 81 conveninence backgrounding magic function called %bg.
82 82 * The ability to expand python variables when calling the system
83 83 shell. In a shell command, any python variable prefixed with $ is
84 84 expanded. A double $$ allows passing a literal $ to the shell (for
85 85 access to shell and environment variables like $PATH).
86 86 * Filesystem navigation, via a magic %cd command, along with a
87 87 persistent bookmark system (using %bookmark) for fast access to
88 88 frequently visited directories.
89 89 * A lightweight persistence framework via the %store command, which
90 90 allows you to save arbitrary Python variables. These get restored
91 91 automatically when your session restarts.
92 92 * Automatic indentation (optional) of code as you type (through the
93 93 readline library).
94 94 * Macro system for quickly re-executing multiple lines of previous
95 95 input with a single name. Macros can be stored persistently via
96 96 %store and edited via %edit.
97 97 * Session logging (you can then later use these logs as code in your
98 98 programs). Logs can optionally timestamp all input, and also store
99 99 session output (marked as comments, so the log remains valid
100 100 Python source code).
101 101 * Session restoring: logs can be replayed to restore a previous
102 102 session to the state where you left it.
103 103 * Verbose and colored exception traceback printouts. Easier to parse
104 104 visually, and in verbose mode they produce a lot of useful
105 105 debugging information (basically a terminal version of the cgitb
106 106 module).
107 107 * Auto-parentheses: callable objects can be executed without
108 108 parentheses: 'sin 3' is automatically converted to 'sin(3)'.
109 109 * Auto-quoting: using ',' or ';' as the first character forces
110 110 auto-quoting of the rest of the line: ',my_function a b' becomes
111 111 automatically 'my_function("a","b")', while ';my_function a b'
112 112 becomes 'my_function("a b")'.
113 113 * Extensible input syntax. You can define filters that pre-process
114 114 user input to simplify input in special situations. This allows
115 115 for example pasting multi-line code fragments which start with
116 116 '>>>' or '...' such as those from other python sessions or the
117 117 standard Python documentation.
118 118 * Flexible configuration system. It uses a configuration file which
119 119 allows permanent setting of all command-line options, module
120 120 loading, code and file execution. The system allows recursive file
121 121 inclusion, so you can have a base file with defaults and layers
122 122 which load other customizations for particular projects.
123 123 * Embeddable. You can call IPython as a python shell inside your own
124 124 python programs. This can be used both for debugging code or for
125 125 providing interactive abilities to your programs with knowledge
126 126 about the local namespaces (very useful in debugging and data
127 127 analysis situations).
128 128 * Easy debugger access. You can set IPython to call up an enhanced
129 129 version of the Python debugger (pdb) every time there is an
130 130 uncaught exception. This drops you inside the code which triggered
131 131 the exception with all the data live and it is possible to
132 132 navigate the stack to rapidly isolate the source of a bug. The
133 133 %run magic command -with the -d option- can run any script under
134 134 pdb's control, automatically setting initial breakpoints for you.
135 135 This version of pdb has IPython-specific improvements, including
136 136 tab-completion and traceback coloring support.
137 137 * Profiler support. You can run single statements (similar to
138 138 profile.run()) or complete programs under the profiler's control.
139 139 While this is possible with standard cProfile or profile modules,
140 140 IPython wraps this functionality with magic commands (see '%prun'
141 141 and '%run -p') convenient for rapid interactive work.
142 142 * Doctest support. The special %doctest_mode command toggles a mode
143 143 that allows you to paste existing doctests (with leading '>>>'
144 144 prompts and whitespace) and uses doctest-compatible prompts and
145 145 output, so you can use IPython sessions as doctest code.
146 146
147 147
148 148 Portability and Python requirements
149 149 -----------------------------------
150 150
151 151 Python requirements: IPython requires with Python version 2.3 or newer.
152 152 If you are still using Python 2.2 and can not upgrade, the last version
153 153 of IPython which worked with Python 2.2 was 0.6.15, so you will have to
154 154 use that.
155 155
156 156 IPython is developed under Linux, but it should work in any reasonable
157 157 Unix-type system (tested OK under Solaris and the BSD family, for which
158 158 a port exists thanks to Dryice Liu).
159 159
160 160 Mac OS X: it works, apparently without any problems (thanks to Jim Boyle
161 161 at Lawrence Livermore for the information). Thanks to Andrea Riciputi,
162 162 Fink support is available.
163 163
164 164 CygWin: it works mostly OK, though some users have reported problems
165 165 with prompt coloring. No satisfactory solution to this has been found so
166 166 far, you may want to disable colors permanently in the ipythonrc
167 167 configuration file if you experience problems. If you have proper color
168 168 support under cygwin, please post to the IPython mailing list so this
169 169 issue can be resolved for all users.
170 170
171 171 Windows: it works well under Windows XP/2k, and I suspect NT should
172 172 behave similarly. Section 2.3 <node2.html#sub:Under-Windows> describes
173 173 installation details for Windows, including some additional tools needed
174 174 on this platform.
175 175
176 176 Windows 9x support is present, and has been reported to work fine (at
177 177 least on WinME).
178 178
179 179 Note, that I have very little access to and experience with Windows
180 180 development. However, an excellent group of Win32 users (led by Ville
181 181 Vainio), consistently contribute bugfixes and platform-specific
182 182 enhancements, so they more than make up for my deficiencies on that
183 183 front. In fact, Win32 users report using IPython as a system shell (see
184 184 Sec. 12 <node12.html#sec:IPython-as-shell> for details), as it offers a
185 185 level of control and features which the default cmd.exe doesn't provide.
186 186
187 187
188 188 Location
189 189 ========
190 190
191 191 IPython is generously hosted at http://ipython.scipy.org by the
192 192 Enthought, Inc and the SciPy project. This site offers downloads,
193 193 subversion access, mailing lists and a bug tracking system. I am very
194 194 grateful to Enthought (http://www.enthought.com) and all of the SciPy
195 195 team for their contribution.
196 196
197 197 Installation
198 198 ============
199 199
200 200 Instant instructions
201 201 --------------------
202 202
203 203 If you are of the impatient kind, under Linux/Unix simply untar/unzip
204 204 the download, then install with 'python setup.py install'. Under
205 205 Windows, double-click on the provided .exe binary installer.
206 206
207 207 Then, take a look at Sections 3 <node3.html#sec:good_config> for
208 208 configuring things optimally and 4 <node4.html#sec:quick_tips> for quick
209 209 tips on efficient use of IPython. You can later refer to the rest of the
210 210 manual for all the gory details.
211 211
212 212 See the notes in sec. 2.4 <#sec:upgrade> for upgrading IPython versions.
213 213
214 214
215 215 Detailed Unix instructions (Linux, Mac OS X, etc.)
216 216
217 217 For RPM based systems, simply install the supplied package in the usual
218 218 manner. If you download the tar archive, the process is:
219 219
220 220 1. Unzip/untar the ipython-XXX.tar.gz file wherever you want (XXX is
221 221 the version number). It will make a directory called ipython-XXX.
222 222 Change into that directory where you will find the files README
223 223 and setup.py. Once you've completed the installation, you can
224 224 safely remove this directory.
225 225 2. If you are installing over a previous installation of version
226 226 0.2.0 or earlier, first remove your $HOME/.ipython directory,
227 227 since the configuration file format has changed somewhat (the '='
228 228 were removed from all option specifications). Or you can call
229 229 ipython with the -upgrade option and it will do this automatically
230 230 for you.
231 231 3. IPython uses distutils, so you can install it by simply typing at
232 232 the system prompt (don't type the $)::
233 233
234 234 $ python setup.py install
235 235
236 236 Note that this assumes you have root access to your machine. If
237 237 you don't have root access or don't want IPython to go in the
238 238 default python directories, you'll need to use the ``--home`` option
239 239 (or ``--prefix``). For example::
240 240
241 241 $ python setup.py install --home $HOME/local
242 242
243 243 will install IPython into $HOME/local and its subdirectories
244 244 (creating them if necessary).
245 245 You can type::
246 246
247 247 $ python setup.py --help
248 248
249 249 for more details.
250 250
251 251 Note that if you change the default location for ``--home`` at
252 252 installation, IPython may end up installed at a location which is
253 253 not part of your $PYTHONPATH environment variable. In this case,
254 254 you'll need to configure this variable to include the actual
255 255 directory where the IPython/ directory ended (typically the value
256 256 you give to ``--home`` plus /lib/python).
257 257
258 258
259 259 Mac OSX information
260 260 -------------------
261 261
262 262 Under OSX, there is a choice you need to make. Apple ships its own build
263 263 of Python, which lives in the core OSX filesystem hierarchy. You can
264 264 also manually install a separate Python, either purely by hand
265 265 (typically in /usr/local) or by using Fink, which puts everything under
266 266 /sw. Which route to follow is a matter of personal preference, as I've
267 267 seen users who favor each of the approaches. Here I will simply list the
268 268 known installation issues under OSX, along with their solutions.
269 269
270 270 This page: http://geosci.uchicago.edu/~tobis/pylab.html contains
271 271 information on this topic, with additional details on how to make
272 272 IPython and matplotlib play nicely under OSX.
273 273
274 274
275 275 GUI problems
276 276 ------------
277 277
278 278 The following instructions apply to an install of IPython under OSX from
279 279 unpacking the .tar.gz distribution and installing it for the default
280 280 Python interpreter shipped by Apple. If you are using a fink install,
281 281 fink will take care of these details for you, by installing IPython
282 282 against fink's Python.
283 283
284 284 IPython offers various forms of support for interacting with graphical
285 285 applications from the command line, from simple Tk apps (which are in
286 286 principle always supported by Python) to interactive control of WX, Qt
287 287 and GTK apps. Under OSX, however, this requires that ipython is
288 288 installed by calling the special pythonw script at installation time,
289 289 which takes care of coordinating things with Apple's graphical environment.
290 290
291 291 So when installing under OSX, it is best to use the following command::
292 292
293 293 $ sudo pythonw setup.py install --install-scripts=/usr/local/bin
294 294
295 295 or
296 296
297 297 $ sudo pythonw setup.py install --install-scripts=/usr/bin
298 298
299 299 depending on where you like to keep hand-installed executables.
300 300
301 301 The resulting script will have an appropriate shebang line (the first
302 302 line in the script whic begins with #!...) such that the ipython
303 303 interpreter can interact with the OS X GUI. If the installed version
304 304 does not work and has a shebang line that points to, for example, just
305 305 /usr/bin/python, then you might have a stale, cached version in your
306 306 build/scripts-<python-version> directory. Delete that directory and
307 307 rerun the setup.py.
308 308
309 309 It is also a good idea to use the special flag ``--install-scripts`` as
310 310 indicated above, to ensure that the ipython scripts end up in a location
311 311 which is part of your $PATH. Otherwise Apple's Python will put the
312 312 scripts in an internal directory not available by default at the command
313 313 line (if you use /usr/local/bin, you need to make sure this is in your
314 314 $PATH, which may not be true by default).
315 315
316 316
317 317 Readline problems
318 318 -----------------
319 319
320 320 By default, the Python version shipped by Apple does not include the
321 321 readline library, so central to IPython's behavior. If you install
322 322 IPython against Apple's Python, you will not have arrow keys, tab
323 323 completion, etc. For Mac OSX 10.3 (Panther), you can find a prebuilt
324 324 readline library here:
325 325 http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip
326 326
327 327 If you are using OSX 10.4 (Tiger), after installing this package you
328 328 need to either:
329 329
330 330 1. move readline.so from /Library/Python/2.3 to
331 331 /Library/Python/2.3/site-packages, or
332 332 2. install http://pythonmac.org/packages/TigerPython23Compat.pkg.zip
333 333
334 334 Users installing against Fink's Python or a properly hand-built one
335 335 should not have this problem.
336 336
337 337
338 338 DarwinPorts
339 339 -----------
340 340
341 341 I report here a message from an OSX user, who suggests an alternative
342 342 means of using IPython under this operating system with good results.
343 343 Please let me know of any updates that may be useful for this section.
344 344 His message is reproduced verbatim below:
345 345
346 346 From: Markus Banfi <markus.banfi-AT-mospheira.net>
347 347
348 348 As a MacOS X (10.4.2) user I prefer to install software using
349 349 DawinPorts instead of Fink. I had no problems installing ipython
350 350 with DarwinPorts. It's just:
351 351
352 352 sudo port install py-ipython
353 353
354 354 It automatically resolved all dependencies (python24, readline,
355 355 py-readline). So far I did not encounter any problems with the
356 356 DarwinPorts port of ipython.
357 357
358 358
359 359
360 360 Windows instructions
361 361 --------------------
362 362
363 363 Some of IPython's very useful features are:
364 364
365 365 * Integrated readline support (Tab-based file, object and attribute
366 366 completion, input history across sessions, editable command line,
367 367 etc.)
368 368 * Coloring of prompts, code and tracebacks.
369 369
370 370 These, by default, are only available under Unix-like operating systems.
371 371 However, thanks to Gary Bishop's work, Windows XP/2k users can also
372 372 benefit from them. His readline library originally implemented both GNU
373 373 readline functionality and color support, so that IPython under Windows
374 374 XP/2k can be as friendly and powerful as under Unix-like environments.
375 375
376 376 This library, now named PyReadline, has been absorbed by the IPython
377 377 team (Jörgen Stenarson, in particular), and it continues to be developed
378 378 with new features, as well as being distributed directly from the
379 379 IPython site.
380 380
381 381 The PyReadline extension requires CTypes and the windows IPython
382 382 installer needs PyWin32, so in all you need:
383 383
384 384 1. PyWin32 from http://sourceforge.net/projects/pywin32.
385 385 2. PyReadline for Windows from
386 386 http://ipython.scipy.org/moin/PyReadline/Intro. That page contains
387 387 further details on using and configuring the system to your liking.
388 388 3. Finally, only if you are using Python 2.3 or 2.4, you need CTypes
389 389 from http://starship.python.net/crew/theller/ctypes(you must use
390 390 version 0.9.1 or newer). This package is included in Python 2.5,
391 391 so you don't need to manually get it if your Python version is 2.5
392 392 or newer.
393 393
394 394 Warning about a broken readline-like library: several users have
395 395 reported problems stemming from using the pseudo-readline library at
396 396 http://newcenturycomputers.net/projects/readline.html. This is a broken
397 397 library which, while called readline, only implements an incomplete
398 398 subset of the readline API. Since it is still called readline, it fools
399 399 IPython's detection mechanisms and causes unpredictable crashes later.
400 400 If you wish to use IPython under Windows, you must NOT use this library,
401 401 which for all purposes is (at least as of version 1.6) terminally broken.
402 402
403 403
404 404 Installation procedure
405 405 ----------------------
406 406
407 407 Once you have the above installed, from the IPython download directory
408 408 grab the ipython-XXX.win32.exe file, where XXX represents the version
409 409 number. This is a regular windows executable installer, which you can
410 410 simply double-click to install. It will add an entry for IPython to your
411 411 Start Menu, as well as registering IPython in the Windows list of
412 412 applications, so you can later uninstall it from the Control Panel.
413 413
414 414 IPython tries to install the configuration information in a directory
415 415 named .ipython (_ipython under Windows) located in your 'home'
416 416 directory. IPython sets this directory by looking for a HOME environment
417 417 variable; if such a variable does not exist, it uses HOMEDRIVE\HOMEPATH
418 418 (these are always defined by Windows). This typically gives something
419 419 like C:\Documents and Settings\YourUserName, but your local details may
420 420 vary. In this directory you will find all the files that configure
421 421 IPython's defaults, and you can put there your profiles and extensions.
422 422 This directory is automatically added by IPython to sys.path, so
423 423 anything you place there can be found by import statements.
424 424
425 425
426 426 Upgrading
427 427 ---------
428 428
429 429 For an IPython upgrade, you should first uninstall the previous version.
430 430 This will ensure that all files and directories (such as the
431 431 documentation) which carry embedded version strings in their names are
432 432 properly removed.
433 433
434 434
435 435 Manual installation under Win32
436 436 -------------------------------
437 437
438 438 In case the automatic installer does not work for some reason, you can
439 439 download the ipython-XXX.tar.gz file, which contains the full IPython
440 440 source distribution (the popular WinZip can read .tar.gz files). After
441 441 uncompressing the archive, you can install it at a command terminal just
442 442 like any other Python module, by using 'python setup.py install'.
443 443
444 444 After the installation, run the supplied win32_manual_post_install.py
445 445 script, which creates the necessary Start Menu shortcuts for you.
446 446
447 447
448 448
449 449 Upgrading from a previous version
450 450 ---------------------------------
451 451
452 452 If you are upgrading from a previous version of IPython, after doing the
453 453 routine installation described above, you should call IPython with the
454 454 -upgrade option the first time you run your new copy. This will
455 455 automatically update your configuration directory while preserving
456 456 copies of your old files. You can then later merge back any personal
457 457 customizations you may have made into the new files. It is a good idea
458 458 to do this as there may be new options available in the new
459 459 configuration files which you will not have.
460 460
461 461 Under Windows, if you don't know how to call python scripts with
462 462 arguments from a command line, simply delete the old config directory
463 463 and IPython will make a new one. Win2k and WinXP users will find it in
464 464 C:\Documents and Settings\YourUserName\_ipython, and Win 9x users under
465 465 C:\Program Files\IPython\_ipython.
466 466
467 467 Initial configuration of your environment
468 468 =========================================
469 469
470 470 This section will help you set various things in your environment for
471 471 your IPython sessions to be as efficient as possible. All of IPython's
472 472 configuration information, along with several example files, is stored
473 473 in a directory named by default $HOME/.ipython. You can change this by
474 474 defining the environment variable IPYTHONDIR, or at runtime with the
475 475 command line option -ipythondir.
476 476
477 477 If all goes well, the first time you run IPython it should automatically
478 478 create a user copy of the config directory for you, based on its builtin
479 479 defaults. You can look at the files it creates to learn more about
480 480 configuring the system. The main file you will modify to configure
481 481 IPython's behavior is called ipythonrc (with a .ini extension under
482 482 Windows), included for reference in Sec. 7.1
483 483 <node7.html#sec:ipytonrc-sample>. This file is very commented and has
484 484 many variables you can change to suit your taste, you can find more
485 485 details in Sec. 7 <node7.html#sec:customization>. Here we discuss the
486 486 basic things you will want to make sure things are working properly from
487 487 the beginning.
488 488
489 489
490 490
491 491 Access to the Python help system
492 492 --------------------------------
493 493
494 494 This is true for Python in general (not just for IPython): you should
495 495 have an environment variable called PYTHONDOCS pointing to the directory
496 496 where your HTML Python documentation lives. In my system it's
497 497 /usr/share/doc/python-docs-2.3.4/html, check your local details or ask
498 498 your systems administrator.
499 499
500 500 This is the directory which holds the HTML version of the Python
501 501 manuals. Unfortunately it seems that different Linux distributions
502 502 package these files differently, so you may have to look around a bit.
503 503 Below I show the contents of this directory on my system for reference::
504 504
505 505 [html]> ls
506 506 about.dat acks.html dist/ ext/ index.html lib/ modindex.html
507 507 stdabout.dat tut/ about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
508 508
509 509 You should really make sure this variable is correctly set so that
510 510 Python's pydoc-based help system works. It is a powerful and convenient
511 511 system with full access to the Python manuals and all modules accessible
512 512 to you.
513 513
514 514 Under Windows it seems that pydoc finds the documentation automatically,
515 515 so no extra setup appears necessary.
516 516
517 517
518 518 Editor
519 519 ------
520 520
521 521 The %edit command (and its alias %ed) will invoke the editor set in your
522 522 environment as EDITOR. If this variable is not set, it will default to
523 523 vi under Linux/Unix and to notepad under Windows. You may want to set
524 524 this variable properly and to a lightweight editor which doesn't take
525 525 too long to start (that is, something other than a new instance of
526 526 Emacs). This way you can edit multi-line code quickly and with the power
527 527 of a real editor right inside IPython.
528 528
529 529 If you are a dedicated Emacs user, you should set up the Emacs server so
530 530 that new requests are handled by the original process. This means that
531 531 almost no time is spent in handling the request (assuming an Emacs
532 532 process is already running). For this to work, you need to set your
533 533 EDITOR environment variable to 'emacsclient'. The code below, supplied
534 534 by Francois Pinard, can then be used in your .emacs file to enable the
535 535 server::
536 536
537 537 (defvar server-buffer-clients)
538 538 (when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
539 539 (server-start)
540 540 (defun fp-kill-server-with-buffer-routine ()
541 541 (and server-buffer-clients (server-done)))
542 542 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
543 543
544 544 You can also set the value of this editor via the commmand-line option
545 545 '-editor' or in your ipythonrc file. This is useful if you wish to use
546 546 specifically for IPython an editor different from your typical default
547 547 (and for Windows users who tend to use fewer environment variables).
548 548
549 549
550 550 Color
551 551 -----
552 552
553 553 The default IPython configuration has most bells and whistles turned on
554 554 (they're pretty safe). But there's one that may cause problems on some
555 555 systems: the use of color on screen for displaying information. This is
556 556 very useful, since IPython can show prompts and exception tracebacks
557 557 with various colors, display syntax-highlighted source code, and in
558 558 general make it easier to visually parse information.
559 559
560 560 The following terminals seem to handle the color sequences fine:
561 561
562 562 * Linux main text console, KDE Konsole, Gnome Terminal, E-term,
563 563 rxvt, xterm.
564 564 * CDE terminal (tested under Solaris). This one boldfaces light colors.
565 565 * (X)Emacs buffers. See sec.3.4 <#sec:emacs> for more details on
566 566 using IPython with (X)Emacs.
567 567 * A Windows (XP/2k) command prompt with Gary Bishop's support
568 568 extensions. Gary's extensions are discussed in Sec. 2.3
569 569 <node2.html#sub:Under-Windows>.
570 570 * A Windows (XP/2k) CygWin shell. Although some users have reported
571 571 problems; it is not clear whether there is an issue for everyone
572 572 or only under specific configurations. If you have full color
573 573 support under cygwin, please post to the IPython mailing list so
574 574 this issue can be resolved for all users.
575 575
576 576 These have shown problems:
577 577
578 578 * Windows command prompt in WinXP/2k logged into a Linux machine via
579 579 telnet or ssh.
580 580 * Windows native command prompt in WinXP/2k, without Gary Bishop's
581 581 extensions. Once Gary's readline library is installed, the normal
582 582 WinXP/2k command prompt works perfectly.
583 583
584 584 Currently the following color schemes are available:
585 585
586 586 * NoColor: uses no color escapes at all (all escapes are empty '' ''
587 587 strings). This 'scheme' is thus fully safe to use in any terminal.
588 588 * Linux: works well in Linux console type environments: dark
589 589 background with light fonts. It uses bright colors for
590 590 information, so it is difficult to read if you have a light
591 591 colored background.
592 592 * LightBG: the basic colors are similar to those in the Linux scheme
593 593 but darker. It is easy to read in terminals with light backgrounds.
594 594
595 595 IPython uses colors for two main groups of things: prompts and
596 596 tracebacks which are directly printed to the terminal, and the object
597 597 introspection system which passes large sets of data through a pager.
598 598
599 599
600 600 Input/Output prompts and exception tracebacks
601 601 ---------------------------------------------
602 602
603 603 You can test whether the colored prompts and tracebacks work on your
604 604 system interactively by typing '%colors Linux' at the prompt (use
605 605 '%colors LightBG' if your terminal has a light background). If the input
606 606 prompt shows garbage like::
607 607
608 608 [0;32mIn [[1;32m1[0;32m]: [0;00m
609 609
610 610 instead of (in color) something like::
611 611
612 612 In [1]:
613 613
614 614 this means that your terminal doesn't properly handle color escape
615 615 sequences. You can go to a 'no color' mode by typing '%colors NoColor'.
616 616
617 617 You can try using a different terminal emulator program (Emacs users,
618 618 see below). To permanently set your color preferences, edit the file
619 619 $HOME/.ipython/ipythonrc and set the colors option to the desired value.
620 620
621 621
622 622 Object details (types, docstrings, source code, etc.)
623 623 -----------------------------------------------------
624 624
625 625 IPython has a set of special functions for studying the objects you are
626 626 working with, discussed in detail in Sec. 6.4
627 627 <node6.html#sec:dyn-object-info>. But this system relies on passing
628 628 information which is longer than your screen through a data pager, such
629 629 as the common Unix less and more programs. In order to be able to see
630 630 this information in color, your pager needs to be properly configured. I
631 631 strongly recommend using less instead of more, as it seems that more
632 632 simply can not understand colored text correctly.
633 633
634 634 In order to configure less as your default pager, do the following:
635 635
636 636 1. Set the environment PAGER variable to less.
637 637 2. Set the environment LESS variable to -r (plus any other options
638 638 you always want to pass to less by default). This tells less to
639 639 properly interpret control sequences, which is how color
640 640 information is given to your terminal.
641 641
642 642 For the csh or tcsh shells, add to your ~/.cshrc file the lines::
643 643
644 644 setenv PAGER less
645 645 setenv LESS -r
646 646
647 647 There is similar syntax for other Unix shells, look at your system
648 648 documentation for details.
649 649
650 650 If you are on a system which lacks proper data pagers (such as Windows),
651 651 IPython will use a very limited builtin pager.
652 652
653 653 (X)Emacs configuration
654 654 ----------------------
655 655
656 656 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran,
657 657 currently (X)Emacs and IPython get along very well.
658 658
659 659 Important note: You will need to use a recent enough version of
660 660 python-mode.el, along with the file ipython.el. You can check that the
661 661 version you have of python-mode.el is new enough by either looking at
662 662 the revision number in the file itself, or asking for it in (X)Emacs via
663 663 M-x py-version. Versions 4.68 and newer contain the necessary fixes for
664 664 proper IPython support.
665 665
666 666 The file ipython.el is included with the IPython distribution, in the
667 667 documentation directory (where this manual resides in PDF and HTML
668 668 formats).
669 669
670 670 Once you put these files in your Emacs path, all you need in your .emacs
671 671 file is::
672 672
673 673 (require 'ipython)
674 674
675 675 This should give you full support for executing code snippets via
676 676 IPython, opening IPython as your Python shell via C-c !, etc.
677 677
678 678 If you happen to get garbage instead of colored prompts as described in
679 679 the previous section, you may need to set also in your .emacs file::
680 680
681 681 (setq ansi-color-for-comint-mode t)
682 682
683 683
684 684 Notes:
685 685
686 686 * There is one caveat you should be aware of: you must start the
687 687 IPython shell before attempting to execute any code regions via
688 688 ``C-c |``. Simply type C-c ! to start IPython before passing any code
689 689 regions to the interpreter, and you shouldn't experience any
690 690 problems.
691 691 This is due to a bug in Python itself, which has been fixed for
692 692 Python 2.3, but exists as of Python 2.2.2 (reported as SF bug [
693 693 737947 ]).
694 694 * The (X)Emacs support is maintained by Alexander Schmolck, so all
695 695 comments/requests should be directed to him through the IPython
696 696 mailing lists.
697 697 * This code is still somewhat experimental so it's a bit rough
698 698 around the edges (although in practice, it works quite well).
699 699 * Be aware that if you customize py-python-command previously, this
700 700 value will override what ipython.el does (because loading the
701 701 customization variables comes later).
702 702
703 703 Quick tips
704 704 ==========
705 705
706 706 IPython can be used as an improved replacement for the Python prompt,
707 707 and for that you don't really need to read any more of this manual. But
708 708 in this section we'll try to summarize a few tips on how to make the
709 709 most effective use of it for everyday Python development, highlighting
710 710 things you might miss in the rest of the manual (which is getting long).
711 711 We'll give references to parts in the manual which provide more detail
712 712 when appropriate.
713 713
714 714 The following article by Jeremy Jones provides an introductory tutorial
715 715 about IPython:
716 716 http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html
717 717
718 718 * The TAB key. TAB-completion, especially for attributes, is a
719 719 convenient way to explore the structure of any object you're
720 720 dealing with. Simply type object_name.<TAB> and a list of the
721 721 object's attributes will be printed (see sec. 6.5
722 722 <node6.html#sec:readline> for more). Tab completion also works on
723 723 file and directory names, which combined with IPython's alias
724 724 system allows you to do from within IPython many of the things you
725 725 normally would need the system shell for.
726 726 * Explore your objects. Typing object_name? will print all sorts of
727 727 details about any object, including docstrings, function
728 728 definition lines (for call arguments) and constructor details for
729 729 classes. The magic commands %pdoc, %pdef, %psource and %pfile will
730 730 respectively print the docstring, function definition line, full
731 731 source code and the complete file for any object (when they can be
732 732 found). If automagic is on (it is by default), you don't need to
733 733 type the '%' explicitly. See sec. 6.4
734 734 <node6.html#sec:dyn-object-info> for more.
735 735 * The %run magic command allows you to run any python script and
736 736 load all of its data directly into the interactive namespace.
737 737 Since the file is re-read from disk each time, changes you make to
738 738 it are reflected immediately (in contrast to the behavior of
739 739 import). I rarely use import for code I am testing, relying on
740 740 %run instead. See sec. 6.2 <node6.html#sec:magic> for more on this
741 741 and other magic commands, or type the name of any magic command
742 742 and ? to get details on it. See also sec. 6.9
743 743 <node6.html#sec:dreload> for a recursive reload command.
744 744 %run also has special flags for timing the execution of your
745 745 scripts (-t) and for executing them under the control of either
746 746 Python's pdb debugger (-d) or profiler (-p). With all of these,
747 747 %run can be used as the main tool for efficient interactive
748 748 development of code which you write in your editor of choice.
749 749 * Use the Python debugger, pdb^2 <footnode.html#foot360>. The %pdb
750 750 command allows you to toggle on and off the automatic invocation
751 751 of an IPython-enhanced pdb debugger (with coloring, tab completion
752 752 and more) at any uncaught exception. The advantage of this is that
753 753 pdb starts inside the function where the exception occurred, with
754 754 all data still available. You can print variables, see code,
755 755 execute statements and even walk up and down the call stack to
756 756 track down the true source of the problem (which often is many
757 757 layers in the stack above where the exception gets triggered).
758 758 Running programs with %run and pdb active can be an efficient to
759 759 develop and debug code, in many cases eliminating the need for
760 760 print statements or external debugging tools. I often simply put a
761 761 1/0 in a place where I want to take a look so that pdb gets
762 762 called, quickly view whatever variables I need to or test various
763 763 pieces of code and then remove the 1/0.
764 764 Note also that '%run -d' activates pdb and automatically sets
765 765 initial breakpoints for you to step through your code, watch
766 766 variables, etc. See Sec. 6.12 <node6.html#sec:cache_output> for
767 767 details.
768 768 * Use the output cache. All output results are automatically stored
769 769 in a global dictionary named Out and variables named _1, _2, etc.
770 770 alias them. For example, the result of input line 4 is available
771 771 either as Out[4] or as _4. Additionally, three variables named _,
772 772 __ and ___ are always kept updated with the for the last three
773 773 results. This allows you to recall any previous result and further
774 774 use it for new calculations. See Sec. 6.12
775 775 <node6.html#sec:cache_output> for more.
776 776 * Put a ';' at the end of a line to supress the printing of output.
777 777 This is useful when doing calculations which generate long output
778 778 you are not interested in seeing. The _* variables and the Out[]
779 779 list do get updated with the contents of the output, even if it is
780 780 not printed. You can thus still access the generated results this
781 781 way for further processing.
782 782 * A similar system exists for caching input. All input is stored in
783 783 a global list called In , so you can re-execute lines 22 through
784 784 28 plus line 34 by typing 'exec In[22:29]+In[34]' (using Python
785 785 slicing notation). If you need to execute the same set of lines
786 786 often, you can assign them to a macro with the %macro function.
787 787 See sec. 6.11 <node6.html#sec:cache_input> for more.
788 788 * Use your input history. The %hist command can show you all
789 789 previous input, without line numbers if desired (option -n) so you
790 790 can directly copy and paste code either back in IPython or in a
791 791 text editor. You can also save all your history by turning on
792 792 logging via %logstart; these logs can later be either reloaded as
793 793 IPython sessions or used as code for your programs.
794 794 * Define your own system aliases. Even though IPython gives you
795 795 access to your system shell via the ! prefix, it is convenient to
796 796 have aliases to the system commands you use most often. This
797 797 allows you to work seamlessly from inside IPython with the same
798 798 commands you are used to in your system shell.
799 799 IPython comes with some pre-defined aliases and a complete system
800 800 for changing directories, both via a stack (see %pushd, %popd and
801 801 %dhist) and via direct %cd. The latter keeps a history of visited
802 802 directories and allows you to go to any previously visited one.
803 803 * Use Python to manipulate the results of system commands. The '!!'
804 804 special syntax, and the %sc and %sx magic commands allow you to
805 805 capture system output into Python variables.
806 806 * Expand python variables when calling the shell (either via '!' and
807 807 '!!' or via aliases) by prepending a $ in front of them. You can
808 808 also expand complete python expressions. See sec. 6.7
809 809 <node6.html#sub:System-shell-access> for more.
810 810 * Use profiles to maintain different configurations (modules to
811 811 load, function definitions, option settings) for particular tasks.
812 812 You can then have customized versions of IPython for specific
813 813 purposes. See sec. 7.3 <node7.html#sec:profiles> for more.
814 814 * Embed IPython in your programs. A few lines of code are enough to
815 815 load a complete IPython inside your own programs, giving you the
816 816 ability to work with your data interactively after automatic
817 817 processing has been completed. See sec. 9 <node9.html#sec:embed>
818 818 for more.
819 819 * Use the Python profiler. When dealing with performance issues, the
820 820 %run command with a -p option allows you to run complete programs
821 821 under the control of the Python profiler. The %prun command does a
822 822 similar job for single Python expressions (like function calls).
823 823 * Use the IPython.demo.Demo class to load any Python script as an
824 824 interactive demo. With a minimal amount of simple markup, you can
825 825 control the execution of the script, stopping as needed. See
826 826 sec. 14 <node14.html#sec:interactive-demos> for more.
827 827 * Run your doctests from within IPython for development and
828 828 debugging. The special %doctest_mode command toggles a mode where
829 829 the prompt, output and exceptions display matches as closely as
830 830 possible that of the default Python interpreter. In addition, this
831 831 mode allows you to directly paste in code that contains leading
832 832 '>>>' prompts, even if they have extra leading whitespace (as is
833 833 common in doctest files). This combined with the '%history -tn'
834 834 call to see your translated history (with these extra prompts
835 835 removed and no line numbers) allows for an easy doctest workflow,
836 836 where you can go from doctest to interactive execution to pasting
837 837 into valid Python code as needed.
838 838
839 839
840 840 Source code handling tips
841 841 -------------------------
842 842
843 843 IPython is a line-oriented program, without full control of the
844 844 terminal. Therefore, it doesn't support true multiline editing. However,
845 845 it has a number of useful tools to help you in dealing effectively with
846 846 more complex editing.
847 847
848 848 The %edit command gives a reasonable approximation of multiline editing,
849 849 by invoking your favorite editor on the spot. IPython will execute the
850 850 code you type in there as if it were typed interactively. Type %edit?
851 851 for the full details on the edit command.
852 852
853 853 If you have typed various commands during a session, which you'd like to
854 854 reuse, IPython provides you with a number of tools. Start by using %hist
855 855 to see your input history, so you can see the line numbers of all input.
856 856 Let us say that you'd like to reuse lines 10 through 20, plus lines 24
857 857 and 28. All the commands below can operate on these with the syntax::
858 858
859 859 %command 10-20 24 28
860 860
861 861 where the command given can be:
862 862
863 863 * %macro <macroname>: this stores the lines into a variable which,
864 864 when called at the prompt, re-executes the input. Macros can be
865 865 edited later using '%edit macroname', and they can be stored
866 866 persistently across sessions with '%store macroname' (the storage
867 867 system is per-profile). The combination of quick macros,
868 868 persistent storage and editing, allows you to easily refine
869 869 quick-and-dirty interactive input into permanent utilities, always
870 870 available both in IPython and as files for general reuse.
871 871 * %edit: this will open a text editor with those lines pre-loaded
872 872 for further modification. It will then execute the resulting
873 873 file's contents as if you had typed it at the prompt.
874 874 * %save <filename>: this saves the lines directly to a named file on
875 875 disk.
876 876
877 877 While %macro saves input lines into memory for interactive re-execution,
878 878 sometimes you'd like to save your input directly to a file. The %save
879 879 magic does this: its input sytnax is the same as %macro, but it saves
880 880 your input directly to a Python file. Note that the %logstart command
881 881 also saves input, but it logs all input to disk (though you can
882 882 temporarily suspend it and reactivate it with %logoff/%logon); %save
883 883 allows you to select which lines of input you need to save.
884 884
885 885
886 886 Lightweight 'version control'
887 887 -----------------------------
888 888
889 889 When you call %edit with no arguments, IPython opens an empty editor
890 890 with a temporary file, and it returns the contents of your editing
891 891 session as a string variable. Thanks to IPython's output caching
892 892 mechanism, this is automatically stored::
893 893
894 894 In [1]: %edit
895 895
896 896 IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
897 897
898 898 Editing... done. Executing edited code...
899 899
900 900 hello - this is a temporary file
901 901
902 902 Out[1]: "print 'hello - this is a temporary file'\n"
903 903
904 904 Now, if you call '%edit -p', IPython tries to open an editor with the
905 905 same data as the last time you used %edit. So if you haven't used %edit
906 906 in the meantime, this same contents will reopen; however, it will be
907 907 done in a new file. This means that if you make changes and you later
908 908 want to find an old version, you can always retrieve it by using its
909 909 output number, via '%edit _NN', where NN is the number of the output
910 910 prompt.
911 911
912 912 Continuing with the example above, this should illustrate this idea::
913 913
914 914 In [2]: edit -p
915 915
916 916 IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
917 917
918 918 Editing... done. Executing edited code...
919 919
920 920 hello - now I made some changes
921 921
922 922 Out[2]: "print 'hello - now I made some changes'\n"
923 923
924 924 In [3]: edit _1
925 925
926 926 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
927 927
928 928 Editing... done. Executing edited code...
929 929
930 930 hello - this is a temporary file
931 931
932 932 IPython version control at work :)
933 933
934 934 Out[3]: "print 'hello - this is a temporary file'\nprint 'IPython version control at work :)'\n"
935 935
936 936
937 937 This section was written after a contribution by Alexander Belchenko on
938 938 the IPython user list.
939 939
940 940
941 941 Effective logging
942 942 -----------------
943 943
944 944 A very useful suggestion sent in by Robert Kern follows:
945 945
946 946 I recently happened on a nifty way to keep tidy per-project log files. I
947 947 made a profile for my project (which is called "parkfield").
948 948
949 949 include ipythonrc
950 950
951 951 # cancel earlier logfile invocation:
952 952
953 953 logfile ''
954 954
955 955 execute import time
956 956
957 957 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
958 958
959 959 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
960 960
961 961 I also added a shell alias for convenience:
962 962
963 963 alias parkfield="ipython -pylab -profile parkfield"
964 964
965 965 Now I have a nice little directory with everything I ever type in,
966 966 organized by project and date.
967 967
968 968 Contribute your own: If you have your own favorite tip on using IPython
969 969 efficiently for a certain task (especially things which can't be done in
970 970 the normal Python interpreter), don't hesitate to send it!
971 971
972 972 Command-line use
973 973 ================
974 974
975 975 You start IPython with the command::
976 976
977 977 $ ipython [options] files
978 978
979 979 If invoked with no options, it executes all the files listed in sequence
980 980 and drops you into the interpreter while still acknowledging any options
981 981 you may have set in your ipythonrc file. This behavior is different from
982 982 standard Python, which when called as python -i will only execute one
983 983 file and ignore your configuration setup.
984 984
985 985 Please note that some of the configuration options are not available at
986 986 the command line, simply because they are not practical here. Look into
987 987 your ipythonrc configuration file for details on those. This file
988 988 typically installed in the $HOME/.ipython directory. For Windows users,
989 989 $HOME resolves to C:\\Documents and Settings\\YourUserName in most
990 990 instances. In the rest of this text, we will refer to this directory as
991 991 IPYTHONDIR.
992 992
993 993
994 994 Special Threading Options
995 995
996 996 The following special options are ONLY valid at the beginning of the
997 997 command line, and not later. This is because they control the initial-
998 998 ization of ipython itself, before the normal option-handling mechanism
999 999 is active.
1000 1000
1001 1001 * [-gthread, -qthread, -q4thread, -wthread, -pylab:] Only one of
1002 1002 these can be given, and it can only be given as the first option
1003 1003 passed to IPython (it will have no effect in any other position).
1004 1004 They provide threading support for the GTK, Qt (versions 3 and 4)
1005 1005 and WXPython toolkits, and for the matplotlib library.
1006 1006 * [ ] With any of the first four options, IPython starts running a
1007 1007 separate thread for the graphical toolkit's operation, so that you
1008 1008 can open and control graphical elements from within an IPython
1009 1009 command line, without blocking. All four provide essentially the
1010 1010 same functionality, respectively for GTK, Qt3, Qt4 and WXWidgets
1011 1011 (via their Python interfaces).
1012 1012 * [ ] Note that with -wthread, you can additionally use the
1013 1013 -wxversion option to request a specific version of wx to be used.
1014 1014 This requires that you have the wxversion Python module installed,
1015 1015 which is part of recent wxPython distributions.
1016 1016 * [ ] If -pylab is given, IPython loads special support for the mat
1017 1017 plotlib library (http://matplotlib.sourceforge.net), allowing
1018 1018 interactive usage of any of its backends as defined in the user's
1019 1019 ~/.matplotlib/matplotlibrc file. It automatically activates GTK,
1020 1020 Qt or WX threading for IPyhton if the choice of matplotlib backend
1021 1021 requires it. It also modifies the %run command to correctly
1022 1022 execute (without blocking) any matplotlib-based script which calls
1023 1023 show() at the end.
1024 1024 * [-tk] The -g/q/q4/wthread options, and -pylab (if matplotlib is
1025 1025 configured to use GTK, Qt3, Qt4 or WX), will normally block Tk
1026 1026 graphical interfaces. This means that when either GTK, Qt or WX
1027 1027 threading is active, any attempt to open a Tk GUI will result in a
1028 1028 dead window, and possibly cause the Python interpreter to crash.
1029 1029 An extra option, -tk, is available to address this issue. It can
1030 1030 only be given as a second option after any of the above (-gthread,
1031 1031 -wthread or -pylab).
1032 1032 * [ ] If -tk is given, IPython will try to coordinate Tk threading
1033 1033 with GTK, Qt or WX. This is however potentially unreliable, and
1034 1034 you will have to test on your platform and Python configuration to
1035 1035 determine whether it works for you. Debian users have reported
1036 1036 success, apparently due to the fact that Debian builds all of Tcl,
1037 1037 Tk, Tkinter and Python with pthreads support. Under other Linux
1038 1038 environments (such as Fedora Core 2/3), this option has caused
1039 1039 random crashes and lockups of the Python interpreter. Under other
1040 1040 operating systems (Mac OSX and Windows), you'll need to try it to
1041 1041 find out, since currently no user reports are available.
1042 1042 * [ ] There is unfortunately no way for IPython to determine at run
1043 1043 time whether -tk will work reliably or not, so you will need to do
1044 1044 some experiments before relying on it for regular work.
1045 1045
1046 1046
1047 1047
1048 1048 Regular Options
1049 1049 ---------------
1050 1050
1051 1051 After the above threading options have been given, regular options can
1052 1052 follow in any order. All options can be abbreviated to their shortest
1053 1053 non-ambiguous form and are case-sensitive. One or two dashes can be
1054 1054 used. Some options have an alternate short form, indicated after a ``|``.
1055 1055
1056 1056 Most options can also be set from your ipythonrc configuration file. See
1057 1057 the provided example for more details on what the options do. Options
1058 1058 given at the command line override the values set in the ipythonrc file.
1059 1059
1060 1060 All options with a [no] prepended can be specified in negated form
1061 1061 (-nooption instead of -option) to turn the feature off.
1062 1062
1063 1063 * [-help:] print a help message and exit.
1064 1064 * [-pylab:] this can only be given as the first option passed to
1065 1065 IPython (it will have no effect in any other position). It adds
1066 1066 special support for the matplotlib library
1067 1067 (http://matplotlib.sourceforge.net
1068 1068 http://matplotlib.sourceforge.net), allowing interactive usage of
1069 1069 any of its backends as defined in the user's .matplotlibrc file.
1070 1070 It automatically activates GTK or WX threading for IPyhton if the
1071 1071 choice of matplotlib backend requires it. It also modifies the
1072 1072 %run command to correctly execute (without blocking) any
1073 1073 matplotlib-based script which calls show() at the end. See Sec. 15
1074 1074 <node15.html#sec:matplotlib-support> for more details.
1075 1075 * [-autocall] <val>: Make IPython automatically call any callable
1076 1076 object even if you didn't type explicit parentheses. For example,
1077 1077 'str 43' becomes 'str(43)' automatically. The value can be '0' to
1078 1078 disable the feature, '1' for smart autocall, where it is not
1079 1079 applied if there are no more arguments on the line, and '2' for
1080 1080 full autocall, where all callable objects are automatically called
1081 1081 (even if no arguments are present). The default is '1'.
1082 1082 * [-[no]autoindent:] Turn automatic indentation on/off.
1083 1083 * [-[no]automagic:] make magic commands automatic (without needing
1084 1084 their first character to be %). Type %magic at the IPython prompt
1085 1085 for more information.
1086 1086 * [-[no]autoedit_syntax:] When a syntax error occurs after editing a
1087 1087 file, automatically open the file to the trouble causing line for
1088 1088 convenient fixing.
1089 1089 * [-[no]banner:] Print the initial information banner (default on).
1090 1090 * [-c <command>:] execute the given command string, and set sys.argv
1091 1091 to ['c']. This is similar to the -c option in the normal Python
1092 1092 interpreter.
1093 1093 * [-cache_size|cs <n>:] size of the output cache (maximum number of
1094 1094 entries to hold in memory). The default is 1000, you can change it
1095 1095 permanently in your config file. Setting it to 0 completely
1096 1096 disables the caching system, and the minimum value accepted is 20
1097 1097 (if you provide a value less than 20, it is reset to 0 and a
1098 1098 warning is issued) This limit is defined because otherwise you'll
1099 1099 spend more time re-flushing a too small cache than working.
1100 1100 * [-classic|cl:] Gives IPython a similar feel to the classic Python
1101 1101 prompt.
1102 1102 * [-colors <scheme>:] Color scheme for prompts and exception
1103 1103 reporting. Currently implemented: NoColor, Linux and LightBG.
1104 1104 * [-[no]color_info:] IPython can display information about objects
1105 1105 via a set of functions, and optionally can use colors for this,
1106 1106 syntax highlighting source code and various other elements.
1107 1107 However, because this information is passed through a pager (like
1108 1108 'less') and many pagers get confused with color codes, this option
1109 1109 is off by default. You can test it and turn it on permanently in
1110 1110 your ipythonrc file if it works for you. As a reference, the
1111 1111 'less' pager supplied with Mandrake 8.2 works ok, but that in
1112 1112 RedHat 7.2 doesn't.
1113 1113 * [ ] Test it and turn it on permanently if it works with your
1114 1114 system. The magic function %color_info allows you to toggle this
1115 1115 interactively for testing.
1116 1116 * [-[no]debug:] Show information about the loading process. Very
1117 1117 useful to pin down problems with your configuration files or to
1118 1118 get details about session restores.
1119 1119 * [-[no]deep_reload:] IPython can use the deep_reload module which
1120 1120 reloads changes in modules recursively (it replaces the reload()
1121 1121 function, so you don't need to change anything to use it).
1122 1122 deep_reload() forces a full reload of modules whose code may have
1123 1123 changed, which the default reload() function does not.
1124 1124 * [ ] When deep_reload is off, IPython will use the normal reload(),
1125 1125 but deep_reload will still be available as dreload(). This feature
1126 1126 is off by default [which means that you have both normal reload()
1127 1127 and dreload()].
1128 1128 * [-editor <name>:] Which editor to use with the %edit command. By
1129 1129 default, IPython will honor your EDITOR environment variable (if
1130 1130 not set, vi is the Unix default and notepad the Windows one).
1131 1131 Since this editor is invoked on the fly by IPython and is meant
1132 1132 for editing small code snippets, you may want to use a small,
1133 1133 lightweight editor here (in case your default EDITOR is something
1134 1134 like Emacs).
1135 1135 * [-ipythondir <name>:] name of your IPython configuration directory
1136 1136 IPYTHONDIR. This can also be specified through the environment
1137 1137 variable IPYTHONDIR.
1138 1138 * [-log|l:] generate a log file of all input. The file is named
1139 1139 ipython_log.py in your current directory (which prevents logs from
1140 1140 multiple IPython sessions from trampling each other). You can use
1141 1141 this to later restore a session by loading your logfile as a file
1142 1142 to be executed with option -logplay (see below).
1143 1143 * [-logfile|lf <name>:] specify the name of your logfile.
1144 1144 * [-logplay|lp <name>:] you can replay a previous log. For restoring
1145 1145 a session as close as possible to the state you left it in, use
1146 1146 this option (don't just run the logfile). With -logplay, IPython
1147 1147 will try to reconstruct the previous working environment in full,
1148 1148 not just execute the commands in the logfile.
1149 1149 * [ ] When a session is restored, logging is automatically turned on
1150 1150 again with the name of the logfile it was invoked with (it is read
1151 1151 from the log header). So once you've turned logging on for a
1152 1152 session, you can quit IPython and reload it as many times as you
1153 1153 want and it will continue to log its history and restore from the
1154 1154 beginning every time.
1155 1155 * [ ] Caveats: there are limitations in this option. The history
1156 1156 variables _i*,_* and _dh don't get restored properly. In the
1157 1157 future we will try to implement full session saving by writing and
1158 1158 retrieving a 'snapshot' of the memory state of IPython. But our
1159 1159 first attempts failed because of inherent limitations of Python's
1160 1160 Pickle module, so this may have to wait.
1161 1161 * [-[no]messages:] Print messages which IPython collects about its
1162 1162 startup process (default on).
1163 1163 * [-[no]pdb:] Automatically call the pdb debugger after every
1164 1164 uncaught exception. If you are used to debugging using pdb, this
1165 1165 puts you automatically inside of it after any call (either in
1166 1166 IPython or in code called by it) which triggers an exception which
1167 1167 goes uncaught.
1168 1168 * [-[no]pprint:] ipython can optionally use the pprint (pretty
1169 1169 printer) module for displaying results. pprint tends to give a
1170 1170 nicer display of nested data structures. If you like it, you can
1171 1171 turn it on permanently in your config file (default off).
1172 1172 * [-profile|p] <name>: assume that your config file is
1173 1173 ipythonrc-<name> (looks in current dir first, then in IPYTHONDIR).
1174 1174 This is a quick way to keep and load multiple config files for
1175 1175 different tasks, especially if you use the include option of
1176 1176 config files. You can keep a basic IPYTHONDIR/ipythonrc file and
1177 1177 then have other 'profiles' which include this one and load extra
1178 1178 things for particular tasks. For example:
1179 1179 * [ ] 1. $HOME/.ipython/ipythonrc : load basic things you always want.
1180 1180 * [ ] 2. $HOME/.ipython/ipythonrc-math : load (1) and basic
1181 1181 math-related modules.
1182 1182 * [ ] 3. $HOME/.ipython/ipythonrc-numeric : load (1) and Numeric and
1183 1183 plotting modules.
1184 1184 * [ ] Since it is possible to create an endless loop by having
1185 1185 circular file inclusions, IPython will stop if it reaches 15
1186 1186 recursive inclusions.
1187 1187 * [-prompt_in1|pi1 <string>:] Specify the string used for input
1188 1188 prompts. Note that if you are using numbered prompts, the number
1189 1189 is represented with a '\#' in the string. Don't forget to quote
1190 1190 strings with spaces embedded in them. Default: 'In [\#]:'.
1191 1191 Sec. 7.2 <node7.html#sec:prompts> discusses in detail all the
1192 1192 available escapes to customize your prompts.
1193 1193 * [-prompt_in2|pi2 <string>:] Similar to the previous option, but
1194 1194 used for the continuation prompts. The special sequence '\D' is
1195 1195 similar to '\#', but with all digits replaced dots (so you can
1196 1196 have your continuation prompt aligned with your input prompt).
1197 1197 Default: ' .\D.:' (note three spaces at the start for alignment
1198 1198 with 'In [\#]').
1199 1199 * [-prompt_out|po <string>:] String used for output prompts, also
1200 1200 uses numbers like prompt_in1. Default: 'Out[\#]:'
1201 1201 * [-quick:] start in bare bones mode (no config file loaded).
1202 1202 * [-rcfile <name>:] name of your IPython resource configuration
1203 1203 file. Normally IPython loads ipythonrc (from current directory) or
1204 1204 IPYTHONDIR/ipythonrc.
1205 1205 * [ ] If the loading of your config file fails, IPython starts with
1206 1206 a bare bones configuration (no modules loaded at all).
1207 1207 * [-[no]readline:] use the readline library, which is needed to
1208 1208 support name completion and command history, among other things.
1209 1209 It is enabled by default, but may cause problems for users of
1210 1210 X/Emacs in Python comint or shell buffers.
1211 1211 * [ ] Note that X/Emacs 'eterm' buffers (opened with M-x term)
1212 1212 support IPython's readline and syntax coloring fine, only 'emacs'
1213 1213 (M-x shell and C-c !) buffers do not.
1214 1214 * [-screen_length|sl <n>:] number of lines of your screen. This is
1215 1215 used to control printing of very long strings. Strings longer than
1216 1216 this number of lines will be sent through a pager instead of
1217 1217 directly printed.
1218 1218 * [ ] The default value for this is 0, which means IPython will
1219 1219 auto-detect your screen size every time it needs to print certain
1220 1220 potentially long strings (this doesn't change the behavior of the
1221 1221 'print' keyword, it's only triggered internally). If for some
1222 1222 reason this isn't working well (it needs curses support), specify
1223 1223 it yourself. Otherwise don't change the default.
1224 1224 * [-separate_in|si <string>:] separator before input prompts.
1225 1225 Default: '\n'
1226 1226 * [-separate_out|so <string>:] separator before output prompts.
1227 1227 Default: nothing.
1228 1228 * [-separate_out2|so2 <string>:] separator after output prompts.
1229 1229 Default: nothing.
1230 1230 * [ ] For these three options, use the value 0 to specify no separator.
1231 1231 * [-nosep:] shorthand for '-SeparateIn 0 -SeparateOut 0
1232 1232 -SeparateOut2 0'. Simply removes all input/output separators.
1233 1233 * [-upgrade:] allows you to upgrade your IPYTHONDIR configuration
1234 1234 when you install a new version of IPython. Since new versions may
1235 1235 include new command line options or example files, this copies
1236 1236 updated ipythonrc-type files. However, it backs up (with a .old
1237 1237 extension) all files which it overwrites so that you can merge
1238 1238 back any customizations you might have in your personal files.
1239 1239 * [-Version:] print version information and exit.
1240 1240 * [-wxversion <string>:] Select a specific version of wxPython (used
1241 1241 in conjunction with -wthread). Requires the wxversion module, part
1242 1242 of recent wxPython distributions
1243 1243 * [-xmode <modename>:] Mode for exception reporting.
1244 1244 * [ ] Valid modes: Plain, Context and Verbose.
1245 1245 * [ ] Plain: similar to python's normal traceback printing.
1246 1246 * [ ] Context: prints 5 lines of context source code around each
1247 1247 line in the traceback.
1248 1248 * [ ] Verbose: similar to Context, but additionally prints the
1249 1249 variables currently visible where the exception happened
1250 1250 (shortening their strings if too long). This can potentially be
1251 1251 very slow, if you happen to have a huge data structure whose
1252 1252 string representation is complex to compute. Your computer may
1253 1253 appear to freeze for a while with cpu usage at 100%. If this
1254 1254 occurs, you can cancel the traceback with Ctrl-C (maybe hitting it
1255 1255 more than once).
1256 1256
1257 1257 Interactive use
1258 1258 ===============
1259 1259
1260 1260 Warning: IPython relies on the existence of a global variable called
1261 1261 __IP which controls the shell itself. If you redefine __IP to anything,
1262 1262 bizarre behavior will quickly occur.
1263 1263
1264 1264 Other than the above warning, IPython is meant to work as a drop-in
1265 1265 replacement for the standard interactive interpreter. As such, any code
1266 1266 which is valid python should execute normally under IPython (cases where
1267 1267 this is not true should be reported as bugs). It does, however, offer
1268 1268 many features which are not available at a standard python prompt. What
1269 1269 follows is a list of these.
1270 1270
1271 1271
1272 1272 Caution for Windows users
1273 1273 -------------------------
1274 1274
1275 1275 Windows, unfortunately, uses the '\' character as a path separator. This
1276 1276 is a terrible choice, because '\' also represents the escape character
1277 1277 in most modern programming languages, including Python. For this reason,
1278 1278 issuing many of the commands discussed below (especially magics which
1279 1279 affect the filesystem) with '\' in them will cause strange errors.
1280 1280
1281 1281 A partial solution is to use instead the '/' character as a path
1282 1282 separator, which Windows recognizes in most situations. However, in
1283 1283 Windows commands '/' flags options, so you can not use it for the root
1284 1284 directory. This means that paths beginning at the root must be typed in
1285 1285 a contrived manner like:
1286 1286 %copy \opt/foo/bar.txt \tmp
1287 1287
1288 1288 There is no sensible thing IPython can do to truly work around this flaw
1289 1289 in Windows^3 <footnode.html#foot878>.
1290 1290
1291 1291
1292 1292
1293 1293 Magic command system
1294 1294 --------------------
1295 1295
1296 1296 IPython will treat any line whose first character is a % as a special
1297 1297 call to a 'magic' function. These allow you to control the behavior of
1298 1298 IPython itself, plus a lot of system-type features. They are all
1299 1299 prefixed with a % character, but parameters are given without
1300 1300 parentheses or quotes.
1301 1301
1302 1302 Example: typing '%cd mydir' (without the quotes) changes you working
1303 1303 directory to 'mydir', if it exists.
1304 1304
1305 1305 If you have 'automagic' enabled (in your ipythonrc file, via the command
1306 1306 line option -automagic or with the %automagic function), you don't need
1307 1307 to type in the % explicitly. IPython will scan its internal list of
1308 1308 magic functions and call one if it exists. With automagic on you can
1309 1309 then just type 'cd mydir' to go to directory 'mydir'. The automagic
1310 1310 system has the lowest possible precedence in name searches, so defining
1311 1311 an identifier with the same name as an existing magic function will
1312 1312 shadow it for automagic use. You can still access the shadowed magic
1313 1313 function by explicitly using the % character at the beginning of the line.
1314 1314
1315 1315 An example (with automagic on) should clarify all this::
1316 1316
1317 1317 In [1]: cd ipython # %cd is called by automagic
1318 1318
1319 1319 /home/fperez/ipython
1320 1320
1321 1321 In [2]: cd=1 # now cd is just a variable
1322 1322
1323 1323 In [3]: cd .. # and doesn't work as a function anymore
1324 1324
1325 1325 ------------------------------
1326 1326
1327 1327 File "<console>", line 1
1328 1328
1329 1329 cd ..
1330 1330
1331 1331 ^
1332 1332
1333 1333 SyntaxError: invalid syntax
1334 1334
1335 1335 In [4]: %cd .. # but %cd always works
1336 1336
1337 1337 /home/fperez
1338 1338
1339 1339 In [5]: del cd # if you remove the cd variable
1340 1340
1341 1341 In [6]: cd ipython # automagic can work again
1342 1342
1343 1343 /home/fperez/ipython
1344 1344
1345 1345 You can define your own magic functions to extend the system. The
1346 1346 following example defines a new magic command, %impall::
1347 1347
1348 1348 import IPython.ipapi
1349 1349
1350 1350 ip = IPython.ipapi.get()
1351 1351
1352 1352 def doimp(self, arg):
1353 1353
1354 1354 ip = self.api
1355 1355
1356 1356 ip.ex("import %s; reload(%s); from %s import *" % (
1357 1357
1358 1358 arg,arg,arg)
1359 1359
1360 1360 )
1361 1361
1362 1362 ip.expose_magic('impall', doimp)
1363 1363
1364 1364 You can also define your own aliased names for magic functions. In your
1365 1365 ipythonrc file, placing a line like:
1366 1366
1367 1367 execute __IP.magic_cl = __IP.magic_clear
1368 1368
1369 1369 will define %cl as a new name for %clear.
1370 1370
1371 1371 Type %magic for more information, including a list of all available
1372 1372 magic functions at any time and their docstrings. You can also type
1373 1373 %magic_function_name? (see sec. 6.4 <#sec:dyn-object-info> for
1374 1374 information on the '?' system) to get information about any particular
1375 1375 magic function you are interested in.
1376 1376
1377 1377
1378 1378 Magic commands
1379 1379 --------------
1380 1380
1381 1381 The rest of this section is automatically generated for each release
1382 1382 from the docstrings in the IPython code. Therefore the formatting is
1383 1383 somewhat minimal, but this method has the advantage of having
1384 1384 information always in sync with the code.
1385 1385
1386 1386 A list of all the magic commands available in IPython's default
1387 1387 installation follows. This is similar to what you'll see by simply
1388 1388 typing %magic at the prompt, but that will also give you information
1389 1389 about magic commands you may have added as part of your personal
1390 1390 customizations.
1391 1391
1392 1392 ::
1393 1393
1394 1394 %Exit: Exit IPython without confirmation.
1395 1395
1396 1396
1397 1397 %Pprint: Toggle pretty printing on/off.
1398 1398
1399 1399
1400 1400 %alias: Define an alias for a system command.
1401 1401
1402 1402 '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
1403 1403
1404 1404 Then, typing 'alias_name params' will execute the system command 'cmd
1405 1405 params' (from your underlying operating system).
1406 1406
1407 1407 Aliases have lower precedence than magic functions and Python normal
1408 1408 variables, so if 'foo' is both a Python variable and an alias, the alias
1409 1409 can not be executed until 'del foo' removes the Python variable.
1410 1410
1411 1411 You can use the %l specifier in an alias definition to represent the
1412 1412 whole line when the alias is called. For example:
1413 1413
1414 1414 In [2]: alias all echo "Input in brackets: <%l>"
1415 1415 In [3]: all hello world
1416 1416 Input in brackets: <hello world>
1417 1417
1418 1418 You can also define aliases with parameters using %s specifiers (one per
1419 1419 parameter):
1420 1420
1421 1421 In [1]: alias parts echo first %s second %s
1422 1422 In [2]: %parts A B
1423 1423 first A second B
1424 1424 In [3]: %parts A
1425 1425 Incorrect number of arguments: 2 expected.
1426 1426 parts is an alias to: 'echo first %s second %s'
1427 1427
1428 1428 Note that %l and %s are mutually exclusive. You can only use one or the
1429 1429 other in your aliases.
1430 1430
1431 1431 Aliases expand Python variables just like system calls using ! or !! do:
1432 1432 all expressions prefixed with '$' get expanded. For details of the
1433 1433 semantic rules, see PEP-215: http://www.python.org/peps/pep-0215.html.
1434 1434 This is the library used by IPython for variable expansion. If you want
1435 1435 to access a true shell variable, an extra $ is necessary to prevent its
1436 1436 expansion by IPython:
1437 1437
1438 1438 In [6]: alias show echo
1439 1439 In [7]: PATH='A Python string'
1440 1440 In [8]: show $PATH
1441 1441 A Python string
1442 1442 In [9]: show $$PATH
1443 1443 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1444 1444
1445 1445 You can use the alias facility to acess all of $PATH. See the %rehash
1446 1446 and %rehashx functions, which automatically create aliases for the
1447 1447 contents of your $PATH.
1448 1448
1449 1449 If called with no parameters, %alias prints the current alias table.
1450 1450
1451 1451
1452 1452 %autocall: Make functions callable without having to type parentheses.
1453 1453
1454 1454 Usage:
1455 1455
1456 1456 %autocall [mode]
1457 1457
1458 1458 The mode can be one of: 0->Off, 1->Smart, 2->Full. If not given, the
1459 1459 value is toggled on and off (remembering the previous state).
1460 1460
1461 1461 In more detail, these values mean:
1462 1462
1463 1463 0 -> fully disabled
1464 1464
1465 1465 1 -> active, but do not apply if there are no arguments on the line.
1466 1466
1467 1467 In this mode, you get:
1468 1468
1469 1469 In [1]: callable Out[1]: <built-in function callable>
1470 1470
1471 1471 In [2]: callable 'hello' ---> callable('hello') Out[2]: False
1472 1472
1473 1473 2 -> Active always. Even if no arguments are present, the callable
1474 1474 object is called:
1475 1475
1476 1476 In [4]: callable ---> callable()
1477 1477
1478 1478 Note that even with autocall off, you can still use '/' at the start of
1479 1479 a line to treat the first argument on the command line as a function and
1480 1480 add parentheses to it:
1481 1481
1482 1482 In [8]: /str 43 ---> str(43) Out[8]: '43'
1483 1483
1484 1484
1485 1485 %autoindent: Toggle autoindent on/off (if available).
1486 1486
1487 1487
1488 1488 %automagic: Make magic functions callable without having to type the
1489 1489 initial %.
1490 1490
1491 1491 Without argumentsl toggles on/off (when off, you must call it as
1492 1492 %automagic, of course). With arguments it sets the value, and you can
1493 1493 use any of (case insensitive):
1494 1494
1495 1495 - on,1,True: to activate
1496 1496
1497 1497 - off,0,False: to deactivate.
1498 1498
1499 1499 Note that magic functions have lowest priority, so if there's a variable
1500 1500 whose name collides with that of a magic fn, automagic won't work for
1501 1501 that function (you get the variable instead). However, if you delete the
1502 1502 variable (del var), the previously shadowed magic function becomes
1503 1503 visible to automagic again.
1504 1504
1505 1505
1506 1506 %bg: Run a job in the background, in a separate thread.
1507 1507
1508 1508 For example,
1509 1509
1510 1510 %bg myfunc(x,y,z=1)
1511 1511
1512 1512 will execute 'myfunc(x,y,z=1)' in a background thread. As soon as the
1513 1513 execution starts, a message will be printed indicating the job number.
1514 1514 If your job number is 5, you can use
1515 1515
1516 1516 myvar = jobs.result(5) or myvar = jobs[5].result
1517 1517
1518 1518 to assign this result to variable 'myvar'.
1519 1519
1520 1520 IPython has a job manager, accessible via the 'jobs' object. You can
1521 1521 type jobs? to get more information about it, and use jobs.<TAB> to see
1522 1522 its attributes. All attributes not starting with an underscore are meant
1523 1523 for public use.
1524 1524
1525 1525 In particular, look at the jobs.new() method, which is used to create
1526 1526 new jobs. This magic %bg function is just a convenience wrapper around
1527 1527 jobs.new(), for expression-based jobs. If you want to create a new job
1528 1528 with an explicit function object and arguments, you must call jobs.new()
1529 1529 directly.
1530 1530
1531 1531 The jobs.new docstring also describes in detail several important
1532 1532 caveats associated with a thread-based model for background job
1533 1533 execution. Type jobs.new? for details.
1534 1534
1535 1535 You can check the status of all jobs with jobs.status().
1536 1536
1537 1537 The jobs variable is set by IPython into the Python builtin namespace.
1538 1538 If you ever declare a variable named 'jobs', you will shadow this name.
1539 1539 You can either delete your global jobs variable to regain access to the
1540 1540 job manager, or make a new name and assign it manually to the manager
1541 1541 (stored in IPython's namespace). For example, to assign the job manager
1542 1542 to the Jobs name, use:
1543 1543
1544 1544 Jobs = __builtins__.jobs
1545 1545
1546 1546
1547 1547 %bookmark: Manage IPython's bookmark system.
1548 1548
1549 1549 %bookmark <name> - set bookmark to current dir %bookmark <name> <dir> -
1550 1550 set bookmark to <dir> %bookmark -l - list all bookmarks %bookmark -d
1551 1551 <name> - remove bookmark %bookmark -r - remove all bookmarks
1552 1552
1553 1553 You can later on access a bookmarked folder with: %cd -b <name> or
1554 1554 simply '%cd <name>' if there is no directory called <name> AND there is
1555 1555 such a bookmark defined.
1556 1556
1557 1557 Your bookmarks persist through IPython sessions, but they are associated
1558 1558 with each profile.
1559 1559
1560 1560
1561 1561 %cd: Change the current working directory.
1562 1562
1563 1563 This command automatically maintains an internal list of directories you
1564 1564 visit during your IPython session, in the variable _dh. The command
1565 1565 %dhist shows this history nicely formatted. You can also do 'cd -<tab>'
1566 1566 to see directory history conveniently.
1567 1567
1568 1568 Usage:
1569 1569
1570 1570 cd 'dir': changes to directory 'dir'.
1571 1571
1572 1572 cd -: changes to the last visited directory.
1573 1573
1574 1574 cd -<n>: changes to the n-th directory in the directory history.
1575 1575
1576 1576 cd -b <bookmark_name>: jump to a bookmark set by %bookmark (note: cd
1577 1577 <bookmark_name> is enough if there is no directory <bookmark_name>, but
1578 1578 a bookmark with the name exists.) 'cd -b <tab>' allows you to
1579 1579 tab-complete bookmark names.
1580 1580
1581 1581 Options:
1582 1582
1583 1583 -q: quiet. Do not print the working directory after the cd command is
1584 1584 executed. By default IPython's cd command does print this directory,
1585 1585 since the default prompts do not display path information.
1586 1586
1587 1587 Note that !cd doesn't work for this purpose because the shell where
1588 1588 !command runs is immediately discarded after executing 'command'.
1589 1589
1590 1590
1591 1591 %color_info: Toggle color_info.
1592 1592
1593 1593 The color_info configuration parameter controls whether colors are used
1594 1594 for displaying object details (by things like %psource, %pfile or the
1595 1595 '?' system). This function toggles this value with each call.
1596 1596
1597 1597 Note that unless you have a fairly recent pager (less works better than
1598 1598 more) in your system, using colored object information displays will not
1599 1599 work properly. Test it and see.
1600 1600
1601 1601
1602 1602 %colors: Switch color scheme for prompts, info system and exception
1603 1603 handlers.
1604 1604
1605 1605 Currently implemented schemes: NoColor, Linux, LightBG.
1606 1606
1607 1607 Color scheme names are not case-sensitive.
1608 1608
1609 1609
1610 1610 %cpaste: Allows you to paste & execute a pre-formatted code block from
1611 1611 clipboard
1612 1612
1613 1613 You must terminate the block with '-' (two minus-signs) alone on the
1614 1614 line. You can also provide your own sentinel with '%paste -s %%' ('%%'
1615 1615 is the new sentinel for this operation)
1616 1616
1617 1617 The block is dedented prior to execution to enable execution of method
1618 1618 definitions. '>' and '+' characters at the beginning of a line are
1619 1619 ignored, to allow pasting directly from e-mails or diff files. The
1620 1620 executed block is also assigned to variable named 'pasted_block' for
1621 1621 later editing with '%edit pasted_block'.
1622 1622
1623 1623 You can also pass a variable name as an argument, e.g. '%cpaste foo'.
1624 1624 This assigns the pasted block to variable 'foo' as string, without
1625 1625 dedenting or executing it.
1626 1626
1627 1627 Do not be alarmed by garbled output on Windows (it's a readline bug).
1628 1628 Just press enter and type - (and press enter again) and the block will
1629 1629 be what was just pasted.
1630 1630
1631 1631 IPython statements (magics, shell escapes) are not supported (yet).
1632 1632
1633 1633
1634 1634 %debug: Activate the interactive debugger in post-mortem mode.
1635 1635
1636 1636 If an exception has just occurred, this lets you inspect its stack
1637 1637 frames interactively. Note that this will always work only on the last
1638 1638 traceback that occurred, so you must call this quickly after an
1639 1639 exception that you wish to inspect has fired, because if another one
1640 1640 occurs, it clobbers the previous one.
1641 1641
1642 1642 If you want IPython to automatically do this on every exception, see the
1643 1643 %pdb magic for more details.
1644 1644
1645 1645
1646 1646 %dhist: Print your history of visited directories.
1647 1647
1648 1648 %dhist -> print full history
1649 1649 %dhist n -> print last n entries only
1650 1650 %dhist n1 n2 -> print entries between n1 and n2 (n1 not included)
1651 1651
1652 1652 This history is automatically maintained by the %cd command, and always
1653 1653 available as the global list variable _dh. You can use %cd -<n> to go to
1654 1654 directory number <n>.
1655 1655
1656 1656 Note that most of time, you should view directory history by entering cd
1657 1657 -<TAB>.
1658 1658
1659 1659
1660 1660 %dirs: Return the current directory stack.
1661 1661
1662 1662
1663 1663 %doctest_mode: Toggle doctest mode on and off.
1664 1664
1665 1665 This mode allows you to toggle the prompt behavior between normal
1666 1666 IPython prompts and ones that are as similar to the default IPython
1667 1667 interpreter as possible.
1668 1668
1669 1669 It also supports the pasting of code snippets that have leading '»>' and
1670 1670 '...' prompts in them. This means that you can paste doctests from files
1671 1671 or docstrings (even if they have leading whitespace), and the code will
1672 1672 execute correctly. You can then use '%history -tn' to see the translated
1673 1673 history without line numbers; this will give you the input after removal
1674 1674 of all the leading prompts and whitespace, which can be pasted back into
1675 1675 an editor.
1676 1676
1677 1677 With these features, you can switch into this mode easily whenever you
1678 1678 need to do testing and changes to doctests, without having to leave your
1679 1679 existing IPython session.
1680 1680
1681 1681
1682 1682 %ed: Alias to %edit.
1683 1683
1684 1684
1685 1685 %edit: Bring up an editor and execute the resulting code.
1686 1686
1687 1687 Usage: %edit [options] [args]
1688 1688
1689 1689 %edit runs IPython's editor hook. The default version of this hook is
1690 1690 set to call the __IPYTHON__.rc.editor command. This is read from your
1691 1691 environment variable $EDITOR. If this isn't found, it will default to vi
1692 1692 under Linux/Unix and to notepad under Windows. See the end of this
1693 1693 docstring for how to change the editor hook.
1694 1694
1695 1695 You can also set the value of this editor via the command line option
1696 1696 '-editor' or in your ipythonrc file. This is useful if you wish to use
1697 1697 specifically for IPython an editor different from your typical default
1698 1698 (and for Windows users who typically don't set environment variables).
1699 1699
1700 1700 This command allows you to conveniently edit multi-line code right in
1701 1701 your IPython session.
1702 1702
1703 1703 If called without arguments, %edit opens up an empty editor with a
1704 1704 temporary file and will execute the contents of this file when you close
1705 1705 it (don't forget to save it!).
1706 1706
1707 1707 Options:
1708 1708
1709 1709 -n <number>: open the editor at a specified line number. By default, the
1710 1710 IPython editor hook uses the unix syntax 'editor +N filename', but you
1711 1711 can configure this by providing your own modified hook if your favorite
1712 1712 editor supports line-number specifications with a different syntax.
1713 1713
1714 1714 -p: this will call the editor with the same data as the previous time it
1715 1715 was used, regardless of how long ago (in your current session) it was.
1716 1716
1717 1717 -r: use 'raw' input. This option only applies to input taken from the
1718 1718 user's history. By default, the 'processed' history is used, so that
1719 1719 magics are loaded in their transformed version to valid Python. If this
1720 1720 option is given, the raw input as typed as the command line is used
1721 1721 instead. When you exit the editor, it will be executed by IPython's own
1722 1722 processor.
1723 1723
1724 1724 -x: do not execute the edited code immediately upon exit. This is mainly
1725 1725 useful if you are editing programs which need to be called with command
1726 1726 line arguments, which you can then do using %run.
1727 1727
1728 1728 Arguments:
1729 1729
1730 1730 If arguments are given, the following possibilites exist:
1731 1731
1732 1732 - The arguments are numbers or pairs of dash-separated numbers (like 1
1733 1733 4-8 9). These are interpreted as lines of previous input to be loaded
1734 1734 into the editor. The syntax is the same of the %macro command.
1735 1735
1736 1736 - If the argument doesn't start with a number, it is evaluated as a
1737 1737 variable and its contents loaded into the editor. You can thus edit any
1738 1738 string which contains python code (including the result of previous edits).
1739 1739
1740 1740 - If the argument is the name of an object (other than a string),
1741 1741 IPython will try to locate the file where it was defined and open the
1742 1742 editor at the point where it is defined. You can use '%edit function' to
1743 1743 load an editor exactly at the point where 'function' is defined, edit it
1744 1744 and have the file be executed automatically.
1745 1745
1746 1746 If the object is a macro (see %macro for details), this opens up your
1747 1747 specified editor with a temporary file containing the macro's data. Upon
1748 1748 exit, the macro is reloaded with the contents of the file.
1749 1749
1750 1750 Note: opening at an exact line is only supported under Unix, and some
1751 1751 editors (like kedit and gedit up to Gnome 2.8) do not understand the
1752 1752 '+NUMBER' parameter necessary for this feature. Good editors like
1753 1753 (X)Emacs, vi, jed, pico and joe all do.
1754 1754
1755 1755 If the argument is not found as a variable, IPython will look for a
1756 1756 file with that name (adding .py if necessary) and load it into the
1757 1757 editor. It will execute its contents with execfile() when you exit,
1758 1758 loading any code in the file into your interactive namespace.
1759 1759
1760 1760 After executing your code, %edit will return as output the code you
1761 1761 typed in the editor (except when it was an existing file). This way you
1762 1762 can reload the code in further invocations of %edit as a variable, via
1763 1763 _<NUMBER> or Out[<NUMBER>], where <NUMBER> is the prompt number of the
1764 1764 output.
1765 1765
1766 1766 Note that %edit is also available through the alias %ed.
1767 1767
1768 1768 This is an example of creating a simple function inside the editor and
1769 1769 then modifying it. First, start up the editor::
1770 1770
1771 1771 In [1]: ed
1772 1772 Editing... done. Executing edited code...
1773 1773 Out[1]: 'def foo():\n print "foo() was defined in an editing session"\n'
1774 1774
1775 1775 We can then call the function foo():
1776 1776
1777 1777 In [2]: foo()
1778 1778 foo() was defined in an editing session
1779 1779
1780 1780 Now we edit foo. IPython automatically loads the editor with the
1781 1781 (temporary) file where foo() was previously defined:
1782 1782
1783 1783 In [3]: ed foo
1784 1784 Editing... done. Executing edited code...
1785 1785
1786 1786 And if we call foo() again we get the modified version:
1787 1787
1788 1788 In [4]: foo()
1789 1789 foo() has now been changed!
1790 1790
1791 1791 Here is an example of how to edit a code snippet successive times. First
1792 1792 we call the editor:
1793 1793
1794 1794 In [8]: ed
1795 1795 Editing... done. Executing edited code...
1796 1796 hello
1797 1797 Out[8]: "print 'hello'\n"
1798 1798
1799 1799 Now we call it again with the previous output (stored in _):
1800 1800
1801 1801 In [9]: ed _
1802 1802 Editing... done. Executing edited code...
1803 1803 hello world
1804 1804 Out[9]: "print 'hello world'\n"
1805 1805
1806 1806 Now we call it with the output #8 (stored in _8, also as Out[8]):
1807 1807
1808 1808 In [10]: ed _8
1809 1809 Editing... done. Executing edited code...
1810 1810 hello again
1811 1811 Out[10]: "print 'hello again'\n"
1812 1812
1813 1813 Changing the default editor hook:
1814 1814
1815 1815 If you wish to write your own editor hook, you can put it in a
1816 1816 configuration file which you load at startup time. The default hook is
1817 1817 defined in the IPython.hooks module, and you can use that as a starting
1818 1818 example for further modifications. That file also has general
1819 1819 instructions on how to set a new hook for use once you've defined it.
1820 1820
1821 1821
1822 1822 %env: List environment variables.
1823 1823
1824 1824
1825 1825 %exit: Exit IPython, confirming if configured to do so.
1826 1826
1827 1827 You can configure whether IPython asks for confirmation upon exit by
1828 1828 setting the confirm_exit flag in the ipythonrc file.
1829 1829
1830 1830
1831 1831 %logoff: Temporarily stop logging.
1832 1832
1833 1833 You must have previously started logging.
1834 1834
1835 1835
1836 1836 %logon: Restart logging.
1837 1837
1838 1838 This function is for restarting logging which you've temporarily stopped
1839 1839 with %logoff. For starting logging for the first time, you must use the
1840 1840 %logstart function, which allows you to specify an optional log filename.
1841 1841
1842 1842
1843 1843 %logstart: Start logging anywhere in a session.
1844 1844
1845 1845 %logstart [-o|-r|-t] [log_name [log_mode]]
1846 1846
1847 1847 If no name is given, it defaults to a file named 'ipython_log.py' in
1848 1848 your current directory, in 'rotate' mode (see below).
1849 1849
1850 1850 '%logstart name' saves to file 'name' in 'backup' mode. It saves your
1851 1851 history up to that point and then continues logging.
1852 1852
1853 1853 %logstart takes a second optional parameter: logging mode. This can be
1854 1854 one of (note that the modes are given unquoted):
1855 1855 append: well, that says it.
1856 1856 backup: rename (if exists) to name and start name.
1857 1857 global: single logfile in your home dir, appended to.
1858 1858 over : overwrite existing log.
1859 1859 rotate: create rotating logs name.1 , name.2 , etc.
1860 1860
1861 1861 Options:
1862 1862
1863 1863 -o: log also IPython's output. In this mode, all commands which generate
1864 1864 an Out[NN] prompt are recorded to the logfile, right after their
1865 1865 corresponding input line. The output lines are always prepended with a
1866 1866 '#[Out]# ' marker, so that the log remains valid Python code.
1867 1867
1868 1868 Since this marker is always the same, filtering only the output from a
1869 1869 log is very easy, using for example a simple awk call:
1870 1870
1871 1871 awk -F'#
1872 1872
1873 1873 \begin{displaymath}Out\end{displaymath}
1874 1874
1875 1875 # ' 'if($2) print $2' ipython_log.py
1876 1876
1877 1877 -r: log 'raw' input. Normally, IPython's logs contain the processed
1878 1878 input, so that user lines are logged in their final form, converted into
1879 1879 valid Python. For example, %Exit is logged as '_ip.magic("Exit"). If the
1880 1880 -r flag is given, all input is logged exactly as typed, with no
1881 1881 transformations applied.
1882 1882
1883 1883 -t: put timestamps before each input line logged (these are put in
1884 1884 comments).
1885 1885
1886 1886
1887 1887 %logstate: Print the status of the logging system.
1888 1888
1889 1889
1890 1890 %logstop: Fully stop logging and close log file.
1891 1891
1892 1892 In order to start logging again, a new %logstart call needs to be made,
1893 1893 possibly (though not necessarily) with a new filename, mode and other
1894 1894 options.
1895 1895
1896 1896
1897 1897 %lsmagic: List currently available magic functions.
1898 1898
1899 1899
1900 1900 %macro: Define a set of input lines as a macro for future re-execution.
1901 1901
1902 1902 Usage:
1903 1903 %macro [options] name n1-n2 n3-n4 ... n5 .. n6 ...
1904 1904
1905 1905 Options:
1906 1906
1907 1907 -r: use 'raw' input. By default, the 'processed' history is used, so
1908 1908 that magics are loaded in their transformed version to valid Python. If
1909 1909 this option is given, the raw input as typed as the command line is used
1910 1910 instead.
1911 1911
1912 1912 This will define a global variable called 'name' which is a string made
1913 1913 of joining the slices and lines you specify (n1,n2,... numbers above)
1914 1914 from your input history into a single string. This variable acts like an
1915 1915 automatic function which re-executes those lines as if you had typed
1916 1916 them. You just type 'name' at the prompt and the code executes.
1917 1917
1918 1918 The notation for indicating number ranges is: n1-n2 means 'use line
1919 1919 numbers n1,...n2' (the endpoint is included). That is, '5-7' means using
1920 1920 the lines numbered 5,6 and 7.
1921 1921
1922 1922 Note: as a 'hidden' feature, you can also use traditional python slice
1923 1923 notation, where N:M means numbers N through M-1.
1924 1924
1925 1925 For example, if your history contains (%hist prints it):
1926 1926
1927 1927 44: x=1
1928 1928 45: y=3
1929 1929 46: z=x+y
1930 1930 47: print x
1931 1931 48: a=5
1932 1932 49: print 'x',x,'y',y
1933 1933
1934 1934 you can create a macro with lines 44 through 47 (included) and line 49
1935 1935 called my_macro with:
1936 1936
1937 1937 In [51]: %macro my_macro 44-47 49
1938 1938
1939 1939 Now, typing 'my_macro' (without quotes) will re-execute all this code in
1940 1940 one pass.
1941 1941
1942 1942 You don't need to give the line-numbers in order, and any given line
1943 1943 number can appear multiple times. You can assemble macros with any lines
1944 1944 from your input history in any order.
1945 1945
1946 1946 The macro is a simple object which holds its value in an attribute, but
1947 1947 IPython's display system checks for macros and executes them as code
1948 1948 instead of printing them when you type their name.
1949 1949
1950 1950 You can view a macro's contents by explicitly printing it with:
1951 1951
1952 1952 'print macro_name'.
1953 1953
1954 1954 For one-off cases which DON'T contain magic function calls in them you
1955 1955 can obtain similar results by explicitly executing slices from your
1956 1956 input history with:
1957 1957
1958 1958 In [60]: exec In[44:48]+In[49]
1959 1959
1960 1960
1961 1961 %magic: Print information about the magic function system.
1962 1962
1963 1963
1964 1964 %page: Pretty print the object and display it through a pager.
1965 1965
1966 1966 %page [options] OBJECT
1967 1967
1968 1968 If no object is given, use _ (last output).
1969 1969
1970 1970 Options:
1971 1971
1972 1972 -r: page str(object), don't pretty-print it.
1973 1973
1974 1974
1975 1975 %pdb: Control the automatic calling of the pdb interactive debugger.
1976 1976
1977 1977 Call as '%pdb on', '%pdb 1', '%pdb off' or '%pdb 0'. If called without
1978 1978 argument it works as a toggle.
1979 1979
1980 1980 When an exception is triggered, IPython can optionally call the
1981 1981 interactive pdb debugger after the traceback printout. %pdb toggles this
1982 1982 feature on and off.
1983 1983
1984 1984 The initial state of this feature is set in your ipythonrc configuration
1985 1985 file (the variable is called 'pdb').
1986 1986
1987 1987 If you want to just activate the debugger AFTER an exception has fired,
1988 1988 without having to type '%pdb on' and rerunning your code, you can use
1989 1989 the %debug magic.
1990 1990
1991 1991
1992 1992 %pdef: Print the definition header for any callable object.
1993 1993
1994 1994 If the object is a class, print the constructor information.
1995 1995
1996 1996
1997 1997 %pdoc: Print the docstring for an object.
1998 1998
1999 1999 If the given object is a class, it will print both the class and the
2000 2000 constructor docstrings.
2001 2001
2002 2002
2003 2003 %pfile: Print (or run through pager) the file where an object is defined.
2004 2004
2005 2005 The file opens at the line where the object definition begins. IPython
2006 2006 will honor the environment variable PAGER if set, and otherwise will do
2007 2007 its best to print the file in a convenient form.
2008 2008
2009 2009 If the given argument is not an object currently defined, IPython will
2010 2010 try to interpret it as a filename (automatically adding a .py extension
2011 2011 if needed). You can thus use %pfile as a syntax highlighting code viewer.
2012 2012
2013 2013
2014 2014 %pinfo: Provide detailed information about an object.
2015 2015
2016 2016 '%pinfo object' is just a synonym for object? or ?object.
2017 2017
2018 2018
2019 2019 %popd: Change to directory popped off the top of the stack.
2020 2020
2021 2021
2022 2022 %profile: Print your currently active IPyhton profile.
2023 2023
2024 2024
2025 2025 %prun: Run a statement through the python code profiler.
2026 2026
2027 2027 Usage:
2028 2028 %prun [options] statement
2029 2029
2030 2030 The given statement (which doesn't require quote marks) is run via the
2031 2031 python profiler in a manner similar to the profile.run() function.
2032 2032 Namespaces are internally managed to work correctly; profile.run cannot
2033 2033 be used in IPython because it makes certain assumptions about namespaces
2034 2034 which do not hold under IPython.
2035 2035
2036 2036 Options:
2037 2037
2038 2038 -l <limit>: you can place restrictions on what or how much of the
2039 2039 profile gets printed. The limit value can be:
2040 2040
2041 2041 * A string: only information for function names containing this string
2042 2042 is printed.
2043 2043
2044 2044 * An integer: only these many lines are printed.
2045 2045
2046 2046 * A float (between 0 and 1): this fraction of the report is printed (for
2047 2047 example, use a limit of 0.4 to see the topmost 40% only).
2048 2048
2049 2049 You can combine several limits with repeated use of the option. For
2050 2050 example, '-l __init__ -l 5' will print only the topmost 5 lines of
2051 2051 information about class constructors.
2052 2052
2053 2053 -r: return the pstats.Stats object generated by the profiling. This
2054 2054 object has all the information about the profile in it, and you can
2055 2055 later use it for further analysis or in other functions.
2056 2056
2057 2057 -s <key>: sort profile by given key. You can provide more than one key
2058 2058 by using the option several times: '-s key1 -s key2 -s key3...'. The
2059 2059 default sorting key is 'time'.
2060 2060
2061 2061 The following is copied verbatim from the profile documentation
2062 2062 referenced below:
2063 2063
2064 2064 When more than one key is provided, additional keys are used as
2065 2065 secondary criteria when the there is equality in all keys selected
2066 2066 before them.
2067 2067
2068 2068 Abbreviations can be used for any key names, as long as the abbreviation
2069 2069 is unambiguous. The following are the keys currently defined:
2070 2070
2071 2071 Valid Arg Meaning
2072 2072 "calls" call count
2073 2073 "cumulative" cumulative time
2074 2074 "file" file name
2075 2075 "module" file name
2076 2076 "pcalls" primitive call count
2077 2077 "line" line number
2078 2078 "name" function name
2079 2079 "nfl" name/file/line
2080 2080 "stdname" standard name
2081 2081 "time" internal time
2082 2082
2083 2083 Note that all sorts on statistics are in descending order (placing most
2084 2084 time consuming items first), where as name, file, and line number
2085 2085 searches are in ascending order (i.e., alphabetical). The subtle
2086 2086 distinction between "nfl" and "stdname" is that the standard name is a
2087 2087 sort of the name as printed, which means that the embedded line numbers
2088 2088 get compared in an odd way. For example, lines 3, 20, and 40 would (if
2089 2089 the file names were the same) appear in the string order "20" "3" and
2090 2090 "40". In contrast, "nfl" does a numeric compare of the line numbers. In
2091 2091 fact, sort_stats("nfl") is the same as sort_stats("name", "file", "line").
2092 2092
2093 2093 -T <filename>: save profile results as shown on screen to a text file.
2094 2094 The profile is still shown on screen.
2095 2095
2096 2096 -D <filename>: save (via dump_stats) profile statistics to given
2097 2097 filename. This data is in a format understod by the pstats module, and
2098 2098 is generated by a call to the dump_stats() method of profile objects.
2099 2099 The profile is still shown on screen.
2100 2100
2101 2101 If you want to run complete programs under the profiler's control, use
2102 2102 '%run -p [prof_opts] filename.py [args to program]' where prof_opts
2103 2103 contains profiler specific options as described here.
2104 2104
2105 2105 You can read the complete documentation for the profile module with:
2106 2106 In [1]: import profile; profile.help()
2107 2107
2108 2108
2109 2109 %psearch: Search for object in namespaces by wildcard.
2110 2110
2111 2111 %psearch [options] PATTERN [OBJECT TYPE]
2112 2112
2113 2113 Note: ? can be used as a synonym for %psearch, at the beginning or at
2114 2114 the end: both a*? and ?a* are equivalent to '%psearch a*'. Still, the
2115 2115 rest of the command line must be unchanged (options come first), so for
2116 2116 example the following forms are equivalent
2117 2117
2118 2118 %psearch -i a* function -i a* function? ?-i a* function
2119 2119
2120 2120 Arguments:
2121 2121
2122 2122 PATTERN
2123 2123
2124 2124 where PATTERN is a string containing * as a wildcard similar to its use
2125 2125 in a shell. The pattern is matched in all namespaces on the search path.
2126 2126 By default objects starting with a single _ are not matched, many
2127 2127 IPython generated objects have a single underscore. The default is case
2128 2128 insensitive matching. Matching is also done on the attributes of objects
2129 2129 and not only on the objects in a module.
2130 2130
2131 2131 [OBJECT TYPE]
2132 2132
2133 2133 Is the name of a python type from the types module. The name is given in
2134 2134 lowercase without the ending type, ex. StringType is written string. By
2135 2135 adding a type here only objects matching the given type are matched.
2136 2136 Using all here makes the pattern match all types (this is the default).
2137 2137
2138 2138 Options:
2139 2139
2140 2140 -a: makes the pattern match even objects whose names start with a single
2141 2141 underscore. These names are normally ommitted from the search.
2142 2142
2143 2143 -i/-c: make the pattern case insensitive/sensitive. If neither of these
2144 2144 options is given, the default is read from your ipythonrc file. The
2145 2145 option name which sets this value is 'wildcards_case_sensitive'. If this
2146 2146 option is not specified in your ipythonrc file, IPython's internal
2147 2147 default is to do a case sensitive search.
2148 2148
2149 2149 -e/-s NAMESPACE: exclude/search a given namespace. The pattern you
2150 2150 specifiy can be searched in any of the following namespaces: 'builtin',
2151 2151 'user', 'user_global','internal', 'alias', where 'builtin' and 'user'
2152 2152 are the search defaults. Note that you should not use quotes when
2153 2153 specifying namespaces.
2154 2154
2155 2155 'Builtin' contains the python module builtin, 'user' contains all user
2156 2156 data, 'alias' only contain the shell aliases and no python objects,
2157 2157 'internal' contains objects used by IPython. The 'user_global' namespace
2158 2158 is only used by embedded IPython instances, and it contains module-level
2159 2159 globals. You can add namespaces to the search with -s or exclude them
2160 2160 with -e (these options can be given more than once).
2161 2161
2162 2162 Examples:
2163 2163
2164 2164 %psearch a* -> objects beginning with an a %psearch -e builtin a* ->
2165 2165 objects NOT in the builtin space starting in a %psearch a* function ->
2166 2166 all functions beginning with an a %psearch re.e* -> objects beginning
2167 2167 with an e in module re %psearch r*.e* -> objects that start with e in
2168 2168 modules starting in r %psearch r*.* string -> all strings in modules
2169 2169 beginning with r
2170 2170
2171 2171 Case sensitve search:
2172 2172
2173 2173 %psearch -c a* list all object beginning with lower case a
2174 2174
2175 2175 Show objects beginning with a single _:
2176 2176
2177 2177 %psearch -a _* list objects beginning with a single underscore
2178 2178
2179 2179
2180 2180 %psource: Print (or run through pager) the source code for an object.
2181 2181
2182 2182
2183 2183 %pushd: Place the current dir on stack and change directory.
2184 2184
2185 2185 Usage:
2186 2186 %pushd ['dirname']
2187 2187
2188 2188
2189 2189 %pwd: Return the current working directory path.
2190 2190
2191 2191
2192 2192 %pycat: Show a syntax-highlighted file through a pager.
2193 2193
2194 2194 This magic is similar to the cat utility, but it will assume the file to
2195 2195 be Python source and will show it with syntax highlighting.
2196 2196
2197 2197
2198 2198 %quickref: Show a quick reference sheet
2199 2199
2200 2200
2201 2201 %quit: Exit IPython, confirming if configured to do so (like %exit)
2202 2202
2203 2203
2204 2204 %r: Repeat previous input.
2205 2205
2206 2206 Note: Consider using the more powerfull %rep instead!
2207 2207
2208 2208 If given an argument, repeats the previous command which starts with the
2209 2209 same string, otherwise it just repeats the previous input.
2210 2210
2211 2211 Shell escaped commands (with ! as first character) are not recognized by
2212 2212 this system, only pure python code and magic commands.
2213 2213
2214 2214
2215 2215 %rehashx: Update the alias table with all executable files in $PATH.
2216 2216
2217 2217 This version explicitly checks that every entry in $PATH is a file with
2218 2218 execute access (os.X_OK), so it is much slower than %rehash.
2219 2219
2220 2220 Under Windows, it checks executability as a match agains a ``|``-separated
2221 2221 string of extensions, stored in the IPython config variable
2222 2222 win_exec_ext. This defaults to ``exe|com|bat``.
2223 2223
2224 2224 This function also resets the root module cache of module completer,
2225 2225 used on slow filesystems.
2226 2226
2227 2227
2228 2228 %reset: Resets the namespace by removing all names defined by the user.
2229 2229
2230 2230 Input/Output history are left around in case you need them.
2231 2231
2232 2232
2233 2233 %run: Run the named file inside IPython as a program.
2234 2234
2235 2235 Usage:
2236 2236 %run [-n -i -t [-N<N>] -d [-b<N>] -p [profile options]] file [args]
2237 2237
2238 2238 Parameters after the filename are passed as command-line arguments to
2239 2239 the program (put in sys.argv). Then, control returns to IPython's prompt.
2240 2240
2241 2241 This is similar to running at a system prompt:
2242 2242 $ python file args
2243 2243 but with the advantage of giving you IPython's tracebacks, and of
2244 2244 loading all variables into your interactive namespace for further use
2245 2245 (unless -p is used, see below).
2246 2246
2247 2247 The file is executed in a namespace initially consisting only of
2248 2248 __name__=='__main__' and sys.argv constructed as indicated. It thus sees
2249 2249 its environment as if it were being run as a stand-alone program (except
2250 2250 for sharing global objects such as previously imported modules). But
2251 2251 after execution, the IPython interactive namespace gets updated with all
2252 2252 variables defined in the program (except for __name__ and sys.argv).
2253 2253 This allows for very convenient loading of code for interactive work,
2254 2254 while giving each program a 'clean sheet' to run in.
2255 2255
2256 2256 Options:
2257 2257
2258 2258 -n: __name__ is NOT set to '__main__', but to the running file's name
2259 2259 without extension (as python does under import). This allows running
2260 2260 scripts and reloading the definitions in them without calling code
2261 2261 protected by an ' if __name__ == "__main__" ' clause.
2262 2262
2263 2263 -i: run the file in IPython's namespace instead of an empty one. This is
2264 2264 useful if you are experimenting with code written in a text editor which
2265 2265 depends on variables defined interactively.
2266 2266
2267 2267 -e: ignore sys.exit() calls or SystemExit exceptions in the script being
2268 2268 run. This is particularly useful if IPython is being used to run
2269 2269 unittests, which always exit with a sys.exit() call. In such cases you
2270 2270 are interested in the output of the test results, not in seeing a
2271 2271 traceback of the unittest module.
2272 2272
2273 2273 -t: print timing information at the end of the run. IPython will give
2274 2274 you an estimated CPU time consumption for your script, which under Unix
2275 2275 uses the resource module to avoid the wraparound problems of
2276 2276 time.clock(). Under Unix, an estimate of time spent on system tasks is
2277 2277 also given (for Windows platforms this is reported as 0.0).
2278 2278
2279 2279 If -t is given, an additional -N<N> option can be given, where <N> must
2280 2280 be an integer indicating how many times you want the script to run. The
2281 2281 final timing report will include total and per run results.
2282 2282
2283 2283 For example (testing the script uniq_stable.py):
2284 2284
2285 2285 In [1]: run -t uniq_stable
2286 2286
2287 2287 IPython CPU timings (estimated):
2288 2288 User : 0.19597 s.
2289 2289 System: 0.0 s.
2290 2290
2291 2291 In [2]: run -t -N5 uniq_stable
2292 2292
2293 2293 IPython CPU timings (estimated):
2294 2294 Total runs performed: 5
2295 2295 Times : Total Per run
2296 2296 User : 0.910862 s, 0.1821724 s.
2297 2297 System: 0.0 s, 0.0 s.
2298 2298
2299 2299 -d: run your program under the control of pdb, the Python debugger. This
2300 2300 allows you to execute your program step by step, watch variables, etc.
2301 2301 Internally, what IPython does is similar to calling:
2302 2302
2303 2303 pdb.run('execfile("YOURFILENAME")')
2304 2304
2305 2305 with a breakpoint set on line 1 of your file. You can change the line
2306 2306 number for this automatic breakpoint to be <N> by using the -bN option
2307 2307 (where N must be an integer). For example:
2308 2308
2309 2309 %run -d -b40 myscript
2310 2310
2311 2311 will set the first breakpoint at line 40 in myscript.py. Note that the
2312 2312 first breakpoint must be set on a line which actually does something
2313 2313 (not a comment or docstring) for it to stop execution.
2314 2314
2315 2315 When the pdb debugger starts, you will see a (Pdb) prompt. You must
2316 2316 first enter 'c' (without qoutes) to start execution up to the first
2317 2317 breakpoint.
2318 2318
2319 2319 Entering 'help' gives information about the use of the debugger. You can
2320 2320 easily see pdb's full documentation with "import pdb;pdb.help()" at a
2321 2321 prompt.
2322 2322
2323 2323 -p: run program under the control of the Python profiler module (which
2324 2324 prints a detailed report of execution times, function calls, etc).
2325 2325
2326 2326 You can pass other options after -p which affect the behavior of the
2327 2327 profiler itself. See the docs for %prun for details.
2328 2328
2329 2329 In this mode, the program's variables do NOT propagate back to the
2330 2330 IPython interactive namespace (because they remain in the namespace
2331 2331 where the profiler executes them).
2332 2332
2333 2333 Internally this triggers a call to %prun, see its documentation for
2334 2334 details on the options available specifically for profiling.
2335 2335
2336 2336 There is one special usage for which the text above doesn't apply: if
2337 2337 the filename ends with .ipy, the file is run as ipython script, just as
2338 2338 if the commands were written on IPython prompt.
2339 2339
2340 2340
2341 2341 %runlog: Run files as logs.
2342 2342
2343 2343 Usage:
2344 2344 %runlog file1 file2 ...
2345 2345
2346 2346 Run the named files (treating them as log files) in sequence inside the
2347 2347 interpreter, and return to the prompt. This is much slower than %run
2348 2348 because each line is executed in a try/except block, but it allows
2349 2349 running files with syntax errors in them.
2350 2350
2351 2351 Normally IPython will guess when a file is one of its own logfiles, so
2352 2352 you can typically use %run even for logs. This shorthand allows you to
2353 2353 force any file to be treated as a log file.
2354 2354
2355 2355
2356 2356 %save: Save a set of lines to a given filename.
2357 2357
2358 2358 Usage:
2359 2359 %save [options] filename n1-n2 n3-n4 ... n5 .. n6 ...
2360 2360
2361 2361 Options:
2362 2362
2363 2363 -r: use 'raw' input. By default, the 'processed' history is used, so
2364 2364 that magics are loaded in their transformed version to valid Python. If
2365 2365 this option is given, the raw input as typed as the command line is used
2366 2366 instead.
2367 2367
2368 2368 This function uses the same syntax as %macro for line extraction, but
2369 2369 instead of creating a macro it saves the resulting string to the
2370 2370 filename you specify.
2371 2371
2372 2372 It adds a '.py' extension to the file if you don't do so yourself, and
2373 2373 it asks for confirmation before overwriting existing files.
2374 2374
2375 2375
2376 2376 %sc: Shell capture - execute a shell command and capture its output.
2377 2377
2378 2378 DEPRECATED. Suboptimal, retained for backwards compatibility.
2379 2379
2380 2380 You should use the form 'var = !command' instead. Example:
2381 2381
2382 2382 "%sc -l myfiles = ls " should now be written as
2383 2383
2384 2384 "myfiles = !ls "
2385 2385
2386 2386 myfiles.s, myfiles.l and myfiles.n still apply as documented below.
2387 2387
2388 2388 - %sc [options] varname=command
2389 2389
2390 2390 IPython will run the given command using commands.getoutput(), and will
2391 2391 then update the user's interactive namespace with a variable called
2392 2392 varname, containing the value of the call. Your command can contain
2393 2393 shell wildcards, pipes, etc.
2394 2394
2395 2395 The '=' sign in the syntax is mandatory, and the variable name you
2396 2396 supply must follow Python's standard conventions for valid names.
2397 2397
2398 2398 (A special format without variable name exists for internal use)
2399 2399
2400 2400 Options:
2401 2401
2402 2402 -l: list output. Split the output on newlines into a list before
2403 2403 assigning it to the given variable. By default the output is stored as a
2404 2404 single string.
2405 2405
2406 2406 -v: verbose. Print the contents of the variable.
2407 2407
2408 2408 In most cases you should not need to split as a list, because the
2409 2409 returned value is a special type of string which can automatically
2410 2410 provide its contents either as a list (split on newlines) or as a
2411 2411 space-separated string. These are convenient, respectively, either for
2412 2412 sequential processing or to be passed to a shell command.
2413 2413
2414 2414 For example:
2415 2415
2416 2416 # Capture into variable a In [9]: sc a=ls *py
2417 2417
2418 2418 # a is a string with embedded newlines In [10]: a Out[10]: 'setup.py
2419 2419 win32_manual_post_install.py'
2420 2420
2421 2421 # which can be seen as a list: In [11]: a.l Out[11]: ['setup.py',
2422 2422 'win32_manual_post_install.py']
2423 2423
2424 2424 # or as a whitespace-separated string: In [12]: a.s Out[12]: 'setup.py
2425 2425 win32_manual_post_install.py'
2426 2426
2427 2427 # a.s is useful to pass as a single command line: In [13]: !wc -l $a.s
2428 2428 146 setup.py 130 win32_manual_post_install.py 276 total
2429 2429
2430 2430 # while the list form is useful to loop over: In [14]: for f in a.l:
2431 2431 ....: !wc -l $f ....: 146 setup.py 130 win32_manual_post_install.py
2432 2432
2433 2433 Similiarly, the lists returned by the -l option are also special, in the
2434 2434 sense that you can equally invoke the .s attribute on them to
2435 2435 automatically get a whitespace-separated string from their contents:
2436 2436
2437 2437 In [1]: sc -l b=ls *py
2438 2438
2439 2439 In [2]: b Out[2]: ['setup.py', 'win32_manual_post_install.py']
2440 2440
2441 2441 In [3]: b.s Out[3]: 'setup.py win32_manual_post_install.py'
2442 2442
2443 2443 In summary, both the lists and strings used for ouptut capture have the
2444 2444 following special attributes:
2445 2445
2446 2446 .l (or .list) : value as list. .n (or .nlstr): value as
2447 2447 newline-separated string. .s (or .spstr): value as space-separated string.
2448 2448
2449 2449
2450 2450 %sx: Shell execute - run a shell command and capture its output.
2451 2451
2452 2452 %sx command
2453 2453
2454 2454 IPython will run the given command using commands.getoutput(), and
2455 2455 return the result formatted as a list (split on '\n'). Since the output
2456 2456 is _returned_, it will be stored in ipython's regular output cache
2457 2457 Out[N] and in the '_N' automatic variables.
2458 2458
2459 2459 Notes:
2460 2460
2461 2461 1) If an input line begins with '!!', then %sx is automatically invoked.
2462 2462 That is, while: !ls causes ipython to simply issue system('ls'), typing
2463 2463 !!ls is a shorthand equivalent to: %sx ls
2464 2464
2465 2465 2) %sx differs from %sc in that %sx automatically splits into a list,
2466 2466 like '%sc -l'. The reason for this is to make it as easy as possible to
2467 2467 process line-oriented shell output via further python commands. %sc is
2468 2468 meant to provide much finer control, but requires more typing.
2469 2469
2470 2470 3) Just like %sc -l, this is a list with special attributes:
2471 2471
2472 2472 .l (or .list) : value as list. .n (or .nlstr): value as
2473 2473 newline-separated string. .s (or .spstr): value as whitespace-separated
2474 2474 string.
2475 2475
2476 2476 This is very useful when trying to use such lists as arguments to system
2477 2477 commands.
2478 2478
2479 2479
2480 2480 %system_verbose: Set verbose printing of system calls.
2481 2481
2482 2482 If called without an argument, act as a toggle
2483 2483
2484 2484
2485 2485 %time: Time execution of a Python statement or expression.
2486 2486
2487 2487 The CPU and wall clock times are printed, and the value of the
2488 2488 expression (if any) is returned. Note that under Win32, system time is
2489 2489 always reported as 0, since it can not be measured.
2490 2490
2491 2491 This function provides very basic timing functionality. In Python 2.3,
2492 2492 the timeit module offers more control and sophistication, so this could
2493 2493 be rewritten to use it (patches welcome).
2494 2494
2495 2495 Some examples:
2496 2496
2497 2497 In [1]: time 2**128 CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
2498 2498 Wall time: 0.00 Out[1]: 340282366920938463463374607431768211456L
2499 2499
2500 2500 In [2]: n = 1000000
2501 2501
2502 2502 In [3]: time sum(range(n)) CPU times: user 1.20 s, sys: 0.05 s, total:
2503 2503 1.25 s Wall time: 1.37 Out[3]: 499999500000L
2504 2504
2505 2505 In [4]: time print 'hello world' hello world CPU times: user 0.00 s,
2506 2506 sys: 0.00 s, total: 0.00 s Wall time: 0.00
2507 2507
2508 2508 Note that the time needed by Python to compile the given expression will
2509 2509 be reported if it is more than 0.1s. In this example, the actual
2510 2510 exponentiation is done by Python at compilation time, so while the
2511 2511 expression can take a noticeable amount of time to compute, that time is
2512 2512 purely due to the compilation:
2513 2513
2514 2514 In [5]: time 3**9999; CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
2515 2515 Wall time: 0.00 s
2516 2516
2517 2517 In [6]: time 3**999999; CPU times: user 0.00 s, sys: 0.00 s, total: 0.00
2518 2518 s Wall time: 0.00 s Compiler : 0.78 s
2519 2519
2520 2520
2521 2521 %timeit: Time execution of a Python statement or expression
2522 2522
2523 2523 Usage:
2524 2524 %timeit [-n<N> -r<R> [-t|-c]] statement
2525 2525
2526 2526 Time execution of a Python statement or expression using the timeit module.
2527 2527
2528 2528 Options: -n<N>: execute the given statement <N> times in a loop. If this
2529 2529 value is not given, a fitting value is chosen.
2530 2530
2531 2531 -r<R>: repeat the loop iteration <R> times and take the best result.
2532 2532 Default: 3
2533 2533
2534 2534 -t: use time.time to measure the time, which is the default on Unix.
2535 2535 This function measures wall time.
2536 2536
2537 2537 -c: use time.clock to measure the time, which is the default on Windows
2538 2538 and measures wall time. On Unix, resource.getrusage is used instead and
2539 2539 returns the CPU user time.
2540 2540
2541 2541 -p<P>: use a precision of <P> digits to display the timing result.
2542 2542 Default: 3
2543 2543
2544 2544 Examples:
2545 2545 In [1]: %timeit pass 10000000 loops, best of 3: 53.3 ns per loop
2546 2546
2547 2547 In [2]: u = None
2548 2548
2549 2549 In [3]: %timeit u is None 10000000 loops, best of 3: 184 ns per loop
2550 2550
2551 2551 In [4]: %timeit -r 4 u == None 1000000 loops, best of 4: 242 ns per loop
2552 2552
2553 2553 In [5]: import time
2554 2554
2555 2555 In [6]: %timeit -n1 time.sleep(2) 1 loops, best of 3: 2 s per loop
2556 2556
2557 2557 The times reported by %timeit will be slightly higher than those
2558 2558 reported by the timeit.py script when variables are accessed. This is
2559 2559 due to the fact that %timeit executes the statement in the namespace of
2560 2560 the shell, compared with timeit.py, which uses a single setup statement
2561 2561 to import function or create variables. Generally, the bias does not
2562 2562 matter as long as results from timeit.py are not mixed with those from
2563 2563 %timeit.
2564 2564
2565 2565
2566 2566 %unalias: Remove an alias
2567 2567
2568 2568
2569 2569 %upgrade: Upgrade your IPython installation
2570 2570
2571 2571 This will copy the config files that don't yet exist in your ipython dir
2572 2572 from the system config dir. Use this after upgrading IPython if you
2573 2573 don't wish to delete your .ipython dir.
2574 2574
2575 2575 Call with -nolegacy to get rid of ipythonrc* files (recommended for new
2576 2576 users)
2577 2577
2578 2578
2579 2579 %who: Print all interactive variables, with some minimal formatting.
2580 2580
2581 2581 If any arguments are given, only variables whose type matches one of
2582 2582 these are printed. For example:
2583 2583
2584 2584 %who function str
2585 2585
2586 2586 will only list functions and strings, excluding all other types of
2587 2587 variables. To find the proper type names, simply use type(var) at a
2588 2588 command line to see how python prints type names. For example:
2589 2589
2590 2590 In [1]: type('hello')
2591 2591 Out[1]: <type 'str'>
2592 2592
2593 2593 indicates that the type name for strings is 'str'.
2594 2594
2595 2595 %who always excludes executed names loaded through your configuration
2596 2596 file and things which are internal to IPython.
2597 2597
2598 2598 This is deliberate, as typically you may load many modules and the
2599 2599 purpose of %who is to show you only what you've manually defined.
2600 2600
2601 2601
2602 2602 %who_ls: Return a sorted list of all interactive variables.
2603 2603
2604 2604 If arguments are given, only variables of types matching these arguments
2605 2605 are returned.
2606 2606
2607 2607
2608 2608 %whos: Like %who, but gives some extra information about each variable.
2609 2609
2610 2610 The same type filtering of %who can be applied here.
2611 2611
2612 2612 For all variables, the type is printed. Additionally it prints:
2613 2613
2614 2614 - For ,[],(): their length.
2615 2615
2616 2616 - For numpy and Numeric arrays, a summary with shape, number of
2617 2617 elements, typecode and size in memory.
2618 2618
2619 2619 - Everything else: a string representation, snipping their middle if too
2620 2620 long.
2621 2621
2622 2622
2623 2623 %xmode: Switch modes for the exception handlers.
2624 2624
2625 2625 Valid modes: Plain, Context and Verbose.
2626 2626
2627 2627 If called without arguments, acts as a toggle.
2628 2628
2629 2629
2630 2630 Access to the standard Python help
2631 2631 ----------------------------------
2632 2632
2633 2633 As of Python 2.1, a help system is available with access to object
2634 2634 docstrings and the Python manuals. Simply type 'help' (no quotes) to
2635 2635 access it. You can also type help(object) to obtain information about a
2636 2636 given object, and help('keyword') for information on a keyword. As noted
2637 2637 in sec. 3.1 <node3.html#sec:help-access>, you need to properly configure
2638 2638 your environment variable PYTHONDOCS for this feature to work correctly.
2639 2639
2640 2640
2641 2641
2642 2642 Dynamic object information
2643 2643 --------------------------
2644 2644
2645 2645 Typing ?word or word? prints detailed information about an object. If
2646 2646 certain strings in the object are too long (docstrings, code, etc.) they
2647 2647 get snipped in the center for brevity. This system gives access variable
2648 2648 types and values, full source code for any object (if available),
2649 2649 function prototypes and other useful information.
2650 2650
2651 2651 Typing ??word or word?? gives access to the full information without
2652 2652 snipping long strings. Long strings are sent to the screen through the
2653 2653 less pager if longer than the screen and printed otherwise. On systems
2654 2654 lacking the less command, IPython uses a very basic internal pager.
2655 2655
2656 2656 The following magic functions are particularly useful for gathering
2657 2657 information about your working environment. You can get more details by
2658 2658 typing %magic or querying them individually (use %function_name? with or
2659 2659 without the %), this is just a summary:
2660 2660
2661 2661 * [%pdoc <object>:] Print (or run through a pager if too long) the
2662 2662 docstring for an object. If the given object is a class, it will
2663 2663 print both the class and the constructor docstrings.
2664 2664 * [%pdef <object>:] Print the definition header for any callable
2665 2665 object. If the object is a class, print the constructor information.
2666 2666 * [%psource <object>:] Print (or run through a pager if too long)
2667 2667 the source code for an object.
2668 2668 * [%pfile <object>:] Show the entire source file where an object was
2669 2669 defined via a pager, opening it at the line where the object
2670 2670 definition begins.
2671 2671 * [%who/%whos:] These functions give information about identifiers
2672 2672 you have defined interactively (not things you loaded or defined
2673 2673 in your configuration files). %who just prints a list of
2674 2674 identifiers and %whos prints a table with some basic details about
2675 2675 each identifier.
2676 2676
2677 2677 Note that the dynamic object information functions (?/??, %pdoc, %pfile,
2678 2678 %pdef, %psource) give you access to documentation even on things which
2679 2679 are not really defined as separate identifiers. Try for example typing
2680 2680 {}.get? or after doing import os, type os.path.abspath??.
2681 2681
2682 2682
2683 2683
2684 2684 Readline-based features
2685 2685 -----------------------
2686 2686
2687 2687 These features require the GNU readline library, so they won't work if
2688 2688 your Python installation lacks readline support. We will first describe
2689 2689 the default behavior IPython uses, and then how to change it to suit
2690 2690 your preferences.
2691 2691
2692 2692
2693 2693 Command line completion
2694 2694 -----------------------
2695 2695
2696 2696 At any time, hitting TAB will complete any available python commands or
2697 2697 variable names, and show you a list of the possible completions if
2698 2698 there's no unambiguous one. It will also complete filenames in the
2699 2699 current directory if no python names match what you've typed so far.
2700 2700
2701 2701
2702 2702 Search command history
2703 2703 ----------------------
2704 2704
2705 2705 IPython provides two ways for searching through previous input and thus
2706 2706 reduce the need for repetitive typing:
2707 2707
2708 2708 1. Start typing, and then use Ctrl-p (previous,up) and Ctrl-n
2709 2709 (next,down) to search through only the history items that match
2710 2710 what you've typed so far. If you use Ctrl-p/Ctrl-n at a blank
2711 2711 prompt, they just behave like normal arrow keys.
2712 2712 2. Hit Ctrl-r: opens a search prompt. Begin typing and the system
2713 2713 searches your history for lines that contain what you've typed so
2714 2714 far, completing as much as it can.
2715 2715
2716 2716
2717 2717 Persistent command history across sessions
2718 2718 ------------------------------------------
2719 2719
2720 2720 IPython will save your input history when it leaves and reload it next
2721 2721 time you restart it. By default, the history file is named
2722 2722 $IPYTHONDIR/history, but if you've loaded a named profile,
2723 2723 '-PROFILE_NAME' is appended to the name. This allows you to keep
2724 2724 separate histories related to various tasks: commands related to
2725 2725 numerical work will not be clobbered by a system shell history, for
2726 2726 example.
2727 2727
2728 2728
2729 2729 Autoindent
2730 2730 ----------
2731 2731
2732 2732 IPython can recognize lines ending in ':' and indent the next line,
2733 2733 while also un-indenting automatically after 'raise' or 'return'.
2734 2734
2735 2735 This feature uses the readline library, so it will honor your ~/.inputrc
2736 2736 configuration (or whatever file your INPUTRC variable points to). Adding
2737 2737 the following lines to your .inputrc file can make indenting/unindenting
2738 2738 more convenient (M-i indents, M-u unindents)::
2739 2739
2740 2740 $if Python
2741 2741 "\M-i": " "
2742 2742 "\M-u": "\d\d\d\d"
2743 2743 $endif
2744 2744
2745 2745 Note that there are 4 spaces between the quote marks after "M-i" above.
2746 2746
2747 2747 Warning: this feature is ON by default, but it can cause problems with
2748 2748 the pasting of multi-line indented code (the pasted code gets
2749 2749 re-indented on each line). A magic function %autoindent allows you to
2750 2750 toggle it on/off at runtime. You can also disable it permanently on in
2751 2751 your ipythonrc file (set autoindent 0).
2752 2752
2753 2753
2754 2754 Customizing readline behavior
2755 2755 -----------------------------
2756 2756
2757 2757 All these features are based on the GNU readline library, which has an
2758 2758 extremely customizable interface. Normally, readline is configured via a
2759 2759 file which defines the behavior of the library; the details of the
2760 2760 syntax for this can be found in the readline documentation available
2761 2761 with your system or on the Internet. IPython doesn't read this file (if
2762 2762 it exists) directly, but it does support passing to readline valid
2763 2763 options via a simple interface. In brief, you can customize readline by
2764 2764 setting the following options in your ipythonrc configuration file (note
2765 2765 that these options can not be specified at the command line):
2766 2766
2767 2767 * [readline_parse_and_bind:] this option can appear as many times as
2768 2768 you want, each time defining a string to be executed via a
2769 2769 readline.parse_and_bind() command. The syntax for valid commands
2770 2770 of this kind can be found by reading the documentation for the GNU
2771 2771 readline library, as these commands are of the kind which readline
2772 2772 accepts in its configuration file.
2773 2773 * [readline_remove_delims:] a string of characters to be removed
2774 2774 from the default word-delimiters list used by readline, so that
2775 2775 completions may be performed on strings which contain them. Do not
2776 2776 change the default value unless you know what you're doing.
2777 2777 * [readline_omit__names:] when tab-completion is enabled, hitting
2778 2778 <tab> after a '.' in a name will complete all attributes of an
2779 2779 object, including all the special methods whose names include
2780 2780 double underscores (like __getitem__ or __class__). If you'd
2781 2781 rather not see these names by default, you can set this option to
2782 2782 1. Note that even when this option is set, you can still see those
2783 2783 names by explicitly typing a _ after the period and hitting <tab>:
2784 2784 'name._<tab>' will always complete attribute names starting with '_'.
2785 2785 * [ ] This option is off by default so that new users see all
2786 2786 attributes of any objects they are dealing with.
2787 2787
2788 2788 You will find the default values along with a corresponding detailed
2789 2789 explanation in your ipythonrc file.
2790 2790
2791 2791
2792 2792 Session logging and restoring
2793 2793 -----------------------------
2794 2794
2795 2795 You can log all input from a session either by starting IPython with the
2796 2796 command line switches -log or -logfile (see sec. 5.2
2797 2797 <node5.html#sec:cmd-line-opts>)or by activating the logging at any
2798 2798 moment with the magic function %logstart.
2799 2799
2800 2800 Log files can later be reloaded with the -logplay option and IPython
2801 2801 will attempt to 'replay' the log by executing all the lines in it, thus
2802 2802 restoring the state of a previous session. This feature is not quite
2803 2803 perfect, but can still be useful in many cases.
2804 2804
2805 2805 The log files can also be used as a way to have a permanent record of
2806 2806 any code you wrote while experimenting. Log files are regular text files
2807 2807 which you can later open in your favorite text editor to extract code or
2808 2808 to 'clean them up' before using them to replay a session.
2809 2809
2810 2810 The %logstart function for activating logging in mid-session is used as
2811 2811 follows:
2812 2812
2813 2813 %logstart [log_name [log_mode]]
2814 2814
2815 2815 If no name is given, it defaults to a file named 'log' in your
2816 2816 IPYTHONDIR directory, in 'rotate' mode (see below).
2817 2817
2818 2818 '%logstart name' saves to file 'name' in 'backup' mode. It saves your
2819 2819 history up to that point and then continues logging.
2820 2820
2821 2821 %logstart takes a second optional parameter: logging mode. This can be
2822 2822 one of (note that the modes are given unquoted):
2823 2823
2824 2824 * [over:] overwrite existing log_name.
2825 2825 * [backup:] rename (if exists) to log_name~ and start log_name.
2826 2826 * [append:] well, that says it.
2827 2827 * [rotate:] create rotating logs log_name.1~, log_name.2~, etc.
2828 2828
2829 2829 The %logoff and %logon functions allow you to temporarily stop and
2830 2830 resume logging to a file which had previously been started with
2831 2831 %logstart. They will fail (with an explanation) if you try to use them
2832 2832 before logging has been started.
2833 2833
2834 2834
2835 2835
2836 2836 System shell access
2837 2837 -------------------
2838 2838
2839 2839 Any input line beginning with a ! character is passed verbatim (minus
2840 2840 the !, of course) to the underlying operating system. For example,
2841 2841 typing !ls will run 'ls' in the current directory.
2842 2842
2843 2843 Manual capture of command output
2844 2844 --------------------------------
2845 2845
2846 2846 If the input line begins with two exclamation marks, !!, the command is
2847 2847 executed but its output is captured and returned as a python list, split
2848 2848 on newlines. Any output sent by the subprocess to standard error is
2849 2849 printed separately, so that the resulting list only captures standard
2850 2850 output. The !! syntax is a shorthand for the %sx magic command.
2851 2851
2852 2852 Finally, the %sc magic (short for 'shell capture') is similar to %sx,
2853 2853 but allowing more fine-grained control of the capture details, and
2854 2854 storing the result directly into a named variable. The direct use of
2855 2855 %sc is now deprecated, and you should ise the ``var = !cmd`` syntax
2856 2856 instead.
2857 2857
2858 2858 IPython also allows you to expand the value of python variables when
2859 2859 making system calls. Any python variable or expression which you prepend
2860 2860 with $ will get expanded before the system call is made::
2861 2861
2862 2862 In [1]: pyvar='Hello world'
2863 2863 In [2]: !echo "A python variable: $pyvar"
2864 2864 A python variable: Hello world
2865 2865
2866 2866 If you want the shell to actually see a literal $, you need to type it
2867 2867 twice::
2868 2868
2869 2869 In [3]: !echo "A system variable: $$HOME"
2870 2870 A system variable: /home/fperez
2871 2871
2872 2872 You can pass arbitrary expressions, though you'll need to delimit them
2873 2873 with {} if there is ambiguity as to the extent of the expression::
2874 2874
2875 2875 In [5]: x=10
2876 2876 In [6]: y=20
2877 2877 In [13]: !echo $x+y
2878 2878 10+y
2879 2879 In [7]: !echo ${x+y}
2880 2880 30
2881 2881
2882 2882 Even object attributes can be expanded::
2883 2883
2884 2884 In [12]: !echo $sys.argv
2885 2885 [/home/fperez/usr/bin/ipython]
2886 2886
2887 2887
2888 2888 System command aliases
2889 2889 ----------------------
2890 2890
2891 2891 The %alias magic function and the alias option in the ipythonrc
2892 2892 configuration file allow you to define magic functions which are in fact
2893 2893 system shell commands. These aliases can have parameters.
2894 2894
2895 2895 '%alias alias_name cmd' defines 'alias_name' as an alias for 'cmd'
2896 2896
2897 2897 Then, typing '%alias_name params' will execute the system command 'cmd
2898 2898 params' (from your underlying operating system).
2899 2899
2900 2900 You can also define aliases with parameters using %s specifiers (one per
2901 2901 parameter). The following example defines the %parts function as an
2902 2902 alias to the command 'echo first %s second %s' where each %s will be
2903 2903 replaced by a positional parameter to the call to %parts::
2904 2904
2905 2905 In [1]: alias parts echo first %s second %s
2906 2906 In [2]: %parts A B
2907 2907 first A second B
2908 2908 In [3]: %parts A
2909 2909 Incorrect number of arguments: 2 expected.
2910 2910 parts is an alias to: 'echo first %s second %s'
2911 2911
2912 2912 If called with no parameters, %alias prints the table of currently
2913 2913 defined aliases.
2914 2914
2915 2915 The %rehash/rehashx magics allow you to load your entire $PATH as
2916 2916 ipython aliases. See their respective docstrings (or sec. 6.2
2917 2917 <#sec:magic> for further details).
2918 2918
2919 2919
2920 2920
2921 2921 Recursive reload
2922 2922 ----------------
2923 2923
2924 2924 The dreload function does a recursive reload of a module: changes made
2925 2925 to the module since you imported will actually be available without
2926 2926 having to exit.
2927 2927
2928 2928
2929 2929 Verbose and colored exception traceback printouts
2930 2930 -------------------------------------------------
2931 2931
2932 2932 IPython provides the option to see very detailed exception tracebacks,
2933 2933 which can be especially useful when debugging large programs. You can
2934 2934 run any Python file with the %run function to benefit from these
2935 2935 detailed tracebacks. Furthermore, both normal and verbose tracebacks can
2936 2936 be colored (if your terminal supports it) which makes them much easier
2937 2937 to parse visually.
2938 2938
2939 2939 See the magic xmode and colors functions for details (just type %magic).
2940 2940
2941 2941 These features are basically a terminal version of Ka-Ping Yee's cgitb
2942 2942 module, now part of the standard Python library.
2943 2943
2944 2944
2945 2945
2946 2946 Input caching system
2947 2947 --------------------
2948 2948
2949 2949 IPython offers numbered prompts (In/Out) with input and output caching.
2950 2950 All input is saved and can be retrieved as variables (besides the usual
2951 2951 arrow key recall).
2952 2952
2953 2953 The following GLOBAL variables always exist (so don't overwrite them!):
2954 2954 _i: stores previous input. _ii: next previous. _iii: next-next previous.
2955 2955 _ih : a list of all input _ih[n] is the input from line n and this list
2956 2956 is aliased to the global variable In. If you overwrite In with a
2957 2957 variable of your own, you can remake the assignment to the internal list
2958 2958 with a simple 'In=_ih'.
2959 2959
2960 2960 Additionally, global variables named _i<n> are dynamically created (<n>
2961 2961 being the prompt counter), such that
2962 2962 _i<n> == _ih[<n>] == In[<n>].
2963 2963
2964 2964 For example, what you typed at prompt 14 is available as _i14, _ih[14]
2965 2965 and In[14].
2966 2966
2967 2967 This allows you to easily cut and paste multi line interactive prompts
2968 2968 by printing them out: they print like a clean string, without prompt
2969 2969 characters. You can also manipulate them like regular variables (they
2970 2970 are strings), modify or exec them (typing 'exec _i9' will re-execute the
2971 2971 contents of input prompt 9, 'exec In[9:14]+In[18]' will re-execute lines
2972 2972 9 through 13 and line 18).
2973 2973
2974 2974 You can also re-execute multiple lines of input easily by using the
2975 2975 magic %macro function (which automates the process and allows
2976 2976 re-execution without having to type 'exec' every time). The macro system
2977 2977 also allows you to re-execute previous lines which include magic
2978 2978 function calls (which require special processing). Type %macro? or see
2979 2979 sec. 6.2 <#sec:magic> for more details on the macro system.
2980 2980
2981 2981 A history function %hist allows you to see any part of your input
2982 2982 history by printing a range of the _i variables.
2983 2983
2984 2984 Output caching system
2985 2985 ---------------------
2986 2986
2987 2987 For output that is returned from actions, a system similar to the input
2988 2988 cache exists but using _ instead of _i. Only actions that produce a
2989 2989 result (NOT assignments, for example) are cached. If you are familiar
2990 2990 with Mathematica, IPython's _ variables behave exactly like
2991 2991 Mathematica's % variables.
2992 2992
2993 2993 The following GLOBAL variables always exist (so don't overwrite them!):
2994 2994
2995 2995 * [_] (a single underscore) : stores previous output, like Python's
2996 2996 default interpreter.
2997 2997 * [__] (two underscores): next previous.
2998 2998 * [___] (three underscores): next-next previous.
2999 2999
3000 3000 Additionally, global variables named _<n> are dynamically created (<n>
3001 3001 being the prompt counter), such that the result of output <n> is always
3002 3002 available as _<n> (don't use the angle brackets, just the number, e.g.
3003 3003 _21).
3004 3004
3005 3005 These global variables are all stored in a global dictionary (not a
3006 3006 list, since it only has entries for lines which returned a result)
3007 3007 available under the names _oh and Out (similar to _ih and In). So the
3008 3008 output from line 12 can be obtained as _12, Out[12] or _oh[12]. If you
3009 3009 accidentally overwrite the Out variable you can recover it by typing
3010 3010 'Out=_oh' at the prompt.
3011 3011
3012 3012 This system obviously can potentially put heavy memory demands on your
3013 3013 system, since it prevents Python's garbage collector from removing any
3014 3014 previously computed results. You can control how many results are kept
3015 3015 in memory with the option (at the command line or in your ipythonrc
3016 3016 file) cache_size. If you set it to 0, the whole system is completely
3017 3017 disabled and the prompts revert to the classic '>>>' of normal Python.
3018 3018
3019 3019
3020 3020 Directory history
3021 3021 -----------------
3022 3022
3023 3023 Your history of visited directories is kept in the global list _dh, and
3024 3024 the magic %cd command can be used to go to any entry in that list. The
3025 3025 %dhist command allows you to view this history. do ``cd -<TAB`` to
3026 3026 conventiently view the directory history.
3027 3027
3028 3028
3029 3029 Automatic parentheses and quotes
3030 3030 --------------------------------
3031 3031
3032 3032 These features were adapted from Nathan Gray's LazyPython. They are
3033 3033 meant to allow less typing for common situations.
3034 3034
3035 3035
3036 3036 Automatic parentheses
3037 3037 ---------------------
3038 3038
3039 3039 Callable objects (i.e. functions, methods, etc) can be invoked like this
3040 3040 (notice the commas between the arguments)::
3041 3041
3042 3042 >>> callable_ob arg1, arg2, arg3
3043 3043
3044 3044 and the input will be translated to this::
3045 3045
3046 3046 -> callable_ob(arg1, arg2, arg3)
3047 3047
3048 3048 You can force automatic parentheses by using '/' as the first character
3049 3049 of a line. For example::
3050 3050
3051 3051 >>> /globals # becomes 'globals()'
3052 3052
3053 3053 Note that the '/' MUST be the first character on the line! This won't work::
3054 3054
3055 3055 >>> print /globals # syntax error
3056 3056
3057 3057 In most cases the automatic algorithm should work, so you should rarely
3058 3058 need to explicitly invoke /. One notable exception is if you are trying
3059 3059 to call a function with a list of tuples as arguments (the parenthesis
3060 3060 will confuse IPython)::
3061 3061
3062 3062 In [1]: zip (1,2,3),(4,5,6) # won't work
3063 3063
3064 3064 but this will work::
3065 3065
3066 3066 In [2]: /zip (1,2,3),(4,5,6)
3067 3067 ---> zip ((1,2,3),(4,5,6))
3068 3068 Out[2]= [(1, 4), (2, 5), (3, 6)]
3069 3069
3070 3070 IPython tells you that it has altered your command line by displaying
3071 3071 the new command line preceded by ->. e.g.::
3072 3072
3073 3073 In [18]: callable list
3074 3074 ----> callable (list)
3075 3075
3076 3076
3077 3077 Automatic quoting
3078 3078 -----------------
3079 3079
3080 3080 You can force automatic quoting of a function's arguments by using ','
3081 3081 or ';' as the first character of a line. For example::
3082 3082
3083 3083 >>> ,my_function /home/me # becomes my_function("/home/me")
3084 3084
3085 3085 If you use ';' instead, the whole argument is quoted as a single string
3086 3086 (while ',' splits on whitespace)::
3087 3087
3088 3088 >>> ,my_function a b c # becomes my_function("a","b","c")
3089 3089
3090 3090 >>> ;my_function a b c # becomes my_function("a b c")
3091 3091
3092 3092 Note that the ',' or ';' MUST be the first character on the line! This
3093 3093 won't work::
3094 3094
3095 3095 >>> x = ,my_function /home/me # syntax error
3096 3096
3097 3097 Customization
3098 3098 =============
3099 3099
3100 3100 There are 2 ways to configure IPython - the old way of using ipythonrc
3101 3101 files (an INI-file like format), and the new way that involves editing
3102 3102 your ipy_user_conf.py. Both configuration systems work at the same
3103 3103 time, so you can set your options in both, but if you are hesitating
3104 3104 about which alternative to choose, we recommend the ipy_user_conf.py
3105 3105 approach, as it will give you more power and control in the long
3106 3106 run. However, there are few options such as pylab_import_all that can
3107 3107 only be specified in ipythonrc file or command line - the reason for
3108 3108 this is that they are needed before IPython has been started up, and
3109 3109 the IPApi object used in ipy_user_conf.py is not yet available at that
3110 3110 time. A hybrid approach of specifying a few options in ipythonrc and
3111 3111 doing the more advanced configuration in ipy_user_conf.py is also
3112 3112 possible.
3113 3113
3114 3114 The ipythonrc approach
3115 3115 ----------------------
3116 3116
3117 3117 As we've already mentioned, IPython reads a configuration file which can
3118 3118 be specified at the command line (-rcfile) or which by default is
3119 3119 assumed to be called ipythonrc. Such a file is looked for in the current
3120 3120 directory where IPython is started and then in your IPYTHONDIR, which
3121 3121 allows you to have local configuration files for specific projects. In
3122 3122 this section we will call these types of configuration files simply
3123 3123 rcfiles (short for resource configuration file).
3124 3124
3125 3125 The syntax of an rcfile is one of key-value pairs separated by
3126 3126 whitespace, one per line. Lines beginning with a # are ignored as
3127 3127 comments, but comments can not be put on lines with data (the parser is
3128 3128 fairly primitive). Note that these are not python files, and this is
3129 3129 deliberate, because it allows us to do some things which would be quite
3130 3130 tricky to implement if they were normal python files.
3131 3131
3132 3132 First, an rcfile can contain permanent default values for almost all
3133 3133 command line options (except things like -help or -Version). Sec 5.2
3134 3134 <node5.html#sec:cmd-line-opts> contains a description of all
3135 3135 command-line options. However, values you explicitly specify at the
3136 3136 command line override the values defined in the rcfile.
3137 3137
3138 3138 Besides command line option values, the rcfile can specify values for
3139 3139 certain extra special options which are not available at the command
3140 3140 line. These options are briefly described below.
3141 3141
3142 3142 Each of these options may appear as many times as you need it in the file.
3143 3143
3144 3144 * [include <file1> <file2> ...:] you can name other rcfiles you want
3145 3145 to recursively load up to 15 levels (don't use the <> brackets in
3146 3146 your names!). This feature allows you to define a 'base' rcfile
3147 3147 with general options and special-purpose files which can be loaded
3148 3148 only when needed with particular configuration options. To make
3149 3149 this more convenient, IPython accepts the -profile <name> option
3150 3150 (abbreviates to -p <name>) which tells it to look for an rcfile
3151 3151 named ipythonrc-<name>.
3152 3152 * [import_mod <mod1> <mod2> ...:] import modules with 'import
3153 3153 <mod1>,<mod2>,...'
3154 3154 * [import_some <mod> <f1> <f2> ...:] import functions with 'from
3155 3155 <mod> import <f1>,<f2>,...'
3156 3156 * [import_all <mod1> <mod2> ...:] for each module listed import
3157 3157 functions with ``from <mod> import *``.
3158 3158 * [execute <python code>:] give any single-line python code to be
3159 3159 executed.
3160 3160 * [execfile <filename>:] execute the python file given with an
3161 3161 'execfile(filename)' command. Username expansion is performed on
3162 3162 the given names. So if you need any amount of extra fancy
3163 3163 customization that won't fit in any of the above 'canned' options,
3164 3164 you can just put it in a separate python file and execute it.
3165 3165 * [alias <alias_def>:] this is equivalent to calling
3166 3166 '%alias <alias_def>' at the IPython command line. This way, from
3167 3167 within IPython you can do common system tasks without having to
3168 3168 exit it or use the ! escape. IPython isn't meant to be a shell
3169 3169 replacement, but it is often very useful to be able to do things
3170 3170 with files while testing code. This gives you the flexibility to
3171 3171 have within IPython any aliases you may be used to under your
3172 3172 normal system shell.
3173 3173
3174 3174
3175 3175 Sample ipythonrc file
3176 3176 ---------------------
3177 3177
3178 3178 The default rcfile, called ipythonrc and supplied in your IPYTHONDIR
3179 3179 directory contains lots of comments on all of these options. We
3180 3180 reproduce it here for reference::
3181 3181
3182 3182
3183 3183 # -*- Mode: Shell-Script -*- Not really, but shows comments correctly
3184 3184 # $Id: ipythonrc 2156 2007-03-19 02:32:19Z fperez $
3185 3185
3186 3186 #***************************************************************************
3187 3187 #
3188 3188 # Configuration file for IPython -- ipythonrc format
3189 3189 #
3190 3190 # ===========================================================
3191 3191 # Deprecation note: you should look into modifying ipy_user_conf.py (located
3192 3192 # in ~/.ipython or ~/_ipython, depending on your platform) instead, it's a
3193 3193 # more flexible and robust (and better supported!) configuration
3194 3194 # method.
3195 3195 # ===========================================================
3196 3196 #
3197 3197 # The format of this file is simply one of 'key value' lines.
3198 3198 # Lines containing only whitespace at the beginning and then a # are ignored
3199 3199 # as comments. But comments can NOT be put on lines with data.
3200 3200
3201 3201 # The meaning and use of each key are explained below.
3202 3202
3203 3203 #---------------------------------------------------------------------------
3204 3204 # Section: included files
3205 3205
3206 3206 # Put one or more *config* files (with the syntax of this file) you want to
3207 3207 # include. For keys with a unique value the outermost file has precedence. For
3208 3208 # keys with multiple values, they all get assembled into a list which then
3209 3209 # gets loaded by IPython.
3210 3210
3211 3211 # In this file, all lists of things should simply be space-separated.
3212 3212
3213 3213 # This allows you to build hierarchies of files which recursively load
3214 3214 # lower-level services. If this is your main ~/.ipython/ipythonrc file, you
3215 3215 # should only keep here basic things you always want available. Then you can
3216 3216 # include it in every other special-purpose config file you create.
3217 3217 include
3218 3218
3219 3219 #---------------------------------------------------------------------------
3220 3220 # Section: startup setup
3221 3221
3222 3222 # These are mostly things which parallel a command line option of the same
3223 3223 # name.
3224 3224
3225 3225 # Keys in this section should only appear once. If any key from this section
3226 3226 # is encountered more than once, the last value remains, all earlier ones get
3227 3227 # discarded.
3228 3228
3229 3229
3230 3230 # Automatic calling of callable objects. If set to 1 or 2, callable objects
3231 3231 # are automatically called when invoked at the command line, even if you don't
3232 3232 # type parentheses. IPython adds the parentheses for you. For example:
3233 3233
3234 3234 #In [1]: str 45
3235 3235 #------> str(45)
3236 3236 #Out[1]: '45'
3237 3237
3238 3238 # IPython reprints your line with '---->' indicating that it added
3239 3239 # parentheses. While this option is very convenient for interactive use, it
3240 3240 # may occasionally cause problems with objects which have side-effects if
3241 3241 # called unexpectedly.
3242 3242
3243 3243 # The valid values for autocall are:
3244 3244
3245 3245 # autocall 0 -> disabled (you can toggle it at runtime with the %autocall magic)
3246 3246
3247 3247 # autocall 1 -> active, but do not apply if there are no arguments on the line.
3248 3248
3249 3249 # In this mode, you get:
3250 3250
3251 3251 #In [1]: callable
3252 3252 #Out[1]: <built-in function callable>
3253 3253
3254 3254 #In [2]: callable 'hello'
3255 3255 #------> callable('hello')
3256 3256 #Out[2]: False
3257 3257
3258 3258 # 2 -> Active always. Even if no arguments are present, the callable object
3259 3259 # is called:
3260 3260
3261 3261 #In [4]: callable
3262 3262 #------> callable()
3263 3263
3264 3264 # Note that even with autocall off, you can still use '/' at the start of a
3265 3265 # line to treat the first argument on the command line as a function and add
3266 3266 # parentheses to it:
3267 3267
3268 3268 #In [8]: /str 43
3269 3269 #------> str(43)
3270 3270 #Out[8]: '43'
3271 3271
3272 3272 autocall 1
3273 3273
3274 3274 # Auto-edit syntax errors. When you use the %edit magic in ipython to edit
3275 3275 # source code (see the 'editor' variable below), it is possible that you save
3276 3276 # a file with syntax errors in it. If this variable is true, IPython will ask
3277 3277 # you whether to re-open the editor immediately to correct such an error.
3278 3278
3279 3279 autoedit_syntax 0
3280 3280
3281 3281 # Auto-indent. IPython can recognize lines ending in ':' and indent the next
3282 3282 # line, while also un-indenting automatically after 'raise' or 'return'.
3283 3283
3284 3284 # This feature uses the readline library, so it will honor your ~/.inputrc
3285 3285 # configuration (or whatever file your INPUTRC variable points to). Adding
3286 3286 # the following lines to your .inputrc file can make indent/unindenting more
3287 3287 # convenient (M-i indents, M-u unindents):
3288 3288
3289 3289 # $if Python
3290 3290 # "\M-i": " "
3291 3291 # "\M-u": "\d\d\d\d"
3292 3292 # $endif
3293 3293
3294 3294 # The feature is potentially a bit dangerous, because it can cause problems
3295 3295 # with pasting of indented code (the pasted code gets re-indented on each
3296 3296 # line). But it's a huge time-saver when working interactively. The magic
3297 3297 # function %autoindent allows you to toggle it on/off at runtime.
3298 3298
3299 3299 autoindent 1
3300 3300
3301 3301 # Auto-magic. This gives you access to all the magic functions without having
3302 3302 # to prepend them with an % sign. If you define a variable with the same name
3303 3303 # as a magic function (say who=1), you will need to access the magic function
3304 3304 # with % (%who in this example). However, if later you delete your variable
3305 3305 # (del who), you'll recover the automagic calling form.
3306 3306
3307 3307 # Considering that many magic functions provide a lot of shell-like
3308 3308 # functionality, automagic gives you something close to a full Python+system
3309 3309 # shell environment (and you can extend it further if you want).
3310 3310
3311 3311 automagic 1
3312 3312
3313 3313 # Size of the output cache. After this many entries are stored, the cache will
3314 3314 # get flushed. Depending on the size of your intermediate calculations, you
3315 3315 # may have memory problems if you make it too big, since keeping things in the
3316 3316 # cache prevents Python from reclaiming the memory for old results. Experiment
3317 3317 # with a value that works well for you.
3318 3318
3319 3319 # If you choose cache_size 0 IPython will revert to python's regular >>>
3320 3320 # unnumbered prompt. You will still have _, __ and ___ for your last three
3321 3321 # results, but that will be it. No dynamic _1, _2, etc. will be created. If
3322 3322 # you are running on a slow machine or with very limited memory, this may
3323 3323 # help.
3324 3324
3325 3325 cache_size 1000
3326 3326
3327 3327 # Classic mode: Setting 'classic 1' you lose many of IPython niceties,
3328 3328 # but that's your choice! Classic 1 -> same as IPython -classic.
3329 3329 # Note that this is _not_ the normal python interpreter, it's simply
3330 3330 # IPython emulating most of the classic interpreter's behavior.
3331 3331 classic 0
3332 3332
3333 3333 # colors - Coloring option for prompts and traceback printouts.
3334 3334
3335 3335 # Currently available schemes: NoColor, Linux, LightBG.
3336 3336
3337 3337 # This option allows coloring the prompts and traceback printouts. This
3338 3338 # requires a terminal which can properly handle color escape sequences. If you
3339 3339 # are having problems with this, use the NoColor scheme (uses no color escapes
3340 3340 # at all).
3341 3341
3342 3342 # The Linux option works well in linux console type environments: dark
3343 3343 # background with light fonts.
3344 3344
3345 3345 # LightBG is similar to Linux but swaps dark/light colors to be more readable
3346 3346 # in light background terminals.
3347 3347
3348 3348 # keep uncommented only the one you want:
3349 3349 colors Linux
3350 3350 #colors LightBG
3351 3351 #colors NoColor
3352 3352
3353 3353 ########################
3354 3354 # Note to Windows users
3355 3355 #
3356 3356 # Color and readline support is avaialble to Windows users via Gary Bishop's
3357 3357 # readline library. You can find Gary's tools at
3358 3358 # http://sourceforge.net/projects/uncpythontools.
3359 3359 # Note that his readline module requires in turn the ctypes library, available
3360 3360 # at http://starship.python.net/crew/theller/ctypes.
3361 3361 ########################
3362 3362
3363 3363 # color_info: IPython can display information about objects via a set of
3364 3364 # functions, and optionally can use colors for this, syntax highlighting
3365 3365 # source code and various other elements. This information is passed through a
3366 3366 # pager (it defaults to 'less' if $PAGER is not set).
3367 3367
3368 3368 # If your pager has problems, try to setting it to properly handle escapes
3369 3369 # (see the less manpage for detail), or disable this option. The magic
3370 3370 # function %color_info allows you to toggle this interactively for testing.
3371 3371
3372 3372 color_info 1
3373 3373
3374 3374 # confirm_exit: set to 1 if you want IPython to confirm when you try to exit
3375 3375 # with an EOF (Control-d in Unix, Control-Z/Enter in Windows). Note that using
3376 3376 # the magic functions %Exit or %Quit you can force a direct exit, bypassing
3377 3377 # any confirmation.
3378 3378
3379 3379 confirm_exit 1
3380 3380
3381 3381 # Use deep_reload() as a substitute for reload() by default. deep_reload() is
3382 3382 # still available as dreload() and appears as a builtin.
3383 3383
3384 3384 deep_reload 0
3385 3385
3386 3386 # Which editor to use with the %edit command. If you leave this at 0, IPython
3387 3387 # will honor your EDITOR environment variable. Since this editor is invoked on
3388 3388 # the fly by ipython and is meant for editing small code snippets, you may
3389 3389 # want to use a small, lightweight editor here.
3390 3390
3391 3391 # For Emacs users, setting up your Emacs server properly as described in the
3392 3392 # manual is a good idea. An alternative is to use jed, a very light editor
3393 3393 # with much of the feel of Emacs (though not as powerful for heavy-duty work).
3394 3394
3395 3395 editor 0
3396 3396
3397 3397 # log 1 -> same as ipython -log. This automatically logs to ./ipython.log
3398 3398 log 0
3399 3399
3400 3400 # Same as ipython -Logfile YourLogfileName.
3401 3401 # Don't use with log 1 (use one or the other)
3402 3402 logfile ''
3403 3403
3404 3404 # banner 0 -> same as ipython -nobanner
3405 3405 banner 1
3406 3406
3407 3407 # messages 0 -> same as ipython -nomessages
3408 3408 messages 1
3409 3409
3410 3410 # Automatically call the pdb debugger after every uncaught exception. If you
3411 3411 # are used to debugging using pdb, this puts you automatically inside of it
3412 3412 # after any call (either in IPython or in code called by it) which triggers an
3413 3413 # exception which goes uncaught.
3414 3414 pdb 0
3415 3415
3416 3416 # Enable the pprint module for printing. pprint tends to give a more readable
3417 3417 # display (than print) for complex nested data structures.
3418 3418 pprint 1
3419 3419
3420 3420 # Prompt strings
3421 3421
3422 3422 # Most bash-like escapes can be used to customize IPython's prompts, as well as
3423 3423 # a few additional ones which are IPython-specific. All valid prompt escapes
3424 3424 # are described in detail in the Customization section of the IPython HTML/PDF
3425 3425 # manual.
3426 3426
3427 3427 # Use \# to represent the current prompt number, and quote them to protect
3428 3428 # spaces.
3429 3429 prompt_in1 'In [\#]: '
3430 3430
3431 3431 # \D is replaced by as many dots as there are digits in the
3432 3432 # current value of \#.
3433 3433 prompt_in2 ' .\D.: '
3434 3434
3435 3435 prompt_out 'Out[\#]: '
3436 3436
3437 3437 # Select whether to left-pad the output prompts to match the length of the
3438 3438 # input ones. This allows you for example to use a simple '>' as an output
3439 3439 # prompt, and yet have the output line up with the input. If set to false,
3440 3440 # the output prompts will be unpadded (flush left).
3441 3441 prompts_pad_left 1
3442 3442
3443 3443 # Pylab support: when ipython is started with the -pylab switch, by default it
3444 3444 # executes 'from matplotlib.pylab import *'. Set this variable to false if you
3445 3445 # want to disable this behavior.
3446 3446
3447 3447 # For details on pylab, see the matplotlib website:
3448 3448 # http://matplotlib.sf.net
3449 3449 pylab_import_all 1
3450 3450
3451 3451
3452 3452 # quick 1 -> same as ipython -quick
3453 3453 quick 0
3454 3454
3455 3455 # Use the readline library (1) or not (0). Most users will want this on, but
3456 3456 # if you experience strange problems with line management (mainly when using
3457 3457 # IPython inside Emacs buffers) you may try disabling it. Not having it on
3458 3458 # prevents you from getting command history with the arrow keys, searching and
3459 3459 # name completion using TAB.
3460 3460
3461 3461 readline 1
3462 3462
3463 3463 # Screen Length: number of lines of your screen. This is used to control
3464 3464 # printing of very long strings. Strings longer than this number of lines will
3465 3465 # be paged with the less command instead of directly printed.
3466 3466
3467 3467 # The default value for this is 0, which means IPython will auto-detect your
3468 3468 # screen size every time it needs to print. If for some reason this isn't
3469 3469 # working well (it needs curses support), specify it yourself. Otherwise don't
3470 3470 # change the default.
3471 3471
3472 3472 screen_length 0
3473 3473
3474 3474 # Prompt separators for input and output.
3475 3475 # Use \n for newline explicitly, without quotes.
3476 3476 # Use 0 (like at the cmd line) to turn off a given separator.
3477 3477
3478 3478 # The structure of prompt printing is:
3479 3479 # (SeparateIn)Input....
3480 3480 # (SeparateOut)Output...
3481 3481 # (SeparateOut2), # that is, no newline is printed after Out2
3482 3482 # By choosing these you can organize your output any way you want.
3483 3483
3484 3484 separate_in \n
3485 3485 separate_out 0
3486 3486 separate_out2 0
3487 3487
3488 3488 # 'nosep 1' is a shorthand for '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'.
3489 3489 # Simply removes all input/output separators, overriding the choices above.
3490 3490 nosep 0
3491 3491
3492 3492 # Wildcard searches - IPython has a system for searching names using
3493 3493 # shell-like wildcards; type %psearch? for details. This variables sets
3494 3494 # whether by default such searches should be case sensitive or not. You can
3495 3495 # always override the default at the system command line or the IPython
3496 3496 # prompt.
3497 3497
3498 3498 wildcards_case_sensitive 1
3499 3499
3500 3500 # Object information: at what level of detail to display the string form of an
3501 3501 # object. If set to 0, ipython will compute the string form of any object X,
3502 3502 # by calling str(X), when X? is typed. If set to 1, str(X) will only be
3503 3503 # computed when X?? is given, and if set to 2 or higher, it will never be
3504 3504 # computed (there is no X??? level of detail). This is mostly of use to
3505 3505 # people who frequently manipulate objects whose string representation is
3506 3506 # extremely expensive to compute.
3507 3507
3508 3508 object_info_string_level 0
3509 3509
3510 3510 # xmode - Exception reporting mode.
3511 3511
3512 3512 # Valid modes: Plain, Context and Verbose.
3513 3513
3514 3514 # Plain: similar to python's normal traceback printing.
3515 3515
3516 3516 # Context: prints 5 lines of context source code around each line in the
3517 3517 # traceback.
3518 3518
3519 3519 # Verbose: similar to Context, but additionally prints the variables currently
3520 3520 # visible where the exception happened (shortening their strings if too
3521 3521 # long). This can potentially be very slow, if you happen to have a huge data
3522 3522 # structure whose string representation is complex to compute. Your computer
3523 3523 # may appear to freeze for a while with cpu usage at 100%. If this occurs, you
3524 3524 # can cancel the traceback with Ctrl-C (maybe hitting it more than once).
3525 3525
3526 3526 #xmode Plain
3527 3527 xmode Context
3528 3528 #xmode Verbose
3529 3529
3530 3530 # multi_line_specials: if true, allow magics, aliases and shell escapes (via
3531 3531 # !cmd) to be used in multi-line input (like for loops). For example, if you
3532 3532 # have this active, the following is valid in IPython:
3533 3533 #
3534 3534 #In [17]: for i in range(3):
3535 3535 # ....: mkdir $i
3536 3536 # ....: !touch $i/hello
3537 3537 # ....: ls -l $i
3538 3538
3539 3539 multi_line_specials 1
3540 3540
3541 3541
3542 3542 # System calls: When IPython makes system calls (e.g. via special syntax like
3543 3543 # !cmd or !!cmd, or magics like %sc or %sx), it can print the command it is
3544 3544 # executing to standard output, prefixed by a header string.
3545 3545
3546 3546 system_header "IPython system call: "
3547 3547
3548 3548 system_verbose 1
3549 3549
3550 3550 # wxversion: request a specific wxPython version (used for -wthread)
3551 3551
3552 3552 # Set this to the value of wxPython you want to use, but note that this
3553 3553 # feature requires you to have the wxversion Python module to work. If you
3554 3554 # don't have the wxversion module (try 'import wxversion' at the prompt to
3555 3555 # check) or simply want to leave the system to pick up the default, leave this
3556 3556 # variable at 0.
3557 3557
3558 3558 wxversion 0
3559 3559
3560 3560 #---------------------------------------------------------------------------
3561 3561 # Section: Readline configuration (readline is not available for MS-Windows)
3562 3562
3563 3563 # This is done via the following options:
3564 3564
3565 3565 # (i) readline_parse_and_bind: this option can appear as many times as you
3566 3566 # want, each time defining a string to be executed via a
3567 3567 # readline.parse_and_bind() command. The syntax for valid commands of this
3568 3568 # kind can be found by reading the documentation for the GNU readline library,
3569 3569 # as these commands are of the kind which readline accepts in its
3570 3570 # configuration file.
3571 3571
3572 3572 # The TAB key can be used to complete names at the command line in one of two
3573 3573 # ways: 'complete' and 'menu-complete'. The difference is that 'complete' only
3574 3574 # completes as much as possible while 'menu-complete' cycles through all
3575 3575 # possible completions. Leave the one you prefer uncommented.
3576 3576
3577 3577 readline_parse_and_bind tab: complete
3578 3578 #readline_parse_and_bind tab: menu-complete
3579 3579
3580 3580 # This binds Control-l to printing the list of all possible completions when
3581 3581 # there is more than one (what 'complete' does when hitting TAB twice, or at
3582 3582 # the first TAB if show-all-if-ambiguous is on)
3583 3583 readline_parse_and_bind "\C-l": possible-completions
3584 3584
3585 3585 # This forces readline to automatically print the above list when tab
3586 3586 # completion is set to 'complete'. You can still get this list manually by
3587 3587 # using the key bound to 'possible-completions' (Control-l by default) or by
3588 3588 # hitting TAB twice. Turning this on makes the printing happen at the first
3589 3589 # TAB.
3590 3590 readline_parse_and_bind set show-all-if-ambiguous on
3591 3591
3592 3592 # If you have TAB set to complete names, you can rebind any key (Control-o by
3593 3593 # default) to insert a true TAB character.
3594 3594 readline_parse_and_bind "\C-o": tab-insert
3595 3595
3596 3596 # These commands allow you to indent/unindent easily, with the 4-space
3597 3597 # convention of the Python coding standards. Since IPython's internal
3598 3598 # auto-indent system also uses 4 spaces, you should not change the number of
3599 3599 # spaces in the code below.
3600 3600 readline_parse_and_bind "\M-i": " "
3601 3601 readline_parse_and_bind "\M-o": "\d\d\d\d"
3602 3602 readline_parse_and_bind "\M-I": "\d\d\d\d"
3603 3603
3604 3604 # Bindings for incremental searches in the history. These searches use the
3605 3605 # string typed so far on the command line and search anything in the previous
3606 3606 # input history containing them.
3607 3607 readline_parse_and_bind "\C-r": reverse-search-history
3608 3608 readline_parse_and_bind "\C-s": forward-search-history
3609 3609
3610 3610 # Bindings for completing the current line in the history of previous
3611 3611 # commands. This allows you to recall any previous command by typing its first
3612 3612 # few letters and hitting Control-p, bypassing all intermediate commands which
3613 3613 # may be in the history (much faster than hitting up-arrow 50 times!)
3614 3614 readline_parse_and_bind "\C-p": history-search-backward
3615 3615 readline_parse_and_bind "\C-n": history-search-forward
3616 3616
3617 3617 # I also like to have the same functionality on the plain arrow keys. If you'd
3618 3618 # rather have the arrows use all the history (and not just match what you've
3619 3619 # typed so far), comment out or delete the next two lines.
3620 3620 readline_parse_and_bind "\e[A": history-search-backward
3621 3621 readline_parse_and_bind "\e[B": history-search-forward
3622 3622
3623 3623 # These are typically on by default under *nix, but not win32.
3624 3624 readline_parse_and_bind "\C-k": kill-line
3625 3625 readline_parse_and_bind "\C-u": unix-line-discard
3626 3626
3627 3627 # (ii) readline_remove_delims: a string of characters to be removed from the
3628 3628 # default word-delimiters list used by readline, so that completions may be
3629 3629 # performed on strings which contain them.
3630 3630
3631 3631 readline_remove_delims -/~
3632 3632
3633 3633 # (iii) readline_merge_completions: whether to merge the result of all
3634 3634 # possible completions or not. If true, IPython will complete filenames,
3635 3635 # python names and aliases and return all possible completions. If you set it
3636 3636 # to false, each completer is used at a time, and only if it doesn't return
3637 3637 # any completions is the next one used.
3638 3638
3639 3639 # The default order is: [python_matches, file_matches, alias_matches]
3640 3640
3641 3641 readline_merge_completions 1
3642 3642
3643 3643 # (iv) readline_omit__names: normally hitting <tab> after a '.' in a name
3644 3644 # will complete all attributes of an object, including all the special methods
3645 3645 # whose names start with single or double underscores (like __getitem__ or
3646 3646 # __class__).
3647 3647
3648 3648 # This variable allows you to control this completion behavior:
3649 3649
3650 3650 # readline_omit__names 1 -> completion will omit showing any names starting
3651 3651 # with two __, but it will still show names starting with one _.
3652 3652
3653 3653 # readline_omit__names 2 -> completion will omit all names beginning with one
3654 3654 # _ (which obviously means filtering out the double __ ones).
3655 3655
3656 3656 # Even when this option is set, you can still see those names by explicitly
3657 3657 # typing a _ after the period and hitting <tab>: 'name._<tab>' will always
3658 3658 # complete attribute names starting with '_'.
3659 3659
3660 3660 # This option is off by default so that new users see all attributes of any
3661 3661 # objects they are dealing with.
3662 3662
3663 3663 readline_omit__names 0
3664 3664
3665 3665 #---------------------------------------------------------------------------
3666 3666 # Section: modules to be loaded with 'import ...'
3667 3667
3668 3668 # List, separated by spaces, the names of the modules you want to import
3669 3669
3670 3670 # Example:
3671 3671 # import_mod sys os
3672 3672 # will produce internally the statements
3673 3673 # import sys
3674 3674 # import os
3675 3675
3676 3676 # Each import is executed in its own try/except block, so if one module
3677 3677 # fails to load the others will still be ok.
3678 3678
3679 3679 import_mod
3680 3680
3681 3681 #---------------------------------------------------------------------------
3682 3682 # Section: modules to import some functions from: 'from ... import ...'
3683 3683
3684 3684 # List, one per line, the modules for which you want only to import some
3685 3685 # functions. Give the module name first and then the name of functions to be
3686 3686 # imported from that module.
3687 3687
3688 3688 # Example:
3689 3689
3690 3690 # import_some IPython.genutils timing timings
3691 3691 # will produce internally the statement
3692 3692 # from IPython.genutils import timing, timings
3693 3693
3694 3694 # timing() and timings() are two IPython utilities for timing the execution of
3695 3695 # your own functions, which you may find useful. Just commment out the above
3696 3696 # line if you want to test them.
3697 3697
3698 3698 # If you have more than one modules_some line, each gets its own try/except
3699 3699 # block (like modules, see above).
3700 3700
3701 3701 import_some
3702 3702
3703 3703 #---------------------------------------------------------------------------
3704 3704 # Section: modules to import all from : 'from ... import *'
3705 3705
3706 3706 # List (same syntax as import_mod above) those modules for which you want to
3707 3707 # import all functions. Remember, this is a potentially dangerous thing to do,
3708 3708 # since it is very easy to overwrite names of things you need. Use with
3709 3709 # caution.
3710 3710
3711 3711 # Example:
3712 3712 # import_all sys os
3713 3713 # will produce internally the statements
3714 3714 # from sys import *
3715 3715 # from os import *
3716 3716
3717 3717 # As before, each will be called in a separate try/except block.
3718 3718
3719 3719 import_all
3720 3720
3721 3721 #---------------------------------------------------------------------------
3722 3722 # Section: Python code to execute.
3723 3723
3724 3724 # Put here code to be explicitly executed (keep it simple!)
3725 3725 # Put one line of python code per line. All whitespace is removed (this is a
3726 3726 # feature, not a bug), so don't get fancy building loops here.
3727 3727 # This is just for quick convenient creation of things you want available.
3728 3728
3729 3729 # Example:
3730 3730 # execute x = 1
3731 3731 # execute print 'hello world'; y = z = 'a'
3732 3732 # will produce internally
3733 3733 # x = 1
3734 3734 # print 'hello world'; y = z = 'a'
3735 3735 # and each *line* (not each statement, we don't do python syntax parsing) is
3736 3736 # executed in its own try/except block.
3737 3737
3738 3738 execute
3739 3739
3740 3740 # Note for the adventurous: you can use this to define your own names for the
3741 3741 # magic functions, by playing some namespace tricks:
3742 3742
3743 3743 # execute __IPYTHON__.magic_pf = __IPYTHON__.magic_profile
3744 3744
3745 3745 # defines %pf as a new name for %profile.
3746 3746
3747 3747 #---------------------------------------------------------------------------
3748 3748 # Section: Pyhton files to load and execute.
3749 3749
3750 3750 # Put here the full names of files you want executed with execfile(file). If
3751 3751 # you want complicated initialization, just write whatever you want in a
3752 3752 # regular python file and load it from here.
3753 3753
3754 3754 # Filenames defined here (which *must* include the extension) are searched for
3755 3755 # through all of sys.path. Since IPython adds your .ipython directory to
3756 3756 # sys.path, they can also be placed in your .ipython dir and will be
3757 3757 # found. Otherwise (if you want to execute things not in .ipyton nor in
3758 3758 # sys.path) give a full path (you can use ~, it gets expanded)
3759 3759
3760 3760 # Example:
3761 3761 # execfile file1.py ~/file2.py
3762 3762 # will generate
3763 3763 # execfile('file1.py')
3764 3764 # execfile('_path_to_your_home/file2.py')
3765 3765
3766 3766 # As before, each file gets its own try/except block.
3767 3767
3768 3768 execfile
3769 3769
3770 3770 # If you are feeling adventurous, you can even add functionality to IPython
3771 3771 # through here. IPython works through a global variable called __ip which
3772 3772 # exists at the time when these files are read. If you know what you are doing
3773 3773 # (read the source) you can add functions to __ip in files loaded here.
3774 3774
3775 3775 # The file example-magic.py contains a simple but correct example. Try it:
3776 3776
3777 3777 # execfile example-magic.py
3778 3778
3779 3779 # Look at the examples in IPython/iplib.py for more details on how these magic
3780 3780 # functions need to process their arguments.
3781 3781
3782 3782 #---------------------------------------------------------------------------
3783 3783 # Section: aliases for system shell commands
3784 3784
3785 3785 # Here you can define your own names for system commands. The syntax is
3786 3786 # similar to that of the builtin %alias function:
3787 3787
3788 3788 # alias alias_name command_string
3789 3789
3790 3790 # The resulting aliases are auto-generated magic functions (hence usable as
3791 3791 # %alias_name)
3792 3792
3793 3793 # For example:
3794 3794
3795 3795 # alias myls ls -la
3796 3796
3797 3797 # will define 'myls' as an alias for executing the system command 'ls -la'.
3798 3798 # This allows you to customize IPython's environment to have the same aliases
3799 3799 # you are accustomed to from your own shell.
3800 3800
3801 3801 # You can also define aliases with parameters using %s specifiers (one per
3802 3802 # parameter):
3803 3803
3804 3804 # alias parts echo first %s second %s
3805 3805
3806 3806 # will give you in IPython:
3807 3807 # >>> %parts A B
3808 3808 # first A second B
3809 3809
3810 3810 # Use one 'alias' statement per alias you wish to define.
3811 3811
3812 3812 # alias
3813 3813
3814 3814 #************************* end of file <ipythonrc> ************************
3815 3815
3816 3816
3817 3817 ipy_user_conf.py
3818 3818 ----------------
3819 3819
3820 3820 There should be a simple template ipy_user_conf.py file in your
3821 3821 ~/.ipython directory. It is a plain python module that is imported
3822 3822 during IPython startup, so you can do pretty much what you want there
3823 3823 - import modules, configure extensions, change options, define magic
3824 3824 commands, put variables and functions in the IPython namespace,
3825 3825 etc. You use the IPython extension api object, acquired by
3826 3826 IPython.ipapi.get() and documented in the "IPython extension API"
3827 3827 chapter, to interact with IPython. A sample ipy_user_conf.py is listed
3828 3828 below for reference::
3829 3829
3830 3830 # Most of your config files and extensions will probably start
3831 3831 # with this import
3832 3832
3833 3833 import IPython.ipapi
3834 3834 ip = IPython.ipapi.get()
3835 3835
3836 3836 # You probably want to uncomment this if you did %upgrade -nolegacy
3837 3837 # import ipy_defaults
3838 3838
3839 3839 import os
3840 3840
3841 3841 def main():
3842 3842
3843 3843 #ip.dbg.debugmode = True
3844 3844 ip.dbg.debug_stack()
3845 3845
3846 3846 # uncomment if you want to get ipython -p sh behaviour
3847 3847 # without having to use command line switches
3848 3848 import ipy_profile_sh
3849 3849 import jobctrl
3850 3850
3851 3851 # Configure your favourite editor?
3852 3852 # Good idea e.g. for %edit os.path.isfile
3853 3853
3854 3854 #import ipy_editors
3855 3855
3856 3856 # Choose one of these:
3857 3857
3858 3858 #ipy_editors.scite()
3859 3859 #ipy_editors.scite('c:/opt/scite/scite.exe')
3860 3860 #ipy_editors.komodo()
3861 3861 #ipy_editors.idle()
3862 3862 # ... or many others, try 'ipy_editors??' after import to see them
3863 3863
3864 3864 # Or roll your own:
3865 3865 #ipy_editors.install_editor("c:/opt/jed +$line $file")
3866 3866
3867 3867
3868 3868 o = ip.options
3869 3869 # An example on how to set options
3870 3870 #o.autocall = 1
3871 3871 o.system_verbose = 0
3872 3872
3873 3873 #import_all("os sys")
3874 3874 #execf('~/_ipython/ns.py')
3875 3875
3876 3876
3877 3877 # -- prompt
3878 3878 # A different, more compact set of prompts from the default ones, that
3879 3879 # always show your current location in the filesystem:
3880 3880
3881 3881 #o.prompt_in1 = r'\C_LightBlue[\C_LightCyan\Y2\C_LightBlue]\C_Normal\n\C_Green|\#>'
3882 3882 #o.prompt_in2 = r'.\D: '
3883 3883 #o.prompt_out = r'[\#] '
3884 3884
3885 3885 # Try one of these color settings if you can't read the text easily
3886 3886 # autoexec is a list of IPython commands to execute on startup
3887 3887 #o.autoexec.append('%colors LightBG')
3888 3888 #o.autoexec.append('%colors NoColor')
3889 3889 o.autoexec.append('%colors Linux')
3890 3890
3891 3891
3892 3892 # some config helper functions you can use
3893 3893 def import_all(modules):
3894 3894 """ Usage: import_all("os sys") """
3895 3895 for m in modules.split():
3896 3896 ip.ex("from %s import *" % m)
3897 3897
3898 3898 def execf(fname):
3899 3899 """ Execute a file in user namespace """
3900 3900 ip.ex('execfile("%s")' % os.path.expanduser(fname))
3901 3901
3902 3902 main()
3903 3903
3904 3904
3905 3905
3906 3906 Fine-tuning your prompt
3907 3907 -----------------------
3908 3908
3909 3909 IPython's prompts can be customized using a syntax similar to that of
3910 3910 the bash shell. Many of bash's escapes are supported, as well as a few
3911 3911 additional ones. We list them below::
3912 3912
3913 3913 \#
3914 3914 the prompt/history count number. This escape is automatically
3915 3915 wrapped in the coloring codes for the currently active color scheme.
3916 3916 \N
3917 3917 the 'naked' prompt/history count number: this is just the number
3918 3918 itself, without any coloring applied to it. This lets you produce
3919 3919 numbered prompts with your own colors.
3920 3920 \D
3921 3921 the prompt/history count, with the actual digits replaced by dots.
3922 3922 Used mainly in continuation prompts (prompt_in2)
3923 3923 \w
3924 3924 the current working directory
3925 3925 \W
3926 3926 the basename of current working directory
3927 3927 \Xn
3928 3928 where $n=0\ldots5.$ The current working directory, with $HOME
3929 3929 replaced by ~, and filtered out to contain only $n$ path elements
3930 3930 \Yn
3931 3931 Similar to \Xn, but with the $n+1$ element included if it is ~ (this
3932 3932 is similar to the behavior of the %cn escapes in tcsh)
3933 3933 \u
3934 3934 the username of the current user
3935 3935 \$
3936 3936 if the effective UID is 0, a #, otherwise a $
3937 3937 \h
3938 3938 the hostname up to the first '.'
3939 3939 \H
3940 3940 the hostname
3941 3941 \n
3942 3942 a newline
3943 3943 \r
3944 3944 a carriage return
3945 3945 \v
3946 3946 IPython version string
3947 3947
3948 3948 In addition to these, ANSI color escapes can be insterted into the
3949 3949 prompts, as \C_ColorName. The list of valid color names is: Black, Blue,
3950 3950 Brown, Cyan, DarkGray, Green, LightBlue, LightCyan, LightGray,
3951 3951 LightGreen, LightPurple, LightRed, NoColor, Normal, Purple, Red, White,
3952 3952 Yellow.
3953 3953
3954 3954 Finally, IPython supports the evaluation of arbitrary expressions in
3955 3955 your prompt string. The prompt strings are evaluated through the syntax
3956 3956 of PEP 215, but basically you can use $x.y to expand the value of x.y,
3957 3957 and for more complicated expressions you can use braces: ${foo()+x} will
3958 3958 call function foo and add to it the value of x, before putting the
3959 3959 result into your prompt. For example, using
3960 3960 prompt_in1 '${commands.getoutput("uptime")}\nIn [\#]: '
3961 3961 will print the result of the uptime command on each prompt (assuming the
3962 3962 commands module has been imported in your ipythonrc file).
3963 3963
3964 3964
3965 3965 Prompt examples
3966 3966
3967 3967 The following options in an ipythonrc file will give you IPython's
3968 3968 default prompts::
3969 3969
3970 3970 prompt_in1 'In [\#]:'
3971 3971 prompt_in2 ' .\D.:'
3972 3972 prompt_out 'Out[\#]:'
3973 3973
3974 3974 which look like this::
3975 3975
3976 3976 In [1]: 1+2
3977 3977 Out[1]: 3
3978 3978
3979 3979 In [2]: for i in (1,2,3):
3980 3980 ...: print i,
3981 3981 ...:
3982 3982 1 2 3
3983 3983
3984 3984 These will give you a very colorful prompt with path information::
3985 3985
3986 3986 #prompt_in1 '\C_Red\u\C_Blue[\C_Cyan\Y1\C_Blue]\C_LightGreen\#>'
3987 3987 prompt_in2 ' ..\D>'
3988 3988 prompt_out '<\#>'
3989 3989
3990 3990 which look like this::
3991 3991
3992 3992 fperez[~/ipython]1> 1+2
3993 3993 <1> 3
3994 3994 fperez[~/ipython]2> for i in (1,2,3):
3995 3995 ...> print i,
3996 3996 ...>
3997 3997 1 2 3
3998 3998
3999 3999
4000 4000
4001 4001 IPython profiles
4002 4002 ----------------
4003 4003
4004 4004 As we already mentioned, IPython supports the -profile command-line
4005 4005 option (see sec. 5.2 <node5.html#sec:cmd-line-opts>). A profile is
4006 4006 nothing more than a particular configuration file like your basic
4007 4007 ipythonrc one, but with particular customizations for a specific
4008 4008 purpose. When you start IPython with 'ipython -profile <name>', it
4009 4009 assumes that in your IPYTHONDIR there is a file called ipythonrc-<name>,
4010 4010 and loads it instead of the normal ipythonrc.
4011 4011
4012 4012 This system allows you to maintain multiple configurations which load
4013 4013 modules, set options, define functions, etc. suitable for different
4014 4014 tasks and activate them in a very simple manner. In order to avoid
4015 4015 having to repeat all of your basic options (common things that don't
4016 4016 change such as your color preferences, for example), any profile can
4017 4017 include another configuration file. The most common way to use profiles
4018 4018 is then to have each one include your basic ipythonrc file as a starting
4019 4019 point, and then add further customizations.
4020 4020
4021 4021 In sections 11 <node11.html#sec:syntax-extensions> and 16
4022 4022 <node16.html#sec:Gnuplot> we discuss some particular profiles which come
4023 4023 as part of the standard IPython distribution. You may also look in your
4024 4024 IPYTHONDIR directory, any file whose name begins with ipythonrc- is a
4025 4025 profile. You can use those as examples for further customizations to
4026 4026 suit your own needs.
4027 4027
4028 4028 IPython as your default Python environment
4029 4029 ==========================================
4030 4030
4031 4031 Python honors the environment variable PYTHONSTARTUP and will execute at
4032 4032 startup the file referenced by this variable. If you put at the end of
4033 4033 this file the following two lines of code::
4034 4034
4035 4035 import IPython
4036 4036 IPython.Shell.IPShell().mainloop(sys_exit=1)
4037 4037
4038 4038 then IPython will be your working environment anytime you start Python.
4039 4039 The sys_exit=1 is needed to have IPython issue a call to sys.exit() when
4040 4040 it finishes, otherwise you'll be back at the normal Python '>>>'
4041 4041 prompt^4 <footnode.html#foot2368>.
4042 4042
4043 4043 This is probably useful to developers who manage multiple Python
4044 4044 versions and don't want to have correspondingly multiple IPython
4045 4045 versions. Note that in this mode, there is no way to pass IPython any
4046 4046 command-line options, as those are trapped first by Python itself.
4047 4047
4048 4048 Embedding IPython
4049 4049 =================
4050 4050
4051 4051 It is possible to start an IPython instance inside your own Python
4052 4052 programs. This allows you to evaluate dynamically the state of your
4053 4053 code, operate with your variables, analyze them, etc. Note however that
4054 4054 any changes you make to values while in the shell do not propagate back
4055 4055 to the running code, so it is safe to modify your values because you
4056 4056 won't break your code in bizarre ways by doing so.
4057 4057
4058 4058 This feature allows you to easily have a fully functional python
4059 4059 environment for doing object introspection anywhere in your code with a
4060 4060 simple function call. In some cases a simple print statement is enough,
4061 4061 but if you need to do more detailed analysis of a code fragment this
4062 4062 feature can be very valuable.
4063 4063
4064 4064 It can also be useful in scientific computing situations where it is
4065 4065 common to need to do some automatic, computationally intensive part and
4066 4066 then stop to look at data, plots, etc^5 <footnode.html#foot3206>.
4067 4067 Opening an IPython instance will give you full access to your data and
4068 4068 functions, and you can resume program execution once you are done with
4069 4069 the interactive part (perhaps to stop again later, as many times as
4070 4070 needed).
4071 4071
4072 4072 The following code snippet is the bare minimum you need to include in
4073 4073 your Python programs for this to work (detailed examples follow later)::
4074 4074
4075 4075 from IPython.Shell import IPShellEmbed
4076 4076
4077 4077 ipshell = IPShellEmbed()
4078 4078
4079 4079 ipshell() # this call anywhere in your program will start IPython
4080 4080
4081 4081 You can run embedded instances even in code which is itself being run at
4082 4082 the IPython interactive prompt with '%run <filename>'. Since it's easy
4083 4083 to get lost as to where you are (in your top-level IPython or in your
4084 4084 embedded one), it's a good idea in such cases to set the in/out prompts
4085 4085 to something different for the embedded instances. The code examples
4086 4086 below illustrate this.
4087 4087
4088 4088 You can also have multiple IPython instances in your program and open
4089 4089 them separately, for example with different options for data
4090 4090 presentation. If you close and open the same instance multiple times,
4091 4091 its prompt counters simply continue from each execution to the next.
4092 4092
4093 4093 Please look at the docstrings in the Shell.py module for more details on
4094 4094 the use of this system.
4095 4095
4096 4096 The following sample file illustrating how to use the embedding
4097 4097 functionality is provided in the examples directory as example-embed.py.
4098 4098 It should be fairly self-explanatory::
4099 4099
4100 4100
4101 4101 #!/usr/bin/env python
4102 4102
4103 4103 """An example of how to embed an IPython shell into a running program.
4104 4104
4105 4105 Please see the documentation in the IPython.Shell module for more details.
4106 4106
4107 4107 The accompanying file example-embed-short.py has quick code fragments for
4108 4108 embedding which you can cut and paste in your code once you understand how
4109 4109 things work.
4110 4110
4111 4111 The code in this file is deliberately extra-verbose, meant for learning."""
4112 4112
4113 4113 # The basics to get you going:
4114 4114
4115 4115 # IPython sets the __IPYTHON__ variable so you can know if you have nested
4116 4116 # copies running.
4117 4117
4118 4118 # Try running this code both at the command line and from inside IPython (with
4119 4119 # %run example-embed.py)
4120 4120 try:
4121 4121 __IPYTHON__
4122 4122 except NameError:
4123 4123 nested = 0
4124 4124 args = ['']
4125 4125 else:
4126 4126 print "Running nested copies of IPython."
4127 4127 print "The prompts for the nested copy have been modified"
4128 4128 nested = 1
4129 4129 # what the embedded instance will see as sys.argv:
4130 4130 args = ['-pi1','In <\\#>: ','-pi2',' .\\D.: ',
4131 4131 '-po','Out<\\#>: ','-nosep']
4132 4132
4133 4133 # First import the embeddable shell class
4134 4134 from IPython.Shell import IPShellEmbed
4135 4135
4136 4136 # Now create an instance of the embeddable shell. The first argument is a
4137 4137 # string with options exactly as you would type them if you were starting
4138 4138 # IPython at the system command line. Any parameters you want to define for
4139 4139 # configuration can thus be specified here.
4140 4140 ipshell = IPShellEmbed(args,
4141 4141 banner = 'Dropping into IPython',
4142 4142 exit_msg = 'Leaving Interpreter, back to program.')
4143 4143
4144 4144 # Make a second instance, you can have as many as you want.
4145 4145 if nested:
4146 4146 args[1] = 'In2<\\#>'
4147 4147 else:
4148 4148 args = ['-pi1','In2<\\#>: ','-pi2',' .\\D.: ',
4149 4149 '-po','Out<\\#>: ','-nosep']
4150 4150 ipshell2 = IPShellEmbed(args,banner = 'Second IPython instance.')
4151 4151
4152 4152 print '\nHello. This is printed from the main controller program.\n'
4153 4153
4154 4154 # You can then call ipshell() anywhere you need it (with an optional
4155 4155 # message):
4156 4156 ipshell('***Called from top level. '
4157 4157 'Hit Ctrl-D to exit interpreter and continue program.\n'
4158 4158 'Note that if you use %kill_embedded, you can fully deactivate\n'
4159 4159 'This embedded instance so it will never turn on again')
4160 4160
4161 4161 print '\nBack in caller program, moving along...\n'
4162 4162
4163 4163 #---------------------------------------------------------------------------
4164 4164 # More details:
4165 4165
4166 4166 # IPShellEmbed instances don't print the standard system banner and
4167 4167 # messages. The IPython banner (which actually may contain initialization
4168 4168 # messages) is available as <instance>.IP.BANNER in case you want it.
4169 4169
4170 4170 # IPShellEmbed instances print the following information everytime they
4171 4171 # start:
4172 4172
4173 4173 # - A global startup banner.
4174 4174
4175 4175 # - A call-specific header string, which you can use to indicate where in the
4176 4176 # execution flow the shell is starting.
4177 4177
4178 4178 # They also print an exit message every time they exit.
4179 4179
4180 4180 # Both the startup banner and the exit message default to None, and can be set
4181 4181 # either at the instance constructor or at any other time with the
4182 4182 # set_banner() and set_exit_msg() methods.
4183 4183
4184 4184 # The shell instance can be also put in 'dummy' mode globally or on a per-call
4185 4185 # basis. This gives you fine control for debugging without having to change
4186 4186 # code all over the place.
4187 4187
4188 4188 # The code below illustrates all this.
4189 4189
4190 4190
4191 4191 # This is how the global banner and exit_msg can be reset at any point
4192 4192 ipshell.set_banner('Entering interpreter - New Banner')
4193 4193 ipshell.set_exit_msg('Leaving interpreter - New exit_msg')
4194 4194
4195 4195 def foo(m):
4196 4196 s = 'spam'
4197 4197 ipshell('***In foo(). Try @whos, or print s or m:')
4198 4198 print 'foo says m = ',m
4199 4199
4200 4200 def bar(n):
4201 4201 s = 'eggs'
4202 4202 ipshell('***In bar(). Try @whos, or print s or n:')
4203 4203 print 'bar says n = ',n
4204 4204
4205 4205 # Some calls to the above functions which will trigger IPython:
4206 4206 print 'Main program calling foo("eggs")\n'
4207 4207 foo('eggs')
4208 4208
4209 4209 # The shell can be put in 'dummy' mode where calls to it silently return. This
4210 4210 # allows you, for example, to globally turn off debugging for a program with a
4211 4211 # single call.
4212 4212 ipshell.set_dummy_mode(1)
4213 4213 print '\nTrying to call IPython which is now "dummy":'
4214 4214 ipshell()
4215 4215 print 'Nothing happened...'
4216 4216 # The global 'dummy' mode can still be overridden for a single call
4217 4217 print '\nOverriding dummy mode manually:'
4218 4218 ipshell(dummy=0)
4219 4219
4220 4220 # Reactivate the IPython shell
4221 4221 ipshell.set_dummy_mode(0)
4222 4222
4223 4223 print 'You can even have multiple embedded instances:'
4224 4224 ipshell2()
4225 4225
4226 4226 print '\nMain program calling bar("spam")\n'
4227 4227 bar('spam')
4228 4228
4229 4229 print 'Main program finished. Bye!'
4230 4230
4231 4231 #********************** End of file <example-embed.py> ***********************
4232 4232
4233 4233 Once you understand how the system functions, you can use the following
4234 4234 code fragments in your programs which are ready for cut and paste::
4235 4235
4236 4236
4237 4237 """Quick code snippets for embedding IPython into other programs.
4238 4238
4239 4239 See example-embed.py for full details, this file has the bare minimum code for
4240 4240 cut and paste use once you understand how to use the system."""
4241 4241
4242 4242 #---------------------------------------------------------------------------
4243 4243 # This code loads IPython but modifies a few things if it detects it's running
4244 4244 # embedded in another IPython session (helps avoid confusion)
4245 4245
4246 4246 try:
4247 4247 __IPYTHON__
4248 4248 except NameError:
4249 4249 argv = ['']
4250 4250 banner = exit_msg = ''
4251 4251 else:
4252 4252 # Command-line options for IPython (a list like sys.argv)
4253 4253 argv = ['-pi1','In <\\#>:','-pi2',' .\\D.:','-po','Out<\\#>:']
4254 4254 banner = '*** Nested interpreter ***'
4255 4255 exit_msg = '*** Back in main IPython ***'
4256 4256
4257 4257 # First import the embeddable shell class
4258 4258 from IPython.Shell import IPShellEmbed
4259 4259 # Now create the IPython shell instance. Put ipshell() anywhere in your code
4260 4260 # where you want it to open.
4261 4261 ipshell = IPShellEmbed(argv,banner=banner,exit_msg=exit_msg)
4262 4262
4263 4263 #---------------------------------------------------------------------------
4264 4264 # This code will load an embeddable IPython shell always with no changes for
4265 4265 # nested embededings.
4266 4266
4267 4267 from IPython.Shell import IPShellEmbed
4268 4268 ipshell = IPShellEmbed()
4269 4269 # Now ipshell() will open IPython anywhere in the code.
4270 4270
4271 4271 #---------------------------------------------------------------------------
4272 4272 # This code loads an embeddable shell only if NOT running inside
4273 4273 # IPython. Inside IPython, the embeddable shell variable ipshell is just a
4274 4274 # dummy function.
4275 4275
4276 4276 try:
4277 4277 __IPYTHON__
4278 4278 except NameError:
4279 4279 from IPython.Shell import IPShellEmbed
4280 4280 ipshell = IPShellEmbed()
4281 4281 # Now ipshell() will open IPython anywhere in the code
4282 4282 else:
4283 4283 # Define a dummy ipshell() so the same code doesn't crash inside an
4284 4284 # interactive IPython
4285 4285 def ipshell(): pass
4286 4286
4287 4287 #******************* End of file <example-embed-short.py> ********************
4288 4288
4289 4289 Using the Python debugger (pdb)
4290 4290 ===============================
4291 4291
4292 4292 Running entire programs via pdb
4293 4293 -------------------------------
4294 4294
4295 4295 pdb, the Python debugger, is a powerful interactive debugger which
4296 4296 allows you to step through code, set breakpoints, watch variables, etc.
4297 4297 IPython makes it very easy to start any script under the control of pdb,
4298 4298 regardless of whether you have wrapped it into a 'main()' function or
4299 4299 not. For this, simply type '%run -d myscript' at an IPython prompt. See
4300 4300 the %run command's documentation (via '%run?' or in Sec. 6.2
4301 4301 <node6.html#sec:magic>) for more details, including how to control where
4302 4302 pdb will stop execution first.
4303 4303
4304 4304 For more information on the use of the pdb debugger, read the included
4305 4305 pdb.doc file (part of the standard Python distribution). On a stock
4306 4306 Linux system it is located at /usr/lib/python2.3/pdb.doc, but the
4307 4307 easiest way to read it is by using the help() function of the pdb module
4308 4308 as follows (in an IPython prompt):
4309 4309
4310 4310 In [1]: import pdb
4311 4311 In [2]: pdb.help()
4312 4312
4313 4313 This will load the pdb.doc document in a file viewer for you automatically.
4314 4314
4315 4315
4316 4316 Automatic invocation of pdb on exceptions
4317 4317 -----------------------------------------
4318 4318
4319 4319 IPython, if started with the -pdb option (or if the option is set in
4320 4320 your rc file) can call the Python pdb debugger every time your code
4321 4321 triggers an uncaught exception^6 <footnode.html#foot2403>. This feature
4322 4322 can also be toggled at any time with the %pdb magic command. This can be
4323 4323 extremely useful in order to find the origin of subtle bugs, because pdb
4324 4324 opens up at the point in your code which triggered the exception, and
4325 4325 while your program is at this point 'dead', all the data is still
4326 4326 available and you can walk up and down the stack frame and understand
4327 4327 the origin of the problem.
4328 4328
4329 4329 Furthermore, you can use these debugging facilities both with the
4330 4330 embedded IPython mode and without IPython at all. For an embedded shell
4331 4331 (see sec. 9 <node9.html#sec:embed>), simply call the constructor with
4332 4332 '-pdb' in the argument string and automatically pdb will be called if an
4333 4333 uncaught exception is triggered by your code.
4334 4334
4335 4335 For stand-alone use of the feature in your programs which do not use
4336 4336 IPython at all, put the following lines toward the top of your 'main'
4337 4337 routine::
4338 4338
4339 4339 import sys,IPython.ultraTB
4340 4340 sys.excepthook = IPython.ultraTB.FormattedTB(mode='Verbose',
4341 4341 color_scheme='Linux', call_pdb=1)
4342 4342
4343 4343 The mode keyword can be either 'Verbose' or 'Plain', giving either very
4344 4344 detailed or normal tracebacks respectively. The color_scheme keyword can
4345 4345 be one of 'NoColor', 'Linux' (default) or 'LightBG'. These are the same
4346 4346 options which can be set in IPython with -colors and -xmode.
4347 4347
4348 4348 This will give any of your programs detailed, colored tracebacks with
4349 4349 automatic invocation of pdb.
4350 4350
4351 4351
4352 4352 Extensions for syntax processing
4353 4353 ================================
4354 4354
4355 4355 This isn't for the faint of heart, because the potential for breaking
4356 4356 things is quite high. But it can be a very powerful and useful feature.
4357 4357 In a nutshell, you can redefine the way IPython processes the user input
4358 4358 line to accept new, special extensions to the syntax without needing to
4359 4359 change any of IPython's own code.
4360 4360
4361 4361 In the IPython/Extensions directory you will find some examples
4362 4362 supplied, which we will briefly describe now. These can be used 'as is'
4363 4363 (and both provide very useful functionality), or you can use them as a
4364 4364 starting point for writing your own extensions.
4365 4365
4366 4366
4367 4367 Pasting of code starting with '>>> ' or '... '
4368 4368 ----------------------------------------------
4369 4369
4370 4370 In the python tutorial it is common to find code examples which have
4371 4371 been taken from real python sessions. The problem with those is that all
4372 4372 the lines begin with either '>>> ' or '... ', which makes it impossible
4373 4373 to paste them all at once. One must instead do a line by line manual
4374 4374 copying, carefully removing the leading extraneous characters.
4375 4375
4376 4376 This extension identifies those starting characters and removes them
4377 4377 from the input automatically, so that one can paste multi-line examples
4378 4378 directly into IPython, saving a lot of time. Please look at the file
4379 4379 InterpreterPasteInput.py in the IPython/Extensions directory for details
4380 4380 on how this is done.
4381 4381
4382 4382 IPython comes with a special profile enabling this feature, called
4383 4383 tutorial. Simply start IPython via 'ipython -p tutorial' and the feature
4384 4384 will be available. In a normal IPython session you can activate the
4385 4385 feature by importing the corresponding module with:
4386 4386 In [1]: import IPython.Extensions.InterpreterPasteInput
4387 4387
4388 4388 The following is a 'screenshot' of how things work when this extension
4389 4389 is on, copying an example from the standard tutorial::
4390 4390
4391 4391 IPython profile: tutorial
4392 4392
4393 4393 *** Pasting of code with ">>>" or "..." has been enabled.
4394 4394
4395 4395 In [1]: >>> def fib2(n): # return Fibonacci series up to n
4396 4396 ...: ... """Return a list containing the Fibonacci series up to
4397 4397 n."""
4398 4398 ...: ... result = []
4399 4399 ...: ... a, b = 0, 1
4400 4400 ...: ... while b < n:
4401 4401 ...: ... result.append(b) # see below
4402 4402 ...: ... a, b = b, a+b
4403 4403 ...: ... return result
4404 4404 ...:
4405 4405
4406 4406 In [2]: fib2(10)
4407 4407 Out[2]: [1, 1, 2, 3, 5, 8]
4408 4408
4409 4409 Note that as currently written, this extension does not recognize
4410 4410 IPython's prompts for pasting. Those are more complicated, since the
4411 4411 user can change them very easily, they involve numbers and can vary in
4412 4412 length. One could however extract all the relevant information from the
4413 4413 IPython instance and build an appropriate regular expression. This is
4414 4414 left as an exercise for the reader.
4415 4415
4416 4416
4417 4417 Input of physical quantities with units
4418 4418 ---------------------------------------
4419 4419
4420 4420 The module PhysicalQInput allows a simplified form of input for physical
4421 4421 quantities with units. This file is meant to be used in conjunction with
4422 4422 the PhysicalQInteractive module (in the same directory) and
4423 4423 Physics.PhysicalQuantities from Konrad Hinsen's ScientificPython
4424 4424 (http://dirac.cnrs-orleans.fr/ScientificPython/).
4425 4425
4426 4426 The Physics.PhysicalQuantities module defines PhysicalQuantity objects,
4427 4427 but these must be declared as instances of a class. For example, to
4428 4428 define v as a velocity of 3 m/s, normally you would write::
4429 4429
4430 4430 In [1]: v = PhysicalQuantity(3,'m/s')
4431 4431
4432 4432 Using the PhysicalQ_Input extension this can be input instead as:
4433 4433 In [1]: v = 3 m/s
4434 4434 which is much more convenient for interactive use (even though it is
4435 4435 blatantly invalid Python syntax).
4436 4436
4437 4437 The physics profile supplied with IPython (enabled via 'ipython -p
4438 4438 physics') uses these extensions, which you can also activate with:
4439 4439
4440 4440 from math import * # math MUST be imported BEFORE PhysicalQInteractive
4441 4441 from IPython.Extensions.PhysicalQInteractive import *
4442 4442 import IPython.Extensions.PhysicalQInput
4443 4443
4444 4444
4445 4445 IPython as a system shell - the 'Sh' profile
4446 4446 ============================================
4447 4447
4448 4448 The 'sh' profile optimizes IPython for system shell usage. Apart from
4449 4449 certain job control functionality that is present in unix (ctrl+z does
4450 4450 "suspend"), the sh profile should provide you with most of the
4451 4451 functionality you use daily in system shell, and more. Invoke IPython
4452 4452 in 'sh' profile by doing 'ipython -p sh', or (in win32) by launching
4453 4453 the "pysh" shortcut in start menu.
4454 4454
4455 4455 If you want to use the features of sh profile as your defaults (which
4456 4456 might be a good idea if you use other profiles a lot of the time but
4457 4457 still want the convenience of sh profile), add ``import ipy_profile_sh``
4458 4458 to your ~/.ipython/ipy_user_conf.py.
4459 4459
4460 4460 The 'sh' profile is different from the default profile in that:
4461 4461
4462 4462 * Prompt shows the current directory
4463 4463 * Spacing between prompts and input is more compact (no padding with
4464 4464 empty lines). The startup banner is more compact as well.
4465 4465 * System commands are directly available (in alias table) without
4466 4466 requesting %rehashx - however, if you install new programs along
4467 4467 your PATH, you might want to run %rehashx to update the persistent
4468 4468 alias table
4469 4469 * Macros are stored in raw format by default. That is, instead of
4470 4470 '_ip.system("cat foo"), the macro will contain text 'cat foo')
4471 4471 * Autocall is in full mode
4472 4472 * Calling "up" does "cd .."
4473 4473
4474 4474 The 'sh' profile is different from the now-obsolete (and unavailable)
4475 4475 'pysh' profile in that:
4476 4476
4477 4477 * '$$var = command' and '$var = command' syntax is not supported
4478 4478 * anymore. Use 'var = !command' instead (incidentally, this is
4479 4479 * available in all IPython profiles). Note that !!command *will*
4480 4480 * work.
4481 4481
4482 4482 Aliases
4483 4483 -------
4484 4484
4485 4485 All of your $PATH has been loaded as IPython aliases, so you should be
4486 4486 able to type any normal system command and have it executed. See
4487 4487 %alias? and %unalias? for details on the alias facilities. See also
4488 4488 %rehashx? for details on the mechanism used to load $PATH.
4489 4489
4490 4490
4491 4491 Directory management
4492 4492 --------------------
4493 4493
4494 4494 Since each command passed by ipython to the underlying system is executed
4495 4495 in a subshell which exits immediately, you can NOT use !cd to navigate
4496 4496 the filesystem.
4497 4497
4498 4498 IPython provides its own builtin '%cd' magic command to move in the
4499 4499 filesystem (the % is not required with automagic on). It also maintains
4500 4500 a list of visited directories (use %dhist to see it) and allows direct
4501 4501 switching to any of them. Type 'cd?' for more details.
4502 4502
4503 4503 %pushd, %popd and %dirs are provided for directory stack handling.
4504 4504
4505 4505
4506 4506 Enabled extensions
4507 4507 ------------------
4508 4508
4509 4509 Some extensions, listed below, are enabled as default in this profile.
4510 4510
4511 4511 envpersist
4512 4512 ++++++++++
4513 4513
4514 4514 %env can be used to "remember" environment variable manipulations. Examples::
4515 4515
4516 4516 %env - Show all environment variables
4517 4517 %env VISUAL=jed - set VISUAL to jed
4518 4518 %env PATH+=;/foo - append ;foo to PATH
4519 4519 %env PATH+=;/bar - also append ;bar to PATH
4520 4520 %env PATH-=/wbin; - prepend /wbin; to PATH
4521 4521 %env -d VISUAL - forget VISUAL persistent val
4522 4522 %env -p - print all persistent env modifications
4523 4523
4524 4524 ipy_which
4525 4525 +++++++++
4526 4526
4527 4527 %which magic command. Like 'which' in unix, but knows about ipython aliases.
4528 4528
4529 4529 Example::
4530 4530
4531 4531 [C:/ipython]|14> %which st
4532 4532 st -> start .
4533 4533 [C:/ipython]|15> %which d
4534 4534 d -> dir /w /og /on
4535 4535 [C:/ipython]|16> %which cp
4536 4536 cp -> cp
4537 4537 == c:\bin\cp.exe
4538 4538 c:\bin\cp.exe
4539 4539
4540 4540 ipy_app_completers
4541 4541 ++++++++++++++++++
4542 4542
4543 4543 Custom tab completers for some apps like svn, hg, bzr, apt-get. Try 'apt-get install <TAB>' in debian/ubuntu.
4544 4544
4545 4545 ipy_rehashdir
4546 4546 +++++++++++++
4547 4547
4548 4548 Allows you to add system command aliases for commands that are not along your path. Let's say that you just installed Putty and want to be able to invoke it without adding it to path, you can create the alias for it with rehashdir::
4549 4549
4550 4550 [~]|22> cd c:/opt/PuTTY/
4551 4551 [c:opt/PuTTY]|23> rehashdir .
4552 4552 <23> ['pageant', 'plink', 'pscp', 'psftp', 'putty', 'puttygen', 'unins000']
4553 4553
4554 4554 Now, you can execute any of those commams directly::
4555 4555
4556 4556 [c:opt/PuTTY]|24> cd
4557 4557 [~]|25> putty
4558 4558
4559 4559 (the putty window opens).
4560 4560
4561 4561 If you want to store the alias so that it will always be available, do '%store putty'. If you want to %store all these aliases persistently, just do it in a for loop::
4562 4562
4563 4563 [~]|27> for a in _23:
4564 4564 |..> %store $a
4565 4565 |..>
4566 4566 |..>
4567 4567 Alias stored: pageant (0, 'c:\\opt\\PuTTY\\pageant.exe')
4568 4568 Alias stored: plink (0, 'c:\\opt\\PuTTY\\plink.exe')
4569 4569 Alias stored: pscp (0, 'c:\\opt\\PuTTY\\pscp.exe')
4570 4570 Alias stored: psftp (0, 'c:\\opt\\PuTTY\\psftp.exe')
4571 4571 ...
4572 4572
4573 4573 mglob
4574 4574 +++++
4575 4575
4576 4576 Provide the magic function %mglob, which makes it easier (than the 'find' command) to collect (possibly recursive) file lists. Examples::
4577 4577
4578 4578 [c:/ipython]|9> mglob *.py
4579 4579 [c:/ipython]|10> mglob *.py rec:*.txt
4580 4580 [c:/ipython]|19> workfiles = %mglob !.svn/ !.hg/ !*_Data/ !*.bak rec:.
4581 4581
4582 4582 Note that the first 2 calls will put the file list in result history (_, _9, _10), and the last one will assign it to 'workfiles'.
4583 4583
4584 4584
4585 4585 Prompt customization
4586 4586 --------------------
4587 4587
4588 4588 The sh profile uses the following prompt configurations::
4589 4589
4590 4590 o.prompt_in1= r'\C_LightBlue[\C_LightCyan\Y2\C_LightBlue]\C_Green|\#>'
4591 4591 o.prompt_in2= r'\C_Green|\C_LightGreen\D\C_Green>'
4592 4592
4593 4593 You can change the prompt configuration to your liking by editing
4594 4594 ipy_user_conf.py.
4595 4595
4596 4596 String lists
4597 4597 ============
4598 4598
4599 4599 String lists (IPython.genutils.SList) are handy way to process output
4600 4600 from system commands. They are produced by ``var = !cmd`` syntax.
4601 4601
4602 4602 First, we acquire the output of 'ls -l'::
4603 4603
4604 4604 [Q:doc/examples]|2> lines = !ls -l
4605 4605 ==
4606 4606 ['total 23',
4607 4607 '-rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py',
4608 4608 '-rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py',
4609 4609 '-rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py',
4610 4610 '-rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py',
4611 4611 '-rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py',
4612 4612 '-rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py',
4613 4613 '-rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc']
4614 4614
4615 4615 Now, let's take a look at the contents of 'lines' (the first number is
4616 4616 the list element number)::
4617 4617
4618 4618 [Q:doc/examples]|3> lines
4619 4619 <3> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
4620 4620
4621 4621 0: total 23
4622 4622 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
4623 4623 2: -rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py
4624 4624 3: -rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py
4625 4625 4: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
4626 4626 5: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
4627 4627 6: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
4628 4628 7: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
4629 4629
4630 4630 Now, let's filter out the 'embed' lines::
4631 4631
4632 4632 [Q:doc/examples]|4> l2 = lines.grep('embed',prune=1)
4633 4633 [Q:doc/examples]|5> l2
4634 4634 <5> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
4635 4635
4636 4636 0: total 23
4637 4637 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py
4638 4638 2: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py
4639 4639 3: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py
4640 4640 4: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py
4641 4641 5: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc
4642 4642
4643 4643 Now, we want strings having just file names and permissions::
4644 4644
4645 4645 [Q:doc/examples]|6> l2.fields(8,0)
4646 4646 <6> SList (.p, .n, .l, .s, .grep(), .fields() available). Value:
4647 4647
4648 4648 0: total
4649 4649 1: example-demo.py -rw-rw-rw-
4650 4650 2: example-gnuplot.py -rwxrwxrwx
4651 4651 3: extension.py -rwxrwxrwx
4652 4652 4: seteditor.py -rwxrwxrwx
4653 4653 5: seteditor.pyc -rwxrwxrwx
4654 4654
4655 4655 Note how the line with 'total' does not raise IndexError.
4656 4656
4657 4657 If you want to split these (yielding lists), call fields() without
4658 4658 arguments::
4659 4659
4660 4660 [Q:doc/examples]|7> _.fields()
4661 4661 <7>
4662 4662 [['total'],
4663 4663 ['example-demo.py', '-rw-rw-rw-'],
4664 4664 ['example-gnuplot.py', '-rwxrwxrwx'],
4665 4665 ['extension.py', '-rwxrwxrwx'],
4666 4666 ['seteditor.py', '-rwxrwxrwx'],
4667 4667 ['seteditor.pyc', '-rwxrwxrwx']]
4668 4668
4669 4669 If you want to pass these separated with spaces to a command (typical
4670 4670 for lists if files), use the .s property::
4671 4671
4672 4672
4673 4673 [Q:doc/examples]|13> files = l2.fields(8).s
4674 4674 [Q:doc/examples]|14> files
4675 4675 <14> 'example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc'
4676 4676 [Q:doc/examples]|15> ls $files
4677 4677 example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc
4678 4678
4679 4679 SLists are inherited from normal python lists, so every list method is
4680 4680 available::
4681 4681
4682 4682 [Q:doc/examples]|21> lines.append('hey')
4683 4683
4684 4684
4685 4685 Real world example: remove all files outside version control
4686 4686 ------------------------------------------------------------
4687 4687
4688 4688 First, capture output of "hg status"::
4689 4689
4690 4690 [Q:/ipython]|28> out = !hg status
4691 4691 ==
4692 4692 ['M IPython\\Extensions\\ipy_kitcfg.py',
4693 4693 'M IPython\\Extensions\\ipy_rehashdir.py',
4694 4694 ...
4695 4695 '? build\\lib\\IPython\\Debugger.py',
4696 4696 '? build\\lib\\IPython\\Extensions\\InterpreterExec.py',
4697 4697 '? build\\lib\\IPython\\Extensions\\InterpreterPasteInput.py',
4698 4698 ...
4699 4699
4700 4700 (lines starting with ? are not under version control).
4701 4701
4702 4702 ::
4703 4703
4704 4704 [Q:/ipython]|35> junk = out.grep(r'^\?').fields(1)
4705 4705 [Q:/ipython]|36> junk
4706 4706 <36> SList (.p, .n, .l, .s, .grep(), .fields() availab
4707 4707 ...
4708 4708 10: build\bdist.win32\winexe\temp\_ctypes.py
4709 4709 11: build\bdist.win32\winexe\temp\_hashlib.py
4710 4710 12: build\bdist.win32\winexe\temp\_socket.py
4711 4711
4712 4712 Now we can just remove these files by doing 'rm $junk.s'.
4713 4713
4714 4714 The .s, .n, .p properties
4715 4715 -------------------------
4716 4716
4717 4717 The '.s' property returns one string where lines are separated by
4718 4718 single space (for convenient passing to system commands). The '.n'
4719 4719 property return one string where the lines are separated by '\n'
4720 4720 (i.e. the original output of the function). If the items in string
4721 4721 list are file names, '.p' can be used to get a list of "path" objects
4722 4722 for convenient file manipulation.
4723 4723
4724 4724
4725 4725 Threading support
4726 4726 =================
4727 4727
4728 4728 WARNING: The threading support is still somewhat experimental, and it
4729 4729 has only seen reasonable testing under Linux. Threaded code is
4730 4730 particularly tricky to debug, and it tends to show extremely
4731 4731 platform-dependent behavior. Since I only have access to Linux machines,
4732 4732 I will have to rely on user's experiences and assistance for this area
4733 4733 of IPython to improve under other platforms.
4734 4734
4735 4735 IPython, via the -gthread , -qthread, -q4thread and -wthread options
4736 4736 (described in Sec. 5.1 <node5.html#sec:threading-opts>), can run in
4737 4737 multithreaded mode to support pyGTK, Qt3, Qt4 and WXPython applications
4738 4738 respectively. These GUI toolkits need to control the python main loop of
4739 4739 execution, so under a normal Python interpreter, starting a pyGTK, Qt3,
4740 4740 Qt4 or WXPython application will immediately freeze the shell.
4741 4741
4742 4742 IPython, with one of these options (you can only use one at a time),
4743 4743 separates the graphical loop and IPython's code execution run into
4744 4744 different threads. This allows you to test interactively (with %run, for
4745 4745 example) your GUI code without blocking.
4746 4746
4747 4747 A nice mini-tutorial on using IPython along with the Qt Designer
4748 4748 application is available at the SciPy wiki:
4749 4749 http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer.
4750 4750
4751 4751
4752 4752 Tk issues
4753 4753 ---------
4754 4754
4755 4755 As indicated in Sec. 5.1 <node5.html#sec:threading-opts>, a special -tk
4756 4756 option is provided to try and allow Tk graphical applications to coexist
4757 4757 interactively with WX, Qt or GTK ones. Whether this works at all,
4758 4758 however, is very platform and configuration dependent. Please experiment
4759 4759 with simple test cases before committing to using this combination of Tk
4760 4760 and GTK/Qt/WX threading in a production environment.
4761 4761
4762 4762
4763 4763 I/O pitfalls
4764 4764 ------------
4765 4765
4766 4766 Be mindful that the Python interpreter switches between threads every
4767 4767 $N$ bytecodes, where the default value as of Python 2.3 is $N=100.$ This
4768 4768 value can be read by using the sys.getcheckinterval() function, and it
4769 4769 can be reset via sys.setcheckinterval(N). This switching of threads can
4770 4770 cause subtly confusing effects if one of your threads is doing file I/O.
4771 4771 In text mode, most systems only flush file buffers when they encounter a
4772 4772 '\n'. An instruction as simple as::
4773 4773
4774 4774 print >> filehandle, ''hello world''
4775 4775
4776 4776 actually consists of several bytecodes, so it is possible that the
4777 4777 newline does not reach your file before the next thread switch.
4778 4778 Similarly, if you are writing to a file in binary mode, the file won't
4779 4779 be flushed until the buffer fills, and your other thread may see
4780 4780 apparently truncated files.
4781 4781
4782 4782 For this reason, if you are using IPython's thread support and have (for
4783 4783 example) a GUI application which will read data generated by files
4784 4784 written to from the IPython thread, the safest approach is to open all
4785 4785 of your files in unbuffered mode (the third argument to the file/open
4786 4786 function is the buffering value)::
4787 4787
4788 4788 filehandle = open(filename,mode,0)
4789 4789
4790 4790 This is obviously a brute force way of avoiding race conditions with the
4791 4791 file buffering. If you want to do it cleanly, and you have a resource
4792 4792 which is being shared by the interactive IPython loop and your GUI
4793 4793 thread, you should really handle it with thread locking and
4794 4794 syncrhonization properties. The Python documentation discusses these.
4795 4795
4796 4796 Interactive demos with IPython
4797 4797 ==============================
4798 4798
4799 4799 IPython ships with a basic system for running scripts interactively in
4800 4800 sections, useful when presenting code to audiences. A few tags embedded
4801 4801 in comments (so that the script remains valid Python code) divide a file
4802 4802 into separate blocks, and the demo can be run one block at a time, with
4803 4803 IPython printing (with syntax highlighting) the block before executing
4804 4804 it, and returning to the interactive prompt after each block. The
4805 4805 interactive namespace is updated after each block is run with the
4806 4806 contents of the demo's namespace.
4807 4807
4808 4808 This allows you to show a piece of code, run it and then execute
4809 4809 interactively commands based on the variables just created. Once you
4810 4810 want to continue, you simply execute the next block of the demo. The
4811 4811 following listing shows the markup necessary for dividing a script into
4812 4812 sections for execution as a demo::
4813 4813
4814 4814
4815 4815 """A simple interactive demo to illustrate the use of IPython's Demo class.
4816 4816
4817 4817 Any python script can be run as a demo, but that does little more than showing
4818 4818 it on-screen, syntax-highlighted in one shot. If you add a little simple
4819 4819 markup, you can stop at specified intervals and return to the ipython prompt,
4820 4820 resuming execution later.
4821 4821 """
4822 4822
4823 4823 print 'Hello, welcome to an interactive IPython demo.'
4824 4824 print 'Executing this block should require confirmation before proceeding,'
4825 4825 print 'unless auto_all has been set to true in the demo object'
4826 4826
4827 4827 # The mark below defines a block boundary, which is a point where IPython will
4828 4828 # stop execution and return to the interactive prompt.
4829 4829 # Note that in actual interactive execution,
4830 4830 # <demo> --- stop ---
4831 4831
4832 4832 x = 1
4833 4833 y = 2
4834 4834
4835 4835 # <demo> --- stop ---
4836 4836
4837 4837 # the mark below makes this block as silent
4838 4838 # <demo> silent
4839 4839
4840 4840 print 'This is a silent block, which gets executed but not printed.'
4841 4841
4842 4842 # <demo> --- stop ---
4843 4843 # <demo> auto
4844 4844 print 'This is an automatic block.'
4845 4845 print 'It is executed without asking for confirmation, but printed.'
4846 4846 z = x+y
4847 4847
4848 4848 print 'z=',x
4849 4849
4850 4850 # <demo> --- stop ---
4851 4851 # This is just another normal block.
4852 4852 print 'z is now:', z
4853 4853
4854 4854 print 'bye!'
4855 4855
4856 4856 In order to run a file as a demo, you must first make a Demo object out
4857 4857 of it. If the file is named myscript.py, the following code will make a
4858 4858 demo::
4859 4859
4860 4860 from IPython.demo import Demo
4861 4861
4862 4862 mydemo = Demo('myscript.py')
4863 4863
4864 4864 This creates the mydemo object, whose blocks you run one at a time by
4865 4865 simply calling the object with no arguments. If you have autocall active
4866 4866 in IPython (the default), all you need to do is type::
4867 4867
4868 4868 mydemo
4869 4869
4870 4870 and IPython will call it, executing each block. Demo objects can be
4871 4871 restarted, you can move forward or back skipping blocks, re-execute the
4872 4872 last block, etc. Simply use the Tab key on a demo object to see its
4873 4873 methods, and call '?' on them to see their docstrings for more usage
4874 4874 details. In addition, the demo module itself contains a comprehensive
4875 4875 docstring, which you can access via::
4876 4876
4877 4877 from IPython import demo
4878 4878
4879 4879 demo?
4880 4880
4881 4881 Limitations: It is important to note that these demos are limited to
4882 4882 fairly simple uses. In particular, you can not put division marks in
4883 4883 indented code (loops, if statements, function definitions, etc.)
4884 4884 Supporting something like this would basically require tracking the
4885 4885 internal execution state of the Python interpreter, so only top-level
4886 4886 divisions are allowed. If you want to be able to open an IPython
4887 4887 instance at an arbitrary point in a program, you can use IPython's
4888 4888 embedding facilities, described in detail in Sec. 9
4889 4889
4890 4890
4891 4891 Plotting with matplotlib
4892 4892 ========================
4893 4893
4894 4894 The matplotlib library (http://matplotlib.sourceforge.net
4895 4895 http://matplotlib.sourceforge.net) provides high quality 2D plotting for
4896 4896 Python. Matplotlib can produce plots on screen using a variety of GUI
4897 4897 toolkits, including Tk, GTK and WXPython. It also provides a number of
4898 4898 commands useful for scientific computing, all with a syntax compatible
4899 4899 with that of the popular Matlab program.
4900 4900
4901 4901 IPython accepts the special option -pylab (Sec. 5.2
4902 4902 <node5.html#sec:cmd-line-opts>). This configures it to support
4903 4903 matplotlib, honoring the settings in the .matplotlibrc file. IPython
4904 4904 will detect the user's choice of matplotlib GUI backend, and
4905 4905 automatically select the proper threading model to prevent blocking. It
4906 4906 also sets matplotlib in interactive mode and modifies %run slightly, so
4907 4907 that any matplotlib-based script can be executed using %run and the
4908 4908 final show() command does not block the interactive shell.
4909 4909
4910 4910 The -pylab option must be given first in order for IPython to configure
4911 4911 its threading mode. However, you can still issue other options
4912 4912 afterwards. This allows you to have a matplotlib-based environment
4913 4913 customized with additional modules using the standard IPython profile
4914 4914 mechanism (Sec. 7.3 <node7.html#sec:profiles>): ''ipython -pylab -p
4915 4915 myprofile'' will load the profile defined in ipythonrc-myprofile after
4916 4916 configuring matplotlib.
4917 4917
4918 4918 IPython Extension Api
4919 4919 =====================
4920 4920
4921 4921 IPython api (defined in IPython/ipapi.py) is the public api that
4922 4922 should be used for
4923 4923
4924 4924 * Configuration of user preferences (.ipython/ipy_user_conf.py)
4925 4925 * Creating new profiles (.ipython/ipy_profile_PROFILENAME.py)
4926 4926 * Writing extensions
4927 4927
4928 4928 Note that by using the extension api for configuration (editing
4929 4929 ipy_user_conf.py instead of ipythonrc), you get better validity checks
4930 4930 and get richer functionality - for example, you can import an
4931 4931 extension and call functions in it to configure it for your purposes.
4932 4932
4933 4933 For an example extension (the 'sh' profile), see
4934 4934 IPython/Extensions/ipy_profile_sh.py.
4935 4935
4936 4936 For the last word on what's available, see the source code of
4937 4937 IPython/ipapi.py.
4938 4938
4939 4939
4940 4940 Getting started
4941 4941 ---------------
4942 4942
4943 4943 If you want to define an extension, create a normal python module that
4944 4944 can be imported. The module will access IPython functionality through
4945 4945 the 'ip' object defined below.
4946 4946
4947 4947 If you are creating a new profile (e.g. foobar), name the module as
4948 4948 'ipy_profile_foobar.py' and put it in your ~/.ipython directory. Then,
4949 4949 when you start ipython with the '-p foobar' argument, the module is
4950 4950 automatically imported on ipython startup.
4951 4951
4952 4952 If you are just doing some per-user configuration, you can either
4953 4953
4954 4954 * Put the commands directly into ipy_user_conf.py.
4955 4955
4956 4956 * Create a new module with your customization code and import *that*
4957 4957 module in ipy_user_conf.py. This is preferable to the first approach,
4958 4958 because now you can reuse and distribute your customization code.
4959 4959
4960 4960 Getting a handle to the api
4961 4961 ---------------------------
4962 4962
4963 4963 Put this in the start of your module::
4964 4964
4965 4965 #!python
4966 4966 import IPython.ipapi
4967 4967 ip = IPython.ipapi.get()
4968 4968
4969 4969 The 'ip' object will then be used for accessing IPython
4970 4970 functionality. 'ip' will mean this api object in all the following
4971 4971 code snippets. The same 'ip' that we just acquired is always
4972 4972 accessible in interactive IPython sessions by the name _ip - play with
4973 4973 it like this::
4974 4974
4975 4975 [~\_ipython]|81> a = 10
4976 4976 [~\_ipython]|82> _ip.e
4977 4977 _ip.ev _ip.ex _ip.expose_magic
4978 4978 [~\_ipython]|82> _ip.ev('a+13')
4979 4979 <82> 23
4980 4980
4981 4981 The _ip object is also used in some examples in this document - it can
4982 4982 be substituted by 'ip' in non-interactive use.
4983 4983
4984 4984 Changing options
4985 4985 ----------------
4986 4986
4987 4987 The ip object has 'options' attribute that can be used te get/set
4988 4988 configuration options (just as in the ipythonrc file)::
4989 4989
4990 4990 o = ip.options
4991 4991 o.autocall = 2
4992 4992 o.automagic = 1
4993 4993
4994 4994 Executing statements in IPython namespace with 'ex' and 'ev'
4995 4995 ------------------------------------------------------------
4996 4996
4997 4997 Often, you want to e.g. import some module or define something that
4998 4998 should be visible in IPython namespace. Use ``ip.ev`` to
4999 4999 *evaluate* (calculate the value of) expression and ``ip.ex`` to
5000 5000 '''execute''' a statement::
5001 5001
5002 5002 # path module will be visible to the interactive session
5003 5003 ip.ex("from path import path" )
5004 5004
5005 5005 # define a handy function 'up' that changes the working directory
5006 5006
5007 5007 ip.ex('import os')
5008 5008 ip.ex("def up(): os.chdir('..')")
5009 5009
5010 5010
5011 5011 # _i2 has the input history entry #2, print its value in uppercase.
5012 5012 print ip.ev('_i2.upper()')
5013 5013
5014 5014 Accessing the IPython namespace
5015 5015 -------------------------------
5016 5016
5017 5017 ip.user_ns attribute has a dictionary containing the IPython global
5018 5018 namespace (the namespace visible in the interactive session).
5019 5019
5020 5020 ::
5021 5021
5022 5022 [~\_ipython]|84> tauno = 555
5023 5023 [~\_ipython]|85> _ip.user_ns['tauno']
5024 5024 <85> 555
5025 5025
5026 5026 Defining new magic commands
5027 5027 ---------------------------
5028 5028
5029 5029 The following example defines a new magic command, %impall. What the
5030 5030 command does should be obvious::
5031 5031
5032 5032 def doimp(self, arg):
5033 5033 ip = self.api
5034 5034 ip.ex("import %s; reload(%s); from %s import *" % (
5035 5035 arg,arg,arg)
5036 5036 )
5037 5037
5038 5038 ip.expose_magic('impall', doimp)
5039 5039
5040 5040 Things to observe in this example:
5041 5041
5042 5042 * Define a function that implements the magic command using the
5043 5043 ipapi methods defined in this document
5044 5044 * The first argument of the function is 'self', i.e. the
5045 5045 interpreter object. It shouldn't be used directly. however.
5046 5046 The interpreter object is probably *not* going to remain stable
5047 5047 through IPython versions.
5048 5048 * Access the ipapi through 'self.api' instead of the global 'ip' object.
5049 5049 * All the text following the magic command on the command line is
5050 5050 contained in the second argument
5051 5051 * Expose the magic by ip.expose_magic()
5052 5052
5053 5053
5054 5054 Calling magic functions and system commands
5055 5055 -------------------------------------------
5056 5056
5057 5057 Use ip.magic() to execute a magic function, and ip.system() to execute
5058 5058 a system command::
5059 5059
5060 5060 # go to a bookmark
5061 5061 ip.magic('%cd -b relfiles')
5062 5062
5063 5063 # execute 'ls -F' system command. Interchangeable with os.system('ls'), really.
5064 5064 ip.system('ls -F')
5065 5065
5066 5066 Launching IPython instance from normal python code
5067 5067 --------------------------------------------------
5068 5068
5069 5069 Use ipapi.launch_new_instance() with an argument that specifies the
5070 5070 namespace to use. This can be useful for trivially embedding IPython
5071 5071 into your program. Here's an example of normal python program test.py
5072 5072 ('''without''' an existing IPython session) that launches an IPython
5073 5073 interpreter and regains control when the interpreter is exited::
5074 5074
5075 5075 [ipython]|1> cat test.py
5076 5076 my_ns = dict(
5077 5077 kissa = 15,
5078 5078 koira = 16)
5079 5079 import IPython.ipapi
5080 5080 print "launching IPython instance"
5081 5081 IPython.ipapi.launch_new_instance(my_ns)
5082 5082 print "Exited IPython instance!"
5083 5083 print "New vals:",my_ns['kissa'], my_ns['koira']
5084 5084
5085 5085 And here's what it looks like when run (note how we don't start it
5086 5086 from an ipython session)::
5087 5087
5088 5088 Q:\ipython>python test.py
5089 5089 launching IPython instance
5090 5090 Py 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] IPy 0.7.3b3.r1975
5091 5091 [ipython]|1> kissa = 444
5092 5092 [ipython]|2> koira = 555
5093 5093 [ipython]|3> Exit
5094 5094 Exited IPython instance!
5095 5095 New vals: 444 555
5096 5096
5097 5097 Accessing unexposed functionality
5098 5098 ---------------------------------
5099 5099
5100 5100 There are still many features that are not exposed via the ipapi. If
5101 5101 you can't avoid using them, you can use the functionality in
5102 5102 InteractiveShell object (central IPython session class, defined in
5103 5103 iplib.py) through ip.IP.
5104 5104
5105 5105 For example::
5106 5106
5107 5107 [~]|7> _ip.IP.expand_aliases('np','myfile.py')
5108 5108 <7> 'c:/opt/Notepad++/notepad++.exe myfile.py'
5109 5109 [~]|8>
5110 5110
5111 5111 Still, it's preferable that if you encounter such a feature, contact
5112 5112 the IPython team and request that the functionality be exposed in a
5113 5113 future version of IPython. Things not in ipapi are more likely to
5114 5114 change over time.
5115 5115
5116 Provided extensions
5117 ===================
5118
5119 You can see the list of available extensions (and profiles) by doing
5120 ``import ipy_<TAB>``. Some extensions don't have the ``ipy_`` prefix in
5121 module name, so you may need to see the contents of IPython/Extensions
5122 folder to see what's available.
5123
5124 You can see a brief documentation of an extension by looking at the
5125 module docstring::
5126
5127 [c:p/ipython_main]|190> import ipy_fsops
5128 [c:p/ipython_main]|191> ipy_fsops?
5129
5130 ...
5131
5132 Docstring:
5133 File system operations
5134
5135 Contains: Simple variants of normal unix shell commands (icp, imv, irm,
5136 imkdir, igrep).
5137
5138 You can also install your own extensions - the recommended way is to
5139 just copy the module to ~/.ipython. Extensions are typically enabled
5140 by just importing them (e.g. in ipy_user_conf.py), but some extensions
5141 require additional steps, for example::
5142
5143 [c:p]|192> import ipy_traits_completer
5144 [c:p]|193> ipy_traits_completer.activate()
5145
5146 Note that extensions, even if provided in the stock IPython
5147 installation, are not guaranteed to have the same requirements as the
5148 rest of IPython - an extension may require external libraries or a
5149 newer version of Python than what IPython officially requires. An
5150 extension may also be under a more restrictive license than IPython
5151 (e.g. ipy_bzr is under GPL).
5152
5153 Just for reference, the list of bundled extensions at the time of
5154 writing is below:
5155
5156 astyle.py clearcmd.py envpersist.py ext_rescapture.py ibrowse.py
5157 igrid.py InterpreterExec.py InterpreterPasteInput.py ipipe.py
5158 ipy_app_completers.py ipy_autoreload.py ipy_bzr.py ipy_completers.py
5159 ipy_constants.py ipy_defaults.py ipy_editors.py ipy_exportdb.py
5160 ipy_extutil.py ipy_fsops.py ipy_gnuglobal.py ipy_kitcfg.py
5161 ipy_legacy.py ipy_leo.py ipy_p4.py ipy_profile_doctest.py
5162 ipy_profile_none.py ipy_profile_scipy.py ipy_profile_sh.py
5163 ipy_profile_zope.py ipy_pydb.py ipy_rehashdir.py ipy_render.py
5164 ipy_server.py ipy_signals.py ipy_stock_completers.py
5165 ipy_system_conf.py ipy_traits_completer.py ipy_vimserver.py
5166 ipy_which.py ipy_workdir.py jobctrl.py ledit.py numeric_formats.py
5167 PhysicalQInput.py PhysicalQInteractive.py pickleshare.py
5168 pspersistence.py win32clip.py __init__.py
5169
5116 5170 Reporting bugs
5117 5171 ==============
5118 5172
5119 5173 Automatic crash reports
5120 5174 -----------------------
5121 5175
5122 5176 Ideally, IPython itself shouldn't crash. It will catch exceptions
5123 5177 produced by you, but bugs in its internals will still crash it.
5124 5178
5125 5179 In such a situation, IPython will leave a file named
5126 5180 IPython_crash_report.txt in your IPYTHONDIR directory (that way if
5127 5181 crashes happen several times it won't litter many directories, the
5128 5182 post-mortem file is always located in the same place and new occurrences
5129 5183 just overwrite the previous one). If you can mail this file to the
5130 5184 developers (see sec. 20 <node20.html#sec:credits> for names and
5131 5185 addresses), it will help us a lot in understanding the cause of the
5132 5186 problem and fixing it sooner.
5133 5187
5134 5188
5135 5189 The bug tracker
5136 5190 ---------------
5137 5191
5138 5192 IPython also has an online bug-tracker, located at
5139 5193 http://projects.scipy.org/ipython/ipython/report/1. In addition to
5140 5194 mailing the developers, it would be a good idea to file a bug report
5141 5195 here. This will ensure that the issue is properly followed to
5142 5196 conclusion. To report new bugs you will have to register first.
5143 5197
5144 5198 You can also use this bug tracker to file feature requests.
5145 5199
5146 5200 Brief history
5147 5201 =============
5148 5202
5149 5203
5150 5204 Origins
5151 5205 -------
5152 5206
5153 5207 The current IPython system grew out of the following three projects:
5154 5208
5155 5209 * [ipython] by Fernando Pérez. I was working on adding
5156 5210 Mathematica-type prompts and a flexible configuration system
5157 5211 (something better than $PYTHONSTARTUP) to the standard Python
5158 5212 interactive interpreter.
5159 5213 * [IPP] by Janko Hauser. Very well organized, great usability. Had
5160 5214 an old help system. IPP was used as the 'container' code into
5161 5215 which I added the functionality from ipython and LazyPython.
5162 5216 * [LazyPython] by Nathan Gray. Simple but very powerful. The quick
5163 5217 syntax (auto parens, auto quotes) and verbose/colored tracebacks
5164 5218 were all taken from here.
5165 5219
5166 5220 When I found out (see sec. 20 <node20.html#figgins>) about IPP and
5167 5221 LazyPython I tried to join all three into a unified system. I thought
5168 5222 this could provide a very nice working environment, both for regular
5169 5223 programming and scientific computing: shell-like features, IDL/Matlab
5170 5224 numerics, Mathematica-type prompt history and great object introspection
5171 5225 and help facilities. I think it worked reasonably well, though it was a
5172 5226 lot more work than I had initially planned.
5173 5227
5174 5228
5175 5229 Current status
5176 5230 --------------
5177 5231
5178 5232 The above listed features work, and quite well for the most part. But
5179 5233 until a major internal restructuring is done (see below), only bug
5180 5234 fixing will be done, no other features will be added (unless very minor
5181 5235 and well localized in the cleaner parts of the code).
5182 5236
5183 5237 IPython consists of some 18000 lines of pure python code, of which
5184 5238 roughly two thirds is reasonably clean. The rest is, messy code which
5185 5239 needs a massive restructuring before any further major work is done.
5186 5240 Even the messy code is fairly well documented though, and most of the
5187 5241 problems in the (non-existent) class design are well pointed to by a
5188 5242 PyChecker run. So the rewriting work isn't that bad, it will just be
5189 5243 time-consuming.
5190 5244
5191 5245
5192 5246 Future
5193 5247 ------
5194 5248
5195 5249 See the separate new_design document for details. Ultimately, I would
5196 5250 like to see IPython become part of the standard Python distribution as a
5197 5251 'big brother with batteries' to the standard Python interactive
5198 5252 interpreter. But that will never happen with the current state of the
5199 5253 code, so all contributions are welcome.
5200 5254
5201 5255 License
5202 5256 =======
5203 5257
5204 5258 IPython is released under the terms of the BSD license, whose general
5205 5259 form can be found at:
5206 5260 http://www.opensource.org/licenses/bsd-license.php. The full text of the
5207 5261 IPython license is reproduced below::
5208 5262
5209 5263 IPython is released under a BSD-type license.
5210 5264
5211 5265 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez
5212 5266 <fperez@colorado.edu>.
5213 5267
5214 5268 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
5215 5269 Nathaniel Gray <n8gray@caltech.edu>.
5216 5270
5217 5271 All rights reserved.
5218 5272
5219 5273 Redistribution and use in source and binary forms, with or without
5220 5274 modification, are permitted provided that the following conditions
5221 5275 are met:
5222 5276
5223 5277 a. Redistributions of source code must retain the above copyright
5224 5278 notice, this list of conditions and the following disclaimer.
5225 5279
5226 5280 b. Redistributions in binary form must reproduce the above copyright
5227 5281 notice, this list of conditions and the following disclaimer in the
5228 5282 documentation and/or other materials provided with the distribution.
5229 5283
5230 5284 c. Neither the name of the copyright holders nor the names of any
5231 5285 contributors to this software may be used to endorse or promote
5232 5286 products derived from this software without specific prior written
5233 5287 permission.
5234 5288
5235 5289 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5236 5290 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5237 5291 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
5238 5292 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
5239 5293 REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
5240 5294 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
5241 5295 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
5242 5296 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
5243 5297 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
5244 5298 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
5245 5299 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
5246 5300 POSSIBILITY OF SUCH DAMAGE.
5247 5301
5248 5302 Individual authors are the holders of the copyright for their code and
5249 5303 are listed in each file.
5250 5304
5251 5305 Some files (DPyGetOpt.py, for example) may be licensed under different
5252 5306 conditions. Ultimately each file indicates clearly the conditions under
5253 5307 which its author/authors have decided to publish the code.
5254 5308
5255 5309 Versions of IPython up to and including 0.6.3 were released under the
5256 5310 GNU Lesser General Public License (LGPL), available at
5257 5311 http://www.gnu.org/copyleft/lesser.html.
5258 5312
5259 5313 Credits
5260 5314 =======
5261 5315
5262 5316 IPython is mainly developed by Fernando Pérez
5263 5317 <Fernando.Perez@colorado.edu>, but the project was born from mixing in
5264 5318 Fernando's code with the IPP project by Janko Hauser
5265 5319 <jhauser-AT-zscout.de> and LazyPython by Nathan Gray
5266 5320 <n8gray-AT-caltech.edu>. For all IPython-related requests, please
5267 5321 contact Fernando.
5268 5322
5269 5323 As of early 2006, the following developers have joined the core team:
5270 5324
5271 5325 * [Robert Kern] <rkern-AT-enthought.com>: co-mentored the 2005
5272 5326 Google Summer of Code project to develop python interactive
5273 5327 notebooks (XML documents) and graphical interface. This project
5274 5328 was awarded to the students Tzanko Matev <tsanko-AT-gmail.com> and
5275 5329 Toni Alatalo <antont-AT-an.org>
5276 5330 * [Brian Granger] <bgranger-AT-scu.edu>: extending IPython to allow
5277 5331 support for interactive parallel computing.
5278 5332 * [Ville Vainio] <vivainio-AT-gmail.com>: Ville is the new
5279 5333 maintainer for the main trunk of IPython after version 0.7.1.
5280 5334
5281 5335 User or development help should be requested via the IPython mailing lists:
5282 5336
5283 5337 *User list:*
5284 5338 http://scipy.net/mailman/listinfo/ipython-user
5285 5339 *Developer's list:*
5286 5340 http://scipy.net/mailman/listinfo/ipython-dev
5287 5341
5288 5342 The IPython project is also very grateful to^7 <footnode.html#foot2913>:
5289 5343
5290 5344 Bill Bumgarner <bbum-AT-friday.com>: for providing the DPyGetOpt module
5291 5345 which gives very powerful and convenient handling of command-line
5292 5346 options (light years ahead of what Python 2.1.1's getopt module does).
5293 5347
5294 5348 Ka-Ping Yee <ping-AT-lfw.org>: for providing the Itpl module for
5295 5349 convenient and powerful string interpolation with a much nicer syntax
5296 5350 than formatting through the '%' operator.
5297 5351
5298 5352 Arnd Baecker <baecker-AT-physik.tu-dresden.de>: for his many very useful
5299 5353 suggestions and comments, and lots of help with testing and
5300 5354 documentation checking. Many of IPython's newer features are a result of
5301 5355 discussions with him (bugs are still my fault, not his).
5302 5356
5303 5357 Obviously Guido van Rossum and the whole Python development team, that
5304 5358 goes without saying.
5305 5359
5306 5360 IPython's website is generously hosted at http://ipython.scipy.orgby
5307 5361 Enthought (http://www.enthought.com). I am very grateful to them and all
5308 5362 of the SciPy team for their contribution.
5309 5363
5310 5364 Fernando would also like to thank Stephen Figgins <fig-AT-monitor.net>,
5311 5365 an O'Reilly Python editor. His Oct/11/2001 article about IPP and
5312 5366 LazyPython, was what got this project started. You can read it at:
5313 5367 http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html.
5314 5368
5315 5369 And last but not least, all the kind IPython users who have emailed new
5316 5370 code, bug reports, fixes, comments and ideas. A brief list follows,
5317 5371 please let me know if I have ommitted your name by accident:
5318 5372
5319 5373 * [Jack Moffit] <jack-AT-xiph.org> Bug fixes, including the infamous
5320 5374 color problem. This bug alone caused many lost hours and
5321 5375 frustration, many thanks to him for the fix. I've always been a
5322 5376 fan of Ogg & friends, now I have one more reason to like these folks.
5323 5377 Jack is also contributing with Debian packaging and many other
5324 5378 things.
5325 5379 * [Alexander Schmolck] <a.schmolck-AT-gmx.net> Emacs work, bug
5326 5380 reports, bug fixes, ideas, lots more. The ipython.el mode for
5327 5381 (X)Emacs is Alex's code, providing full support for IPython under
5328 5382 (X)Emacs.
5329 5383 * [Andrea Riciputi] <andrea.riciputi-AT-libero.it> Mac OSX
5330 5384 information, Fink package management.
5331 5385 * [Gary Bishop] <gb-AT-cs.unc.edu> Bug reports, and patches to work
5332 5386 around the exception handling idiosyncracies of WxPython. Readline
5333 5387 and color support for Windows.
5334 5388 * [Jeffrey Collins] <Jeff.Collins-AT-vexcel.com> Bug reports. Much
5335 5389 improved readline support, including fixes for Python 2.3.
5336 5390 * [Dryice Liu] <dryice-AT-liu.com.cn> FreeBSD port.
5337 5391 * [Mike Heeter] <korora-AT-SDF.LONESTAR.ORG>
5338 5392 * [Christopher Hart] <hart-AT-caltech.edu> PDB integration.
5339 5393 * [Milan Zamazal] <pdm-AT-zamazal.org> Emacs info.
5340 5394 * [Philip Hisley] <compsys-AT-starpower.net>
5341 5395 * [Holger Krekel] <pyth-AT-devel.trillke.net> Tab completion, lots
5342 5396 more.
5343 5397 * [Robin Siebler] <robinsiebler-AT-starband.net>
5344 5398 * [Ralf Ahlbrink] <ralf_ahlbrink-AT-web.de>
5345 5399 * [Thorsten Kampe] <thorsten-AT-thorstenkampe.de>
5346 5400 * [Fredrik Kant] <fredrik.kant-AT-front.com> Windows setup.
5347 5401 * [Syver Enstad] <syver-en-AT-online.no> Windows setup.
5348 5402 * [Richard] <rxe-AT-renre-europe.com> Global embedding.
5349 5403 * [Hayden Callow] <h.callow-AT-elec.canterbury.ac.nz> Gnuplot.py 1.6
5350 5404 compatibility.
5351 5405 * [Leonardo Santagada] <retype-AT-terra.com.br> Fixes for Windows
5352 5406 installation.
5353 5407 * [Christopher Armstrong] <radix-AT-twistedmatrix.com> Bugfixes.
5354 5408 * [Francois Pinard] <pinard-AT-iro.umontreal.ca> Code and
5355 5409 documentation fixes.
5356 5410 * [Cory Dodt] <cdodt-AT-fcoe.k12.ca.us> Bug reports and Windows
5357 5411 ideas. Patches for Windows installer.
5358 5412 * [Olivier Aubert] <oaubert-AT-bat710.univ-lyon1.fr> New magics.
5359 5413 * [King C. Shu] <kingshu-AT-myrealbox.com> Autoindent patch.
5360 5414 * [Chris Drexler] <chris-AT-ac-drexler.de> Readline packages for
5361 5415 Win32/CygWin.
5362 5416 * [Gustavo Cordova Avila] <gcordova-AT-sismex.com> EvalDict code for
5363 5417 nice, lightweight string interpolation.
5364 5418 * [Kasper Souren] <Kasper.Souren-AT-ircam.fr> Bug reports, ideas.
5365 5419 * [Gever Tulley] <gever-AT-helium.com> Code contributions.
5366 5420 * [Ralf Schmitt] <ralf-AT-brainbot.com> Bug reports & fixes.
5367 5421 * [Oliver Sander] <osander-AT-gmx.de> Bug reports.
5368 5422 * [Rod Holland] <rhh-AT-structurelabs.com> Bug reports and fixes to
5369 5423 logging module.
5370 5424 * [Daniel 'Dang' Griffith] <pythondev-dang-AT-lazytwinacres.net>
5371 5425 Fixes, enhancement suggestions for system shell use.
5372 5426 * [Viktor Ransmayr] <viktor.ransmayr-AT-t-online.de> Tests and
5373 5427 reports on Windows installation issues. Contributed a true Windows
5374 5428 binary installer.
5375 5429 * [Mike Salib] <msalib-AT-mit.edu> Help fixing a subtle bug related
5376 5430 to traceback printing.
5377 5431 * [W.J. van der Laan] <gnufnork-AT-hetdigitalegat.nl> Bash-like
5378 5432 prompt specials.
5379 5433 * [Antoon Pardon] <Antoon.Pardon-AT-rece.vub.ac.be> Critical fix for
5380 5434 the multithreaded IPython.
5381 5435 * [John Hunter] <jdhunter-AT-nitace.bsd.uchicago.edu> Matplotlib
5382 5436 author, helped with all the development of support for matplotlib
5383 5437 in IPyhton, including making necessary changes to matplotlib itself.
5384 5438 * [Matthew Arnison] <maffew-AT-cat.org.au> Bug reports, '%run -d' idea.
5385 5439 * [Prabhu Ramachandran] <prabhu_r-AT-users.sourceforge.net> Help
5386 5440 with (X)Emacs support, threading patches, ideas...
5387 5441 * [Norbert Tretkowski] <tretkowski-AT-inittab.de> help with Debian
5388 5442 packaging and distribution.
5389 5443 * [George Sakkis] <gsakkis-AT-eden.rutgers.edu> New matcher for
5390 5444 tab-completing named arguments of user-defined functions.
5391 5445 * [Jörgen Stenarson] <jorgen.stenarson-AT-bostream.nu> Wildcard
5392 5446 support implementation for searching namespaces.
5393 5447 * [Vivian De Smedt] <vivian-AT-vdesmedt.com> Debugger enhancements,
5394 5448 so that when pdb is activated from within IPython, coloring, tab
5395 5449 completion and other features continue to work seamlessly.
5396 5450 * [Scott Tsai] <scottt958-AT-yahoo.com.tw> Support for automatic
5397 5451 editor invocation on syntax errors (see
5398 5452 http://www.scipy.net/roundup/ipython/issue36).
5399 5453 * [Alexander Belchenko] <bialix-AT-ukr.net> Improvements for win32
5400 5454 paging system.
5401 5455 * [Will Maier] <willmaier-AT-ml1.net> Official OpenBSD port.
5402 5456
General Comments 0
You need to be logged in to leave comments. Login now