##// END OF EJS Templates
fix ipython usage text...
MinRK -
Show More
@@ -1,565 +1,568 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Usage information for the main IPython applications.
3 3 """
4 4 #-----------------------------------------------------------------------------
5 5 # Copyright (C) 2008-2011 The IPython Development Team
6 6 # Copyright (C) 2001-2007 Fernando Perez. <fperez@colorado.edu>
7 7 #
8 8 # Distributed under the terms of the BSD License. The full license is in
9 9 # the file COPYING, distributed as part of this software.
10 10 #-----------------------------------------------------------------------------
11 11
12 12 import sys
13 13 from IPython.core import release
14 14
15 15 cl_usage = """\
16 16 =========
17 17 IPython
18 18 =========
19 19
20 20 Tools for Interactive Computing in Python
21 21 =========================================
22 22
23 23 A Python shell with automatic history (input and output), dynamic object
24 24 introspection, easier configuration, command completion, access to the
25 25 system shell and more. IPython can also be embedded in running programs.
26 26
27 27
28 28 Usage
29 29
30 ipython [subcommand] [options] [files]
31
32 If invoked with no options, it executes all the files listed in sequence
33 and exits, use -i to enter interactive mode after running the files. Files
34 ending in .py will be treated as normal Python, but files ending in .ipy
35 can contain special IPython syntax (magic commands, shell expansions, etc.)
30 ipython [subcommand] [options] [-c cmd | -m mod | file] [arg] ...
31
32 If invoked with no options, it executes the file and exits, passing the
33 remaining arguments to the script, just as if you had specified the same
34 command with python. If you specify the option `-i` before the filename, it
35 will enter an interactive IPython session after running the script, rather
36 than exiting. Files ending in .py will be treated as normal Python, but
37 files ending in .ipy can contain special IPython syntax (magic commands,
38 shell expansions, etc.)
36 39
37 40 Almost all configuration in IPython is available via the command-line. Do
38 41 `ipython --help-all` to see all available options. For persistent
39 42 configuration, look into your `ipython_config.py` configuration file for
40 43 details.
41 44
42 45 This file is typically installed in the `IPYTHONDIR` directory, and there
43 46 is a separate configuration directory for each profile. The default profile
44 47 directory will be located in $IPYTHONDIR/profile_default. For Linux users,
45 48 IPYTHONDIR defaults to `$HOME/.config/ipython`, and for other Unix systems
46 49 to `$HOME/.ipython`. For Windows users, $HOME resolves to C:\\Documents
47 50 and Settings\\YourUserName in most instances.
48 51
49 52 To initialize a profile with the default configuration file, do::
50 53
51 54 $> ipython profile create
52 55
53 56 and start editing `IPYTHONDIR/profile_default/ipython_config.py`
54 57
55 58 In IPython's documentation, we will refer to this directory as
56 59 `IPYTHONDIR`, you can change its default location by creating an
57 60 environment variable with this name and setting it to the desired path.
58 61
59 62 For more information, see the manual available in HTML and PDF in your
60 63 installation, or online at http://ipython.org/documentation.html.
61 64 """
62 65
63 66 interactive_usage = """
64 67 IPython -- An enhanced Interactive Python
65 68 =========================================
66 69
67 70 IPython offers a combination of convenient shell features, special commands
68 71 and a history mechanism for both input (command history) and output (results
69 72 caching, similar to Mathematica). It is intended to be a fully compatible
70 73 replacement for the standard Python interpreter, while offering vastly
71 74 improved functionality and flexibility.
72 75
73 76 At your system command line, type 'ipython -h' to see the command line
74 77 options available. This document only describes interactive features.
75 78
76 79 MAIN FEATURES
77 80 -------------
78 81
79 82 * Access to the standard Python help. As of Python 2.1, a help system is
80 83 available with access to object docstrings and the Python manuals. Simply
81 84 type 'help' (no quotes) to access it.
82 85
83 86 * Magic commands: type %magic for information on the magic subsystem.
84 87
85 88 * System command aliases, via the %alias command or the configuration file(s).
86 89
87 90 * Dynamic object information:
88 91
89 92 Typing ?word or word? prints detailed information about an object. If
90 93 certain strings in the object are too long (docstrings, code, etc.) they get
91 94 snipped in the center for brevity.
92 95
93 96 Typing ??word or word?? gives access to the full information without
94 97 snipping long strings. Long strings are sent to the screen through the less
95 98 pager if longer than the screen, printed otherwise.
96 99
97 100 The ?/?? system gives access to the full source code for any object (if
98 101 available), shows function prototypes and other useful information.
99 102
100 103 If you just want to see an object's docstring, type '%pdoc object' (without
101 104 quotes, and without % if you have automagic on).
102 105
103 106 Both %pdoc and ?/?? give you access to documentation even on things which are
104 107 not explicitely defined. Try for example typing {}.get? or after import os,
105 108 type os.path.abspath??. The magic functions %pdef, %source and %file operate
106 109 similarly.
107 110
108 111 * Completion in the local namespace, by typing TAB at the prompt.
109 112
110 113 At any time, hitting tab will complete any available python commands or
111 114 variable names, and show you a list of the possible completions if there's
112 115 no unambiguous one. It will also complete filenames in the current directory.
113 116
114 117 This feature requires the readline and rlcomplete modules, so it won't work
115 118 if your Python lacks readline support (such as under Windows).
116 119
117 120 * Search previous command history in two ways (also requires readline):
118 121
119 122 - Start typing, and then use Ctrl-p (previous,up) and Ctrl-n (next,down) to
120 123 search through only the history items that match what you've typed so
121 124 far. If you use Ctrl-p/Ctrl-n at a blank prompt, they just behave like
122 125 normal arrow keys.
123 126
124 127 - Hit Ctrl-r: opens a search prompt. Begin typing and the system searches
125 128 your history for lines that match what you've typed so far, completing as
126 129 much as it can.
127 130
128 131 - %hist: search history by index (this does *not* require readline).
129 132
130 133 * Persistent command history across sessions.
131 134
132 135 * Logging of input with the ability to save and restore a working session.
133 136
134 137 * System escape with !. Typing !ls will run 'ls' in the current directory.
135 138
136 139 * The reload command does a 'deep' reload of a module: changes made to the
137 140 module since you imported will actually be available without having to exit.
138 141
139 142 * Verbose and colored exception traceback printouts. See the magic xmode and
140 143 xcolor functions for details (just type %magic).
141 144
142 145 * Input caching system:
143 146
144 147 IPython offers numbered prompts (In/Out) with input and output caching. All
145 148 input is saved and can be retrieved as variables (besides the usual arrow
146 149 key recall).
147 150
148 151 The following GLOBAL variables always exist (so don't overwrite them!):
149 152 _i: stores previous input.
150 153 _ii: next previous.
151 154 _iii: next-next previous.
152 155 _ih : a list of all input _ih[n] is the input from line n.
153 156
154 157 Additionally, global variables named _i<n> are dynamically created (<n>
155 158 being the prompt counter), such that _i<n> == _ih[<n>]
156 159
157 160 For example, what you typed at prompt 14 is available as _i14 and _ih[14].
158 161
159 162 You can create macros which contain multiple input lines from this history,
160 163 for later re-execution, with the %macro function.
161 164
162 165 The history function %hist allows you to see any part of your input history
163 166 by printing a range of the _i variables. Note that inputs which contain
164 167 magic functions (%) appear in the history with a prepended comment. This is
165 168 because they aren't really valid Python code, so you can't exec them.
166 169
167 170 * Output caching system:
168 171
169 172 For output that is returned from actions, a system similar to the input
170 173 cache exists but using _ instead of _i. Only actions that produce a result
171 174 (NOT assignments, for example) are cached. If you are familiar with
172 175 Mathematica, IPython's _ variables behave exactly like Mathematica's %
173 176 variables.
174 177
175 178 The following GLOBAL variables always exist (so don't overwrite them!):
176 179 _ (one underscore): previous output.
177 180 __ (two underscores): next previous.
178 181 ___ (three underscores): next-next previous.
179 182
180 183 Global variables named _<n> are dynamically created (<n> being the prompt
181 184 counter), such that the result of output <n> is always available as _<n>.
182 185
183 186 Finally, a global dictionary named _oh exists with entries for all lines
184 187 which generated output.
185 188
186 189 * Directory history:
187 190
188 191 Your history of visited directories is kept in the global list _dh, and the
189 192 magic %cd command can be used to go to any entry in that list.
190 193
191 194 * Auto-parentheses and auto-quotes (adapted from Nathan Gray's LazyPython)
192 195
193 196 1. Auto-parentheses
194 197
195 198 Callable objects (i.e. functions, methods, etc) can be invoked like
196 199 this (notice the commas between the arguments)::
197 200
198 201 In [1]: callable_ob arg1, arg2, arg3
199 202
200 203 and the input will be translated to this::
201 204
202 205 callable_ob(arg1, arg2, arg3)
203 206
204 207 This feature is off by default (in rare cases it can produce
205 208 undesirable side-effects), but you can activate it at the command-line
206 209 by starting IPython with `--autocall 1`, set it permanently in your
207 210 configuration file, or turn on at runtime with `%autocall 1`.
208 211
209 212 You can force auto-parentheses by using '/' as the first character
210 213 of a line. For example::
211 214
212 215 In [1]: /globals # becomes 'globals()'
213 216
214 217 Note that the '/' MUST be the first character on the line! This
215 218 won't work::
216 219
217 220 In [2]: print /globals # syntax error
218 221
219 222 In most cases the automatic algorithm should work, so you should
220 223 rarely need to explicitly invoke /. One notable exception is if you
221 224 are trying to call a function with a list of tuples as arguments (the
222 225 parenthesis will confuse IPython)::
223 226
224 227 In [1]: zip (1,2,3),(4,5,6) # won't work
225 228
226 229 but this will work::
227 230
228 231 In [2]: /zip (1,2,3),(4,5,6)
229 232 ------> zip ((1,2,3),(4,5,6))
230 233 Out[2]= [(1, 4), (2, 5), (3, 6)]
231 234
232 235 IPython tells you that it has altered your command line by
233 236 displaying the new command line preceded by -->. e.g.::
234 237
235 238 In [18]: callable list
236 239 -------> callable (list)
237 240
238 241 2. Auto-Quoting
239 242
240 243 You can force auto-quoting of a function's arguments by using ',' as
241 244 the first character of a line. For example::
242 245
243 246 In [1]: ,my_function /home/me # becomes my_function("/home/me")
244 247
245 248 If you use ';' instead, the whole argument is quoted as a single
246 249 string (while ',' splits on whitespace)::
247 250
248 251 In [2]: ,my_function a b c # becomes my_function("a","b","c")
249 252 In [3]: ;my_function a b c # becomes my_function("a b c")
250 253
251 254 Note that the ',' MUST be the first character on the line! This
252 255 won't work::
253 256
254 257 In [4]: x = ,my_function /home/me # syntax error
255 258 """
256 259
257 260 interactive_usage_min = """\
258 261 An enhanced console for Python.
259 262 Some of its features are:
260 263 - Readline support if the readline library is present.
261 264 - Tab completion in the local namespace.
262 265 - Logging of input, see command-line options.
263 266 - System shell escape via ! , eg !ls.
264 267 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
265 268 - Keeps track of locally defined variables via %who, %whos.
266 269 - Show object information with a ? eg ?x or x? (use ?? for more info).
267 270 """
268 271
269 272 quick_reference = r"""
270 273 IPython -- An enhanced Interactive Python - Quick Reference Card
271 274 ================================================================
272 275
273 276 obj?, obj?? : Get help, or more help for object (also works as
274 277 ?obj, ??obj).
275 278 ?foo.*abc* : List names in 'foo' containing 'abc' in them.
276 279 %magic : Information about IPython's 'magic' % functions.
277 280
278 281 Magic functions are prefixed by % or %%, and typically take their arguments
279 282 without parentheses, quotes or even commas for convenience. Line magics take a
280 283 single % and cell magics are prefixed with two %%.
281 284
282 285 Example magic function calls:
283 286
284 287 %alias d ls -F : 'd' is now an alias for 'ls -F'
285 288 alias d ls -F : Works if 'alias' not a python name
286 289 alist = %alias : Get list of aliases to 'alist'
287 290 cd /usr/share : Obvious. cd -<tab> to choose from visited dirs.
288 291 %cd?? : See help AND source for magic %cd
289 292 %timeit x=10 : time the 'x=10' statement with high precision.
290 293 %%timeit x=2**100
291 294 x**100 : time 'x*100' with a setup of 'x=2**100'; setup code is not
292 295 counted. This is an example of a cell magic.
293 296
294 297 System commands:
295 298
296 299 !cp a.txt b/ : System command escape, calls os.system()
297 300 cp a.txt b/ : after %rehashx, most system commands work without !
298 301 cp ${f}.txt $bar : Variable expansion in magics and system commands
299 302 files = !ls /usr : Capture sytem command output
300 303 files.s, files.l, files.n: "a b c", ['a','b','c'], 'a\nb\nc'
301 304
302 305 History:
303 306
304 307 _i, _ii, _iii : Previous, next previous, next next previous input
305 308 _i4, _ih[2:5] : Input history line 4, lines 2-4
306 309 exec _i81 : Execute input history line #81 again
307 310 %rep 81 : Edit input history line #81
308 311 _, __, ___ : previous, next previous, next next previous output
309 312 _dh : Directory history
310 313 _oh : Output history
311 314 %hist : Command history. '%hist -g foo' search history for 'foo'
312 315
313 316 Autocall:
314 317
315 318 f 1,2 : f(1,2) # Off by default, enable with %autocall magic.
316 319 /f 1,2 : f(1,2) (forced autoparen)
317 320 ,f 1 2 : f("1","2")
318 321 ;f 1 2 : f("1 2")
319 322
320 323 Remember: TAB completion works in many contexts, not just file names
321 324 or python names.
322 325
323 326 The following magic functions are currently available:
324 327
325 328 """
326 329
327 330 gui_reference = """\
328 331 ===============================
329 332 The graphical IPython console
330 333 ===============================
331 334
332 335 This console is designed to emulate the look, feel and workflow of a terminal
333 336 environment, while adding a number of enhancements that are simply not possible
334 337 in a real terminal, such as inline syntax highlighting, true multiline editing,
335 338 inline graphics and much more.
336 339
337 340 This quick reference document contains the basic information you'll need to
338 341 know to make the most efficient use of it. For the various command line
339 342 options available at startup, type ``ipython qtconsole --help`` at the command line.
340 343
341 344
342 345 Multiline editing
343 346 =================
344 347
345 348 The graphical console is capable of true multiline editing, but it also tries
346 349 to behave intuitively like a terminal when possible. If you are used to
347 350 IPython's old terminal behavior, you should find the transition painless, and
348 351 once you learn a few basic keybindings it will be a much more efficient
349 352 environment.
350 353
351 354 For single expressions or indented blocks, the console behaves almost like the
352 355 terminal IPython: single expressions are immediately evaluated, and indented
353 356 blocks are evaluated once a single blank line is entered::
354 357
355 358 In [1]: print "Hello IPython!" # Enter was pressed at the end of the line
356 359 Hello IPython!
357 360
358 361 In [2]: for i in range(10):
359 362 ...: print i,
360 363 ...:
361 364 0 1 2 3 4 5 6 7 8 9
362 365
363 366 If you want to enter more than one expression in a single input block
364 367 (something not possible in the terminal), you can use ``Control-Enter`` at the
365 368 end of your first line instead of ``Enter``. At that point the console goes
366 369 into 'cell mode' and even if your inputs are not indented, it will continue
367 370 accepting arbitrarily many lines until either you enter an extra blank line or
368 371 you hit ``Shift-Enter`` (the key binding that forces execution). When a
369 372 multiline cell is entered, IPython analyzes it and executes its code producing
370 373 an ``Out[n]`` prompt only for the last expression in it, while the rest of the
371 374 cell is executed as if it was a script. An example should clarify this::
372 375
373 376 In [3]: x=1 # Hit C-Enter here
374 377 ...: y=2 # from now on, regular Enter is sufficient
375 378 ...: z=3
376 379 ...: x**2 # This does *not* produce an Out[] value
377 380 ...: x+y+z # Only the last expression does
378 381 ...:
379 382 Out[3]: 6
380 383
381 384 The behavior where an extra blank line forces execution is only active if you
382 385 are actually typing at the keyboard each line, and is meant to make it mimic
383 386 the IPython terminal behavior. If you paste a long chunk of input (for example
384 387 a long script copied form an editor or web browser), it can contain arbitrarily
385 388 many intermediate blank lines and they won't cause any problems. As always,
386 389 you can then make it execute by appending a blank line *at the end* or hitting
387 390 ``Shift-Enter`` anywhere within the cell.
388 391
389 392 With the up arrow key, you can retrieve previous blocks of input that contain
390 393 multiple lines. You can move inside of a multiline cell like you would in any
391 394 text editor. When you want it executed, the simplest thing to do is to hit the
392 395 force execution key, ``Shift-Enter`` (though you can also navigate to the end
393 396 and append a blank line by using ``Enter`` twice).
394 397
395 398 If you've edited a multiline cell and accidentally navigate out of it with the
396 399 up or down arrow keys, IPython will clear the cell and replace it with the
397 400 contents of the one above or below that you navigated to. If this was an
398 401 accident and you want to retrieve the cell you were editing, use the Undo
399 402 keybinding, ``Control-z``.
400 403
401 404
402 405 Key bindings
403 406 ============
404 407
405 408 The IPython console supports most of the basic Emacs line-oriented keybindings,
406 409 in addition to some of its own.
407 410
408 411 The keybinding prefixes mean:
409 412
410 413 - ``C``: Control
411 414 - ``S``: Shift
412 415 - ``M``: Meta (typically the Alt key)
413 416
414 417 The keybindings themselves are:
415 418
416 419 - ``Enter``: insert new line (may cause execution, see above).
417 420 - ``C-Enter``: *force* new line, *never* causes execution.
418 421 - ``S-Enter``: *force* execution regardless of where cursor is, no newline added.
419 422 - ``Up``: step backwards through the history.
420 423 - ``Down``: step forwards through the history.
421 424 - ``S-Up``: search backwards through the history (like ``C-r`` in bash).
422 425 - ``S-Down``: search forwards through the history.
423 426 - ``C-c``: copy highlighted text to clipboard (prompts are automatically stripped).
424 427 - ``C-S-c``: copy highlighted text to clipboard (prompts are not stripped).
425 428 - ``C-v``: paste text from clipboard.
426 429 - ``C-z``: undo (retrieves lost text if you move out of a cell with the arrows).
427 430 - ``C-S-z``: redo.
428 431 - ``C-o``: move to 'other' area, between pager and terminal.
429 432 - ``C-l``: clear terminal.
430 433 - ``C-a``: go to beginning of line.
431 434 - ``C-e``: go to end of line.
432 435 - ``C-u``: kill from cursor to the begining of the line.
433 436 - ``C-k``: kill from cursor to the end of the line.
434 437 - ``C-y``: yank (paste)
435 438 - ``C-p``: previous line (like up arrow)
436 439 - ``C-n``: next line (like down arrow)
437 440 - ``C-f``: forward (like right arrow)
438 441 - ``C-b``: back (like left arrow)
439 442 - ``C-d``: delete next character, or exits if input is empty
440 443 - ``M-<``: move to the beginning of the input region.
441 444 - ``M->``: move to the end of the input region.
442 445 - ``M-d``: delete next word.
443 446 - ``M-Backspace``: delete previous word.
444 447 - ``C-.``: force a kernel restart (a confirmation dialog appears).
445 448 - ``C-+``: increase font size.
446 449 - ``C--``: decrease font size.
447 450 - ``C-M-Space``: toggle full screen. (Command-Control-Space on Mac OS X)
448 451
449 452 The IPython pager
450 453 =================
451 454
452 455 IPython will show long blocks of text from many sources using a builtin pager.
453 456 You can control where this pager appears with the ``--paging`` command-line
454 457 flag:
455 458
456 459 - ``inside`` [default]: the pager is overlaid on top of the main terminal. You
457 460 must quit the pager to get back to the terminal (similar to how a pager such
458 461 as ``less`` or ``more`` works).
459 462
460 463 - ``vsplit``: the console is made double-tall, and the pager appears on the
461 464 bottom area when needed. You can view its contents while using the terminal.
462 465
463 466 - ``hsplit``: the console is made double-wide, and the pager appears on the
464 467 right area when needed. You can view its contents while using the terminal.
465 468
466 469 - ``none``: the console never pages output.
467 470
468 471 If you use the vertical or horizontal paging modes, you can navigate between
469 472 terminal and pager as follows:
470 473
471 474 - Tab key: goes from pager to terminal (but not the other way around).
472 475 - Control-o: goes from one to another always.
473 476 - Mouse: click on either.
474 477
475 478 In all cases, the ``q`` or ``Escape`` keys quit the pager (when used with the
476 479 focus on the pager area).
477 480
478 481 Running subprocesses
479 482 ====================
480 483
481 484 The graphical IPython console uses the ``pexpect`` module to run subprocesses
482 485 when you type ``!command``. This has a number of advantages (true asynchronous
483 486 output from subprocesses as well as very robust termination of rogue
484 487 subprocesses with ``Control-C``), as well as some limitations. The main
485 488 limitation is that you can *not* interact back with the subprocess, so anything
486 489 that invokes a pager or expects you to type input into it will block and hang
487 490 (you can kill it with ``Control-C``).
488 491
489 492 We have provided as magics ``%less`` to page files (aliased to ``%more``),
490 493 ``%clear`` to clear the terminal, and ``%man`` on Linux/OSX. These cover the
491 494 most common commands you'd want to call in your subshell and that would cause
492 495 problems if invoked via ``!cmd``, but you need to be aware of this limitation.
493 496
494 497 Display
495 498 =======
496 499
497 500 The IPython console can now display objects in a variety of formats, including
498 501 HTML, PNG and SVG. This is accomplished using the display functions in
499 502 ``IPython.core.display``::
500 503
501 504 In [4]: from IPython.core.display import display, display_html
502 505
503 506 In [5]: from IPython.core.display import display_png, display_svg
504 507
505 508 Python objects can simply be passed to these functions and the appropriate
506 509 representations will be displayed in the console as long as the objects know
507 510 how to compute those representations. The easiest way of teaching objects how
508 511 to format themselves in various representations is to define special methods
509 512 such as: ``_repr_html_``, ``_repr_svg_`` and ``_repr_png_``. IPython's display formatters
510 513 can also be given custom formatter functions for various types::
511 514
512 515 In [6]: ip = get_ipython()
513 516
514 517 In [7]: html_formatter = ip.display_formatter.formatters['text/html']
515 518
516 519 In [8]: html_formatter.for_type(Foo, foo_to_html)
517 520
518 521 For further details, see ``IPython.core.formatters``.
519 522
520 523 Inline matplotlib graphics
521 524 ==========================
522 525
523 526 The IPython console is capable of displaying matplotlib figures inline, in SVG
524 527 or PNG format. If started with the ``pylab=inline``, then all figures are
525 528 rendered inline automatically (PNG by default). If started with ``--pylab``
526 529 or ``pylab=<your backend>``, then a GUI backend will be used, but IPython's
527 530 ``display()`` and ``getfigs()`` functions can be used to view plots inline::
528 531
529 532 In [9]: display(*getfigs()) # display all figures inline
530 533
531 534 In[10]: display(*getfigs(1,2)) # display figures 1 and 2 inline
532 535 """
533 536
534 537
535 538 quick_guide = """\
536 539 ? -> Introduction and overview of IPython's features.
537 540 %quickref -> Quick reference.
538 541 help -> Python's own help system.
539 542 object? -> Details about 'object', use 'object??' for extra details.
540 543 """
541 544
542 545 gui_note = """\
543 546 %guiref -> A brief reference about the graphical user interface.
544 547 """
545 548
546 549 default_banner_parts = [
547 550 'Python %s\n' % (sys.version.split('\n')[0],),
548 551 'Type "copyright", "credits" or "license" for more information.\n\n',
549 552 'IPython %s -- An enhanced Interactive Python.\n' % (release.version,),
550 553 quick_guide
551 554 ]
552 555
553 556 default_gui_banner_parts = default_banner_parts + [gui_note]
554 557
555 558 default_banner = ''.join(default_banner_parts)
556 559
557 560 default_gui_banner = ''.join(default_gui_banner_parts)
558 561
559 562 # page GUI Reference, for use as a magic:
560 563
561 564 def page_guiref(arg_s=None):
562 565 """Show a basic reference about the GUI Console."""
563 566 from IPython.core import page
564 567 page.page(gui_reference, auto_html=True)
565 568
General Comments 0
You need to be logged in to leave comments. Login now