##// END OF EJS Templates
Add egg support.
fperez -
Show More
@@ -0,0 +1,11 b''
1 #!/usr/bin/env python
2 """Simple wrapper to build IPython as an egg (setuptools format)."""
3
4 import sys
5
6 import pkg_resources
7 pkg_resources.require("setuptools")
8 import setuptools
9
10 sys.argv=['','bdist_egg']
11 execfile('setup.py')
@@ -1,4799 +1,4804 b''
1 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * setup_bdist_egg.py: little script to build an egg. Added
4 support in the release tools as well.
5
1 6 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2 7
3 8 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
4 9 version selection (new -wxversion command line and ipythonrc
5 10 parameter). Patch contributed by Arnd Baecker
6 11 <arnd.baecker-AT-web.de>.
7 12
8 13 * IPython/iplib.py (embed_mainloop): fix tab-completion in
9 14 embedded instances, for variables defined at the interactive
10 15 prompt of the embedded ipython. Reported by Arnd.
11 16
12 17 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
13 18 it can be used as a (stateful) toggle, or with a direct parameter.
14 19
15 20 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
16 21 could be triggered in certain cases and cause the traceback
17 22 printer not to work.
18 23
19 24 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
20 25
21 26 * IPython/iplib.py (_should_recompile): Small fix, closes
22 27 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
23 28
24 29 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
25 30
26 31 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
27 32 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
28 33 Moad for help with tracking it down.
29 34
30 35 * IPython/iplib.py (handle_auto): fix autocall handling for
31 36 objects which support BOTH __getitem__ and __call__ (so that f [x]
32 37 is left alone, instead of becoming f([x]) automatically).
33 38
34 39 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
35 40 Ville's patch.
36 41
37 42 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
38 43
39 44 * IPython/iplib.py (handle_auto): changed autocall semantics to
40 45 include 'smart' mode, where the autocall transformation is NOT
41 46 applied if there are no arguments on the line. This allows you to
42 47 just type 'foo' if foo is a callable to see its internal form,
43 48 instead of having it called with no arguments (typically a
44 49 mistake). The old 'full' autocall still exists: for that, you
45 50 need to set the 'autocall' parameter to 2 in your ipythonrc file.
46 51
47 52 * IPython/completer.py (Completer.attr_matches): add
48 53 tab-completion support for Enthoughts' traits. After a report by
49 54 Arnd and a patch by Prabhu.
50 55
51 56 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
52 57
53 58 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
54 59 Schmolck's patch to fix inspect.getinnerframes().
55 60
56 61 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
57 62 for embedded instances, regarding handling of namespaces and items
58 63 added to the __builtin__ one. Multiple embedded instances and
59 64 recursive embeddings should work better now (though I'm not sure
60 65 I've got all the corner cases fixed, that code is a bit of a brain
61 66 twister).
62 67
63 68 * IPython/Magic.py (magic_edit): added support to edit in-memory
64 69 macros (automatically creates the necessary temp files). %edit
65 70 also doesn't return the file contents anymore, it's just noise.
66 71
67 72 * IPython/completer.py (Completer.attr_matches): revert change to
68 73 complete only on attributes listed in __all__. I realized it
69 74 cripples the tab-completion system as a tool for exploring the
70 75 internals of unknown libraries (it renders any non-__all__
71 76 attribute off-limits). I got bit by this when trying to see
72 77 something inside the dis module.
73 78
74 79 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
75 80
76 81 * IPython/iplib.py (InteractiveShell.__init__): add .meta
77 82 namespace for users and extension writers to hold data in. This
78 83 follows the discussion in
79 84 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
80 85
81 86 * IPython/completer.py (IPCompleter.complete): small patch to help
82 87 tab-completion under Emacs, after a suggestion by John Barnard
83 88 <barnarj-AT-ccf.org>.
84 89
85 90 * IPython/Magic.py (Magic.extract_input_slices): added support for
86 91 the slice notation in magics to use N-M to represent numbers N...M
87 92 (closed endpoints). This is used by %macro and %save.
88 93
89 94 * IPython/completer.py (Completer.attr_matches): for modules which
90 95 define __all__, complete only on those. After a patch by Jeffrey
91 96 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
92 97 speed up this routine.
93 98
94 99 * IPython/Logger.py (Logger.log): fix a history handling bug. I
95 100 don't know if this is the end of it, but the behavior now is
96 101 certainly much more correct. Note that coupled with macros,
97 102 slightly surprising (at first) behavior may occur: a macro will in
98 103 general expand to multiple lines of input, so upon exiting, the
99 104 in/out counters will both be bumped by the corresponding amount
100 105 (as if the macro's contents had been typed interactively). Typing
101 106 %hist will reveal the intermediate (silently processed) lines.
102 107
103 108 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
104 109 pickle to fail (%run was overwriting __main__ and not restoring
105 110 it, but pickle relies on __main__ to operate).
106 111
107 112 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
108 113 using properties, but forgot to make the main InteractiveShell
109 114 class a new-style class. Properties fail silently, and
110 115 misteriously, with old-style class (getters work, but
111 116 setters don't do anything).
112 117
113 118 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
114 119
115 120 * IPython/Magic.py (magic_history): fix history reporting bug (I
116 121 know some nasties are still there, I just can't seem to find a
117 122 reproducible test case to track them down; the input history is
118 123 falling out of sync...)
119 124
120 125 * IPython/iplib.py (handle_shell_escape): fix bug where both
121 126 aliases and system accesses where broken for indented code (such
122 127 as loops).
123 128
124 129 * IPython/genutils.py (shell): fix small but critical bug for
125 130 win32 system access.
126 131
127 132 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
128 133
129 134 * IPython/iplib.py (showtraceback): remove use of the
130 135 sys.last_{type/value/traceback} structures, which are non
131 136 thread-safe.
132 137 (_prefilter): change control flow to ensure that we NEVER
133 138 introspect objects when autocall is off. This will guarantee that
134 139 having an input line of the form 'x.y', where access to attribute
135 140 'y' has side effects, doesn't trigger the side effect TWICE. It
136 141 is important to note that, with autocall on, these side effects
137 142 can still happen.
138 143 (ipsystem): new builtin, to complete the ip{magic/alias/system}
139 144 trio. IPython offers these three kinds of special calls which are
140 145 not python code, and it's a good thing to have their call method
141 146 be accessible as pure python functions (not just special syntax at
142 147 the command line). It gives us a better internal implementation
143 148 structure, as well as exposing these for user scripting more
144 149 cleanly.
145 150
146 151 * IPython/macro.py (Macro.__init__): moved macros to a standalone
147 152 file. Now that they'll be more likely to be used with the
148 153 persistance system (%store), I want to make sure their module path
149 154 doesn't change in the future, so that we don't break things for
150 155 users' persisted data.
151 156
152 157 * IPython/iplib.py (autoindent_update): move indentation
153 158 management into the _text_ processing loop, not the keyboard
154 159 interactive one. This is necessary to correctly process non-typed
155 160 multiline input (such as macros).
156 161
157 162 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
158 163 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
159 164 which was producing problems in the resulting manual.
160 165 (magic_whos): improve reporting of instances (show their class,
161 166 instead of simply printing 'instance' which isn't terribly
162 167 informative).
163 168
164 169 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
165 170 (minor mods) to support network shares under win32.
166 171
167 172 * IPython/winconsole.py (get_console_size): add new winconsole
168 173 module and fixes to page_dumb() to improve its behavior under
169 174 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
170 175
171 176 * IPython/Magic.py (Macro): simplified Macro class to just
172 177 subclass list. We've had only 2.2 compatibility for a very long
173 178 time, yet I was still avoiding subclassing the builtin types. No
174 179 more (I'm also starting to use properties, though I won't shift to
175 180 2.3-specific features quite yet).
176 181 (magic_store): added Ville's patch for lightweight variable
177 182 persistence, after a request on the user list by Matt Wilkie
178 183 <maphew-AT-gmail.com>. The new %store magic's docstring has full
179 184 details.
180 185
181 186 * IPython/iplib.py (InteractiveShell.post_config_initialization):
182 187 changed the default logfile name from 'ipython.log' to
183 188 'ipython_log.py'. These logs are real python files, and now that
184 189 we have much better multiline support, people are more likely to
185 190 want to use them as such. Might as well name them correctly.
186 191
187 192 * IPython/Magic.py: substantial cleanup. While we can't stop
188 193 using magics as mixins, due to the existing customizations 'out
189 194 there' which rely on the mixin naming conventions, at least I
190 195 cleaned out all cross-class name usage. So once we are OK with
191 196 breaking compatibility, the two systems can be separated.
192 197
193 198 * IPython/Logger.py: major cleanup. This one is NOT a mixin
194 199 anymore, and the class is a fair bit less hideous as well. New
195 200 features were also introduced: timestamping of input, and logging
196 201 of output results. These are user-visible with the -t and -o
197 202 options to %logstart. Closes
198 203 http://www.scipy.net/roundup/ipython/issue11 and a request by
199 204 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
200 205
201 206 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
202 207
203 208 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
204 209 better hadnle backslashes in paths. See the thread 'More Windows
205 210 questions part 2 - \/ characters revisited' on the iypthon user
206 211 list:
207 212 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
208 213
209 214 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
210 215
211 216 (InteractiveShell.__init__): change threaded shells to not use the
212 217 ipython crash handler. This was causing more problems than not,
213 218 as exceptions in the main thread (GUI code, typically) would
214 219 always show up as a 'crash', when they really weren't.
215 220
216 221 The colors and exception mode commands (%colors/%xmode) have been
217 222 synchronized to also take this into account, so users can get
218 223 verbose exceptions for their threaded code as well. I also added
219 224 support for activating pdb inside this exception handler as well,
220 225 so now GUI authors can use IPython's enhanced pdb at runtime.
221 226
222 227 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
223 228 true by default, and add it to the shipped ipythonrc file. Since
224 229 this asks the user before proceeding, I think it's OK to make it
225 230 true by default.
226 231
227 232 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
228 233 of the previous special-casing of input in the eval loop. I think
229 234 this is cleaner, as they really are commands and shouldn't have
230 235 a special role in the middle of the core code.
231 236
232 237 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
233 238
234 239 * IPython/iplib.py (edit_syntax_error): added support for
235 240 automatically reopening the editor if the file had a syntax error
236 241 in it. Thanks to scottt who provided the patch at:
237 242 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
238 243 version committed).
239 244
240 245 * IPython/iplib.py (handle_normal): add suport for multi-line
241 246 input with emtpy lines. This fixes
242 247 http://www.scipy.net/roundup/ipython/issue43 and a similar
243 248 discussion on the user list.
244 249
245 250 WARNING: a behavior change is necessarily introduced to support
246 251 blank lines: now a single blank line with whitespace does NOT
247 252 break the input loop, which means that when autoindent is on, by
248 253 default hitting return on the next (indented) line does NOT exit.
249 254
250 255 Instead, to exit a multiline input you can either have:
251 256
252 257 - TWO whitespace lines (just hit return again), or
253 258 - a single whitespace line of a different length than provided
254 259 by the autoindent (add or remove a space).
255 260
256 261 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
257 262 module to better organize all readline-related functionality.
258 263 I've deleted FlexCompleter and put all completion clases here.
259 264
260 265 * IPython/iplib.py (raw_input): improve indentation management.
261 266 It is now possible to paste indented code with autoindent on, and
262 267 the code is interpreted correctly (though it still looks bad on
263 268 screen, due to the line-oriented nature of ipython).
264 269 (MagicCompleter.complete): change behavior so that a TAB key on an
265 270 otherwise empty line actually inserts a tab, instead of completing
266 271 on the entire global namespace. This makes it easier to use the
267 272 TAB key for indentation. After a request by Hans Meine
268 273 <hans_meine-AT-gmx.net>
269 274 (_prefilter): add support so that typing plain 'exit' or 'quit'
270 275 does a sensible thing. Originally I tried to deviate as little as
271 276 possible from the default python behavior, but even that one may
272 277 change in this direction (thread on python-dev to that effect).
273 278 Regardless, ipython should do the right thing even if CPython's
274 279 '>>>' prompt doesn't.
275 280 (InteractiveShell): removed subclassing code.InteractiveConsole
276 281 class. By now we'd overridden just about all of its methods: I've
277 282 copied the remaining two over, and now ipython is a standalone
278 283 class. This will provide a clearer picture for the chainsaw
279 284 branch refactoring.
280 285
281 286 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
282 287
283 288 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
284 289 failures for objects which break when dir() is called on them.
285 290
286 291 * IPython/FlexCompleter.py (Completer.__init__): Added support for
287 292 distinct local and global namespaces in the completer API. This
288 293 change allows us top properly handle completion with distinct
289 294 scopes, including in embedded instances (this had never really
290 295 worked correctly).
291 296
292 297 Note: this introduces a change in the constructor for
293 298 MagicCompleter, as a new global_namespace parameter is now the
294 299 second argument (the others were bumped one position).
295 300
296 301 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
297 302
298 303 * IPython/iplib.py (embed_mainloop): fix tab-completion in
299 304 embedded instances (which can be done now thanks to Vivian's
300 305 frame-handling fixes for pdb).
301 306 (InteractiveShell.__init__): Fix namespace handling problem in
302 307 embedded instances. We were overwriting __main__ unconditionally,
303 308 and this should only be done for 'full' (non-embedded) IPython;
304 309 embedded instances must respect the caller's __main__. Thanks to
305 310 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
306 311
307 312 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
308 313
309 314 * setup.py: added download_url to setup(). This registers the
310 315 download address at PyPI, which is not only useful to humans
311 316 browsing the site, but is also picked up by setuptools (the Eggs
312 317 machinery). Thanks to Ville and R. Kern for the info/discussion
313 318 on this.
314 319
315 320 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
316 321
317 322 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
318 323 This brings a lot of nice functionality to the pdb mode, which now
319 324 has tab-completion, syntax highlighting, and better stack handling
320 325 than before. Many thanks to Vivian De Smedt
321 326 <vivian-AT-vdesmedt.com> for the original patches.
322 327
323 328 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
324 329
325 330 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
326 331 sequence to consistently accept the banner argument. The
327 332 inconsistency was tripping SAGE, thanks to Gary Zablackis
328 333 <gzabl-AT-yahoo.com> for the report.
329 334
330 335 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
331 336
332 337 * IPython/iplib.py (InteractiveShell.post_config_initialization):
333 338 Fix bug where a naked 'alias' call in the ipythonrc file would
334 339 cause a crash. Bug reported by Jorgen Stenarson.
335 340
336 341 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
337 342
338 343 * IPython/ipmaker.py (make_IPython): cleanups which should improve
339 344 startup time.
340 345
341 346 * IPython/iplib.py (runcode): my globals 'fix' for embedded
342 347 instances had introduced a bug with globals in normal code. Now
343 348 it's working in all cases.
344 349
345 350 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
346 351 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
347 352 has been introduced to set the default case sensitivity of the
348 353 searches. Users can still select either mode at runtime on a
349 354 per-search basis.
350 355
351 356 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
352 357
353 358 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
354 359 attributes in wildcard searches for subclasses. Modified version
355 360 of a patch by Jorgen.
356 361
357 362 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
358 363
359 364 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
360 365 embedded instances. I added a user_global_ns attribute to the
361 366 InteractiveShell class to handle this.
362 367
363 368 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
364 369
365 370 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
366 371 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
367 372 (reported under win32, but may happen also in other platforms).
368 373 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
369 374
370 375 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
371 376
372 377 * IPython/Magic.py (magic_psearch): new support for wildcard
373 378 patterns. Now, typing ?a*b will list all names which begin with a
374 379 and end in b, for example. The %psearch magic has full
375 380 docstrings. Many thanks to Jörgen Stenarson
376 381 <jorgen.stenarson-AT-bostream.nu>, author of the patches
377 382 implementing this functionality.
378 383
379 384 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
380 385
381 386 * Manual: fixed long-standing annoyance of double-dashes (as in
382 387 --prefix=~, for example) being stripped in the HTML version. This
383 388 is a latex2html bug, but a workaround was provided. Many thanks
384 389 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
385 390 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
386 391 rolling. This seemingly small issue had tripped a number of users
387 392 when first installing, so I'm glad to see it gone.
388 393
389 394 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
390 395
391 396 * IPython/Extensions/numeric_formats.py: fix missing import,
392 397 reported by Stephen Walton.
393 398
394 399 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
395 400
396 401 * IPython/demo.py: finish demo module, fully documented now.
397 402
398 403 * IPython/genutils.py (file_read): simple little utility to read a
399 404 file and ensure it's closed afterwards.
400 405
401 406 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
402 407
403 408 * IPython/demo.py (Demo.__init__): added support for individually
404 409 tagging blocks for automatic execution.
405 410
406 411 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
407 412 syntax-highlighted python sources, requested by John.
408 413
409 414 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
410 415
411 416 * IPython/demo.py (Demo.again): fix bug where again() blocks after
412 417 finishing.
413 418
414 419 * IPython/genutils.py (shlex_split): moved from Magic to here,
415 420 where all 2.2 compatibility stuff lives. I needed it for demo.py.
416 421
417 422 * IPython/demo.py (Demo.__init__): added support for silent
418 423 blocks, improved marks as regexps, docstrings written.
419 424 (Demo.__init__): better docstring, added support for sys.argv.
420 425
421 426 * IPython/genutils.py (marquee): little utility used by the demo
422 427 code, handy in general.
423 428
424 429 * IPython/demo.py (Demo.__init__): new class for interactive
425 430 demos. Not documented yet, I just wrote it in a hurry for
426 431 scipy'05. Will docstring later.
427 432
428 433 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
429 434
430 435 * IPython/Shell.py (sigint_handler): Drastic simplification which
431 436 also seems to make Ctrl-C work correctly across threads! This is
432 437 so simple, that I can't beleive I'd missed it before. Needs more
433 438 testing, though.
434 439 (KBINT): Never mind, revert changes. I'm sure I'd tried something
435 440 like this before...
436 441
437 442 * IPython/genutils.py (get_home_dir): add protection against
438 443 non-dirs in win32 registry.
439 444
440 445 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
441 446 bug where dict was mutated while iterating (pysh crash).
442 447
443 448 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
444 449
445 450 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
446 451 spurious newlines added by this routine. After a report by
447 452 F. Mantegazza.
448 453
449 454 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
450 455
451 456 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
452 457 calls. These were a leftover from the GTK 1.x days, and can cause
453 458 problems in certain cases (after a report by John Hunter).
454 459
455 460 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
456 461 os.getcwd() fails at init time. Thanks to patch from David Remahl
457 462 <chmod007-AT-mac.com>.
458 463 (InteractiveShell.__init__): prevent certain special magics from
459 464 being shadowed by aliases. Closes
460 465 http://www.scipy.net/roundup/ipython/issue41.
461 466
462 467 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
463 468
464 469 * IPython/iplib.py (InteractiveShell.complete): Added new
465 470 top-level completion method to expose the completion mechanism
466 471 beyond readline-based environments.
467 472
468 473 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
469 474
470 475 * tools/ipsvnc (svnversion): fix svnversion capture.
471 476
472 477 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
473 478 attribute to self, which was missing. Before, it was set by a
474 479 routine which in certain cases wasn't being called, so the
475 480 instance could end up missing the attribute. This caused a crash.
476 481 Closes http://www.scipy.net/roundup/ipython/issue40.
477 482
478 483 2005-08-16 Fernando Perez <fperez@colorado.edu>
479 484
480 485 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
481 486 contains non-string attribute. Closes
482 487 http://www.scipy.net/roundup/ipython/issue38.
483 488
484 489 2005-08-14 Fernando Perez <fperez@colorado.edu>
485 490
486 491 * tools/ipsvnc: Minor improvements, to add changeset info.
487 492
488 493 2005-08-12 Fernando Perez <fperez@colorado.edu>
489 494
490 495 * IPython/iplib.py (runsource): remove self.code_to_run_src
491 496 attribute. I realized this is nothing more than
492 497 '\n'.join(self.buffer), and having the same data in two different
493 498 places is just asking for synchronization bugs. This may impact
494 499 people who have custom exception handlers, so I need to warn
495 500 ipython-dev about it (F. Mantegazza may use them).
496 501
497 502 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
498 503
499 504 * IPython/genutils.py: fix 2.2 compatibility (generators)
500 505
501 506 2005-07-18 Fernando Perez <fperez@colorado.edu>
502 507
503 508 * IPython/genutils.py (get_home_dir): fix to help users with
504 509 invalid $HOME under win32.
505 510
506 511 2005-07-17 Fernando Perez <fperez@colorado.edu>
507 512
508 513 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
509 514 some old hacks and clean up a bit other routines; code should be
510 515 simpler and a bit faster.
511 516
512 517 * IPython/iplib.py (interact): removed some last-resort attempts
513 518 to survive broken stdout/stderr. That code was only making it
514 519 harder to abstract out the i/o (necessary for gui integration),
515 520 and the crashes it could prevent were extremely rare in practice
516 521 (besides being fully user-induced in a pretty violent manner).
517 522
518 523 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
519 524 Nothing major yet, but the code is simpler to read; this should
520 525 make it easier to do more serious modifications in the future.
521 526
522 527 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
523 528 which broke in .15 (thanks to a report by Ville).
524 529
525 530 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
526 531 be quite correct, I know next to nothing about unicode). This
527 532 will allow unicode strings to be used in prompts, amongst other
528 533 cases. It also will prevent ipython from crashing when unicode
529 534 shows up unexpectedly in many places. If ascii encoding fails, we
530 535 assume utf_8. Currently the encoding is not a user-visible
531 536 setting, though it could be made so if there is demand for it.
532 537
533 538 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
534 539
535 540 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
536 541
537 542 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
538 543
539 544 * IPython/genutils.py: Add 2.2 compatibility here, so all other
540 545 code can work transparently for 2.2/2.3.
541 546
542 547 2005-07-16 Fernando Perez <fperez@colorado.edu>
543 548
544 549 * IPython/ultraTB.py (ExceptionColors): Make a global variable
545 550 out of the color scheme table used for coloring exception
546 551 tracebacks. This allows user code to add new schemes at runtime.
547 552 This is a minimally modified version of the patch at
548 553 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
549 554 for the contribution.
550 555
551 556 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
552 557 slightly modified version of the patch in
553 558 http://www.scipy.net/roundup/ipython/issue34, which also allows me
554 559 to remove the previous try/except solution (which was costlier).
555 560 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
556 561
557 562 2005-06-08 Fernando Perez <fperez@colorado.edu>
558 563
559 564 * IPython/iplib.py (write/write_err): Add methods to abstract all
560 565 I/O a bit more.
561 566
562 567 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
563 568 warning, reported by Aric Hagberg, fix by JD Hunter.
564 569
565 570 2005-06-02 *** Released version 0.6.15
566 571
567 572 2005-06-01 Fernando Perez <fperez@colorado.edu>
568 573
569 574 * IPython/iplib.py (MagicCompleter.file_matches): Fix
570 575 tab-completion of filenames within open-quoted strings. Note that
571 576 this requires that in ~/.ipython/ipythonrc, users change the
572 577 readline delimiters configuration to read:
573 578
574 579 readline_remove_delims -/~
575 580
576 581
577 582 2005-05-31 *** Released version 0.6.14
578 583
579 584 2005-05-29 Fernando Perez <fperez@colorado.edu>
580 585
581 586 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
582 587 with files not on the filesystem. Reported by Eliyahu Sandler
583 588 <eli@gondolin.net>
584 589
585 590 2005-05-22 Fernando Perez <fperez@colorado.edu>
586 591
587 592 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
588 593 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
589 594
590 595 2005-05-19 Fernando Perez <fperez@colorado.edu>
591 596
592 597 * IPython/iplib.py (safe_execfile): close a file which could be
593 598 left open (causing problems in win32, which locks open files).
594 599 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
595 600
596 601 2005-05-18 Fernando Perez <fperez@colorado.edu>
597 602
598 603 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
599 604 keyword arguments correctly to safe_execfile().
600 605
601 606 2005-05-13 Fernando Perez <fperez@colorado.edu>
602 607
603 608 * ipython.1: Added info about Qt to manpage, and threads warning
604 609 to usage page (invoked with --help).
605 610
606 611 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
607 612 new matcher (it goes at the end of the priority list) to do
608 613 tab-completion on named function arguments. Submitted by George
609 614 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
610 615 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
611 616 for more details.
612 617
613 618 * IPython/Magic.py (magic_run): Added new -e flag to ignore
614 619 SystemExit exceptions in the script being run. Thanks to a report
615 620 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
616 621 producing very annoying behavior when running unit tests.
617 622
618 623 2005-05-12 Fernando Perez <fperez@colorado.edu>
619 624
620 625 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
621 626 which I'd broken (again) due to a changed regexp. In the process,
622 627 added ';' as an escape to auto-quote the whole line without
623 628 splitting its arguments. Thanks to a report by Jerry McRae
624 629 <qrs0xyc02-AT-sneakemail.com>.
625 630
626 631 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
627 632 possible crashes caused by a TokenError. Reported by Ed Schofield
628 633 <schofield-AT-ftw.at>.
629 634
630 635 2005-05-06 Fernando Perez <fperez@colorado.edu>
631 636
632 637 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
633 638
634 639 2005-04-29 Fernando Perez <fperez@colorado.edu>
635 640
636 641 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
637 642 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
638 643 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
639 644 which provides support for Qt interactive usage (similar to the
640 645 existing one for WX and GTK). This had been often requested.
641 646
642 647 2005-04-14 *** Released version 0.6.13
643 648
644 649 2005-04-08 Fernando Perez <fperez@colorado.edu>
645 650
646 651 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
647 652 from _ofind, which gets called on almost every input line. Now,
648 653 we only try to get docstrings if they are actually going to be
649 654 used (the overhead of fetching unnecessary docstrings can be
650 655 noticeable for certain objects, such as Pyro proxies).
651 656
652 657 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
653 658 for completers. For some reason I had been passing them the state
654 659 variable, which completers never actually need, and was in
655 660 conflict with the rlcompleter API. Custom completers ONLY need to
656 661 take the text parameter.
657 662
658 663 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
659 664 work correctly in pysh. I've also moved all the logic which used
660 665 to be in pysh.py here, which will prevent problems with future
661 666 upgrades. However, this time I must warn users to update their
662 667 pysh profile to include the line
663 668
664 669 import_all IPython.Extensions.InterpreterExec
665 670
666 671 because otherwise things won't work for them. They MUST also
667 672 delete pysh.py and the line
668 673
669 674 execfile pysh.py
670 675
671 676 from their ipythonrc-pysh.
672 677
673 678 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
674 679 robust in the face of objects whose dir() returns non-strings
675 680 (which it shouldn't, but some broken libs like ITK do). Thanks to
676 681 a patch by John Hunter (implemented differently, though). Also
677 682 minor improvements by using .extend instead of + on lists.
678 683
679 684 * pysh.py:
680 685
681 686 2005-04-06 Fernando Perez <fperez@colorado.edu>
682 687
683 688 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
684 689 by default, so that all users benefit from it. Those who don't
685 690 want it can still turn it off.
686 691
687 692 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
688 693 config file, I'd forgotten about this, so users were getting it
689 694 off by default.
690 695
691 696 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
692 697 consistency. Now magics can be called in multiline statements,
693 698 and python variables can be expanded in magic calls via $var.
694 699 This makes the magic system behave just like aliases or !system
695 700 calls.
696 701
697 702 2005-03-28 Fernando Perez <fperez@colorado.edu>
698 703
699 704 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
700 705 expensive string additions for building command. Add support for
701 706 trailing ';' when autocall is used.
702 707
703 708 2005-03-26 Fernando Perez <fperez@colorado.edu>
704 709
705 710 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
706 711 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
707 712 ipython.el robust against prompts with any number of spaces
708 713 (including 0) after the ':' character.
709 714
710 715 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
711 716 continuation prompt, which misled users to think the line was
712 717 already indented. Closes debian Bug#300847, reported to me by
713 718 Norbert Tretkowski <tretkowski-AT-inittab.de>.
714 719
715 720 2005-03-23 Fernando Perez <fperez@colorado.edu>
716 721
717 722 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
718 723 properly aligned if they have embedded newlines.
719 724
720 725 * IPython/iplib.py (runlines): Add a public method to expose
721 726 IPython's code execution machinery, so that users can run strings
722 727 as if they had been typed at the prompt interactively.
723 728 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
724 729 methods which can call the system shell, but with python variable
725 730 expansion. The three such methods are: __IPYTHON__.system,
726 731 .getoutput and .getoutputerror. These need to be documented in a
727 732 'public API' section (to be written) of the manual.
728 733
729 734 2005-03-20 Fernando Perez <fperez@colorado.edu>
730 735
731 736 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
732 737 for custom exception handling. This is quite powerful, and it
733 738 allows for user-installable exception handlers which can trap
734 739 custom exceptions at runtime and treat them separately from
735 740 IPython's default mechanisms. At the request of Frédéric
736 741 Mantegazza <mantegazza-AT-ill.fr>.
737 742 (InteractiveShell.set_custom_completer): public API function to
738 743 add new completers at runtime.
739 744
740 745 2005-03-19 Fernando Perez <fperez@colorado.edu>
741 746
742 747 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
743 748 allow objects which provide their docstrings via non-standard
744 749 mechanisms (like Pyro proxies) to still be inspected by ipython's
745 750 ? system.
746 751
747 752 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
748 753 automatic capture system. I tried quite hard to make it work
749 754 reliably, and simply failed. I tried many combinations with the
750 755 subprocess module, but eventually nothing worked in all needed
751 756 cases (not blocking stdin for the child, duplicating stdout
752 757 without blocking, etc). The new %sc/%sx still do capture to these
753 758 magical list/string objects which make shell use much more
754 759 conveninent, so not all is lost.
755 760
756 761 XXX - FIX MANUAL for the change above!
757 762
758 763 (runsource): I copied code.py's runsource() into ipython to modify
759 764 it a bit. Now the code object and source to be executed are
760 765 stored in ipython. This makes this info accessible to third-party
761 766 tools, like custom exception handlers. After a request by Frédéric
762 767 Mantegazza <mantegazza-AT-ill.fr>.
763 768
764 769 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
765 770 history-search via readline (like C-p/C-n). I'd wanted this for a
766 771 long time, but only recently found out how to do it. For users
767 772 who already have their ipythonrc files made and want this, just
768 773 add:
769 774
770 775 readline_parse_and_bind "\e[A": history-search-backward
771 776 readline_parse_and_bind "\e[B": history-search-forward
772 777
773 778 2005-03-18 Fernando Perez <fperez@colorado.edu>
774 779
775 780 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
776 781 LSString and SList classes which allow transparent conversions
777 782 between list mode and whitespace-separated string.
778 783 (magic_r): Fix recursion problem in %r.
779 784
780 785 * IPython/genutils.py (LSString): New class to be used for
781 786 automatic storage of the results of all alias/system calls in _o
782 787 and _e (stdout/err). These provide a .l/.list attribute which
783 788 does automatic splitting on newlines. This means that for most
784 789 uses, you'll never need to do capturing of output with %sc/%sx
785 790 anymore, since ipython keeps this always done for you. Note that
786 791 only the LAST results are stored, the _o/e variables are
787 792 overwritten on each call. If you need to save their contents
788 793 further, simply bind them to any other name.
789 794
790 795 2005-03-17 Fernando Perez <fperez@colorado.edu>
791 796
792 797 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
793 798 prompt namespace handling.
794 799
795 800 2005-03-16 Fernando Perez <fperez@colorado.edu>
796 801
797 802 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
798 803 classic prompts to be '>>> ' (final space was missing, and it
799 804 trips the emacs python mode).
800 805 (BasePrompt.__str__): Added safe support for dynamic prompt
801 806 strings. Now you can set your prompt string to be '$x', and the
802 807 value of x will be printed from your interactive namespace. The
803 808 interpolation syntax includes the full Itpl support, so
804 809 ${foo()+x+bar()} is a valid prompt string now, and the function
805 810 calls will be made at runtime.
806 811
807 812 2005-03-15 Fernando Perez <fperez@colorado.edu>
808 813
809 814 * IPython/Magic.py (magic_history): renamed %hist to %history, to
810 815 avoid name clashes in pylab. %hist still works, it just forwards
811 816 the call to %history.
812 817
813 818 2005-03-02 *** Released version 0.6.12
814 819
815 820 2005-03-02 Fernando Perez <fperez@colorado.edu>
816 821
817 822 * IPython/iplib.py (handle_magic): log magic calls properly as
818 823 ipmagic() function calls.
819 824
820 825 * IPython/Magic.py (magic_time): Improved %time to support
821 826 statements and provide wall-clock as well as CPU time.
822 827
823 828 2005-02-27 Fernando Perez <fperez@colorado.edu>
824 829
825 830 * IPython/hooks.py: New hooks module, to expose user-modifiable
826 831 IPython functionality in a clean manner. For now only the editor
827 832 hook is actually written, and other thigns which I intend to turn
828 833 into proper hooks aren't yet there. The display and prefilter
829 834 stuff, for example, should be hooks. But at least now the
830 835 framework is in place, and the rest can be moved here with more
831 836 time later. IPython had had a .hooks variable for a long time for
832 837 this purpose, but I'd never actually used it for anything.
833 838
834 839 2005-02-26 Fernando Perez <fperez@colorado.edu>
835 840
836 841 * IPython/ipmaker.py (make_IPython): make the default ipython
837 842 directory be called _ipython under win32, to follow more the
838 843 naming peculiarities of that platform (where buggy software like
839 844 Visual Sourcesafe breaks with .named directories). Reported by
840 845 Ville Vainio.
841 846
842 847 2005-02-23 Fernando Perez <fperez@colorado.edu>
843 848
844 849 * IPython/iplib.py (InteractiveShell.__init__): removed a few
845 850 auto_aliases for win32 which were causing problems. Users can
846 851 define the ones they personally like.
847 852
848 853 2005-02-21 Fernando Perez <fperez@colorado.edu>
849 854
850 855 * IPython/Magic.py (magic_time): new magic to time execution of
851 856 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
852 857
853 858 2005-02-19 Fernando Perez <fperez@colorado.edu>
854 859
855 860 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
856 861 into keys (for prompts, for example).
857 862
858 863 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
859 864 prompts in case users want them. This introduces a small behavior
860 865 change: ipython does not automatically add a space to all prompts
861 866 anymore. To get the old prompts with a space, users should add it
862 867 manually to their ipythonrc file, so for example prompt_in1 should
863 868 now read 'In [\#]: ' instead of 'In [\#]:'.
864 869 (BasePrompt.__init__): New option prompts_pad_left (only in rc
865 870 file) to control left-padding of secondary prompts.
866 871
867 872 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
868 873 the profiler can't be imported. Fix for Debian, which removed
869 874 profile.py because of License issues. I applied a slightly
870 875 modified version of the original Debian patch at
871 876 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
872 877
873 878 2005-02-17 Fernando Perez <fperez@colorado.edu>
874 879
875 880 * IPython/genutils.py (native_line_ends): Fix bug which would
876 881 cause improper line-ends under win32 b/c I was not opening files
877 882 in binary mode. Bug report and fix thanks to Ville.
878 883
879 884 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
880 885 trying to catch spurious foo[1] autocalls. My fix actually broke
881 886 ',/' autoquote/call with explicit escape (bad regexp).
882 887
883 888 2005-02-15 *** Released version 0.6.11
884 889
885 890 2005-02-14 Fernando Perez <fperez@colorado.edu>
886 891
887 892 * IPython/background_jobs.py: New background job management
888 893 subsystem. This is implemented via a new set of classes, and
889 894 IPython now provides a builtin 'jobs' object for background job
890 895 execution. A convenience %bg magic serves as a lightweight
891 896 frontend for starting the more common type of calls. This was
892 897 inspired by discussions with B. Granger and the BackgroundCommand
893 898 class described in the book Python Scripting for Computational
894 899 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
895 900 (although ultimately no code from this text was used, as IPython's
896 901 system is a separate implementation).
897 902
898 903 * IPython/iplib.py (MagicCompleter.python_matches): add new option
899 904 to control the completion of single/double underscore names
900 905 separately. As documented in the example ipytonrc file, the
901 906 readline_omit__names variable can now be set to 2, to omit even
902 907 single underscore names. Thanks to a patch by Brian Wong
903 908 <BrianWong-AT-AirgoNetworks.Com>.
904 909 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
905 910 be autocalled as foo([1]) if foo were callable. A problem for
906 911 things which are both callable and implement __getitem__.
907 912 (init_readline): Fix autoindentation for win32. Thanks to a patch
908 913 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
909 914
910 915 2005-02-12 Fernando Perez <fperez@colorado.edu>
911 916
912 917 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
913 918 which I had written long ago to sort out user error messages which
914 919 may occur during startup. This seemed like a good idea initially,
915 920 but it has proven a disaster in retrospect. I don't want to
916 921 change much code for now, so my fix is to set the internal 'debug'
917 922 flag to true everywhere, whose only job was precisely to control
918 923 this subsystem. This closes issue 28 (as well as avoiding all
919 924 sorts of strange hangups which occur from time to time).
920 925
921 926 2005-02-07 Fernando Perez <fperez@colorado.edu>
922 927
923 928 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
924 929 previous call produced a syntax error.
925 930
926 931 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
927 932 classes without constructor.
928 933
929 934 2005-02-06 Fernando Perez <fperez@colorado.edu>
930 935
931 936 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
932 937 completions with the results of each matcher, so we return results
933 938 to the user from all namespaces. This breaks with ipython
934 939 tradition, but I think it's a nicer behavior. Now you get all
935 940 possible completions listed, from all possible namespaces (python,
936 941 filesystem, magics...) After a request by John Hunter
937 942 <jdhunter-AT-nitace.bsd.uchicago.edu>.
938 943
939 944 2005-02-05 Fernando Perez <fperez@colorado.edu>
940 945
941 946 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
942 947 the call had quote characters in it (the quotes were stripped).
943 948
944 949 2005-01-31 Fernando Perez <fperez@colorado.edu>
945 950
946 951 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
947 952 Itpl.itpl() to make the code more robust against psyco
948 953 optimizations.
949 954
950 955 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
951 956 of causing an exception. Quicker, cleaner.
952 957
953 958 2005-01-28 Fernando Perez <fperez@colorado.edu>
954 959
955 960 * scripts/ipython_win_post_install.py (install): hardcode
956 961 sys.prefix+'python.exe' as the executable path. It turns out that
957 962 during the post-installation run, sys.executable resolves to the
958 963 name of the binary installer! I should report this as a distutils
959 964 bug, I think. I updated the .10 release with this tiny fix, to
960 965 avoid annoying the lists further.
961 966
962 967 2005-01-27 *** Released version 0.6.10
963 968
964 969 2005-01-27 Fernando Perez <fperez@colorado.edu>
965 970
966 971 * IPython/numutils.py (norm): Added 'inf' as optional name for
967 972 L-infinity norm, included references to mathworld.com for vector
968 973 norm definitions.
969 974 (amin/amax): added amin/amax for array min/max. Similar to what
970 975 pylab ships with after the recent reorganization of names.
971 976 (spike/spike_odd): removed deprecated spike/spike_odd functions.
972 977
973 978 * ipython.el: committed Alex's recent fixes and improvements.
974 979 Tested with python-mode from CVS, and it looks excellent. Since
975 980 python-mode hasn't released anything in a while, I'm temporarily
976 981 putting a copy of today's CVS (v 4.70) of python-mode in:
977 982 http://ipython.scipy.org/tmp/python-mode.el
978 983
979 984 * scripts/ipython_win_post_install.py (install): Win32 fix to use
980 985 sys.executable for the executable name, instead of assuming it's
981 986 called 'python.exe' (the post-installer would have produced broken
982 987 setups on systems with a differently named python binary).
983 988
984 989 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
985 990 references to os.linesep, to make the code more
986 991 platform-independent. This is also part of the win32 coloring
987 992 fixes.
988 993
989 994 * IPython/genutils.py (page_dumb): Remove attempts to chop long
990 995 lines, which actually cause coloring bugs because the length of
991 996 the line is very difficult to correctly compute with embedded
992 997 escapes. This was the source of all the coloring problems under
993 998 Win32. I think that _finally_, Win32 users have a properly
994 999 working ipython in all respects. This would never have happened
995 1000 if not for Gary Bishop and Viktor Ransmayr's great help and work.
996 1001
997 1002 2005-01-26 *** Released version 0.6.9
998 1003
999 1004 2005-01-25 Fernando Perez <fperez@colorado.edu>
1000 1005
1001 1006 * setup.py: finally, we have a true Windows installer, thanks to
1002 1007 the excellent work of Viktor Ransmayr
1003 1008 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1004 1009 Windows users. The setup routine is quite a bit cleaner thanks to
1005 1010 this, and the post-install script uses the proper functions to
1006 1011 allow a clean de-installation using the standard Windows Control
1007 1012 Panel.
1008 1013
1009 1014 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1010 1015 environment variable under all OSes (including win32) if
1011 1016 available. This will give consistency to win32 users who have set
1012 1017 this variable for any reason. If os.environ['HOME'] fails, the
1013 1018 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1014 1019
1015 1020 2005-01-24 Fernando Perez <fperez@colorado.edu>
1016 1021
1017 1022 * IPython/numutils.py (empty_like): add empty_like(), similar to
1018 1023 zeros_like() but taking advantage of the new empty() Numeric routine.
1019 1024
1020 1025 2005-01-23 *** Released version 0.6.8
1021 1026
1022 1027 2005-01-22 Fernando Perez <fperez@colorado.edu>
1023 1028
1024 1029 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1025 1030 automatic show() calls. After discussing things with JDH, it
1026 1031 turns out there are too many corner cases where this can go wrong.
1027 1032 It's best not to try to be 'too smart', and simply have ipython
1028 1033 reproduce as much as possible the default behavior of a normal
1029 1034 python shell.
1030 1035
1031 1036 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1032 1037 line-splitting regexp and _prefilter() to avoid calling getattr()
1033 1038 on assignments. This closes
1034 1039 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1035 1040 readline uses getattr(), so a simple <TAB> keypress is still
1036 1041 enough to trigger getattr() calls on an object.
1037 1042
1038 1043 2005-01-21 Fernando Perez <fperez@colorado.edu>
1039 1044
1040 1045 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1041 1046 docstring under pylab so it doesn't mask the original.
1042 1047
1043 1048 2005-01-21 *** Released version 0.6.7
1044 1049
1045 1050 2005-01-21 Fernando Perez <fperez@colorado.edu>
1046 1051
1047 1052 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1048 1053 signal handling for win32 users in multithreaded mode.
1049 1054
1050 1055 2005-01-17 Fernando Perez <fperez@colorado.edu>
1051 1056
1052 1057 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1053 1058 instances with no __init__. After a crash report by Norbert Nemec
1054 1059 <Norbert-AT-nemec-online.de>.
1055 1060
1056 1061 2005-01-14 Fernando Perez <fperez@colorado.edu>
1057 1062
1058 1063 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1059 1064 names for verbose exceptions, when multiple dotted names and the
1060 1065 'parent' object were present on the same line.
1061 1066
1062 1067 2005-01-11 Fernando Perez <fperez@colorado.edu>
1063 1068
1064 1069 * IPython/genutils.py (flag_calls): new utility to trap and flag
1065 1070 calls in functions. I need it to clean up matplotlib support.
1066 1071 Also removed some deprecated code in genutils.
1067 1072
1068 1073 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1069 1074 that matplotlib scripts called with %run, which don't call show()
1070 1075 themselves, still have their plotting windows open.
1071 1076
1072 1077 2005-01-05 Fernando Perez <fperez@colorado.edu>
1073 1078
1074 1079 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1075 1080 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1076 1081
1077 1082 2004-12-19 Fernando Perez <fperez@colorado.edu>
1078 1083
1079 1084 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1080 1085 parent_runcode, which was an eyesore. The same result can be
1081 1086 obtained with Python's regular superclass mechanisms.
1082 1087
1083 1088 2004-12-17 Fernando Perez <fperez@colorado.edu>
1084 1089
1085 1090 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1086 1091 reported by Prabhu.
1087 1092 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1088 1093 sys.stderr) instead of explicitly calling sys.stderr. This helps
1089 1094 maintain our I/O abstractions clean, for future GUI embeddings.
1090 1095
1091 1096 * IPython/genutils.py (info): added new utility for sys.stderr
1092 1097 unified info message handling (thin wrapper around warn()).
1093 1098
1094 1099 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1095 1100 composite (dotted) names on verbose exceptions.
1096 1101 (VerboseTB.nullrepr): harden against another kind of errors which
1097 1102 Python's inspect module can trigger, and which were crashing
1098 1103 IPython. Thanks to a report by Marco Lombardi
1099 1104 <mlombard-AT-ma010192.hq.eso.org>.
1100 1105
1101 1106 2004-12-13 *** Released version 0.6.6
1102 1107
1103 1108 2004-12-12 Fernando Perez <fperez@colorado.edu>
1104 1109
1105 1110 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1106 1111 generated by pygtk upon initialization if it was built without
1107 1112 threads (for matplotlib users). After a crash reported by
1108 1113 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1109 1114
1110 1115 * IPython/ipmaker.py (make_IPython): fix small bug in the
1111 1116 import_some parameter for multiple imports.
1112 1117
1113 1118 * IPython/iplib.py (ipmagic): simplified the interface of
1114 1119 ipmagic() to take a single string argument, just as it would be
1115 1120 typed at the IPython cmd line.
1116 1121 (ipalias): Added new ipalias() with an interface identical to
1117 1122 ipmagic(). This completes exposing a pure python interface to the
1118 1123 alias and magic system, which can be used in loops or more complex
1119 1124 code where IPython's automatic line mangling is not active.
1120 1125
1121 1126 * IPython/genutils.py (timing): changed interface of timing to
1122 1127 simply run code once, which is the most common case. timings()
1123 1128 remains unchanged, for the cases where you want multiple runs.
1124 1129
1125 1130 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1126 1131 bug where Python2.2 crashes with exec'ing code which does not end
1127 1132 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1128 1133 before.
1129 1134
1130 1135 2004-12-10 Fernando Perez <fperez@colorado.edu>
1131 1136
1132 1137 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1133 1138 -t to -T, to accomodate the new -t flag in %run (the %run and
1134 1139 %prun options are kind of intermixed, and it's not easy to change
1135 1140 this with the limitations of python's getopt).
1136 1141
1137 1142 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1138 1143 the execution of scripts. It's not as fine-tuned as timeit.py,
1139 1144 but it works from inside ipython (and under 2.2, which lacks
1140 1145 timeit.py). Optionally a number of runs > 1 can be given for
1141 1146 timing very short-running code.
1142 1147
1143 1148 * IPython/genutils.py (uniq_stable): new routine which returns a
1144 1149 list of unique elements in any iterable, but in stable order of
1145 1150 appearance. I needed this for the ultraTB fixes, and it's a handy
1146 1151 utility.
1147 1152
1148 1153 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1149 1154 dotted names in Verbose exceptions. This had been broken since
1150 1155 the very start, now x.y will properly be printed in a Verbose
1151 1156 traceback, instead of x being shown and y appearing always as an
1152 1157 'undefined global'. Getting this to work was a bit tricky,
1153 1158 because by default python tokenizers are stateless. Saved by
1154 1159 python's ability to easily add a bit of state to an arbitrary
1155 1160 function (without needing to build a full-blown callable object).
1156 1161
1157 1162 Also big cleanup of this code, which had horrendous runtime
1158 1163 lookups of zillions of attributes for colorization. Moved all
1159 1164 this code into a few templates, which make it cleaner and quicker.
1160 1165
1161 1166 Printout quality was also improved for Verbose exceptions: one
1162 1167 variable per line, and memory addresses are printed (this can be
1163 1168 quite handy in nasty debugging situations, which is what Verbose
1164 1169 is for).
1165 1170
1166 1171 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1167 1172 the command line as scripts to be loaded by embedded instances.
1168 1173 Doing so has the potential for an infinite recursion if there are
1169 1174 exceptions thrown in the process. This fixes a strange crash
1170 1175 reported by Philippe MULLER <muller-AT-irit.fr>.
1171 1176
1172 1177 2004-12-09 Fernando Perez <fperez@colorado.edu>
1173 1178
1174 1179 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1175 1180 to reflect new names in matplotlib, which now expose the
1176 1181 matlab-compatible interface via a pylab module instead of the
1177 1182 'matlab' name. The new code is backwards compatible, so users of
1178 1183 all matplotlib versions are OK. Patch by J. Hunter.
1179 1184
1180 1185 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1181 1186 of __init__ docstrings for instances (class docstrings are already
1182 1187 automatically printed). Instances with customized docstrings
1183 1188 (indep. of the class) are also recognized and all 3 separate
1184 1189 docstrings are printed (instance, class, constructor). After some
1185 1190 comments/suggestions by J. Hunter.
1186 1191
1187 1192 2004-12-05 Fernando Perez <fperez@colorado.edu>
1188 1193
1189 1194 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1190 1195 warnings when tab-completion fails and triggers an exception.
1191 1196
1192 1197 2004-12-03 Fernando Perez <fperez@colorado.edu>
1193 1198
1194 1199 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1195 1200 be triggered when using 'run -p'. An incorrect option flag was
1196 1201 being set ('d' instead of 'D').
1197 1202 (manpage): fix missing escaped \- sign.
1198 1203
1199 1204 2004-11-30 *** Released version 0.6.5
1200 1205
1201 1206 2004-11-30 Fernando Perez <fperez@colorado.edu>
1202 1207
1203 1208 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1204 1209 setting with -d option.
1205 1210
1206 1211 * setup.py (docfiles): Fix problem where the doc glob I was using
1207 1212 was COMPLETELY BROKEN. It was giving the right files by pure
1208 1213 accident, but failed once I tried to include ipython.el. Note:
1209 1214 glob() does NOT allow you to do exclusion on multiple endings!
1210 1215
1211 1216 2004-11-29 Fernando Perez <fperez@colorado.edu>
1212 1217
1213 1218 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1214 1219 the manpage as the source. Better formatting & consistency.
1215 1220
1216 1221 * IPython/Magic.py (magic_run): Added new -d option, to run
1217 1222 scripts under the control of the python pdb debugger. Note that
1218 1223 this required changing the %prun option -d to -D, to avoid a clash
1219 1224 (since %run must pass options to %prun, and getopt is too dumb to
1220 1225 handle options with string values with embedded spaces). Thanks
1221 1226 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1222 1227 (magic_who_ls): added type matching to %who and %whos, so that one
1223 1228 can filter their output to only include variables of certain
1224 1229 types. Another suggestion by Matthew.
1225 1230 (magic_whos): Added memory summaries in kb and Mb for arrays.
1226 1231 (magic_who): Improve formatting (break lines every 9 vars).
1227 1232
1228 1233 2004-11-28 Fernando Perez <fperez@colorado.edu>
1229 1234
1230 1235 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1231 1236 cache when empty lines were present.
1232 1237
1233 1238 2004-11-24 Fernando Perez <fperez@colorado.edu>
1234 1239
1235 1240 * IPython/usage.py (__doc__): document the re-activated threading
1236 1241 options for WX and GTK.
1237 1242
1238 1243 2004-11-23 Fernando Perez <fperez@colorado.edu>
1239 1244
1240 1245 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1241 1246 the -wthread and -gthread options, along with a new -tk one to try
1242 1247 and coordinate Tk threading with wx/gtk. The tk support is very
1243 1248 platform dependent, since it seems to require Tcl and Tk to be
1244 1249 built with threads (Fedora1/2 appears NOT to have it, but in
1245 1250 Prabhu's Debian boxes it works OK). But even with some Tk
1246 1251 limitations, this is a great improvement.
1247 1252
1248 1253 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1249 1254 info in user prompts. Patch by Prabhu.
1250 1255
1251 1256 2004-11-18 Fernando Perez <fperez@colorado.edu>
1252 1257
1253 1258 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1254 1259 EOFErrors and bail, to avoid infinite loops if a non-terminating
1255 1260 file is fed into ipython. Patch submitted in issue 19 by user,
1256 1261 many thanks.
1257 1262
1258 1263 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1259 1264 autoquote/parens in continuation prompts, which can cause lots of
1260 1265 problems. Closes roundup issue 20.
1261 1266
1262 1267 2004-11-17 Fernando Perez <fperez@colorado.edu>
1263 1268
1264 1269 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1265 1270 reported as debian bug #280505. I'm not sure my local changelog
1266 1271 entry has the proper debian format (Jack?).
1267 1272
1268 1273 2004-11-08 *** Released version 0.6.4
1269 1274
1270 1275 2004-11-08 Fernando Perez <fperez@colorado.edu>
1271 1276
1272 1277 * IPython/iplib.py (init_readline): Fix exit message for Windows
1273 1278 when readline is active. Thanks to a report by Eric Jones
1274 1279 <eric-AT-enthought.com>.
1275 1280
1276 1281 2004-11-07 Fernando Perez <fperez@colorado.edu>
1277 1282
1278 1283 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1279 1284 sometimes seen by win2k/cygwin users.
1280 1285
1281 1286 2004-11-06 Fernando Perez <fperez@colorado.edu>
1282 1287
1283 1288 * IPython/iplib.py (interact): Change the handling of %Exit from
1284 1289 trying to propagate a SystemExit to an internal ipython flag.
1285 1290 This is less elegant than using Python's exception mechanism, but
1286 1291 I can't get that to work reliably with threads, so under -pylab
1287 1292 %Exit was hanging IPython. Cross-thread exception handling is
1288 1293 really a bitch. Thaks to a bug report by Stephen Walton
1289 1294 <stephen.walton-AT-csun.edu>.
1290 1295
1291 1296 2004-11-04 Fernando Perez <fperez@colorado.edu>
1292 1297
1293 1298 * IPython/iplib.py (raw_input_original): store a pointer to the
1294 1299 true raw_input to harden against code which can modify it
1295 1300 (wx.py.PyShell does this and would otherwise crash ipython).
1296 1301 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1297 1302
1298 1303 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1299 1304 Ctrl-C problem, which does not mess up the input line.
1300 1305
1301 1306 2004-11-03 Fernando Perez <fperez@colorado.edu>
1302 1307
1303 1308 * IPython/Release.py: Changed licensing to BSD, in all files.
1304 1309 (name): lowercase name for tarball/RPM release.
1305 1310
1306 1311 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1307 1312 use throughout ipython.
1308 1313
1309 1314 * IPython/Magic.py (Magic._ofind): Switch to using the new
1310 1315 OInspect.getdoc() function.
1311 1316
1312 1317 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1313 1318 of the line currently being canceled via Ctrl-C. It's extremely
1314 1319 ugly, but I don't know how to do it better (the problem is one of
1315 1320 handling cross-thread exceptions).
1316 1321
1317 1322 2004-10-28 Fernando Perez <fperez@colorado.edu>
1318 1323
1319 1324 * IPython/Shell.py (signal_handler): add signal handlers to trap
1320 1325 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1321 1326 report by Francesc Alted.
1322 1327
1323 1328 2004-10-21 Fernando Perez <fperez@colorado.edu>
1324 1329
1325 1330 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1326 1331 to % for pysh syntax extensions.
1327 1332
1328 1333 2004-10-09 Fernando Perez <fperez@colorado.edu>
1329 1334
1330 1335 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1331 1336 arrays to print a more useful summary, without calling str(arr).
1332 1337 This avoids the problem of extremely lengthy computations which
1333 1338 occur if arr is large, and appear to the user as a system lockup
1334 1339 with 100% cpu activity. After a suggestion by Kristian Sandberg
1335 1340 <Kristian.Sandberg@colorado.edu>.
1336 1341 (Magic.__init__): fix bug in global magic escapes not being
1337 1342 correctly set.
1338 1343
1339 1344 2004-10-08 Fernando Perez <fperez@colorado.edu>
1340 1345
1341 1346 * IPython/Magic.py (__license__): change to absolute imports of
1342 1347 ipython's own internal packages, to start adapting to the absolute
1343 1348 import requirement of PEP-328.
1344 1349
1345 1350 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1346 1351 files, and standardize author/license marks through the Release
1347 1352 module instead of having per/file stuff (except for files with
1348 1353 particular licenses, like the MIT/PSF-licensed codes).
1349 1354
1350 1355 * IPython/Debugger.py: remove dead code for python 2.1
1351 1356
1352 1357 2004-10-04 Fernando Perez <fperez@colorado.edu>
1353 1358
1354 1359 * IPython/iplib.py (ipmagic): New function for accessing magics
1355 1360 via a normal python function call.
1356 1361
1357 1362 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1358 1363 from '@' to '%', to accomodate the new @decorator syntax of python
1359 1364 2.4.
1360 1365
1361 1366 2004-09-29 Fernando Perez <fperez@colorado.edu>
1362 1367
1363 1368 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1364 1369 matplotlib.use to prevent running scripts which try to switch
1365 1370 interactive backends from within ipython. This will just crash
1366 1371 the python interpreter, so we can't allow it (but a detailed error
1367 1372 is given to the user).
1368 1373
1369 1374 2004-09-28 Fernando Perez <fperez@colorado.edu>
1370 1375
1371 1376 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1372 1377 matplotlib-related fixes so that using @run with non-matplotlib
1373 1378 scripts doesn't pop up spurious plot windows. This requires
1374 1379 matplotlib >= 0.63, where I had to make some changes as well.
1375 1380
1376 1381 * IPython/ipmaker.py (make_IPython): update version requirement to
1377 1382 python 2.2.
1378 1383
1379 1384 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1380 1385 banner arg for embedded customization.
1381 1386
1382 1387 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1383 1388 explicit uses of __IP as the IPython's instance name. Now things
1384 1389 are properly handled via the shell.name value. The actual code
1385 1390 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1386 1391 is much better than before. I'll clean things completely when the
1387 1392 magic stuff gets a real overhaul.
1388 1393
1389 1394 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1390 1395 minor changes to debian dir.
1391 1396
1392 1397 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1393 1398 pointer to the shell itself in the interactive namespace even when
1394 1399 a user-supplied dict is provided. This is needed for embedding
1395 1400 purposes (found by tests with Michel Sanner).
1396 1401
1397 1402 2004-09-27 Fernando Perez <fperez@colorado.edu>
1398 1403
1399 1404 * IPython/UserConfig/ipythonrc: remove []{} from
1400 1405 readline_remove_delims, so that things like [modname.<TAB> do
1401 1406 proper completion. This disables [].TAB, but that's a less common
1402 1407 case than module names in list comprehensions, for example.
1403 1408 Thanks to a report by Andrea Riciputi.
1404 1409
1405 1410 2004-09-09 Fernando Perez <fperez@colorado.edu>
1406 1411
1407 1412 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1408 1413 blocking problems in win32 and osx. Fix by John.
1409 1414
1410 1415 2004-09-08 Fernando Perez <fperez@colorado.edu>
1411 1416
1412 1417 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1413 1418 for Win32 and OSX. Fix by John Hunter.
1414 1419
1415 1420 2004-08-30 *** Released version 0.6.3
1416 1421
1417 1422 2004-08-30 Fernando Perez <fperez@colorado.edu>
1418 1423
1419 1424 * setup.py (isfile): Add manpages to list of dependent files to be
1420 1425 updated.
1421 1426
1422 1427 2004-08-27 Fernando Perez <fperez@colorado.edu>
1423 1428
1424 1429 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1425 1430 for now. They don't really work with standalone WX/GTK code
1426 1431 (though matplotlib IS working fine with both of those backends).
1427 1432 This will neeed much more testing. I disabled most things with
1428 1433 comments, so turning it back on later should be pretty easy.
1429 1434
1430 1435 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1431 1436 autocalling of expressions like r'foo', by modifying the line
1432 1437 split regexp. Closes
1433 1438 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1434 1439 Riley <ipythonbugs-AT-sabi.net>.
1435 1440 (InteractiveShell.mainloop): honor --nobanner with banner
1436 1441 extensions.
1437 1442
1438 1443 * IPython/Shell.py: Significant refactoring of all classes, so
1439 1444 that we can really support ALL matplotlib backends and threading
1440 1445 models (John spotted a bug with Tk which required this). Now we
1441 1446 should support single-threaded, WX-threads and GTK-threads, both
1442 1447 for generic code and for matplotlib.
1443 1448
1444 1449 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1445 1450 -pylab, to simplify things for users. Will also remove the pylab
1446 1451 profile, since now all of matplotlib configuration is directly
1447 1452 handled here. This also reduces startup time.
1448 1453
1449 1454 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1450 1455 shell wasn't being correctly called. Also in IPShellWX.
1451 1456
1452 1457 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1453 1458 fine-tune banner.
1454 1459
1455 1460 * IPython/numutils.py (spike): Deprecate these spike functions,
1456 1461 delete (long deprecated) gnuplot_exec handler.
1457 1462
1458 1463 2004-08-26 Fernando Perez <fperez@colorado.edu>
1459 1464
1460 1465 * ipython.1: Update for threading options, plus some others which
1461 1466 were missing.
1462 1467
1463 1468 * IPython/ipmaker.py (__call__): Added -wthread option for
1464 1469 wxpython thread handling. Make sure threading options are only
1465 1470 valid at the command line.
1466 1471
1467 1472 * scripts/ipython: moved shell selection into a factory function
1468 1473 in Shell.py, to keep the starter script to a minimum.
1469 1474
1470 1475 2004-08-25 Fernando Perez <fperez@colorado.edu>
1471 1476
1472 1477 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1473 1478 John. Along with some recent changes he made to matplotlib, the
1474 1479 next versions of both systems should work very well together.
1475 1480
1476 1481 2004-08-24 Fernando Perez <fperez@colorado.edu>
1477 1482
1478 1483 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1479 1484 tried to switch the profiling to using hotshot, but I'm getting
1480 1485 strange errors from prof.runctx() there. I may be misreading the
1481 1486 docs, but it looks weird. For now the profiling code will
1482 1487 continue to use the standard profiler.
1483 1488
1484 1489 2004-08-23 Fernando Perez <fperez@colorado.edu>
1485 1490
1486 1491 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1487 1492 threaded shell, by John Hunter. It's not quite ready yet, but
1488 1493 close.
1489 1494
1490 1495 2004-08-22 Fernando Perez <fperez@colorado.edu>
1491 1496
1492 1497 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1493 1498 in Magic and ultraTB.
1494 1499
1495 1500 * ipython.1: document threading options in manpage.
1496 1501
1497 1502 * scripts/ipython: Changed name of -thread option to -gthread,
1498 1503 since this is GTK specific. I want to leave the door open for a
1499 1504 -wthread option for WX, which will most likely be necessary. This
1500 1505 change affects usage and ipmaker as well.
1501 1506
1502 1507 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1503 1508 handle the matplotlib shell issues. Code by John Hunter
1504 1509 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1505 1510 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1506 1511 broken (and disabled for end users) for now, but it puts the
1507 1512 infrastructure in place.
1508 1513
1509 1514 2004-08-21 Fernando Perez <fperez@colorado.edu>
1510 1515
1511 1516 * ipythonrc-pylab: Add matplotlib support.
1512 1517
1513 1518 * matplotlib_config.py: new files for matplotlib support, part of
1514 1519 the pylab profile.
1515 1520
1516 1521 * IPython/usage.py (__doc__): documented the threading options.
1517 1522
1518 1523 2004-08-20 Fernando Perez <fperez@colorado.edu>
1519 1524
1520 1525 * ipython: Modified the main calling routine to handle the -thread
1521 1526 and -mpthread options. This needs to be done as a top-level hack,
1522 1527 because it determines which class to instantiate for IPython
1523 1528 itself.
1524 1529
1525 1530 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1526 1531 classes to support multithreaded GTK operation without blocking,
1527 1532 and matplotlib with all backends. This is a lot of still very
1528 1533 experimental code, and threads are tricky. So it may still have a
1529 1534 few rough edges... This code owes a lot to
1530 1535 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1531 1536 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1532 1537 to John Hunter for all the matplotlib work.
1533 1538
1534 1539 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1535 1540 options for gtk thread and matplotlib support.
1536 1541
1537 1542 2004-08-16 Fernando Perez <fperez@colorado.edu>
1538 1543
1539 1544 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1540 1545 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1541 1546 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1542 1547
1543 1548 2004-08-11 Fernando Perez <fperez@colorado.edu>
1544 1549
1545 1550 * setup.py (isfile): Fix build so documentation gets updated for
1546 1551 rpms (it was only done for .tgz builds).
1547 1552
1548 1553 2004-08-10 Fernando Perez <fperez@colorado.edu>
1549 1554
1550 1555 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1551 1556
1552 1557 * iplib.py : Silence syntax error exceptions in tab-completion.
1553 1558
1554 1559 2004-08-05 Fernando Perez <fperez@colorado.edu>
1555 1560
1556 1561 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1557 1562 'color off' mark for continuation prompts. This was causing long
1558 1563 continuation lines to mis-wrap.
1559 1564
1560 1565 2004-08-01 Fernando Perez <fperez@colorado.edu>
1561 1566
1562 1567 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1563 1568 for building ipython to be a parameter. All this is necessary
1564 1569 right now to have a multithreaded version, but this insane
1565 1570 non-design will be cleaned up soon. For now, it's a hack that
1566 1571 works.
1567 1572
1568 1573 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1569 1574 args in various places. No bugs so far, but it's a dangerous
1570 1575 practice.
1571 1576
1572 1577 2004-07-31 Fernando Perez <fperez@colorado.edu>
1573 1578
1574 1579 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1575 1580 fix completion of files with dots in their names under most
1576 1581 profiles (pysh was OK because the completion order is different).
1577 1582
1578 1583 2004-07-27 Fernando Perez <fperez@colorado.edu>
1579 1584
1580 1585 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1581 1586 keywords manually, b/c the one in keyword.py was removed in python
1582 1587 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1583 1588 This is NOT a bug under python 2.3 and earlier.
1584 1589
1585 1590 2004-07-26 Fernando Perez <fperez@colorado.edu>
1586 1591
1587 1592 * IPython/ultraTB.py (VerboseTB.text): Add another
1588 1593 linecache.checkcache() call to try to prevent inspect.py from
1589 1594 crashing under python 2.3. I think this fixes
1590 1595 http://www.scipy.net/roundup/ipython/issue17.
1591 1596
1592 1597 2004-07-26 *** Released version 0.6.2
1593 1598
1594 1599 2004-07-26 Fernando Perez <fperez@colorado.edu>
1595 1600
1596 1601 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1597 1602 fail for any number.
1598 1603 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1599 1604 empty bookmarks.
1600 1605
1601 1606 2004-07-26 *** Released version 0.6.1
1602 1607
1603 1608 2004-07-26 Fernando Perez <fperez@colorado.edu>
1604 1609
1605 1610 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1606 1611
1607 1612 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1608 1613 escaping '()[]{}' in filenames.
1609 1614
1610 1615 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1611 1616 Python 2.2 users who lack a proper shlex.split.
1612 1617
1613 1618 2004-07-19 Fernando Perez <fperez@colorado.edu>
1614 1619
1615 1620 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1616 1621 for reading readline's init file. I follow the normal chain:
1617 1622 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1618 1623 report by Mike Heeter. This closes
1619 1624 http://www.scipy.net/roundup/ipython/issue16.
1620 1625
1621 1626 2004-07-18 Fernando Perez <fperez@colorado.edu>
1622 1627
1623 1628 * IPython/iplib.py (__init__): Add better handling of '\' under
1624 1629 Win32 for filenames. After a patch by Ville.
1625 1630
1626 1631 2004-07-17 Fernando Perez <fperez@colorado.edu>
1627 1632
1628 1633 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1629 1634 autocalling would be triggered for 'foo is bar' if foo is
1630 1635 callable. I also cleaned up the autocall detection code to use a
1631 1636 regexp, which is faster. Bug reported by Alexander Schmolck.
1632 1637
1633 1638 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1634 1639 '?' in them would confuse the help system. Reported by Alex
1635 1640 Schmolck.
1636 1641
1637 1642 2004-07-16 Fernando Perez <fperez@colorado.edu>
1638 1643
1639 1644 * IPython/GnuplotInteractive.py (__all__): added plot2.
1640 1645
1641 1646 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1642 1647 plotting dictionaries, lists or tuples of 1d arrays.
1643 1648
1644 1649 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1645 1650 optimizations.
1646 1651
1647 1652 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1648 1653 the information which was there from Janko's original IPP code:
1649 1654
1650 1655 03.05.99 20:53 porto.ifm.uni-kiel.de
1651 1656 --Started changelog.
1652 1657 --make clear do what it say it does
1653 1658 --added pretty output of lines from inputcache
1654 1659 --Made Logger a mixin class, simplifies handling of switches
1655 1660 --Added own completer class. .string<TAB> expands to last history
1656 1661 line which starts with string. The new expansion is also present
1657 1662 with Ctrl-r from the readline library. But this shows, who this
1658 1663 can be done for other cases.
1659 1664 --Added convention that all shell functions should accept a
1660 1665 parameter_string This opens the door for different behaviour for
1661 1666 each function. @cd is a good example of this.
1662 1667
1663 1668 04.05.99 12:12 porto.ifm.uni-kiel.de
1664 1669 --added logfile rotation
1665 1670 --added new mainloop method which freezes first the namespace
1666 1671
1667 1672 07.05.99 21:24 porto.ifm.uni-kiel.de
1668 1673 --added the docreader classes. Now there is a help system.
1669 1674 -This is only a first try. Currently it's not easy to put new
1670 1675 stuff in the indices. But this is the way to go. Info would be
1671 1676 better, but HTML is every where and not everybody has an info
1672 1677 system installed and it's not so easy to change html-docs to info.
1673 1678 --added global logfile option
1674 1679 --there is now a hook for object inspection method pinfo needs to
1675 1680 be provided for this. Can be reached by two '??'.
1676 1681
1677 1682 08.05.99 20:51 porto.ifm.uni-kiel.de
1678 1683 --added a README
1679 1684 --bug in rc file. Something has changed so functions in the rc
1680 1685 file need to reference the shell and not self. Not clear if it's a
1681 1686 bug or feature.
1682 1687 --changed rc file for new behavior
1683 1688
1684 1689 2004-07-15 Fernando Perez <fperez@colorado.edu>
1685 1690
1686 1691 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1687 1692 cache was falling out of sync in bizarre manners when multi-line
1688 1693 input was present. Minor optimizations and cleanup.
1689 1694
1690 1695 (Logger): Remove old Changelog info for cleanup. This is the
1691 1696 information which was there from Janko's original code:
1692 1697
1693 1698 Changes to Logger: - made the default log filename a parameter
1694 1699
1695 1700 - put a check for lines beginning with !@? in log(). Needed
1696 1701 (even if the handlers properly log their lines) for mid-session
1697 1702 logging activation to work properly. Without this, lines logged
1698 1703 in mid session, which get read from the cache, would end up
1699 1704 'bare' (with !@? in the open) in the log. Now they are caught
1700 1705 and prepended with a #.
1701 1706
1702 1707 * IPython/iplib.py (InteractiveShell.init_readline): added check
1703 1708 in case MagicCompleter fails to be defined, so we don't crash.
1704 1709
1705 1710 2004-07-13 Fernando Perez <fperez@colorado.edu>
1706 1711
1707 1712 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1708 1713 of EPS if the requested filename ends in '.eps'.
1709 1714
1710 1715 2004-07-04 Fernando Perez <fperez@colorado.edu>
1711 1716
1712 1717 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1713 1718 escaping of quotes when calling the shell.
1714 1719
1715 1720 2004-07-02 Fernando Perez <fperez@colorado.edu>
1716 1721
1717 1722 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1718 1723 gettext not working because we were clobbering '_'. Fixes
1719 1724 http://www.scipy.net/roundup/ipython/issue6.
1720 1725
1721 1726 2004-07-01 Fernando Perez <fperez@colorado.edu>
1722 1727
1723 1728 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1724 1729 into @cd. Patch by Ville.
1725 1730
1726 1731 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1727 1732 new function to store things after ipmaker runs. Patch by Ville.
1728 1733 Eventually this will go away once ipmaker is removed and the class
1729 1734 gets cleaned up, but for now it's ok. Key functionality here is
1730 1735 the addition of the persistent storage mechanism, a dict for
1731 1736 keeping data across sessions (for now just bookmarks, but more can
1732 1737 be implemented later).
1733 1738
1734 1739 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1735 1740 persistent across sections. Patch by Ville, I modified it
1736 1741 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1737 1742 added a '-l' option to list all bookmarks.
1738 1743
1739 1744 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1740 1745 center for cleanup. Registered with atexit.register(). I moved
1741 1746 here the old exit_cleanup(). After a patch by Ville.
1742 1747
1743 1748 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1744 1749 characters in the hacked shlex_split for python 2.2.
1745 1750
1746 1751 * IPython/iplib.py (file_matches): more fixes to filenames with
1747 1752 whitespace in them. It's not perfect, but limitations in python's
1748 1753 readline make it impossible to go further.
1749 1754
1750 1755 2004-06-29 Fernando Perez <fperez@colorado.edu>
1751 1756
1752 1757 * IPython/iplib.py (file_matches): escape whitespace correctly in
1753 1758 filename completions. Bug reported by Ville.
1754 1759
1755 1760 2004-06-28 Fernando Perez <fperez@colorado.edu>
1756 1761
1757 1762 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1758 1763 the history file will be called 'history-PROFNAME' (or just
1759 1764 'history' if no profile is loaded). I was getting annoyed at
1760 1765 getting my Numerical work history clobbered by pysh sessions.
1761 1766
1762 1767 * IPython/iplib.py (InteractiveShell.__init__): Internal
1763 1768 getoutputerror() function so that we can honor the system_verbose
1764 1769 flag for _all_ system calls. I also added escaping of #
1765 1770 characters here to avoid confusing Itpl.
1766 1771
1767 1772 * IPython/Magic.py (shlex_split): removed call to shell in
1768 1773 parse_options and replaced it with shlex.split(). The annoying
1769 1774 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1770 1775 to backport it from 2.3, with several frail hacks (the shlex
1771 1776 module is rather limited in 2.2). Thanks to a suggestion by Ville
1772 1777 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1773 1778 problem.
1774 1779
1775 1780 (Magic.magic_system_verbose): new toggle to print the actual
1776 1781 system calls made by ipython. Mainly for debugging purposes.
1777 1782
1778 1783 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1779 1784 doesn't support persistence. Reported (and fix suggested) by
1780 1785 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1781 1786
1782 1787 2004-06-26 Fernando Perez <fperez@colorado.edu>
1783 1788
1784 1789 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1785 1790 continue prompts.
1786 1791
1787 1792 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1788 1793 function (basically a big docstring) and a few more things here to
1789 1794 speedup startup. pysh.py is now very lightweight. We want because
1790 1795 it gets execfile'd, while InterpreterExec gets imported, so
1791 1796 byte-compilation saves time.
1792 1797
1793 1798 2004-06-25 Fernando Perez <fperez@colorado.edu>
1794 1799
1795 1800 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1796 1801 -NUM', which was recently broken.
1797 1802
1798 1803 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1799 1804 in multi-line input (but not !!, which doesn't make sense there).
1800 1805
1801 1806 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1802 1807 It's just too useful, and people can turn it off in the less
1803 1808 common cases where it's a problem.
1804 1809
1805 1810 2004-06-24 Fernando Perez <fperez@colorado.edu>
1806 1811
1807 1812 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1808 1813 special syntaxes (like alias calling) is now allied in multi-line
1809 1814 input. This is still _very_ experimental, but it's necessary for
1810 1815 efficient shell usage combining python looping syntax with system
1811 1816 calls. For now it's restricted to aliases, I don't think it
1812 1817 really even makes sense to have this for magics.
1813 1818
1814 1819 2004-06-23 Fernando Perez <fperez@colorado.edu>
1815 1820
1816 1821 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1817 1822 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1818 1823
1819 1824 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1820 1825 extensions under Windows (after code sent by Gary Bishop). The
1821 1826 extensions considered 'executable' are stored in IPython's rc
1822 1827 structure as win_exec_ext.
1823 1828
1824 1829 * IPython/genutils.py (shell): new function, like system() but
1825 1830 without return value. Very useful for interactive shell work.
1826 1831
1827 1832 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
1828 1833 delete aliases.
1829 1834
1830 1835 * IPython/iplib.py (InteractiveShell.alias_table_update): make
1831 1836 sure that the alias table doesn't contain python keywords.
1832 1837
1833 1838 2004-06-21 Fernando Perez <fperez@colorado.edu>
1834 1839
1835 1840 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
1836 1841 non-existent items are found in $PATH. Reported by Thorsten.
1837 1842
1838 1843 2004-06-20 Fernando Perez <fperez@colorado.edu>
1839 1844
1840 1845 * IPython/iplib.py (complete): modified the completer so that the
1841 1846 order of priorities can be easily changed at runtime.
1842 1847
1843 1848 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
1844 1849 Modified to auto-execute all lines beginning with '~', '/' or '.'.
1845 1850
1846 1851 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
1847 1852 expand Python variables prepended with $ in all system calls. The
1848 1853 same was done to InteractiveShell.handle_shell_escape. Now all
1849 1854 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
1850 1855 expansion of python variables and expressions according to the
1851 1856 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
1852 1857
1853 1858 Though PEP-215 has been rejected, a similar (but simpler) one
1854 1859 seems like it will go into Python 2.4, PEP-292 -
1855 1860 http://www.python.org/peps/pep-0292.html.
1856 1861
1857 1862 I'll keep the full syntax of PEP-215, since IPython has since the
1858 1863 start used Ka-Ping Yee's reference implementation discussed there
1859 1864 (Itpl), and I actually like the powerful semantics it offers.
1860 1865
1861 1866 In order to access normal shell variables, the $ has to be escaped
1862 1867 via an extra $. For example:
1863 1868
1864 1869 In [7]: PATH='a python variable'
1865 1870
1866 1871 In [8]: !echo $PATH
1867 1872 a python variable
1868 1873
1869 1874 In [9]: !echo $$PATH
1870 1875 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1871 1876
1872 1877 (Magic.parse_options): escape $ so the shell doesn't evaluate
1873 1878 things prematurely.
1874 1879
1875 1880 * IPython/iplib.py (InteractiveShell.call_alias): added the
1876 1881 ability for aliases to expand python variables via $.
1877 1882
1878 1883 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
1879 1884 system, now there's a @rehash/@rehashx pair of magics. These work
1880 1885 like the csh rehash command, and can be invoked at any time. They
1881 1886 build a table of aliases to everything in the user's $PATH
1882 1887 (@rehash uses everything, @rehashx is slower but only adds
1883 1888 executable files). With this, the pysh.py-based shell profile can
1884 1889 now simply call rehash upon startup, and full access to all
1885 1890 programs in the user's path is obtained.
1886 1891
1887 1892 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
1888 1893 functionality is now fully in place. I removed the old dynamic
1889 1894 code generation based approach, in favor of a much lighter one
1890 1895 based on a simple dict. The advantage is that this allows me to
1891 1896 now have thousands of aliases with negligible cost (unthinkable
1892 1897 with the old system).
1893 1898
1894 1899 2004-06-19 Fernando Perez <fperez@colorado.edu>
1895 1900
1896 1901 * IPython/iplib.py (__init__): extended MagicCompleter class to
1897 1902 also complete (last in priority) on user aliases.
1898 1903
1899 1904 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
1900 1905 call to eval.
1901 1906 (ItplNS.__init__): Added a new class which functions like Itpl,
1902 1907 but allows configuring the namespace for the evaluation to occur
1903 1908 in.
1904 1909
1905 1910 2004-06-18 Fernando Perez <fperez@colorado.edu>
1906 1911
1907 1912 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
1908 1913 better message when 'exit' or 'quit' are typed (a common newbie
1909 1914 confusion).
1910 1915
1911 1916 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
1912 1917 check for Windows users.
1913 1918
1914 1919 * IPython/iplib.py (InteractiveShell.user_setup): removed
1915 1920 disabling of colors for Windows. I'll test at runtime and issue a
1916 1921 warning if Gary's readline isn't found, as to nudge users to
1917 1922 download it.
1918 1923
1919 1924 2004-06-16 Fernando Perez <fperez@colorado.edu>
1920 1925
1921 1926 * IPython/genutils.py (Stream.__init__): changed to print errors
1922 1927 to sys.stderr. I had a circular dependency here. Now it's
1923 1928 possible to run ipython as IDLE's shell (consider this pre-alpha,
1924 1929 since true stdout things end up in the starting terminal instead
1925 1930 of IDLE's out).
1926 1931
1927 1932 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
1928 1933 users who haven't # updated their prompt_in2 definitions. Remove
1929 1934 eventually.
1930 1935 (multiple_replace): added credit to original ASPN recipe.
1931 1936
1932 1937 2004-06-15 Fernando Perez <fperez@colorado.edu>
1933 1938
1934 1939 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
1935 1940 list of auto-defined aliases.
1936 1941
1937 1942 2004-06-13 Fernando Perez <fperez@colorado.edu>
1938 1943
1939 1944 * setup.py (scriptfiles): Don't trigger win_post_install unless an
1940 1945 install was really requested (so setup.py can be used for other
1941 1946 things under Windows).
1942 1947
1943 1948 2004-06-10 Fernando Perez <fperez@colorado.edu>
1944 1949
1945 1950 * IPython/Logger.py (Logger.create_log): Manually remove any old
1946 1951 backup, since os.remove may fail under Windows. Fixes bug
1947 1952 reported by Thorsten.
1948 1953
1949 1954 2004-06-09 Fernando Perez <fperez@colorado.edu>
1950 1955
1951 1956 * examples/example-embed.py: fixed all references to %n (replaced
1952 1957 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
1953 1958 for all examples and the manual as well.
1954 1959
1955 1960 2004-06-08 Fernando Perez <fperez@colorado.edu>
1956 1961
1957 1962 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
1958 1963 alignment and color management. All 3 prompt subsystems now
1959 1964 inherit from BasePrompt.
1960 1965
1961 1966 * tools/release: updates for windows installer build and tag rpms
1962 1967 with python version (since paths are fixed).
1963 1968
1964 1969 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
1965 1970 which will become eventually obsolete. Also fixed the default
1966 1971 prompt_in2 to use \D, so at least new users start with the correct
1967 1972 defaults.
1968 1973 WARNING: Users with existing ipythonrc files will need to apply
1969 1974 this fix manually!
1970 1975
1971 1976 * setup.py: make windows installer (.exe). This is finally the
1972 1977 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
1973 1978 which I hadn't included because it required Python 2.3 (or recent
1974 1979 distutils).
1975 1980
1976 1981 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
1977 1982 usage of new '\D' escape.
1978 1983
1979 1984 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
1980 1985 lacks os.getuid())
1981 1986 (CachedOutput.set_colors): Added the ability to turn coloring
1982 1987 on/off with @colors even for manually defined prompt colors. It
1983 1988 uses a nasty global, but it works safely and via the generic color
1984 1989 handling mechanism.
1985 1990 (Prompt2.__init__): Introduced new escape '\D' for continuation
1986 1991 prompts. It represents the counter ('\#') as dots.
1987 1992 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
1988 1993 need to update their ipythonrc files and replace '%n' with '\D' in
1989 1994 their prompt_in2 settings everywhere. Sorry, but there's
1990 1995 otherwise no clean way to get all prompts to properly align. The
1991 1996 ipythonrc shipped with IPython has been updated.
1992 1997
1993 1998 2004-06-07 Fernando Perez <fperez@colorado.edu>
1994 1999
1995 2000 * setup.py (isfile): Pass local_icons option to latex2html, so the
1996 2001 resulting HTML file is self-contained. Thanks to
1997 2002 dryice-AT-liu.com.cn for the tip.
1998 2003
1999 2004 * pysh.py: I created a new profile 'shell', which implements a
2000 2005 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2001 2006 system shell, nor will it become one anytime soon. It's mainly
2002 2007 meant to illustrate the use of the new flexible bash-like prompts.
2003 2008 I guess it could be used by hardy souls for true shell management,
2004 2009 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2005 2010 profile. This uses the InterpreterExec extension provided by
2006 2011 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2007 2012
2008 2013 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2009 2014 auto-align itself with the length of the previous input prompt
2010 2015 (taking into account the invisible color escapes).
2011 2016 (CachedOutput.__init__): Large restructuring of this class. Now
2012 2017 all three prompts (primary1, primary2, output) are proper objects,
2013 2018 managed by the 'parent' CachedOutput class. The code is still a
2014 2019 bit hackish (all prompts share state via a pointer to the cache),
2015 2020 but it's overall far cleaner than before.
2016 2021
2017 2022 * IPython/genutils.py (getoutputerror): modified to add verbose,
2018 2023 debug and header options. This makes the interface of all getout*
2019 2024 functions uniform.
2020 2025 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2021 2026
2022 2027 * IPython/Magic.py (Magic.default_option): added a function to
2023 2028 allow registering default options for any magic command. This
2024 2029 makes it easy to have profiles which customize the magics globally
2025 2030 for a certain use. The values set through this function are
2026 2031 picked up by the parse_options() method, which all magics should
2027 2032 use to parse their options.
2028 2033
2029 2034 * IPython/genutils.py (warn): modified the warnings framework to
2030 2035 use the Term I/O class. I'm trying to slowly unify all of
2031 2036 IPython's I/O operations to pass through Term.
2032 2037
2033 2038 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2034 2039 the secondary prompt to correctly match the length of the primary
2035 2040 one for any prompt. Now multi-line code will properly line up
2036 2041 even for path dependent prompts, such as the new ones available
2037 2042 via the prompt_specials.
2038 2043
2039 2044 2004-06-06 Fernando Perez <fperez@colorado.edu>
2040 2045
2041 2046 * IPython/Prompts.py (prompt_specials): Added the ability to have
2042 2047 bash-like special sequences in the prompts, which get
2043 2048 automatically expanded. Things like hostname, current working
2044 2049 directory and username are implemented already, but it's easy to
2045 2050 add more in the future. Thanks to a patch by W.J. van der Laan
2046 2051 <gnufnork-AT-hetdigitalegat.nl>
2047 2052 (prompt_specials): Added color support for prompt strings, so
2048 2053 users can define arbitrary color setups for their prompts.
2049 2054
2050 2055 2004-06-05 Fernando Perez <fperez@colorado.edu>
2051 2056
2052 2057 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2053 2058 code to load Gary Bishop's readline and configure it
2054 2059 automatically. Thanks to Gary for help on this.
2055 2060
2056 2061 2004-06-01 Fernando Perez <fperez@colorado.edu>
2057 2062
2058 2063 * IPython/Logger.py (Logger.create_log): fix bug for logging
2059 2064 with no filename (previous fix was incomplete).
2060 2065
2061 2066 2004-05-25 Fernando Perez <fperez@colorado.edu>
2062 2067
2063 2068 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2064 2069 parens would get passed to the shell.
2065 2070
2066 2071 2004-05-20 Fernando Perez <fperez@colorado.edu>
2067 2072
2068 2073 * IPython/Magic.py (Magic.magic_prun): changed default profile
2069 2074 sort order to 'time' (the more common profiling need).
2070 2075
2071 2076 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2072 2077 so that source code shown is guaranteed in sync with the file on
2073 2078 disk (also changed in psource). Similar fix to the one for
2074 2079 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2075 2080 <yann.ledu-AT-noos.fr>.
2076 2081
2077 2082 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2078 2083 with a single option would not be correctly parsed. Closes
2079 2084 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2080 2085 introduced in 0.6.0 (on 2004-05-06).
2081 2086
2082 2087 2004-05-13 *** Released version 0.6.0
2083 2088
2084 2089 2004-05-13 Fernando Perez <fperez@colorado.edu>
2085 2090
2086 2091 * debian/: Added debian/ directory to CVS, so that debian support
2087 2092 is publicly accessible. The debian package is maintained by Jack
2088 2093 Moffit <jack-AT-xiph.org>.
2089 2094
2090 2095 * Documentation: included the notes about an ipython-based system
2091 2096 shell (the hypothetical 'pysh') into the new_design.pdf document,
2092 2097 so that these ideas get distributed to users along with the
2093 2098 official documentation.
2094 2099
2095 2100 2004-05-10 Fernando Perez <fperez@colorado.edu>
2096 2101
2097 2102 * IPython/Logger.py (Logger.create_log): fix recently introduced
2098 2103 bug (misindented line) where logstart would fail when not given an
2099 2104 explicit filename.
2100 2105
2101 2106 2004-05-09 Fernando Perez <fperez@colorado.edu>
2102 2107
2103 2108 * IPython/Magic.py (Magic.parse_options): skip system call when
2104 2109 there are no options to look for. Faster, cleaner for the common
2105 2110 case.
2106 2111
2107 2112 * Documentation: many updates to the manual: describing Windows
2108 2113 support better, Gnuplot updates, credits, misc small stuff. Also
2109 2114 updated the new_design doc a bit.
2110 2115
2111 2116 2004-05-06 *** Released version 0.6.0.rc1
2112 2117
2113 2118 2004-05-06 Fernando Perez <fperez@colorado.edu>
2114 2119
2115 2120 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2116 2121 operations to use the vastly more efficient list/''.join() method.
2117 2122 (FormattedTB.text): Fix
2118 2123 http://www.scipy.net/roundup/ipython/issue12 - exception source
2119 2124 extract not updated after reload. Thanks to Mike Salib
2120 2125 <msalib-AT-mit.edu> for pinning the source of the problem.
2121 2126 Fortunately, the solution works inside ipython and doesn't require
2122 2127 any changes to python proper.
2123 2128
2124 2129 * IPython/Magic.py (Magic.parse_options): Improved to process the
2125 2130 argument list as a true shell would (by actually using the
2126 2131 underlying system shell). This way, all @magics automatically get
2127 2132 shell expansion for variables. Thanks to a comment by Alex
2128 2133 Schmolck.
2129 2134
2130 2135 2004-04-04 Fernando Perez <fperez@colorado.edu>
2131 2136
2132 2137 * IPython/iplib.py (InteractiveShell.interact): Added a special
2133 2138 trap for a debugger quit exception, which is basically impossible
2134 2139 to handle by normal mechanisms, given what pdb does to the stack.
2135 2140 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2136 2141
2137 2142 2004-04-03 Fernando Perez <fperez@colorado.edu>
2138 2143
2139 2144 * IPython/genutils.py (Term): Standardized the names of the Term
2140 2145 class streams to cin/cout/cerr, following C++ naming conventions
2141 2146 (I can't use in/out/err because 'in' is not a valid attribute
2142 2147 name).
2143 2148
2144 2149 * IPython/iplib.py (InteractiveShell.interact): don't increment
2145 2150 the prompt if there's no user input. By Daniel 'Dang' Griffith
2146 2151 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2147 2152 Francois Pinard.
2148 2153
2149 2154 2004-04-02 Fernando Perez <fperez@colorado.edu>
2150 2155
2151 2156 * IPython/genutils.py (Stream.__init__): Modified to survive at
2152 2157 least importing in contexts where stdin/out/err aren't true file
2153 2158 objects, such as PyCrust (they lack fileno() and mode). However,
2154 2159 the recovery facilities which rely on these things existing will
2155 2160 not work.
2156 2161
2157 2162 2004-04-01 Fernando Perez <fperez@colorado.edu>
2158 2163
2159 2164 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2160 2165 use the new getoutputerror() function, so it properly
2161 2166 distinguishes stdout/err.
2162 2167
2163 2168 * IPython/genutils.py (getoutputerror): added a function to
2164 2169 capture separately the standard output and error of a command.
2165 2170 After a comment from dang on the mailing lists. This code is
2166 2171 basically a modified version of commands.getstatusoutput(), from
2167 2172 the standard library.
2168 2173
2169 2174 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2170 2175 '!!' as a special syntax (shorthand) to access @sx.
2171 2176
2172 2177 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2173 2178 command and return its output as a list split on '\n'.
2174 2179
2175 2180 2004-03-31 Fernando Perez <fperez@colorado.edu>
2176 2181
2177 2182 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2178 2183 method to dictionaries used as FakeModule instances if they lack
2179 2184 it. At least pydoc in python2.3 breaks for runtime-defined
2180 2185 functions without this hack. At some point I need to _really_
2181 2186 understand what FakeModule is doing, because it's a gross hack.
2182 2187 But it solves Arnd's problem for now...
2183 2188
2184 2189 2004-02-27 Fernando Perez <fperez@colorado.edu>
2185 2190
2186 2191 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2187 2192 mode would behave erratically. Also increased the number of
2188 2193 possible logs in rotate mod to 999. Thanks to Rod Holland
2189 2194 <rhh@StructureLABS.com> for the report and fixes.
2190 2195
2191 2196 2004-02-26 Fernando Perez <fperez@colorado.edu>
2192 2197
2193 2198 * IPython/genutils.py (page): Check that the curses module really
2194 2199 has the initscr attribute before trying to use it. For some
2195 2200 reason, the Solaris curses module is missing this. I think this
2196 2201 should be considered a Solaris python bug, but I'm not sure.
2197 2202
2198 2203 2004-01-17 Fernando Perez <fperez@colorado.edu>
2199 2204
2200 2205 * IPython/genutils.py (Stream.__init__): Changes to try to make
2201 2206 ipython robust against stdin/out/err being closed by the user.
2202 2207 This is 'user error' (and blocks a normal python session, at least
2203 2208 the stdout case). However, Ipython should be able to survive such
2204 2209 instances of abuse as gracefully as possible. To simplify the
2205 2210 coding and maintain compatibility with Gary Bishop's Term
2206 2211 contributions, I've made use of classmethods for this. I think
2207 2212 this introduces a dependency on python 2.2.
2208 2213
2209 2214 2004-01-13 Fernando Perez <fperez@colorado.edu>
2210 2215
2211 2216 * IPython/numutils.py (exp_safe): simplified the code a bit and
2212 2217 removed the need for importing the kinds module altogether.
2213 2218
2214 2219 2004-01-06 Fernando Perez <fperez@colorado.edu>
2215 2220
2216 2221 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2217 2222 a magic function instead, after some community feedback. No
2218 2223 special syntax will exist for it, but its name is deliberately
2219 2224 very short.
2220 2225
2221 2226 2003-12-20 Fernando Perez <fperez@colorado.edu>
2222 2227
2223 2228 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2224 2229 new functionality, to automagically assign the result of a shell
2225 2230 command to a variable. I'll solicit some community feedback on
2226 2231 this before making it permanent.
2227 2232
2228 2233 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2229 2234 requested about callables for which inspect couldn't obtain a
2230 2235 proper argspec. Thanks to a crash report sent by Etienne
2231 2236 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2232 2237
2233 2238 2003-12-09 Fernando Perez <fperez@colorado.edu>
2234 2239
2235 2240 * IPython/genutils.py (page): patch for the pager to work across
2236 2241 various versions of Windows. By Gary Bishop.
2237 2242
2238 2243 2003-12-04 Fernando Perez <fperez@colorado.edu>
2239 2244
2240 2245 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2241 2246 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2242 2247 While I tested this and it looks ok, there may still be corner
2243 2248 cases I've missed.
2244 2249
2245 2250 2003-12-01 Fernando Perez <fperez@colorado.edu>
2246 2251
2247 2252 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2248 2253 where a line like 'p,q=1,2' would fail because the automagic
2249 2254 system would be triggered for @p.
2250 2255
2251 2256 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2252 2257 cleanups, code unmodified.
2253 2258
2254 2259 * IPython/genutils.py (Term): added a class for IPython to handle
2255 2260 output. In most cases it will just be a proxy for stdout/err, but
2256 2261 having this allows modifications to be made for some platforms,
2257 2262 such as handling color escapes under Windows. All of this code
2258 2263 was contributed by Gary Bishop, with minor modifications by me.
2259 2264 The actual changes affect many files.
2260 2265
2261 2266 2003-11-30 Fernando Perez <fperez@colorado.edu>
2262 2267
2263 2268 * IPython/iplib.py (file_matches): new completion code, courtesy
2264 2269 of Jeff Collins. This enables filename completion again under
2265 2270 python 2.3, which disabled it at the C level.
2266 2271
2267 2272 2003-11-11 Fernando Perez <fperez@colorado.edu>
2268 2273
2269 2274 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2270 2275 for Numeric.array(map(...)), but often convenient.
2271 2276
2272 2277 2003-11-05 Fernando Perez <fperez@colorado.edu>
2273 2278
2274 2279 * IPython/numutils.py (frange): Changed a call from int() to
2275 2280 int(round()) to prevent a problem reported with arange() in the
2276 2281 numpy list.
2277 2282
2278 2283 2003-10-06 Fernando Perez <fperez@colorado.edu>
2279 2284
2280 2285 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2281 2286 prevent crashes if sys lacks an argv attribute (it happens with
2282 2287 embedded interpreters which build a bare-bones sys module).
2283 2288 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2284 2289
2285 2290 2003-09-24 Fernando Perez <fperez@colorado.edu>
2286 2291
2287 2292 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2288 2293 to protect against poorly written user objects where __getattr__
2289 2294 raises exceptions other than AttributeError. Thanks to a bug
2290 2295 report by Oliver Sander <osander-AT-gmx.de>.
2291 2296
2292 2297 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2293 2298 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2294 2299
2295 2300 2003-09-09 Fernando Perez <fperez@colorado.edu>
2296 2301
2297 2302 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2298 2303 unpacking a list whith a callable as first element would
2299 2304 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2300 2305 Collins.
2301 2306
2302 2307 2003-08-25 *** Released version 0.5.0
2303 2308
2304 2309 2003-08-22 Fernando Perez <fperez@colorado.edu>
2305 2310
2306 2311 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2307 2312 improperly defined user exceptions. Thanks to feedback from Mark
2308 2313 Russell <mrussell-AT-verio.net>.
2309 2314
2310 2315 2003-08-20 Fernando Perez <fperez@colorado.edu>
2311 2316
2312 2317 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2313 2318 printing so that it would print multi-line string forms starting
2314 2319 with a new line. This way the formatting is better respected for
2315 2320 objects which work hard to make nice string forms.
2316 2321
2317 2322 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2318 2323 autocall would overtake data access for objects with both
2319 2324 __getitem__ and __call__.
2320 2325
2321 2326 2003-08-19 *** Released version 0.5.0-rc1
2322 2327
2323 2328 2003-08-19 Fernando Perez <fperez@colorado.edu>
2324 2329
2325 2330 * IPython/deep_reload.py (load_tail): single tiny change here
2326 2331 seems to fix the long-standing bug of dreload() failing to work
2327 2332 for dotted names. But this module is pretty tricky, so I may have
2328 2333 missed some subtlety. Needs more testing!.
2329 2334
2330 2335 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2331 2336 exceptions which have badly implemented __str__ methods.
2332 2337 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2333 2338 which I've been getting reports about from Python 2.3 users. I
2334 2339 wish I had a simple test case to reproduce the problem, so I could
2335 2340 either write a cleaner workaround or file a bug report if
2336 2341 necessary.
2337 2342
2338 2343 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2339 2344 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2340 2345 a bug report by Tjabo Kloppenburg.
2341 2346
2342 2347 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2343 2348 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2344 2349 seems rather unstable. Thanks to a bug report by Tjabo
2345 2350 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2346 2351
2347 2352 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2348 2353 this out soon because of the critical fixes in the inner loop for
2349 2354 generators.
2350 2355
2351 2356 * IPython/Magic.py (Magic.getargspec): removed. This (and
2352 2357 _get_def) have been obsoleted by OInspect for a long time, I
2353 2358 hadn't noticed that they were dead code.
2354 2359 (Magic._ofind): restored _ofind functionality for a few literals
2355 2360 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2356 2361 for things like "hello".capitalize?, since that would require a
2357 2362 potentially dangerous eval() again.
2358 2363
2359 2364 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2360 2365 logic a bit more to clean up the escapes handling and minimize the
2361 2366 use of _ofind to only necessary cases. The interactive 'feel' of
2362 2367 IPython should have improved quite a bit with the changes in
2363 2368 _prefilter and _ofind (besides being far safer than before).
2364 2369
2365 2370 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2366 2371 obscure, never reported). Edit would fail to find the object to
2367 2372 edit under some circumstances.
2368 2373 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2369 2374 which were causing double-calling of generators. Those eval calls
2370 2375 were _very_ dangerous, since code with side effects could be
2371 2376 triggered. As they say, 'eval is evil'... These were the
2372 2377 nastiest evals in IPython. Besides, _ofind is now far simpler,
2373 2378 and it should also be quite a bit faster. Its use of inspect is
2374 2379 also safer, so perhaps some of the inspect-related crashes I've
2375 2380 seen lately with Python 2.3 might be taken care of. That will
2376 2381 need more testing.
2377 2382
2378 2383 2003-08-17 Fernando Perez <fperez@colorado.edu>
2379 2384
2380 2385 * IPython/iplib.py (InteractiveShell._prefilter): significant
2381 2386 simplifications to the logic for handling user escapes. Faster
2382 2387 and simpler code.
2383 2388
2384 2389 2003-08-14 Fernando Perez <fperez@colorado.edu>
2385 2390
2386 2391 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2387 2392 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2388 2393 but it should be quite a bit faster. And the recursive version
2389 2394 generated O(log N) intermediate storage for all rank>1 arrays,
2390 2395 even if they were contiguous.
2391 2396 (l1norm): Added this function.
2392 2397 (norm): Added this function for arbitrary norms (including
2393 2398 l-infinity). l1 and l2 are still special cases for convenience
2394 2399 and speed.
2395 2400
2396 2401 2003-08-03 Fernando Perez <fperez@colorado.edu>
2397 2402
2398 2403 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2399 2404 exceptions, which now raise PendingDeprecationWarnings in Python
2400 2405 2.3. There were some in Magic and some in Gnuplot2.
2401 2406
2402 2407 2003-06-30 Fernando Perez <fperez@colorado.edu>
2403 2408
2404 2409 * IPython/genutils.py (page): modified to call curses only for
2405 2410 terminals where TERM=='xterm'. After problems under many other
2406 2411 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2407 2412
2408 2413 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2409 2414 would be triggered when readline was absent. This was just an old
2410 2415 debugging statement I'd forgotten to take out.
2411 2416
2412 2417 2003-06-20 Fernando Perez <fperez@colorado.edu>
2413 2418
2414 2419 * IPython/genutils.py (clock): modified to return only user time
2415 2420 (not counting system time), after a discussion on scipy. While
2416 2421 system time may be a useful quantity occasionally, it may much
2417 2422 more easily be skewed by occasional swapping or other similar
2418 2423 activity.
2419 2424
2420 2425 2003-06-05 Fernando Perez <fperez@colorado.edu>
2421 2426
2422 2427 * IPython/numutils.py (identity): new function, for building
2423 2428 arbitrary rank Kronecker deltas (mostly backwards compatible with
2424 2429 Numeric.identity)
2425 2430
2426 2431 2003-06-03 Fernando Perez <fperez@colorado.edu>
2427 2432
2428 2433 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2429 2434 arguments passed to magics with spaces, to allow trailing '\' to
2430 2435 work normally (mainly for Windows users).
2431 2436
2432 2437 2003-05-29 Fernando Perez <fperez@colorado.edu>
2433 2438
2434 2439 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2435 2440 instead of pydoc.help. This fixes a bizarre behavior where
2436 2441 printing '%s' % locals() would trigger the help system. Now
2437 2442 ipython behaves like normal python does.
2438 2443
2439 2444 Note that if one does 'from pydoc import help', the bizarre
2440 2445 behavior returns, but this will also happen in normal python, so
2441 2446 it's not an ipython bug anymore (it has to do with how pydoc.help
2442 2447 is implemented).
2443 2448
2444 2449 2003-05-22 Fernando Perez <fperez@colorado.edu>
2445 2450
2446 2451 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2447 2452 return [] instead of None when nothing matches, also match to end
2448 2453 of line. Patch by Gary Bishop.
2449 2454
2450 2455 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2451 2456 protection as before, for files passed on the command line. This
2452 2457 prevents the CrashHandler from kicking in if user files call into
2453 2458 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2454 2459 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2455 2460
2456 2461 2003-05-20 *** Released version 0.4.0
2457 2462
2458 2463 2003-05-20 Fernando Perez <fperez@colorado.edu>
2459 2464
2460 2465 * setup.py: added support for manpages. It's a bit hackish b/c of
2461 2466 a bug in the way the bdist_rpm distutils target handles gzipped
2462 2467 manpages, but it works. After a patch by Jack.
2463 2468
2464 2469 2003-05-19 Fernando Perez <fperez@colorado.edu>
2465 2470
2466 2471 * IPython/numutils.py: added a mockup of the kinds module, since
2467 2472 it was recently removed from Numeric. This way, numutils will
2468 2473 work for all users even if they are missing kinds.
2469 2474
2470 2475 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2471 2476 failure, which can occur with SWIG-wrapped extensions. After a
2472 2477 crash report from Prabhu.
2473 2478
2474 2479 2003-05-16 Fernando Perez <fperez@colorado.edu>
2475 2480
2476 2481 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2477 2482 protect ipython from user code which may call directly
2478 2483 sys.excepthook (this looks like an ipython crash to the user, even
2479 2484 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2480 2485 This is especially important to help users of WxWindows, but may
2481 2486 also be useful in other cases.
2482 2487
2483 2488 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2484 2489 an optional tb_offset to be specified, and to preserve exception
2485 2490 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2486 2491
2487 2492 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2488 2493
2489 2494 2003-05-15 Fernando Perez <fperez@colorado.edu>
2490 2495
2491 2496 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2492 2497 installing for a new user under Windows.
2493 2498
2494 2499 2003-05-12 Fernando Perez <fperez@colorado.edu>
2495 2500
2496 2501 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2497 2502 handler for Emacs comint-based lines. Currently it doesn't do
2498 2503 much (but importantly, it doesn't update the history cache). In
2499 2504 the future it may be expanded if Alex needs more functionality
2500 2505 there.
2501 2506
2502 2507 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2503 2508 info to crash reports.
2504 2509
2505 2510 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2506 2511 just like Python's -c. Also fixed crash with invalid -color
2507 2512 option value at startup. Thanks to Will French
2508 2513 <wfrench-AT-bestweb.net> for the bug report.
2509 2514
2510 2515 2003-05-09 Fernando Perez <fperez@colorado.edu>
2511 2516
2512 2517 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2513 2518 to EvalDict (it's a mapping, after all) and simplified its code
2514 2519 quite a bit, after a nice discussion on c.l.py where Gustavo
2515 2520 Córdova <gcordova-AT-sismex.com> suggested the new version.
2516 2521
2517 2522 2003-04-30 Fernando Perez <fperez@colorado.edu>
2518 2523
2519 2524 * IPython/genutils.py (timings_out): modified it to reduce its
2520 2525 overhead in the common reps==1 case.
2521 2526
2522 2527 2003-04-29 Fernando Perez <fperez@colorado.edu>
2523 2528
2524 2529 * IPython/genutils.py (timings_out): Modified to use the resource
2525 2530 module, which avoids the wraparound problems of time.clock().
2526 2531
2527 2532 2003-04-17 *** Released version 0.2.15pre4
2528 2533
2529 2534 2003-04-17 Fernando Perez <fperez@colorado.edu>
2530 2535
2531 2536 * setup.py (scriptfiles): Split windows-specific stuff over to a
2532 2537 separate file, in an attempt to have a Windows GUI installer.
2533 2538 That didn't work, but part of the groundwork is done.
2534 2539
2535 2540 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2536 2541 indent/unindent with 4 spaces. Particularly useful in combination
2537 2542 with the new auto-indent option.
2538 2543
2539 2544 2003-04-16 Fernando Perez <fperez@colorado.edu>
2540 2545
2541 2546 * IPython/Magic.py: various replacements of self.rc for
2542 2547 self.shell.rc. A lot more remains to be done to fully disentangle
2543 2548 this class from the main Shell class.
2544 2549
2545 2550 * IPython/GnuplotRuntime.py: added checks for mouse support so
2546 2551 that we don't try to enable it if the current gnuplot doesn't
2547 2552 really support it. Also added checks so that we don't try to
2548 2553 enable persist under Windows (where Gnuplot doesn't recognize the
2549 2554 option).
2550 2555
2551 2556 * IPython/iplib.py (InteractiveShell.interact): Added optional
2552 2557 auto-indenting code, after a patch by King C. Shu
2553 2558 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2554 2559 get along well with pasting indented code. If I ever figure out
2555 2560 how to make that part go well, it will become on by default.
2556 2561
2557 2562 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2558 2563 crash ipython if there was an unmatched '%' in the user's prompt
2559 2564 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2560 2565
2561 2566 * IPython/iplib.py (InteractiveShell.interact): removed the
2562 2567 ability to ask the user whether he wants to crash or not at the
2563 2568 'last line' exception handler. Calling functions at that point
2564 2569 changes the stack, and the error reports would have incorrect
2565 2570 tracebacks.
2566 2571
2567 2572 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2568 2573 pass through a peger a pretty-printed form of any object. After a
2569 2574 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2570 2575
2571 2576 2003-04-14 Fernando Perez <fperez@colorado.edu>
2572 2577
2573 2578 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2574 2579 all files in ~ would be modified at first install (instead of
2575 2580 ~/.ipython). This could be potentially disastrous, as the
2576 2581 modification (make line-endings native) could damage binary files.
2577 2582
2578 2583 2003-04-10 Fernando Perez <fperez@colorado.edu>
2579 2584
2580 2585 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2581 2586 handle only lines which are invalid python. This now means that
2582 2587 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2583 2588 for the bug report.
2584 2589
2585 2590 2003-04-01 Fernando Perez <fperez@colorado.edu>
2586 2591
2587 2592 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2588 2593 where failing to set sys.last_traceback would crash pdb.pm().
2589 2594 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2590 2595 report.
2591 2596
2592 2597 2003-03-25 Fernando Perez <fperez@colorado.edu>
2593 2598
2594 2599 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2595 2600 before printing it (it had a lot of spurious blank lines at the
2596 2601 end).
2597 2602
2598 2603 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2599 2604 output would be sent 21 times! Obviously people don't use this
2600 2605 too often, or I would have heard about it.
2601 2606
2602 2607 2003-03-24 Fernando Perez <fperez@colorado.edu>
2603 2608
2604 2609 * setup.py (scriptfiles): renamed the data_files parameter from
2605 2610 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2606 2611 for the patch.
2607 2612
2608 2613 2003-03-20 Fernando Perez <fperez@colorado.edu>
2609 2614
2610 2615 * IPython/genutils.py (error): added error() and fatal()
2611 2616 functions.
2612 2617
2613 2618 2003-03-18 *** Released version 0.2.15pre3
2614 2619
2615 2620 2003-03-18 Fernando Perez <fperez@colorado.edu>
2616 2621
2617 2622 * setupext/install_data_ext.py
2618 2623 (install_data_ext.initialize_options): Class contributed by Jack
2619 2624 Moffit for fixing the old distutils hack. He is sending this to
2620 2625 the distutils folks so in the future we may not need it as a
2621 2626 private fix.
2622 2627
2623 2628 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2624 2629 changes for Debian packaging. See his patch for full details.
2625 2630 The old distutils hack of making the ipythonrc* files carry a
2626 2631 bogus .py extension is gone, at last. Examples were moved to a
2627 2632 separate subdir under doc/, and the separate executable scripts
2628 2633 now live in their own directory. Overall a great cleanup. The
2629 2634 manual was updated to use the new files, and setup.py has been
2630 2635 fixed for this setup.
2631 2636
2632 2637 * IPython/PyColorize.py (Parser.usage): made non-executable and
2633 2638 created a pycolor wrapper around it to be included as a script.
2634 2639
2635 2640 2003-03-12 *** Released version 0.2.15pre2
2636 2641
2637 2642 2003-03-12 Fernando Perez <fperez@colorado.edu>
2638 2643
2639 2644 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2640 2645 long-standing problem with garbage characters in some terminals.
2641 2646 The issue was really that the \001 and \002 escapes must _only_ be
2642 2647 passed to input prompts (which call readline), but _never_ to
2643 2648 normal text to be printed on screen. I changed ColorANSI to have
2644 2649 two classes: TermColors and InputTermColors, each with the
2645 2650 appropriate escapes for input prompts or normal text. The code in
2646 2651 Prompts.py got slightly more complicated, but this very old and
2647 2652 annoying bug is finally fixed.
2648 2653
2649 2654 All the credit for nailing down the real origin of this problem
2650 2655 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2651 2656 *Many* thanks to him for spending quite a bit of effort on this.
2652 2657
2653 2658 2003-03-05 *** Released version 0.2.15pre1
2654 2659
2655 2660 2003-03-03 Fernando Perez <fperez@colorado.edu>
2656 2661
2657 2662 * IPython/FakeModule.py: Moved the former _FakeModule to a
2658 2663 separate file, because it's also needed by Magic (to fix a similar
2659 2664 pickle-related issue in @run).
2660 2665
2661 2666 2003-03-02 Fernando Perez <fperez@colorado.edu>
2662 2667
2663 2668 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2664 2669 the autocall option at runtime.
2665 2670 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2666 2671 across Magic.py to start separating Magic from InteractiveShell.
2667 2672 (Magic._ofind): Fixed to return proper namespace for dotted
2668 2673 names. Before, a dotted name would always return 'not currently
2669 2674 defined', because it would find the 'parent'. s.x would be found,
2670 2675 but since 'x' isn't defined by itself, it would get confused.
2671 2676 (Magic.magic_run): Fixed pickling problems reported by Ralf
2672 2677 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2673 2678 that I'd used when Mike Heeter reported similar issues at the
2674 2679 top-level, but now for @run. It boils down to injecting the
2675 2680 namespace where code is being executed with something that looks
2676 2681 enough like a module to fool pickle.dump(). Since a pickle stores
2677 2682 a named reference to the importing module, we need this for
2678 2683 pickles to save something sensible.
2679 2684
2680 2685 * IPython/ipmaker.py (make_IPython): added an autocall option.
2681 2686
2682 2687 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2683 2688 the auto-eval code. Now autocalling is an option, and the code is
2684 2689 also vastly safer. There is no more eval() involved at all.
2685 2690
2686 2691 2003-03-01 Fernando Perez <fperez@colorado.edu>
2687 2692
2688 2693 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2689 2694 dict with named keys instead of a tuple.
2690 2695
2691 2696 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2692 2697
2693 2698 * setup.py (make_shortcut): Fixed message about directories
2694 2699 created during Windows installation (the directories were ok, just
2695 2700 the printed message was misleading). Thanks to Chris Liechti
2696 2701 <cliechti-AT-gmx.net> for the heads up.
2697 2702
2698 2703 2003-02-21 Fernando Perez <fperez@colorado.edu>
2699 2704
2700 2705 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2701 2706 of ValueError exception when checking for auto-execution. This
2702 2707 one is raised by things like Numeric arrays arr.flat when the
2703 2708 array is non-contiguous.
2704 2709
2705 2710 2003-01-31 Fernando Perez <fperez@colorado.edu>
2706 2711
2707 2712 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2708 2713 not return any value at all (even though the command would get
2709 2714 executed).
2710 2715 (xsys): Flush stdout right after printing the command to ensure
2711 2716 proper ordering of commands and command output in the total
2712 2717 output.
2713 2718 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2714 2719 system/getoutput as defaults. The old ones are kept for
2715 2720 compatibility reasons, so no code which uses this library needs
2716 2721 changing.
2717 2722
2718 2723 2003-01-27 *** Released version 0.2.14
2719 2724
2720 2725 2003-01-25 Fernando Perez <fperez@colorado.edu>
2721 2726
2722 2727 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2723 2728 functions defined in previous edit sessions could not be re-edited
2724 2729 (because the temp files were immediately removed). Now temp files
2725 2730 are removed only at IPython's exit.
2726 2731 (Magic.magic_run): Improved @run to perform shell-like expansions
2727 2732 on its arguments (~users and $VARS). With this, @run becomes more
2728 2733 like a normal command-line.
2729 2734
2730 2735 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2731 2736 bugs related to embedding and cleaned up that code. A fairly
2732 2737 important one was the impossibility to access the global namespace
2733 2738 through the embedded IPython (only local variables were visible).
2734 2739
2735 2740 2003-01-14 Fernando Perez <fperez@colorado.edu>
2736 2741
2737 2742 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2738 2743 auto-calling to be a bit more conservative. Now it doesn't get
2739 2744 triggered if any of '!=()<>' are in the rest of the input line, to
2740 2745 allow comparing callables. Thanks to Alex for the heads up.
2741 2746
2742 2747 2003-01-07 Fernando Perez <fperez@colorado.edu>
2743 2748
2744 2749 * IPython/genutils.py (page): fixed estimation of the number of
2745 2750 lines in a string to be paged to simply count newlines. This
2746 2751 prevents over-guessing due to embedded escape sequences. A better
2747 2752 long-term solution would involve stripping out the control chars
2748 2753 for the count, but it's potentially so expensive I just don't
2749 2754 think it's worth doing.
2750 2755
2751 2756 2002-12-19 *** Released version 0.2.14pre50
2752 2757
2753 2758 2002-12-19 Fernando Perez <fperez@colorado.edu>
2754 2759
2755 2760 * tools/release (version): Changed release scripts to inform
2756 2761 Andrea and build a NEWS file with a list of recent changes.
2757 2762
2758 2763 * IPython/ColorANSI.py (__all__): changed terminal detection
2759 2764 code. Seems to work better for xterms without breaking
2760 2765 konsole. Will need more testing to determine if WinXP and Mac OSX
2761 2766 also work ok.
2762 2767
2763 2768 2002-12-18 *** Released version 0.2.14pre49
2764 2769
2765 2770 2002-12-18 Fernando Perez <fperez@colorado.edu>
2766 2771
2767 2772 * Docs: added new info about Mac OSX, from Andrea.
2768 2773
2769 2774 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2770 2775 allow direct plotting of python strings whose format is the same
2771 2776 of gnuplot data files.
2772 2777
2773 2778 2002-12-16 Fernando Perez <fperez@colorado.edu>
2774 2779
2775 2780 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2776 2781 value of exit question to be acknowledged.
2777 2782
2778 2783 2002-12-03 Fernando Perez <fperez@colorado.edu>
2779 2784
2780 2785 * IPython/ipmaker.py: removed generators, which had been added
2781 2786 by mistake in an earlier debugging run. This was causing trouble
2782 2787 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2783 2788 for pointing this out.
2784 2789
2785 2790 2002-11-17 Fernando Perez <fperez@colorado.edu>
2786 2791
2787 2792 * Manual: updated the Gnuplot section.
2788 2793
2789 2794 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2790 2795 a much better split of what goes in Runtime and what goes in
2791 2796 Interactive.
2792 2797
2793 2798 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2794 2799 being imported from iplib.
2795 2800
2796 2801 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2797 2802 for command-passing. Now the global Gnuplot instance is called
2798 2803 'gp' instead of 'g', which was really a far too fragile and
2799 2804 common name.
2800 2805
2801 2806 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2802 2807 bounding boxes generated by Gnuplot for square plots.
2803 2808
2804 2809 * IPython/genutils.py (popkey): new function added. I should
2805 2810 suggest this on c.l.py as a dict method, it seems useful.
2806 2811
2807 2812 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2808 2813 to transparently handle PostScript generation. MUCH better than
2809 2814 the previous plot_eps/replot_eps (which I removed now). The code
2810 2815 is also fairly clean and well documented now (including
2811 2816 docstrings).
2812 2817
2813 2818 2002-11-13 Fernando Perez <fperez@colorado.edu>
2814 2819
2815 2820 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2816 2821 (inconsistent with options).
2817 2822
2818 2823 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2819 2824 manually disabled, I don't know why. Fixed it.
2820 2825 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2821 2826 eps output.
2822 2827
2823 2828 2002-11-12 Fernando Perez <fperez@colorado.edu>
2824 2829
2825 2830 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
2826 2831 don't propagate up to caller. Fixes crash reported by François
2827 2832 Pinard.
2828 2833
2829 2834 2002-11-09 Fernando Perez <fperez@colorado.edu>
2830 2835
2831 2836 * IPython/ipmaker.py (make_IPython): fixed problem with writing
2832 2837 history file for new users.
2833 2838 (make_IPython): fixed bug where initial install would leave the
2834 2839 user running in the .ipython dir.
2835 2840 (make_IPython): fixed bug where config dir .ipython would be
2836 2841 created regardless of the given -ipythondir option. Thanks to Cory
2837 2842 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
2838 2843
2839 2844 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
2840 2845 type confirmations. Will need to use it in all of IPython's code
2841 2846 consistently.
2842 2847
2843 2848 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
2844 2849 context to print 31 lines instead of the default 5. This will make
2845 2850 the crash reports extremely detailed in case the problem is in
2846 2851 libraries I don't have access to.
2847 2852
2848 2853 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
2849 2854 line of defense' code to still crash, but giving users fair
2850 2855 warning. I don't want internal errors to go unreported: if there's
2851 2856 an internal problem, IPython should crash and generate a full
2852 2857 report.
2853 2858
2854 2859 2002-11-08 Fernando Perez <fperez@colorado.edu>
2855 2860
2856 2861 * IPython/iplib.py (InteractiveShell.interact): added code to trap
2857 2862 otherwise uncaught exceptions which can appear if people set
2858 2863 sys.stdout to something badly broken. Thanks to a crash report
2859 2864 from henni-AT-mail.brainbot.com.
2860 2865
2861 2866 2002-11-04 Fernando Perez <fperez@colorado.edu>
2862 2867
2863 2868 * IPython/iplib.py (InteractiveShell.interact): added
2864 2869 __IPYTHON__active to the builtins. It's a flag which goes on when
2865 2870 the interaction starts and goes off again when it stops. This
2866 2871 allows embedding code to detect being inside IPython. Before this
2867 2872 was done via __IPYTHON__, but that only shows that an IPython
2868 2873 instance has been created.
2869 2874
2870 2875 * IPython/Magic.py (Magic.magic_env): I realized that in a
2871 2876 UserDict, instance.data holds the data as a normal dict. So I
2872 2877 modified @env to return os.environ.data instead of rebuilding a
2873 2878 dict by hand.
2874 2879
2875 2880 2002-11-02 Fernando Perez <fperez@colorado.edu>
2876 2881
2877 2882 * IPython/genutils.py (warn): changed so that level 1 prints no
2878 2883 header. Level 2 is now the default (with 'WARNING' header, as
2879 2884 before). I think I tracked all places where changes were needed in
2880 2885 IPython, but outside code using the old level numbering may have
2881 2886 broken.
2882 2887
2883 2888 * IPython/iplib.py (InteractiveShell.runcode): added this to
2884 2889 handle the tracebacks in SystemExit traps correctly. The previous
2885 2890 code (through interact) was printing more of the stack than
2886 2891 necessary, showing IPython internal code to the user.
2887 2892
2888 2893 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
2889 2894 default. Now that the default at the confirmation prompt is yes,
2890 2895 it's not so intrusive. François' argument that ipython sessions
2891 2896 tend to be complex enough not to lose them from an accidental C-d,
2892 2897 is a valid one.
2893 2898
2894 2899 * IPython/iplib.py (InteractiveShell.interact): added a
2895 2900 showtraceback() call to the SystemExit trap, and modified the exit
2896 2901 confirmation to have yes as the default.
2897 2902
2898 2903 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
2899 2904 this file. It's been gone from the code for a long time, this was
2900 2905 simply leftover junk.
2901 2906
2902 2907 2002-11-01 Fernando Perez <fperez@colorado.edu>
2903 2908
2904 2909 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
2905 2910 added. If set, IPython now traps EOF and asks for
2906 2911 confirmation. After a request by François Pinard.
2907 2912
2908 2913 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
2909 2914 of @abort, and with a new (better) mechanism for handling the
2910 2915 exceptions.
2911 2916
2912 2917 2002-10-27 Fernando Perez <fperez@colorado.edu>
2913 2918
2914 2919 * IPython/usage.py (__doc__): updated the --help information and
2915 2920 the ipythonrc file to indicate that -log generates
2916 2921 ./ipython.log. Also fixed the corresponding info in @logstart.
2917 2922 This and several other fixes in the manuals thanks to reports by
2918 2923 François Pinard <pinard-AT-iro.umontreal.ca>.
2919 2924
2920 2925 * IPython/Logger.py (Logger.switch_log): Fixed error message to
2921 2926 refer to @logstart (instead of @log, which doesn't exist).
2922 2927
2923 2928 * IPython/iplib.py (InteractiveShell._prefilter): fixed
2924 2929 AttributeError crash. Thanks to Christopher Armstrong
2925 2930 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
2926 2931 introduced recently (in 0.2.14pre37) with the fix to the eval
2927 2932 problem mentioned below.
2928 2933
2929 2934 2002-10-17 Fernando Perez <fperez@colorado.edu>
2930 2935
2931 2936 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
2932 2937 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
2933 2938
2934 2939 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
2935 2940 this function to fix a problem reported by Alex Schmolck. He saw
2936 2941 it with list comprehensions and generators, which were getting
2937 2942 called twice. The real problem was an 'eval' call in testing for
2938 2943 automagic which was evaluating the input line silently.
2939 2944
2940 2945 This is a potentially very nasty bug, if the input has side
2941 2946 effects which must not be repeated. The code is much cleaner now,
2942 2947 without any blanket 'except' left and with a regexp test for
2943 2948 actual function names.
2944 2949
2945 2950 But an eval remains, which I'm not fully comfortable with. I just
2946 2951 don't know how to find out if an expression could be a callable in
2947 2952 the user's namespace without doing an eval on the string. However
2948 2953 that string is now much more strictly checked so that no code
2949 2954 slips by, so the eval should only happen for things that can
2950 2955 really be only function/method names.
2951 2956
2952 2957 2002-10-15 Fernando Perez <fperez@colorado.edu>
2953 2958
2954 2959 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
2955 2960 OSX information to main manual, removed README_Mac_OSX file from
2956 2961 distribution. Also updated credits for recent additions.
2957 2962
2958 2963 2002-10-10 Fernando Perez <fperez@colorado.edu>
2959 2964
2960 2965 * README_Mac_OSX: Added a README for Mac OSX users for fixing
2961 2966 terminal-related issues. Many thanks to Andrea Riciputi
2962 2967 <andrea.riciputi-AT-libero.it> for writing it.
2963 2968
2964 2969 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
2965 2970 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2966 2971
2967 2972 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
2968 2973 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
2969 2974 <syver-en-AT-online.no> who both submitted patches for this problem.
2970 2975
2971 2976 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
2972 2977 global embedding to make sure that things don't overwrite user
2973 2978 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
2974 2979
2975 2980 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
2976 2981 compatibility. Thanks to Hayden Callow
2977 2982 <h.callow-AT-elec.canterbury.ac.nz>
2978 2983
2979 2984 2002-10-04 Fernando Perez <fperez@colorado.edu>
2980 2985
2981 2986 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
2982 2987 Gnuplot.File objects.
2983 2988
2984 2989 2002-07-23 Fernando Perez <fperez@colorado.edu>
2985 2990
2986 2991 * IPython/genutils.py (timing): Added timings() and timing() for
2987 2992 quick access to the most commonly needed data, the execution
2988 2993 times. Old timing() renamed to timings_out().
2989 2994
2990 2995 2002-07-18 Fernando Perez <fperez@colorado.edu>
2991 2996
2992 2997 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
2993 2998 bug with nested instances disrupting the parent's tab completion.
2994 2999
2995 3000 * IPython/iplib.py (all_completions): Added Alex Schmolck's
2996 3001 all_completions code to begin the emacs integration.
2997 3002
2998 3003 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
2999 3004 argument to allow titling individual arrays when plotting.
3000 3005
3001 3006 2002-07-15 Fernando Perez <fperez@colorado.edu>
3002 3007
3003 3008 * setup.py (make_shortcut): changed to retrieve the value of
3004 3009 'Program Files' directory from the registry (this value changes in
3005 3010 non-english versions of Windows). Thanks to Thomas Fanslau
3006 3011 <tfanslau-AT-gmx.de> for the report.
3007 3012
3008 3013 2002-07-10 Fernando Perez <fperez@colorado.edu>
3009 3014
3010 3015 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3011 3016 a bug in pdb, which crashes if a line with only whitespace is
3012 3017 entered. Bug report submitted to sourceforge.
3013 3018
3014 3019 2002-07-09 Fernando Perez <fperez@colorado.edu>
3015 3020
3016 3021 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3017 3022 reporting exceptions (it's a bug in inspect.py, I just set a
3018 3023 workaround).
3019 3024
3020 3025 2002-07-08 Fernando Perez <fperez@colorado.edu>
3021 3026
3022 3027 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3023 3028 __IPYTHON__ in __builtins__ to show up in user_ns.
3024 3029
3025 3030 2002-07-03 Fernando Perez <fperez@colorado.edu>
3026 3031
3027 3032 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3028 3033 name from @gp_set_instance to @gp_set_default.
3029 3034
3030 3035 * IPython/ipmaker.py (make_IPython): default editor value set to
3031 3036 '0' (a string), to match the rc file. Otherwise will crash when
3032 3037 .strip() is called on it.
3033 3038
3034 3039
3035 3040 2002-06-28 Fernando Perez <fperez@colorado.edu>
3036 3041
3037 3042 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3038 3043 of files in current directory when a file is executed via
3039 3044 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3040 3045
3041 3046 * setup.py (manfiles): fix for rpm builds, submitted by RA
3042 3047 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3043 3048
3044 3049 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3045 3050 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3046 3051 string!). A. Schmolck caught this one.
3047 3052
3048 3053 2002-06-27 Fernando Perez <fperez@colorado.edu>
3049 3054
3050 3055 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3051 3056 defined files at the cmd line. __name__ wasn't being set to
3052 3057 __main__.
3053 3058
3054 3059 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3055 3060 regular lists and tuples besides Numeric arrays.
3056 3061
3057 3062 * IPython/Prompts.py (CachedOutput.__call__): Added output
3058 3063 supression for input ending with ';'. Similar to Mathematica and
3059 3064 Matlab. The _* vars and Out[] list are still updated, just like
3060 3065 Mathematica behaves.
3061 3066
3062 3067 2002-06-25 Fernando Perez <fperez@colorado.edu>
3063 3068
3064 3069 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3065 3070 .ini extensions for profiels under Windows.
3066 3071
3067 3072 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3068 3073 string form. Fix contributed by Alexander Schmolck
3069 3074 <a.schmolck-AT-gmx.net>
3070 3075
3071 3076 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3072 3077 pre-configured Gnuplot instance.
3073 3078
3074 3079 2002-06-21 Fernando Perez <fperez@colorado.edu>
3075 3080
3076 3081 * IPython/numutils.py (exp_safe): new function, works around the
3077 3082 underflow problems in Numeric.
3078 3083 (log2): New fn. Safe log in base 2: returns exact integer answer
3079 3084 for exact integer powers of 2.
3080 3085
3081 3086 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3082 3087 properly.
3083 3088
3084 3089 2002-06-20 Fernando Perez <fperez@colorado.edu>
3085 3090
3086 3091 * IPython/genutils.py (timing): new function like
3087 3092 Mathematica's. Similar to time_test, but returns more info.
3088 3093
3089 3094 2002-06-18 Fernando Perez <fperez@colorado.edu>
3090 3095
3091 3096 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3092 3097 according to Mike Heeter's suggestions.
3093 3098
3094 3099 2002-06-16 Fernando Perez <fperez@colorado.edu>
3095 3100
3096 3101 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3097 3102 system. GnuplotMagic is gone as a user-directory option. New files
3098 3103 make it easier to use all the gnuplot stuff both from external
3099 3104 programs as well as from IPython. Had to rewrite part of
3100 3105 hardcopy() b/c of a strange bug: often the ps files simply don't
3101 3106 get created, and require a repeat of the command (often several
3102 3107 times).
3103 3108
3104 3109 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3105 3110 resolve output channel at call time, so that if sys.stderr has
3106 3111 been redirected by user this gets honored.
3107 3112
3108 3113 2002-06-13 Fernando Perez <fperez@colorado.edu>
3109 3114
3110 3115 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3111 3116 IPShell. Kept a copy with the old names to avoid breaking people's
3112 3117 embedded code.
3113 3118
3114 3119 * IPython/ipython: simplified it to the bare minimum after
3115 3120 Holger's suggestions. Added info about how to use it in
3116 3121 PYTHONSTARTUP.
3117 3122
3118 3123 * IPython/Shell.py (IPythonShell): changed the options passing
3119 3124 from a string with funky %s replacements to a straight list. Maybe
3120 3125 a bit more typing, but it follows sys.argv conventions, so there's
3121 3126 less special-casing to remember.
3122 3127
3123 3128 2002-06-12 Fernando Perez <fperez@colorado.edu>
3124 3129
3125 3130 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3126 3131 command. Thanks to a suggestion by Mike Heeter.
3127 3132 (Magic.magic_pfile): added behavior to look at filenames if given
3128 3133 arg is not a defined object.
3129 3134 (Magic.magic_save): New @save function to save code snippets. Also
3130 3135 a Mike Heeter idea.
3131 3136
3132 3137 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3133 3138 plot() and replot(). Much more convenient now, especially for
3134 3139 interactive use.
3135 3140
3136 3141 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3137 3142 filenames.
3138 3143
3139 3144 2002-06-02 Fernando Perez <fperez@colorado.edu>
3140 3145
3141 3146 * IPython/Struct.py (Struct.__init__): modified to admit
3142 3147 initialization via another struct.
3143 3148
3144 3149 * IPython/genutils.py (SystemExec.__init__): New stateful
3145 3150 interface to xsys and bq. Useful for writing system scripts.
3146 3151
3147 3152 2002-05-30 Fernando Perez <fperez@colorado.edu>
3148 3153
3149 3154 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3150 3155 documents. This will make the user download smaller (it's getting
3151 3156 too big).
3152 3157
3153 3158 2002-05-29 Fernando Perez <fperez@colorado.edu>
3154 3159
3155 3160 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3156 3161 fix problems with shelve and pickle. Seems to work, but I don't
3157 3162 know if corner cases break it. Thanks to Mike Heeter
3158 3163 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3159 3164
3160 3165 2002-05-24 Fernando Perez <fperez@colorado.edu>
3161 3166
3162 3167 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3163 3168 macros having broken.
3164 3169
3165 3170 2002-05-21 Fernando Perez <fperez@colorado.edu>
3166 3171
3167 3172 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3168 3173 introduced logging bug: all history before logging started was
3169 3174 being written one character per line! This came from the redesign
3170 3175 of the input history as a special list which slices to strings,
3171 3176 not to lists.
3172 3177
3173 3178 2002-05-20 Fernando Perez <fperez@colorado.edu>
3174 3179
3175 3180 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3176 3181 be an attribute of all classes in this module. The design of these
3177 3182 classes needs some serious overhauling.
3178 3183
3179 3184 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3180 3185 which was ignoring '_' in option names.
3181 3186
3182 3187 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3183 3188 'Verbose_novars' to 'Context' and made it the new default. It's a
3184 3189 bit more readable and also safer than verbose.
3185 3190
3186 3191 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3187 3192 triple-quoted strings.
3188 3193
3189 3194 * IPython/OInspect.py (__all__): new module exposing the object
3190 3195 introspection facilities. Now the corresponding magics are dummy
3191 3196 wrappers around this. Having this module will make it much easier
3192 3197 to put these functions into our modified pdb.
3193 3198 This new object inspector system uses the new colorizing module,
3194 3199 so source code and other things are nicely syntax highlighted.
3195 3200
3196 3201 2002-05-18 Fernando Perez <fperez@colorado.edu>
3197 3202
3198 3203 * IPython/ColorANSI.py: Split the coloring tools into a separate
3199 3204 module so I can use them in other code easier (they were part of
3200 3205 ultraTB).
3201 3206
3202 3207 2002-05-17 Fernando Perez <fperez@colorado.edu>
3203 3208
3204 3209 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3205 3210 fixed it to set the global 'g' also to the called instance, as
3206 3211 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3207 3212 user's 'g' variables).
3208 3213
3209 3214 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3210 3215 global variables (aliases to _ih,_oh) so that users which expect
3211 3216 In[5] or Out[7] to work aren't unpleasantly surprised.
3212 3217 (InputList.__getslice__): new class to allow executing slices of
3213 3218 input history directly. Very simple class, complements the use of
3214 3219 macros.
3215 3220
3216 3221 2002-05-16 Fernando Perez <fperez@colorado.edu>
3217 3222
3218 3223 * setup.py (docdirbase): make doc directory be just doc/IPython
3219 3224 without version numbers, it will reduce clutter for users.
3220 3225
3221 3226 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3222 3227 execfile call to prevent possible memory leak. See for details:
3223 3228 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3224 3229
3225 3230 2002-05-15 Fernando Perez <fperez@colorado.edu>
3226 3231
3227 3232 * IPython/Magic.py (Magic.magic_psource): made the object
3228 3233 introspection names be more standard: pdoc, pdef, pfile and
3229 3234 psource. They all print/page their output, and it makes
3230 3235 remembering them easier. Kept old names for compatibility as
3231 3236 aliases.
3232 3237
3233 3238 2002-05-14 Fernando Perez <fperez@colorado.edu>
3234 3239
3235 3240 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3236 3241 what the mouse problem was. The trick is to use gnuplot with temp
3237 3242 files and NOT with pipes (for data communication), because having
3238 3243 both pipes and the mouse on is bad news.
3239 3244
3240 3245 2002-05-13 Fernando Perez <fperez@colorado.edu>
3241 3246
3242 3247 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3243 3248 bug. Information would be reported about builtins even when
3244 3249 user-defined functions overrode them.
3245 3250
3246 3251 2002-05-11 Fernando Perez <fperez@colorado.edu>
3247 3252
3248 3253 * IPython/__init__.py (__all__): removed FlexCompleter from
3249 3254 __all__ so that things don't fail in platforms without readline.
3250 3255
3251 3256 2002-05-10 Fernando Perez <fperez@colorado.edu>
3252 3257
3253 3258 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3254 3259 it requires Numeric, effectively making Numeric a dependency for
3255 3260 IPython.
3256 3261
3257 3262 * Released 0.2.13
3258 3263
3259 3264 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3260 3265 profiler interface. Now all the major options from the profiler
3261 3266 module are directly supported in IPython, both for single
3262 3267 expressions (@prun) and for full programs (@run -p).
3263 3268
3264 3269 2002-05-09 Fernando Perez <fperez@colorado.edu>
3265 3270
3266 3271 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3267 3272 magic properly formatted for screen.
3268 3273
3269 3274 * setup.py (make_shortcut): Changed things to put pdf version in
3270 3275 doc/ instead of doc/manual (had to change lyxport a bit).
3271 3276
3272 3277 * IPython/Magic.py (Profile.string_stats): made profile runs go
3273 3278 through pager (they are long and a pager allows searching, saving,
3274 3279 etc.)
3275 3280
3276 3281 2002-05-08 Fernando Perez <fperez@colorado.edu>
3277 3282
3278 3283 * Released 0.2.12
3279 3284
3280 3285 2002-05-06 Fernando Perez <fperez@colorado.edu>
3281 3286
3282 3287 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3283 3288 introduced); 'hist n1 n2' was broken.
3284 3289 (Magic.magic_pdb): added optional on/off arguments to @pdb
3285 3290 (Magic.magic_run): added option -i to @run, which executes code in
3286 3291 the IPython namespace instead of a clean one. Also added @irun as
3287 3292 an alias to @run -i.
3288 3293
3289 3294 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3290 3295 fixed (it didn't really do anything, the namespaces were wrong).
3291 3296
3292 3297 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3293 3298
3294 3299 * IPython/__init__.py (__all__): Fixed package namespace, now
3295 3300 'import IPython' does give access to IPython.<all> as
3296 3301 expected. Also renamed __release__ to Release.
3297 3302
3298 3303 * IPython/Debugger.py (__license__): created new Pdb class which
3299 3304 functions like a drop-in for the normal pdb.Pdb but does NOT
3300 3305 import readline by default. This way it doesn't muck up IPython's
3301 3306 readline handling, and now tab-completion finally works in the
3302 3307 debugger -- sort of. It completes things globally visible, but the
3303 3308 completer doesn't track the stack as pdb walks it. That's a bit
3304 3309 tricky, and I'll have to implement it later.
3305 3310
3306 3311 2002-05-05 Fernando Perez <fperez@colorado.edu>
3307 3312
3308 3313 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3309 3314 magic docstrings when printed via ? (explicit \'s were being
3310 3315 printed).
3311 3316
3312 3317 * IPython/ipmaker.py (make_IPython): fixed namespace
3313 3318 identification bug. Now variables loaded via logs or command-line
3314 3319 files are recognized in the interactive namespace by @who.
3315 3320
3316 3321 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3317 3322 log replay system stemming from the string form of Structs.
3318 3323
3319 3324 * IPython/Magic.py (Macro.__init__): improved macros to properly
3320 3325 handle magic commands in them.
3321 3326 (Magic.magic_logstart): usernames are now expanded so 'logstart
3322 3327 ~/mylog' now works.
3323 3328
3324 3329 * IPython/iplib.py (complete): fixed bug where paths starting with
3325 3330 '/' would be completed as magic names.
3326 3331
3327 3332 2002-05-04 Fernando Perez <fperez@colorado.edu>
3328 3333
3329 3334 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3330 3335 allow running full programs under the profiler's control.
3331 3336
3332 3337 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3333 3338 mode to report exceptions verbosely but without formatting
3334 3339 variables. This addresses the issue of ipython 'freezing' (it's
3335 3340 not frozen, but caught in an expensive formatting loop) when huge
3336 3341 variables are in the context of an exception.
3337 3342 (VerboseTB.text): Added '--->' markers at line where exception was
3338 3343 triggered. Much clearer to read, especially in NoColor modes.
3339 3344
3340 3345 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3341 3346 implemented in reverse when changing to the new parse_options().
3342 3347
3343 3348 2002-05-03 Fernando Perez <fperez@colorado.edu>
3344 3349
3345 3350 * IPython/Magic.py (Magic.parse_options): new function so that
3346 3351 magics can parse options easier.
3347 3352 (Magic.magic_prun): new function similar to profile.run(),
3348 3353 suggested by Chris Hart.
3349 3354 (Magic.magic_cd): fixed behavior so that it only changes if
3350 3355 directory actually is in history.
3351 3356
3352 3357 * IPython/usage.py (__doc__): added information about potential
3353 3358 slowness of Verbose exception mode when there are huge data
3354 3359 structures to be formatted (thanks to Archie Paulson).
3355 3360
3356 3361 * IPython/ipmaker.py (make_IPython): Changed default logging
3357 3362 (when simply called with -log) to use curr_dir/ipython.log in
3358 3363 rotate mode. Fixed crash which was occuring with -log before
3359 3364 (thanks to Jim Boyle).
3360 3365
3361 3366 2002-05-01 Fernando Perez <fperez@colorado.edu>
3362 3367
3363 3368 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3364 3369 was nasty -- though somewhat of a corner case).
3365 3370
3366 3371 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3367 3372 text (was a bug).
3368 3373
3369 3374 2002-04-30 Fernando Perez <fperez@colorado.edu>
3370 3375
3371 3376 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3372 3377 a print after ^D or ^C from the user so that the In[] prompt
3373 3378 doesn't over-run the gnuplot one.
3374 3379
3375 3380 2002-04-29 Fernando Perez <fperez@colorado.edu>
3376 3381
3377 3382 * Released 0.2.10
3378 3383
3379 3384 * IPython/__release__.py (version): get date dynamically.
3380 3385
3381 3386 * Misc. documentation updates thanks to Arnd's comments. Also ran
3382 3387 a full spellcheck on the manual (hadn't been done in a while).
3383 3388
3384 3389 2002-04-27 Fernando Perez <fperez@colorado.edu>
3385 3390
3386 3391 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3387 3392 starting a log in mid-session would reset the input history list.
3388 3393
3389 3394 2002-04-26 Fernando Perez <fperez@colorado.edu>
3390 3395
3391 3396 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3392 3397 all files were being included in an update. Now anything in
3393 3398 UserConfig that matches [A-Za-z]*.py will go (this excludes
3394 3399 __init__.py)
3395 3400
3396 3401 2002-04-25 Fernando Perez <fperez@colorado.edu>
3397 3402
3398 3403 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3399 3404 to __builtins__ so that any form of embedded or imported code can
3400 3405 test for being inside IPython.
3401 3406
3402 3407 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3403 3408 changed to GnuplotMagic because it's now an importable module,
3404 3409 this makes the name follow that of the standard Gnuplot module.
3405 3410 GnuplotMagic can now be loaded at any time in mid-session.
3406 3411
3407 3412 2002-04-24 Fernando Perez <fperez@colorado.edu>
3408 3413
3409 3414 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3410 3415 the globals (IPython has its own namespace) and the
3411 3416 PhysicalQuantity stuff is much better anyway.
3412 3417
3413 3418 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3414 3419 embedding example to standard user directory for
3415 3420 distribution. Also put it in the manual.
3416 3421
3417 3422 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3418 3423 instance as first argument (so it doesn't rely on some obscure
3419 3424 hidden global).
3420 3425
3421 3426 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3422 3427 delimiters. While it prevents ().TAB from working, it allows
3423 3428 completions in open (... expressions. This is by far a more common
3424 3429 case.
3425 3430
3426 3431 2002-04-23 Fernando Perez <fperez@colorado.edu>
3427 3432
3428 3433 * IPython/Extensions/InterpreterPasteInput.py: new
3429 3434 syntax-processing module for pasting lines with >>> or ... at the
3430 3435 start.
3431 3436
3432 3437 * IPython/Extensions/PhysicalQ_Interactive.py
3433 3438 (PhysicalQuantityInteractive.__int__): fixed to work with either
3434 3439 Numeric or math.
3435 3440
3436 3441 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3437 3442 provided profiles. Now we have:
3438 3443 -math -> math module as * and cmath with its own namespace.
3439 3444 -numeric -> Numeric as *, plus gnuplot & grace
3440 3445 -physics -> same as before
3441 3446
3442 3447 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3443 3448 user-defined magics wouldn't be found by @magic if they were
3444 3449 defined as class methods. Also cleaned up the namespace search
3445 3450 logic and the string building (to use %s instead of many repeated
3446 3451 string adds).
3447 3452
3448 3453 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3449 3454 of user-defined magics to operate with class methods (cleaner, in
3450 3455 line with the gnuplot code).
3451 3456
3452 3457 2002-04-22 Fernando Perez <fperez@colorado.edu>
3453 3458
3454 3459 * setup.py: updated dependency list so that manual is updated when
3455 3460 all included files change.
3456 3461
3457 3462 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3458 3463 the delimiter removal option (the fix is ugly right now).
3459 3464
3460 3465 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3461 3466 all of the math profile (quicker loading, no conflict between
3462 3467 g-9.8 and g-gnuplot).
3463 3468
3464 3469 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3465 3470 name of post-mortem files to IPython_crash_report.txt.
3466 3471
3467 3472 * Cleanup/update of the docs. Added all the new readline info and
3468 3473 formatted all lists as 'real lists'.
3469 3474
3470 3475 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3471 3476 tab-completion options, since the full readline parse_and_bind is
3472 3477 now accessible.
3473 3478
3474 3479 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3475 3480 handling of readline options. Now users can specify any string to
3476 3481 be passed to parse_and_bind(), as well as the delimiters to be
3477 3482 removed.
3478 3483 (InteractiveShell.__init__): Added __name__ to the global
3479 3484 namespace so that things like Itpl which rely on its existence
3480 3485 don't crash.
3481 3486 (InteractiveShell._prefilter): Defined the default with a _ so
3482 3487 that prefilter() is easier to override, while the default one
3483 3488 remains available.
3484 3489
3485 3490 2002-04-18 Fernando Perez <fperez@colorado.edu>
3486 3491
3487 3492 * Added information about pdb in the docs.
3488 3493
3489 3494 2002-04-17 Fernando Perez <fperez@colorado.edu>
3490 3495
3491 3496 * IPython/ipmaker.py (make_IPython): added rc_override option to
3492 3497 allow passing config options at creation time which may override
3493 3498 anything set in the config files or command line. This is
3494 3499 particularly useful for configuring embedded instances.
3495 3500
3496 3501 2002-04-15 Fernando Perez <fperez@colorado.edu>
3497 3502
3498 3503 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3499 3504 crash embedded instances because of the input cache falling out of
3500 3505 sync with the output counter.
3501 3506
3502 3507 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3503 3508 mode which calls pdb after an uncaught exception in IPython itself.
3504 3509
3505 3510 2002-04-14 Fernando Perez <fperez@colorado.edu>
3506 3511
3507 3512 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3508 3513 readline, fix it back after each call.
3509 3514
3510 3515 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3511 3516 method to force all access via __call__(), which guarantees that
3512 3517 traceback references are properly deleted.
3513 3518
3514 3519 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3515 3520 improve printing when pprint is in use.
3516 3521
3517 3522 2002-04-13 Fernando Perez <fperez@colorado.edu>
3518 3523
3519 3524 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3520 3525 exceptions aren't caught anymore. If the user triggers one, he
3521 3526 should know why he's doing it and it should go all the way up,
3522 3527 just like any other exception. So now @abort will fully kill the
3523 3528 embedded interpreter and the embedding code (unless that happens
3524 3529 to catch SystemExit).
3525 3530
3526 3531 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3527 3532 and a debugger() method to invoke the interactive pdb debugger
3528 3533 after printing exception information. Also added the corresponding
3529 3534 -pdb option and @pdb magic to control this feature, and updated
3530 3535 the docs. After a suggestion from Christopher Hart
3531 3536 (hart-AT-caltech.edu).
3532 3537
3533 3538 2002-04-12 Fernando Perez <fperez@colorado.edu>
3534 3539
3535 3540 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3536 3541 the exception handlers defined by the user (not the CrashHandler)
3537 3542 so that user exceptions don't trigger an ipython bug report.
3538 3543
3539 3544 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3540 3545 configurable (it should have always been so).
3541 3546
3542 3547 2002-03-26 Fernando Perez <fperez@colorado.edu>
3543 3548
3544 3549 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3545 3550 and there to fix embedding namespace issues. This should all be
3546 3551 done in a more elegant way.
3547 3552
3548 3553 2002-03-25 Fernando Perez <fperez@colorado.edu>
3549 3554
3550 3555 * IPython/genutils.py (get_home_dir): Try to make it work under
3551 3556 win9x also.
3552 3557
3553 3558 2002-03-20 Fernando Perez <fperez@colorado.edu>
3554 3559
3555 3560 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3556 3561 sys.displayhook untouched upon __init__.
3557 3562
3558 3563 2002-03-19 Fernando Perez <fperez@colorado.edu>
3559 3564
3560 3565 * Released 0.2.9 (for embedding bug, basically).
3561 3566
3562 3567 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3563 3568 exceptions so that enclosing shell's state can be restored.
3564 3569
3565 3570 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3566 3571 naming conventions in the .ipython/ dir.
3567 3572
3568 3573 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3569 3574 from delimiters list so filenames with - in them get expanded.
3570 3575
3571 3576 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3572 3577 sys.displayhook not being properly restored after an embedded call.
3573 3578
3574 3579 2002-03-18 Fernando Perez <fperez@colorado.edu>
3575 3580
3576 3581 * Released 0.2.8
3577 3582
3578 3583 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3579 3584 some files weren't being included in a -upgrade.
3580 3585 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3581 3586 on' so that the first tab completes.
3582 3587 (InteractiveShell.handle_magic): fixed bug with spaces around
3583 3588 quotes breaking many magic commands.
3584 3589
3585 3590 * setup.py: added note about ignoring the syntax error messages at
3586 3591 installation.
3587 3592
3588 3593 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3589 3594 streamlining the gnuplot interface, now there's only one magic @gp.
3590 3595
3591 3596 2002-03-17 Fernando Perez <fperez@colorado.edu>
3592 3597
3593 3598 * IPython/UserConfig/magic_gnuplot.py: new name for the
3594 3599 example-magic_pm.py file. Much enhanced system, now with a shell
3595 3600 for communicating directly with gnuplot, one command at a time.
3596 3601
3597 3602 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3598 3603 setting __name__=='__main__'.
3599 3604
3600 3605 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3601 3606 mini-shell for accessing gnuplot from inside ipython. Should
3602 3607 extend it later for grace access too. Inspired by Arnd's
3603 3608 suggestion.
3604 3609
3605 3610 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3606 3611 calling magic functions with () in their arguments. Thanks to Arnd
3607 3612 Baecker for pointing this to me.
3608 3613
3609 3614 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3610 3615 infinitely for integer or complex arrays (only worked with floats).
3611 3616
3612 3617 2002-03-16 Fernando Perez <fperez@colorado.edu>
3613 3618
3614 3619 * setup.py: Merged setup and setup_windows into a single script
3615 3620 which properly handles things for windows users.
3616 3621
3617 3622 2002-03-15 Fernando Perez <fperez@colorado.edu>
3618 3623
3619 3624 * Big change to the manual: now the magics are all automatically
3620 3625 documented. This information is generated from their docstrings
3621 3626 and put in a latex file included by the manual lyx file. This way
3622 3627 we get always up to date information for the magics. The manual
3623 3628 now also has proper version information, also auto-synced.
3624 3629
3625 3630 For this to work, an undocumented --magic_docstrings option was added.
3626 3631
3627 3632 2002-03-13 Fernando Perez <fperez@colorado.edu>
3628 3633
3629 3634 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3630 3635 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3631 3636
3632 3637 2002-03-12 Fernando Perez <fperez@colorado.edu>
3633 3638
3634 3639 * IPython/ultraTB.py (TermColors): changed color escapes again to
3635 3640 fix the (old, reintroduced) line-wrapping bug. Basically, if
3636 3641 \001..\002 aren't given in the color escapes, lines get wrapped
3637 3642 weirdly. But giving those screws up old xterms and emacs terms. So
3638 3643 I added some logic for emacs terms to be ok, but I can't identify old
3639 3644 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3640 3645
3641 3646 2002-03-10 Fernando Perez <fperez@colorado.edu>
3642 3647
3643 3648 * IPython/usage.py (__doc__): Various documentation cleanups and
3644 3649 updates, both in usage docstrings and in the manual.
3645 3650
3646 3651 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3647 3652 handling of caching. Set minimum acceptabe value for having a
3648 3653 cache at 20 values.
3649 3654
3650 3655 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3651 3656 install_first_time function to a method, renamed it and added an
3652 3657 'upgrade' mode. Now people can update their config directory with
3653 3658 a simple command line switch (-upgrade, also new).
3654 3659
3655 3660 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3656 3661 @file (convenient for automagic users under Python >= 2.2).
3657 3662 Removed @files (it seemed more like a plural than an abbrev. of
3658 3663 'file show').
3659 3664
3660 3665 * IPython/iplib.py (install_first_time): Fixed crash if there were
3661 3666 backup files ('~') in .ipython/ install directory.
3662 3667
3663 3668 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3664 3669 system. Things look fine, but these changes are fairly
3665 3670 intrusive. Test them for a few days.
3666 3671
3667 3672 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3668 3673 the prompts system. Now all in/out prompt strings are user
3669 3674 controllable. This is particularly useful for embedding, as one
3670 3675 can tag embedded instances with particular prompts.
3671 3676
3672 3677 Also removed global use of sys.ps1/2, which now allows nested
3673 3678 embeddings without any problems. Added command-line options for
3674 3679 the prompt strings.
3675 3680
3676 3681 2002-03-08 Fernando Perez <fperez@colorado.edu>
3677 3682
3678 3683 * IPython/UserConfig/example-embed-short.py (ipshell): added
3679 3684 example file with the bare minimum code for embedding.
3680 3685
3681 3686 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3682 3687 functionality for the embeddable shell to be activated/deactivated
3683 3688 either globally or at each call.
3684 3689
3685 3690 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3686 3691 rewriting the prompt with '--->' for auto-inputs with proper
3687 3692 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3688 3693 this is handled by the prompts class itself, as it should.
3689 3694
3690 3695 2002-03-05 Fernando Perez <fperez@colorado.edu>
3691 3696
3692 3697 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3693 3698 @logstart to avoid name clashes with the math log function.
3694 3699
3695 3700 * Big updates to X/Emacs section of the manual.
3696 3701
3697 3702 * Removed ipython_emacs. Milan explained to me how to pass
3698 3703 arguments to ipython through Emacs. Some day I'm going to end up
3699 3704 learning some lisp...
3700 3705
3701 3706 2002-03-04 Fernando Perez <fperez@colorado.edu>
3702 3707
3703 3708 * IPython/ipython_emacs: Created script to be used as the
3704 3709 py-python-command Emacs variable so we can pass IPython
3705 3710 parameters. I can't figure out how to tell Emacs directly to pass
3706 3711 parameters to IPython, so a dummy shell script will do it.
3707 3712
3708 3713 Other enhancements made for things to work better under Emacs'
3709 3714 various types of terminals. Many thanks to Milan Zamazal
3710 3715 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3711 3716
3712 3717 2002-03-01 Fernando Perez <fperez@colorado.edu>
3713 3718
3714 3719 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3715 3720 that loading of readline is now optional. This gives better
3716 3721 control to emacs users.
3717 3722
3718 3723 * IPython/ultraTB.py (__date__): Modified color escape sequences
3719 3724 and now things work fine under xterm and in Emacs' term buffers
3720 3725 (though not shell ones). Well, in emacs you get colors, but all
3721 3726 seem to be 'light' colors (no difference between dark and light
3722 3727 ones). But the garbage chars are gone, and also in xterms. It
3723 3728 seems that now I'm using 'cleaner' ansi sequences.
3724 3729
3725 3730 2002-02-21 Fernando Perez <fperez@colorado.edu>
3726 3731
3727 3732 * Released 0.2.7 (mainly to publish the scoping fix).
3728 3733
3729 3734 * IPython/Logger.py (Logger.logstate): added. A corresponding
3730 3735 @logstate magic was created.
3731 3736
3732 3737 * IPython/Magic.py: fixed nested scoping problem under Python
3733 3738 2.1.x (automagic wasn't working).
3734 3739
3735 3740 2002-02-20 Fernando Perez <fperez@colorado.edu>
3736 3741
3737 3742 * Released 0.2.6.
3738 3743
3739 3744 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3740 3745 option so that logs can come out without any headers at all.
3741 3746
3742 3747 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3743 3748 SciPy.
3744 3749
3745 3750 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3746 3751 that embedded IPython calls don't require vars() to be explicitly
3747 3752 passed. Now they are extracted from the caller's frame (code
3748 3753 snatched from Eric Jones' weave). Added better documentation to
3749 3754 the section on embedding and the example file.
3750 3755
3751 3756 * IPython/genutils.py (page): Changed so that under emacs, it just
3752 3757 prints the string. You can then page up and down in the emacs
3753 3758 buffer itself. This is how the builtin help() works.
3754 3759
3755 3760 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3756 3761 macro scoping: macros need to be executed in the user's namespace
3757 3762 to work as if they had been typed by the user.
3758 3763
3759 3764 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3760 3765 execute automatically (no need to type 'exec...'). They then
3761 3766 behave like 'true macros'. The printing system was also modified
3762 3767 for this to work.
3763 3768
3764 3769 2002-02-19 Fernando Perez <fperez@colorado.edu>
3765 3770
3766 3771 * IPython/genutils.py (page_file): new function for paging files
3767 3772 in an OS-independent way. Also necessary for file viewing to work
3768 3773 well inside Emacs buffers.
3769 3774 (page): Added checks for being in an emacs buffer.
3770 3775 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3771 3776 same bug in iplib.
3772 3777
3773 3778 2002-02-18 Fernando Perez <fperez@colorado.edu>
3774 3779
3775 3780 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3776 3781 of readline so that IPython can work inside an Emacs buffer.
3777 3782
3778 3783 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3779 3784 method signatures (they weren't really bugs, but it looks cleaner
3780 3785 and keeps PyChecker happy).
3781 3786
3782 3787 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3783 3788 for implementing various user-defined hooks. Currently only
3784 3789 display is done.
3785 3790
3786 3791 * IPython/Prompts.py (CachedOutput._display): changed display
3787 3792 functions so that they can be dynamically changed by users easily.
3788 3793
3789 3794 * IPython/Extensions/numeric_formats.py (num_display): added an
3790 3795 extension for printing NumPy arrays in flexible manners. It
3791 3796 doesn't do anything yet, but all the structure is in
3792 3797 place. Ultimately the plan is to implement output format control
3793 3798 like in Octave.
3794 3799
3795 3800 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3796 3801 methods are found at run-time by all the automatic machinery.
3797 3802
3798 3803 2002-02-17 Fernando Perez <fperez@colorado.edu>
3799 3804
3800 3805 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3801 3806 whole file a little.
3802 3807
3803 3808 * ToDo: closed this document. Now there's a new_design.lyx
3804 3809 document for all new ideas. Added making a pdf of it for the
3805 3810 end-user distro.
3806 3811
3807 3812 * IPython/Logger.py (Logger.switch_log): Created this to replace
3808 3813 logon() and logoff(). It also fixes a nasty crash reported by
3809 3814 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3810 3815
3811 3816 * IPython/iplib.py (complete): got auto-completion to work with
3812 3817 automagic (I had wanted this for a long time).
3813 3818
3814 3819 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3815 3820 to @file, since file() is now a builtin and clashes with automagic
3816 3821 for @file.
3817 3822
3818 3823 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3819 3824 of this was previously in iplib, which had grown to more than 2000
3820 3825 lines, way too long. No new functionality, but it makes managing
3821 3826 the code a bit easier.
3822 3827
3823 3828 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3824 3829 information to crash reports.
3825 3830
3826 3831 2002-02-12 Fernando Perez <fperez@colorado.edu>
3827 3832
3828 3833 * Released 0.2.5.
3829 3834
3830 3835 2002-02-11 Fernando Perez <fperez@colorado.edu>
3831 3836
3832 3837 * Wrote a relatively complete Windows installer. It puts
3833 3838 everything in place, creates Start Menu entries and fixes the
3834 3839 color issues. Nothing fancy, but it works.
3835 3840
3836 3841 2002-02-10 Fernando Perez <fperez@colorado.edu>
3837 3842
3838 3843 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
3839 3844 os.path.expanduser() call so that we can type @run ~/myfile.py and
3840 3845 have thigs work as expected.
3841 3846
3842 3847 * IPython/genutils.py (page): fixed exception handling so things
3843 3848 work both in Unix and Windows correctly. Quitting a pager triggers
3844 3849 an IOError/broken pipe in Unix, and in windows not finding a pager
3845 3850 is also an IOError, so I had to actually look at the return value
3846 3851 of the exception, not just the exception itself. Should be ok now.
3847 3852
3848 3853 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
3849 3854 modified to allow case-insensitive color scheme changes.
3850 3855
3851 3856 2002-02-09 Fernando Perez <fperez@colorado.edu>
3852 3857
3853 3858 * IPython/genutils.py (native_line_ends): new function to leave
3854 3859 user config files with os-native line-endings.
3855 3860
3856 3861 * README and manual updates.
3857 3862
3858 3863 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
3859 3864 instead of StringType to catch Unicode strings.
3860 3865
3861 3866 * IPython/genutils.py (filefind): fixed bug for paths with
3862 3867 embedded spaces (very common in Windows).
3863 3868
3864 3869 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
3865 3870 files under Windows, so that they get automatically associated
3866 3871 with a text editor. Windows makes it a pain to handle
3867 3872 extension-less files.
3868 3873
3869 3874 * IPython/iplib.py (InteractiveShell.init_readline): Made the
3870 3875 warning about readline only occur for Posix. In Windows there's no
3871 3876 way to get readline, so why bother with the warning.
3872 3877
3873 3878 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
3874 3879 for __str__ instead of dir(self), since dir() changed in 2.2.
3875 3880
3876 3881 * Ported to Windows! Tested on XP, I suspect it should work fine
3877 3882 on NT/2000, but I don't think it will work on 98 et al. That
3878 3883 series of Windows is such a piece of junk anyway that I won't try
3879 3884 porting it there. The XP port was straightforward, showed a few
3880 3885 bugs here and there (fixed all), in particular some string
3881 3886 handling stuff which required considering Unicode strings (which
3882 3887 Windows uses). This is good, but hasn't been too tested :) No
3883 3888 fancy installer yet, I'll put a note in the manual so people at
3884 3889 least make manually a shortcut.
3885 3890
3886 3891 * IPython/iplib.py (Magic.magic_colors): Unified the color options
3887 3892 into a single one, "colors". This now controls both prompt and
3888 3893 exception color schemes, and can be changed both at startup
3889 3894 (either via command-line switches or via ipythonrc files) and at
3890 3895 runtime, with @colors.
3891 3896 (Magic.magic_run): renamed @prun to @run and removed the old
3892 3897 @run. The two were too similar to warrant keeping both.
3893 3898
3894 3899 2002-02-03 Fernando Perez <fperez@colorado.edu>
3895 3900
3896 3901 * IPython/iplib.py (install_first_time): Added comment on how to
3897 3902 configure the color options for first-time users. Put a <return>
3898 3903 request at the end so that small-terminal users get a chance to
3899 3904 read the startup info.
3900 3905
3901 3906 2002-01-23 Fernando Perez <fperez@colorado.edu>
3902 3907
3903 3908 * IPython/iplib.py (CachedOutput.update): Changed output memory
3904 3909 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
3905 3910 input history we still use _i. Did this b/c these variable are
3906 3911 very commonly used in interactive work, so the less we need to
3907 3912 type the better off we are.
3908 3913 (Magic.magic_prun): updated @prun to better handle the namespaces
3909 3914 the file will run in, including a fix for __name__ not being set
3910 3915 before.
3911 3916
3912 3917 2002-01-20 Fernando Perez <fperez@colorado.edu>
3913 3918
3914 3919 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
3915 3920 extra garbage for Python 2.2. Need to look more carefully into
3916 3921 this later.
3917 3922
3918 3923 2002-01-19 Fernando Perez <fperez@colorado.edu>
3919 3924
3920 3925 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
3921 3926 display SyntaxError exceptions properly formatted when they occur
3922 3927 (they can be triggered by imported code).
3923 3928
3924 3929 2002-01-18 Fernando Perez <fperez@colorado.edu>
3925 3930
3926 3931 * IPython/iplib.py (InteractiveShell.safe_execfile): now
3927 3932 SyntaxError exceptions are reported nicely formatted, instead of
3928 3933 spitting out only offset information as before.
3929 3934 (Magic.magic_prun): Added the @prun function for executing
3930 3935 programs with command line args inside IPython.
3931 3936
3932 3937 2002-01-16 Fernando Perez <fperez@colorado.edu>
3933 3938
3934 3939 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
3935 3940 to *not* include the last item given in a range. This brings their
3936 3941 behavior in line with Python's slicing:
3937 3942 a[n1:n2] -> a[n1]...a[n2-1]
3938 3943 It may be a bit less convenient, but I prefer to stick to Python's
3939 3944 conventions *everywhere*, so users never have to wonder.
3940 3945 (Magic.magic_macro): Added @macro function to ease the creation of
3941 3946 macros.
3942 3947
3943 3948 2002-01-05 Fernando Perez <fperez@colorado.edu>
3944 3949
3945 3950 * Released 0.2.4.
3946 3951
3947 3952 * IPython/iplib.py (Magic.magic_pdef):
3948 3953 (InteractiveShell.safe_execfile): report magic lines and error
3949 3954 lines without line numbers so one can easily copy/paste them for
3950 3955 re-execution.
3951 3956
3952 3957 * Updated manual with recent changes.
3953 3958
3954 3959 * IPython/iplib.py (Magic.magic_oinfo): added constructor
3955 3960 docstring printing when class? is called. Very handy for knowing
3956 3961 how to create class instances (as long as __init__ is well
3957 3962 documented, of course :)
3958 3963 (Magic.magic_doc): print both class and constructor docstrings.
3959 3964 (Magic.magic_pdef): give constructor info if passed a class and
3960 3965 __call__ info for callable object instances.
3961 3966
3962 3967 2002-01-04 Fernando Perez <fperez@colorado.edu>
3963 3968
3964 3969 * Made deep_reload() off by default. It doesn't always work
3965 3970 exactly as intended, so it's probably safer to have it off. It's
3966 3971 still available as dreload() anyway, so nothing is lost.
3967 3972
3968 3973 2002-01-02 Fernando Perez <fperez@colorado.edu>
3969 3974
3970 3975 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
3971 3976 so I wanted an updated release).
3972 3977
3973 3978 2001-12-27 Fernando Perez <fperez@colorado.edu>
3974 3979
3975 3980 * IPython/iplib.py (InteractiveShell.interact): Added the original
3976 3981 code from 'code.py' for this module in order to change the
3977 3982 handling of a KeyboardInterrupt. This was necessary b/c otherwise
3978 3983 the history cache would break when the user hit Ctrl-C, and
3979 3984 interact() offers no way to add any hooks to it.
3980 3985
3981 3986 2001-12-23 Fernando Perez <fperez@colorado.edu>
3982 3987
3983 3988 * setup.py: added check for 'MANIFEST' before trying to remove
3984 3989 it. Thanks to Sean Reifschneider.
3985 3990
3986 3991 2001-12-22 Fernando Perez <fperez@colorado.edu>
3987 3992
3988 3993 * Released 0.2.2.
3989 3994
3990 3995 * Finished (reasonably) writing the manual. Later will add the
3991 3996 python-standard navigation stylesheets, but for the time being
3992 3997 it's fairly complete. Distribution will include html and pdf
3993 3998 versions.
3994 3999
3995 4000 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
3996 4001 (MayaVi author).
3997 4002
3998 4003 2001-12-21 Fernando Perez <fperez@colorado.edu>
3999 4004
4000 4005 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4001 4006 good public release, I think (with the manual and the distutils
4002 4007 installer). The manual can use some work, but that can go
4003 4008 slowly. Otherwise I think it's quite nice for end users. Next
4004 4009 summer, rewrite the guts of it...
4005 4010
4006 4011 * Changed format of ipythonrc files to use whitespace as the
4007 4012 separator instead of an explicit '='. Cleaner.
4008 4013
4009 4014 2001-12-20 Fernando Perez <fperez@colorado.edu>
4010 4015
4011 4016 * Started a manual in LyX. For now it's just a quick merge of the
4012 4017 various internal docstrings and READMEs. Later it may grow into a
4013 4018 nice, full-blown manual.
4014 4019
4015 4020 * Set up a distutils based installer. Installation should now be
4016 4021 trivially simple for end-users.
4017 4022
4018 4023 2001-12-11 Fernando Perez <fperez@colorado.edu>
4019 4024
4020 4025 * Released 0.2.0. First public release, announced it at
4021 4026 comp.lang.python. From now on, just bugfixes...
4022 4027
4023 4028 * Went through all the files, set copyright/license notices and
4024 4029 cleaned up things. Ready for release.
4025 4030
4026 4031 2001-12-10 Fernando Perez <fperez@colorado.edu>
4027 4032
4028 4033 * Changed the first-time installer not to use tarfiles. It's more
4029 4034 robust now and less unix-dependent. Also makes it easier for
4030 4035 people to later upgrade versions.
4031 4036
4032 4037 * Changed @exit to @abort to reflect the fact that it's pretty
4033 4038 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4034 4039 becomes significant only when IPyhton is embedded: in that case,
4035 4040 C-D closes IPython only, but @abort kills the enclosing program
4036 4041 too (unless it had called IPython inside a try catching
4037 4042 SystemExit).
4038 4043
4039 4044 * Created Shell module which exposes the actuall IPython Shell
4040 4045 classes, currently the normal and the embeddable one. This at
4041 4046 least offers a stable interface we won't need to change when
4042 4047 (later) the internals are rewritten. That rewrite will be confined
4043 4048 to iplib and ipmaker, but the Shell interface should remain as is.
4044 4049
4045 4050 * Added embed module which offers an embeddable IPShell object,
4046 4051 useful to fire up IPython *inside* a running program. Great for
4047 4052 debugging or dynamical data analysis.
4048 4053
4049 4054 2001-12-08 Fernando Perez <fperez@colorado.edu>
4050 4055
4051 4056 * Fixed small bug preventing seeing info from methods of defined
4052 4057 objects (incorrect namespace in _ofind()).
4053 4058
4054 4059 * Documentation cleanup. Moved the main usage docstrings to a
4055 4060 separate file, usage.py (cleaner to maintain, and hopefully in the
4056 4061 future some perlpod-like way of producing interactive, man and
4057 4062 html docs out of it will be found).
4058 4063
4059 4064 * Added @profile to see your profile at any time.
4060 4065
4061 4066 * Added @p as an alias for 'print'. It's especially convenient if
4062 4067 using automagic ('p x' prints x).
4063 4068
4064 4069 * Small cleanups and fixes after a pychecker run.
4065 4070
4066 4071 * Changed the @cd command to handle @cd - and @cd -<n> for
4067 4072 visiting any directory in _dh.
4068 4073
4069 4074 * Introduced _dh, a history of visited directories. @dhist prints
4070 4075 it out with numbers.
4071 4076
4072 4077 2001-12-07 Fernando Perez <fperez@colorado.edu>
4073 4078
4074 4079 * Released 0.1.22
4075 4080
4076 4081 * Made initialization a bit more robust against invalid color
4077 4082 options in user input (exit, not traceback-crash).
4078 4083
4079 4084 * Changed the bug crash reporter to write the report only in the
4080 4085 user's .ipython directory. That way IPython won't litter people's
4081 4086 hard disks with crash files all over the place. Also print on
4082 4087 screen the necessary mail command.
4083 4088
4084 4089 * With the new ultraTB, implemented LightBG color scheme for light
4085 4090 background terminals. A lot of people like white backgrounds, so I
4086 4091 guess we should at least give them something readable.
4087 4092
4088 4093 2001-12-06 Fernando Perez <fperez@colorado.edu>
4089 4094
4090 4095 * Modified the structure of ultraTB. Now there's a proper class
4091 4096 for tables of color schemes which allow adding schemes easily and
4092 4097 switching the active scheme without creating a new instance every
4093 4098 time (which was ridiculous). The syntax for creating new schemes
4094 4099 is also cleaner. I think ultraTB is finally done, with a clean
4095 4100 class structure. Names are also much cleaner (now there's proper
4096 4101 color tables, no need for every variable to also have 'color' in
4097 4102 its name).
4098 4103
4099 4104 * Broke down genutils into separate files. Now genutils only
4100 4105 contains utility functions, and classes have been moved to their
4101 4106 own files (they had enough independent functionality to warrant
4102 4107 it): ConfigLoader, OutputTrap, Struct.
4103 4108
4104 4109 2001-12-05 Fernando Perez <fperez@colorado.edu>
4105 4110
4106 4111 * IPython turns 21! Released version 0.1.21, as a candidate for
4107 4112 public consumption. If all goes well, release in a few days.
4108 4113
4109 4114 * Fixed path bug (files in Extensions/ directory wouldn't be found
4110 4115 unless IPython/ was explicitly in sys.path).
4111 4116
4112 4117 * Extended the FlexCompleter class as MagicCompleter to allow
4113 4118 completion of @-starting lines.
4114 4119
4115 4120 * Created __release__.py file as a central repository for release
4116 4121 info that other files can read from.
4117 4122
4118 4123 * Fixed small bug in logging: when logging was turned on in
4119 4124 mid-session, old lines with special meanings (!@?) were being
4120 4125 logged without the prepended comment, which is necessary since
4121 4126 they are not truly valid python syntax. This should make session
4122 4127 restores produce less errors.
4123 4128
4124 4129 * The namespace cleanup forced me to make a FlexCompleter class
4125 4130 which is nothing but a ripoff of rlcompleter, but with selectable
4126 4131 namespace (rlcompleter only works in __main__.__dict__). I'll try
4127 4132 to submit a note to the authors to see if this change can be
4128 4133 incorporated in future rlcompleter releases (Dec.6: done)
4129 4134
4130 4135 * More fixes to namespace handling. It was a mess! Now all
4131 4136 explicit references to __main__.__dict__ are gone (except when
4132 4137 really needed) and everything is handled through the namespace
4133 4138 dicts in the IPython instance. We seem to be getting somewhere
4134 4139 with this, finally...
4135 4140
4136 4141 * Small documentation updates.
4137 4142
4138 4143 * Created the Extensions directory under IPython (with an
4139 4144 __init__.py). Put the PhysicalQ stuff there. This directory should
4140 4145 be used for all special-purpose extensions.
4141 4146
4142 4147 * File renaming:
4143 4148 ipythonlib --> ipmaker
4144 4149 ipplib --> iplib
4145 4150 This makes a bit more sense in terms of what these files actually do.
4146 4151
4147 4152 * Moved all the classes and functions in ipythonlib to ipplib, so
4148 4153 now ipythonlib only has make_IPython(). This will ease up its
4149 4154 splitting in smaller functional chunks later.
4150 4155
4151 4156 * Cleaned up (done, I think) output of @whos. Better column
4152 4157 formatting, and now shows str(var) for as much as it can, which is
4153 4158 typically what one gets with a 'print var'.
4154 4159
4155 4160 2001-12-04 Fernando Perez <fperez@colorado.edu>
4156 4161
4157 4162 * Fixed namespace problems. Now builtin/IPyhton/user names get
4158 4163 properly reported in their namespace. Internal namespace handling
4159 4164 is finally getting decent (not perfect yet, but much better than
4160 4165 the ad-hoc mess we had).
4161 4166
4162 4167 * Removed -exit option. If people just want to run a python
4163 4168 script, that's what the normal interpreter is for. Less
4164 4169 unnecessary options, less chances for bugs.
4165 4170
4166 4171 * Added a crash handler which generates a complete post-mortem if
4167 4172 IPython crashes. This will help a lot in tracking bugs down the
4168 4173 road.
4169 4174
4170 4175 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4171 4176 which were boud to functions being reassigned would bypass the
4172 4177 logger, breaking the sync of _il with the prompt counter. This
4173 4178 would then crash IPython later when a new line was logged.
4174 4179
4175 4180 2001-12-02 Fernando Perez <fperez@colorado.edu>
4176 4181
4177 4182 * Made IPython a package. This means people don't have to clutter
4178 4183 their sys.path with yet another directory. Changed the INSTALL
4179 4184 file accordingly.
4180 4185
4181 4186 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4182 4187 sorts its output (so @who shows it sorted) and @whos formats the
4183 4188 table according to the width of the first column. Nicer, easier to
4184 4189 read. Todo: write a generic table_format() which takes a list of
4185 4190 lists and prints it nicely formatted, with optional row/column
4186 4191 separators and proper padding and justification.
4187 4192
4188 4193 * Released 0.1.20
4189 4194
4190 4195 * Fixed bug in @log which would reverse the inputcache list (a
4191 4196 copy operation was missing).
4192 4197
4193 4198 * Code cleanup. @config was changed to use page(). Better, since
4194 4199 its output is always quite long.
4195 4200
4196 4201 * Itpl is back as a dependency. I was having too many problems
4197 4202 getting the parametric aliases to work reliably, and it's just
4198 4203 easier to code weird string operations with it than playing %()s
4199 4204 games. It's only ~6k, so I don't think it's too big a deal.
4200 4205
4201 4206 * Found (and fixed) a very nasty bug with history. !lines weren't
4202 4207 getting cached, and the out of sync caches would crash
4203 4208 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4204 4209 division of labor a bit better. Bug fixed, cleaner structure.
4205 4210
4206 4211 2001-12-01 Fernando Perez <fperez@colorado.edu>
4207 4212
4208 4213 * Released 0.1.19
4209 4214
4210 4215 * Added option -n to @hist to prevent line number printing. Much
4211 4216 easier to copy/paste code this way.
4212 4217
4213 4218 * Created global _il to hold the input list. Allows easy
4214 4219 re-execution of blocks of code by slicing it (inspired by Janko's
4215 4220 comment on 'macros').
4216 4221
4217 4222 * Small fixes and doc updates.
4218 4223
4219 4224 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4220 4225 much too fragile with automagic. Handles properly multi-line
4221 4226 statements and takes parameters.
4222 4227
4223 4228 2001-11-30 Fernando Perez <fperez@colorado.edu>
4224 4229
4225 4230 * Version 0.1.18 released.
4226 4231
4227 4232 * Fixed nasty namespace bug in initial module imports.
4228 4233
4229 4234 * Added copyright/license notes to all code files (except
4230 4235 DPyGetOpt). For the time being, LGPL. That could change.
4231 4236
4232 4237 * Rewrote a much nicer README, updated INSTALL, cleaned up
4233 4238 ipythonrc-* samples.
4234 4239
4235 4240 * Overall code/documentation cleanup. Basically ready for
4236 4241 release. Only remaining thing: licence decision (LGPL?).
4237 4242
4238 4243 * Converted load_config to a class, ConfigLoader. Now recursion
4239 4244 control is better organized. Doesn't include the same file twice.
4240 4245
4241 4246 2001-11-29 Fernando Perez <fperez@colorado.edu>
4242 4247
4243 4248 * Got input history working. Changed output history variables from
4244 4249 _p to _o so that _i is for input and _o for output. Just cleaner
4245 4250 convention.
4246 4251
4247 4252 * Implemented parametric aliases. This pretty much allows the
4248 4253 alias system to offer full-blown shell convenience, I think.
4249 4254
4250 4255 * Version 0.1.17 released, 0.1.18 opened.
4251 4256
4252 4257 * dot_ipython/ipythonrc (alias): added documentation.
4253 4258 (xcolor): Fixed small bug (xcolors -> xcolor)
4254 4259
4255 4260 * Changed the alias system. Now alias is a magic command to define
4256 4261 aliases just like the shell. Rationale: the builtin magics should
4257 4262 be there for things deeply connected to IPython's
4258 4263 architecture. And this is a much lighter system for what I think
4259 4264 is the really important feature: allowing users to define quickly
4260 4265 magics that will do shell things for them, so they can customize
4261 4266 IPython easily to match their work habits. If someone is really
4262 4267 desperate to have another name for a builtin alias, they can
4263 4268 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4264 4269 works.
4265 4270
4266 4271 2001-11-28 Fernando Perez <fperez@colorado.edu>
4267 4272
4268 4273 * Changed @file so that it opens the source file at the proper
4269 4274 line. Since it uses less, if your EDITOR environment is
4270 4275 configured, typing v will immediately open your editor of choice
4271 4276 right at the line where the object is defined. Not as quick as
4272 4277 having a direct @edit command, but for all intents and purposes it
4273 4278 works. And I don't have to worry about writing @edit to deal with
4274 4279 all the editors, less does that.
4275 4280
4276 4281 * Version 0.1.16 released, 0.1.17 opened.
4277 4282
4278 4283 * Fixed some nasty bugs in the page/page_dumb combo that could
4279 4284 crash IPython.
4280 4285
4281 4286 2001-11-27 Fernando Perez <fperez@colorado.edu>
4282 4287
4283 4288 * Version 0.1.15 released, 0.1.16 opened.
4284 4289
4285 4290 * Finally got ? and ?? to work for undefined things: now it's
4286 4291 possible to type {}.get? and get information about the get method
4287 4292 of dicts, or os.path? even if only os is defined (so technically
4288 4293 os.path isn't). Works at any level. For example, after import os,
4289 4294 os?, os.path?, os.path.abspath? all work. This is great, took some
4290 4295 work in _ofind.
4291 4296
4292 4297 * Fixed more bugs with logging. The sanest way to do it was to add
4293 4298 to @log a 'mode' parameter. Killed two in one shot (this mode
4294 4299 option was a request of Janko's). I think it's finally clean
4295 4300 (famous last words).
4296 4301
4297 4302 * Added a page_dumb() pager which does a decent job of paging on
4298 4303 screen, if better things (like less) aren't available. One less
4299 4304 unix dependency (someday maybe somebody will port this to
4300 4305 windows).
4301 4306
4302 4307 * Fixed problem in magic_log: would lock of logging out if log
4303 4308 creation failed (because it would still think it had succeeded).
4304 4309
4305 4310 * Improved the page() function using curses to auto-detect screen
4306 4311 size. Now it can make a much better decision on whether to print
4307 4312 or page a string. Option screen_length was modified: a value 0
4308 4313 means auto-detect, and that's the default now.
4309 4314
4310 4315 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4311 4316 go out. I'll test it for a few days, then talk to Janko about
4312 4317 licences and announce it.
4313 4318
4314 4319 * Fixed the length of the auto-generated ---> prompt which appears
4315 4320 for auto-parens and auto-quotes. Getting this right isn't trivial,
4316 4321 with all the color escapes, different prompt types and optional
4317 4322 separators. But it seems to be working in all the combinations.
4318 4323
4319 4324 2001-11-26 Fernando Perez <fperez@colorado.edu>
4320 4325
4321 4326 * Wrote a regexp filter to get option types from the option names
4322 4327 string. This eliminates the need to manually keep two duplicate
4323 4328 lists.
4324 4329
4325 4330 * Removed the unneeded check_option_names. Now options are handled
4326 4331 in a much saner manner and it's easy to visually check that things
4327 4332 are ok.
4328 4333
4329 4334 * Updated version numbers on all files I modified to carry a
4330 4335 notice so Janko and Nathan have clear version markers.
4331 4336
4332 4337 * Updated docstring for ultraTB with my changes. I should send
4333 4338 this to Nathan.
4334 4339
4335 4340 * Lots of small fixes. Ran everything through pychecker again.
4336 4341
4337 4342 * Made loading of deep_reload an cmd line option. If it's not too
4338 4343 kosher, now people can just disable it. With -nodeep_reload it's
4339 4344 still available as dreload(), it just won't overwrite reload().
4340 4345
4341 4346 * Moved many options to the no| form (-opt and -noopt
4342 4347 accepted). Cleaner.
4343 4348
4344 4349 * Changed magic_log so that if called with no parameters, it uses
4345 4350 'rotate' mode. That way auto-generated logs aren't automatically
4346 4351 over-written. For normal logs, now a backup is made if it exists
4347 4352 (only 1 level of backups). A new 'backup' mode was added to the
4348 4353 Logger class to support this. This was a request by Janko.
4349 4354
4350 4355 * Added @logoff/@logon to stop/restart an active log.
4351 4356
4352 4357 * Fixed a lot of bugs in log saving/replay. It was pretty
4353 4358 broken. Now special lines (!@,/) appear properly in the command
4354 4359 history after a log replay.
4355 4360
4356 4361 * Tried and failed to implement full session saving via pickle. My
4357 4362 idea was to pickle __main__.__dict__, but modules can't be
4358 4363 pickled. This would be a better alternative to replaying logs, but
4359 4364 seems quite tricky to get to work. Changed -session to be called
4360 4365 -logplay, which more accurately reflects what it does. And if we
4361 4366 ever get real session saving working, -session is now available.
4362 4367
4363 4368 * Implemented color schemes for prompts also. As for tracebacks,
4364 4369 currently only NoColor and Linux are supported. But now the
4365 4370 infrastructure is in place, based on a generic ColorScheme
4366 4371 class. So writing and activating new schemes both for the prompts
4367 4372 and the tracebacks should be straightforward.
4368 4373
4369 4374 * Version 0.1.13 released, 0.1.14 opened.
4370 4375
4371 4376 * Changed handling of options for output cache. Now counter is
4372 4377 hardwired starting at 1 and one specifies the maximum number of
4373 4378 entries *in the outcache* (not the max prompt counter). This is
4374 4379 much better, since many statements won't increase the cache
4375 4380 count. It also eliminated some confusing options, now there's only
4376 4381 one: cache_size.
4377 4382
4378 4383 * Added 'alias' magic function and magic_alias option in the
4379 4384 ipythonrc file. Now the user can easily define whatever names he
4380 4385 wants for the magic functions without having to play weird
4381 4386 namespace games. This gives IPython a real shell-like feel.
4382 4387
4383 4388 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4384 4389 @ or not).
4385 4390
4386 4391 This was one of the last remaining 'visible' bugs (that I know
4387 4392 of). I think if I can clean up the session loading so it works
4388 4393 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4389 4394 about licensing).
4390 4395
4391 4396 2001-11-25 Fernando Perez <fperez@colorado.edu>
4392 4397
4393 4398 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4394 4399 there's a cleaner distinction between what ? and ?? show.
4395 4400
4396 4401 * Added screen_length option. Now the user can define his own
4397 4402 screen size for page() operations.
4398 4403
4399 4404 * Implemented magic shell-like functions with automatic code
4400 4405 generation. Now adding another function is just a matter of adding
4401 4406 an entry to a dict, and the function is dynamically generated at
4402 4407 run-time. Python has some really cool features!
4403 4408
4404 4409 * Renamed many options to cleanup conventions a little. Now all
4405 4410 are lowercase, and only underscores where needed. Also in the code
4406 4411 option name tables are clearer.
4407 4412
4408 4413 * Changed prompts a little. Now input is 'In [n]:' instead of
4409 4414 'In[n]:='. This allows it the numbers to be aligned with the
4410 4415 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4411 4416 Python (it was a Mathematica thing). The '...' continuation prompt
4412 4417 was also changed a little to align better.
4413 4418
4414 4419 * Fixed bug when flushing output cache. Not all _p<n> variables
4415 4420 exist, so their deletion needs to be wrapped in a try:
4416 4421
4417 4422 * Figured out how to properly use inspect.formatargspec() (it
4418 4423 requires the args preceded by *). So I removed all the code from
4419 4424 _get_pdef in Magic, which was just replicating that.
4420 4425
4421 4426 * Added test to prefilter to allow redefining magic function names
4422 4427 as variables. This is ok, since the @ form is always available,
4423 4428 but whe should allow the user to define a variable called 'ls' if
4424 4429 he needs it.
4425 4430
4426 4431 * Moved the ToDo information from README into a separate ToDo.
4427 4432
4428 4433 * General code cleanup and small bugfixes. I think it's close to a
4429 4434 state where it can be released, obviously with a big 'beta'
4430 4435 warning on it.
4431 4436
4432 4437 * Got the magic function split to work. Now all magics are defined
4433 4438 in a separate class. It just organizes things a bit, and now
4434 4439 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4435 4440 was too long).
4436 4441
4437 4442 * Changed @clear to @reset to avoid potential confusions with
4438 4443 the shell command clear. Also renamed @cl to @clear, which does
4439 4444 exactly what people expect it to from their shell experience.
4440 4445
4441 4446 Added a check to the @reset command (since it's so
4442 4447 destructive, it's probably a good idea to ask for confirmation).
4443 4448 But now reset only works for full namespace resetting. Since the
4444 4449 del keyword is already there for deleting a few specific
4445 4450 variables, I don't see the point of having a redundant magic
4446 4451 function for the same task.
4447 4452
4448 4453 2001-11-24 Fernando Perez <fperez@colorado.edu>
4449 4454
4450 4455 * Updated the builtin docs (esp. the ? ones).
4451 4456
4452 4457 * Ran all the code through pychecker. Not terribly impressed with
4453 4458 it: lots of spurious warnings and didn't really find anything of
4454 4459 substance (just a few modules being imported and not used).
4455 4460
4456 4461 * Implemented the new ultraTB functionality into IPython. New
4457 4462 option: xcolors. This chooses color scheme. xmode now only selects
4458 4463 between Plain and Verbose. Better orthogonality.
4459 4464
4460 4465 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4461 4466 mode and color scheme for the exception handlers. Now it's
4462 4467 possible to have the verbose traceback with no coloring.
4463 4468
4464 4469 2001-11-23 Fernando Perez <fperez@colorado.edu>
4465 4470
4466 4471 * Version 0.1.12 released, 0.1.13 opened.
4467 4472
4468 4473 * Removed option to set auto-quote and auto-paren escapes by
4469 4474 user. The chances of breaking valid syntax are just too high. If
4470 4475 someone *really* wants, they can always dig into the code.
4471 4476
4472 4477 * Made prompt separators configurable.
4473 4478
4474 4479 2001-11-22 Fernando Perez <fperez@colorado.edu>
4475 4480
4476 4481 * Small bugfixes in many places.
4477 4482
4478 4483 * Removed the MyCompleter class from ipplib. It seemed redundant
4479 4484 with the C-p,C-n history search functionality. Less code to
4480 4485 maintain.
4481 4486
4482 4487 * Moved all the original ipython.py code into ipythonlib.py. Right
4483 4488 now it's just one big dump into a function called make_IPython, so
4484 4489 no real modularity has been gained. But at least it makes the
4485 4490 wrapper script tiny, and since ipythonlib is a module, it gets
4486 4491 compiled and startup is much faster.
4487 4492
4488 4493 This is a reasobably 'deep' change, so we should test it for a
4489 4494 while without messing too much more with the code.
4490 4495
4491 4496 2001-11-21 Fernando Perez <fperez@colorado.edu>
4492 4497
4493 4498 * Version 0.1.11 released, 0.1.12 opened for further work.
4494 4499
4495 4500 * Removed dependency on Itpl. It was only needed in one place. It
4496 4501 would be nice if this became part of python, though. It makes life
4497 4502 *a lot* easier in some cases.
4498 4503
4499 4504 * Simplified the prefilter code a bit. Now all handlers are
4500 4505 expected to explicitly return a value (at least a blank string).
4501 4506
4502 4507 * Heavy edits in ipplib. Removed the help system altogether. Now
4503 4508 obj?/?? is used for inspecting objects, a magic @doc prints
4504 4509 docstrings, and full-blown Python help is accessed via the 'help'
4505 4510 keyword. This cleans up a lot of code (less to maintain) and does
4506 4511 the job. Since 'help' is now a standard Python component, might as
4507 4512 well use it and remove duplicate functionality.
4508 4513
4509 4514 Also removed the option to use ipplib as a standalone program. By
4510 4515 now it's too dependent on other parts of IPython to function alone.
4511 4516
4512 4517 * Fixed bug in genutils.pager. It would crash if the pager was
4513 4518 exited immediately after opening (broken pipe).
4514 4519
4515 4520 * Trimmed down the VerboseTB reporting a little. The header is
4516 4521 much shorter now and the repeated exception arguments at the end
4517 4522 have been removed. For interactive use the old header seemed a bit
4518 4523 excessive.
4519 4524
4520 4525 * Fixed small bug in output of @whos for variables with multi-word
4521 4526 types (only first word was displayed).
4522 4527
4523 4528 2001-11-17 Fernando Perez <fperez@colorado.edu>
4524 4529
4525 4530 * Version 0.1.10 released, 0.1.11 opened for further work.
4526 4531
4527 4532 * Modified dirs and friends. dirs now *returns* the stack (not
4528 4533 prints), so one can manipulate it as a variable. Convenient to
4529 4534 travel along many directories.
4530 4535
4531 4536 * Fixed bug in magic_pdef: would only work with functions with
4532 4537 arguments with default values.
4533 4538
4534 4539 2001-11-14 Fernando Perez <fperez@colorado.edu>
4535 4540
4536 4541 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4537 4542 example with IPython. Various other minor fixes and cleanups.
4538 4543
4539 4544 * Version 0.1.9 released, 0.1.10 opened for further work.
4540 4545
4541 4546 * Added sys.path to the list of directories searched in the
4542 4547 execfile= option. It used to be the current directory and the
4543 4548 user's IPYTHONDIR only.
4544 4549
4545 4550 2001-11-13 Fernando Perez <fperez@colorado.edu>
4546 4551
4547 4552 * Reinstated the raw_input/prefilter separation that Janko had
4548 4553 initially. This gives a more convenient setup for extending the
4549 4554 pre-processor from the outside: raw_input always gets a string,
4550 4555 and prefilter has to process it. We can then redefine prefilter
4551 4556 from the outside and implement extensions for special
4552 4557 purposes.
4553 4558
4554 4559 Today I got one for inputting PhysicalQuantity objects
4555 4560 (from Scientific) without needing any function calls at
4556 4561 all. Extremely convenient, and it's all done as a user-level
4557 4562 extension (no IPython code was touched). Now instead of:
4558 4563 a = PhysicalQuantity(4.2,'m/s**2')
4559 4564 one can simply say
4560 4565 a = 4.2 m/s**2
4561 4566 or even
4562 4567 a = 4.2 m/s^2
4563 4568
4564 4569 I use this, but it's also a proof of concept: IPython really is
4565 4570 fully user-extensible, even at the level of the parsing of the
4566 4571 command line. It's not trivial, but it's perfectly doable.
4567 4572
4568 4573 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4569 4574 the problem of modules being loaded in the inverse order in which
4570 4575 they were defined in
4571 4576
4572 4577 * Version 0.1.8 released, 0.1.9 opened for further work.
4573 4578
4574 4579 * Added magics pdef, source and file. They respectively show the
4575 4580 definition line ('prototype' in C), source code and full python
4576 4581 file for any callable object. The object inspector oinfo uses
4577 4582 these to show the same information.
4578 4583
4579 4584 * Version 0.1.7 released, 0.1.8 opened for further work.
4580 4585
4581 4586 * Separated all the magic functions into a class called Magic. The
4582 4587 InteractiveShell class was becoming too big for Xemacs to handle
4583 4588 (de-indenting a line would lock it up for 10 seconds while it
4584 4589 backtracked on the whole class!)
4585 4590
4586 4591 FIXME: didn't work. It can be done, but right now namespaces are
4587 4592 all messed up. Do it later (reverted it for now, so at least
4588 4593 everything works as before).
4589 4594
4590 4595 * Got the object introspection system (magic_oinfo) working! I
4591 4596 think this is pretty much ready for release to Janko, so he can
4592 4597 test it for a while and then announce it. Pretty much 100% of what
4593 4598 I wanted for the 'phase 1' release is ready. Happy, tired.
4594 4599
4595 4600 2001-11-12 Fernando Perez <fperez@colorado.edu>
4596 4601
4597 4602 * Version 0.1.6 released, 0.1.7 opened for further work.
4598 4603
4599 4604 * Fixed bug in printing: it used to test for truth before
4600 4605 printing, so 0 wouldn't print. Now checks for None.
4601 4606
4602 4607 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4603 4608 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4604 4609 reaches by hand into the outputcache. Think of a better way to do
4605 4610 this later.
4606 4611
4607 4612 * Various small fixes thanks to Nathan's comments.
4608 4613
4609 4614 * Changed magic_pprint to magic_Pprint. This way it doesn't
4610 4615 collide with pprint() and the name is consistent with the command
4611 4616 line option.
4612 4617
4613 4618 * Changed prompt counter behavior to be fully like
4614 4619 Mathematica's. That is, even input that doesn't return a result
4615 4620 raises the prompt counter. The old behavior was kind of confusing
4616 4621 (getting the same prompt number several times if the operation
4617 4622 didn't return a result).
4618 4623
4619 4624 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4620 4625
4621 4626 * Fixed -Classic mode (wasn't working anymore).
4622 4627
4623 4628 * Added colored prompts using Nathan's new code. Colors are
4624 4629 currently hardwired, they can be user-configurable. For
4625 4630 developers, they can be chosen in file ipythonlib.py, at the
4626 4631 beginning of the CachedOutput class def.
4627 4632
4628 4633 2001-11-11 Fernando Perez <fperez@colorado.edu>
4629 4634
4630 4635 * Version 0.1.5 released, 0.1.6 opened for further work.
4631 4636
4632 4637 * Changed magic_env to *return* the environment as a dict (not to
4633 4638 print it). This way it prints, but it can also be processed.
4634 4639
4635 4640 * Added Verbose exception reporting to interactive
4636 4641 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4637 4642 traceback. Had to make some changes to the ultraTB file. This is
4638 4643 probably the last 'big' thing in my mental todo list. This ties
4639 4644 in with the next entry:
4640 4645
4641 4646 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4642 4647 has to specify is Plain, Color or Verbose for all exception
4643 4648 handling.
4644 4649
4645 4650 * Removed ShellServices option. All this can really be done via
4646 4651 the magic system. It's easier to extend, cleaner and has automatic
4647 4652 namespace protection and documentation.
4648 4653
4649 4654 2001-11-09 Fernando Perez <fperez@colorado.edu>
4650 4655
4651 4656 * Fixed bug in output cache flushing (missing parameter to
4652 4657 __init__). Other small bugs fixed (found using pychecker).
4653 4658
4654 4659 * Version 0.1.4 opened for bugfixing.
4655 4660
4656 4661 2001-11-07 Fernando Perez <fperez@colorado.edu>
4657 4662
4658 4663 * Version 0.1.3 released, mainly because of the raw_input bug.
4659 4664
4660 4665 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4661 4666 and when testing for whether things were callable, a call could
4662 4667 actually be made to certain functions. They would get called again
4663 4668 once 'really' executed, with a resulting double call. A disaster
4664 4669 in many cases (list.reverse() would never work!).
4665 4670
4666 4671 * Removed prefilter() function, moved its code to raw_input (which
4667 4672 after all was just a near-empty caller for prefilter). This saves
4668 4673 a function call on every prompt, and simplifies the class a tiny bit.
4669 4674
4670 4675 * Fix _ip to __ip name in magic example file.
4671 4676
4672 4677 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4673 4678 work with non-gnu versions of tar.
4674 4679
4675 4680 2001-11-06 Fernando Perez <fperez@colorado.edu>
4676 4681
4677 4682 * Version 0.1.2. Just to keep track of the recent changes.
4678 4683
4679 4684 * Fixed nasty bug in output prompt routine. It used to check 'if
4680 4685 arg != None...'. Problem is, this fails if arg implements a
4681 4686 special comparison (__cmp__) which disallows comparing to
4682 4687 None. Found it when trying to use the PhysicalQuantity module from
4683 4688 ScientificPython.
4684 4689
4685 4690 2001-11-05 Fernando Perez <fperez@colorado.edu>
4686 4691
4687 4692 * Also added dirs. Now the pushd/popd/dirs family functions
4688 4693 basically like the shell, with the added convenience of going home
4689 4694 when called with no args.
4690 4695
4691 4696 * pushd/popd slightly modified to mimic shell behavior more
4692 4697 closely.
4693 4698
4694 4699 * Added env,pushd,popd from ShellServices as magic functions. I
4695 4700 think the cleanest will be to port all desired functions from
4696 4701 ShellServices as magics and remove ShellServices altogether. This
4697 4702 will provide a single, clean way of adding functionality
4698 4703 (shell-type or otherwise) to IP.
4699 4704
4700 4705 2001-11-04 Fernando Perez <fperez@colorado.edu>
4701 4706
4702 4707 * Added .ipython/ directory to sys.path. This way users can keep
4703 4708 customizations there and access them via import.
4704 4709
4705 4710 2001-11-03 Fernando Perez <fperez@colorado.edu>
4706 4711
4707 4712 * Opened version 0.1.1 for new changes.
4708 4713
4709 4714 * Changed version number to 0.1.0: first 'public' release, sent to
4710 4715 Nathan and Janko.
4711 4716
4712 4717 * Lots of small fixes and tweaks.
4713 4718
4714 4719 * Minor changes to whos format. Now strings are shown, snipped if
4715 4720 too long.
4716 4721
4717 4722 * Changed ShellServices to work on __main__ so they show up in @who
4718 4723
4719 4724 * Help also works with ? at the end of a line:
4720 4725 ?sin and sin?
4721 4726 both produce the same effect. This is nice, as often I use the
4722 4727 tab-complete to find the name of a method, but I used to then have
4723 4728 to go to the beginning of the line to put a ? if I wanted more
4724 4729 info. Now I can just add the ? and hit return. Convenient.
4725 4730
4726 4731 2001-11-02 Fernando Perez <fperez@colorado.edu>
4727 4732
4728 4733 * Python version check (>=2.1) added.
4729 4734
4730 4735 * Added LazyPython documentation. At this point the docs are quite
4731 4736 a mess. A cleanup is in order.
4732 4737
4733 4738 * Auto-installer created. For some bizarre reason, the zipfiles
4734 4739 module isn't working on my system. So I made a tar version
4735 4740 (hopefully the command line options in various systems won't kill
4736 4741 me).
4737 4742
4738 4743 * Fixes to Struct in genutils. Now all dictionary-like methods are
4739 4744 protected (reasonably).
4740 4745
4741 4746 * Added pager function to genutils and changed ? to print usage
4742 4747 note through it (it was too long).
4743 4748
4744 4749 * Added the LazyPython functionality. Works great! I changed the
4745 4750 auto-quote escape to ';', it's on home row and next to '. But
4746 4751 both auto-quote and auto-paren (still /) escapes are command-line
4747 4752 parameters.
4748 4753
4749 4754
4750 4755 2001-11-01 Fernando Perez <fperez@colorado.edu>
4751 4756
4752 4757 * Version changed to 0.0.7. Fairly large change: configuration now
4753 4758 is all stored in a directory, by default .ipython. There, all
4754 4759 config files have normal looking names (not .names)
4755 4760
4756 4761 * Version 0.0.6 Released first to Lucas and Archie as a test
4757 4762 run. Since it's the first 'semi-public' release, change version to
4758 4763 > 0.0.6 for any changes now.
4759 4764
4760 4765 * Stuff I had put in the ipplib.py changelog:
4761 4766
4762 4767 Changes to InteractiveShell:
4763 4768
4764 4769 - Made the usage message a parameter.
4765 4770
4766 4771 - Require the name of the shell variable to be given. It's a bit
4767 4772 of a hack, but allows the name 'shell' not to be hardwire in the
4768 4773 magic (@) handler, which is problematic b/c it requires
4769 4774 polluting the global namespace with 'shell'. This in turn is
4770 4775 fragile: if a user redefines a variable called shell, things
4771 4776 break.
4772 4777
4773 4778 - magic @: all functions available through @ need to be defined
4774 4779 as magic_<name>, even though they can be called simply as
4775 4780 @<name>. This allows the special command @magic to gather
4776 4781 information automatically about all existing magic functions,
4777 4782 even if they are run-time user extensions, by parsing the shell
4778 4783 instance __dict__ looking for special magic_ names.
4779 4784
4780 4785 - mainloop: added *two* local namespace parameters. This allows
4781 4786 the class to differentiate between parameters which were there
4782 4787 before and after command line initialization was processed. This
4783 4788 way, later @who can show things loaded at startup by the
4784 4789 user. This trick was necessary to make session saving/reloading
4785 4790 really work: ideally after saving/exiting/reloading a session,
4786 4791 *everythin* should look the same, including the output of @who. I
4787 4792 was only able to make this work with this double namespace
4788 4793 trick.
4789 4794
4790 4795 - added a header to the logfile which allows (almost) full
4791 4796 session restoring.
4792 4797
4793 4798 - prepend lines beginning with @ or !, with a and log
4794 4799 them. Why? !lines: may be useful to know what you did @lines:
4795 4800 they may affect session state. So when restoring a session, at
4796 4801 least inform the user of their presence. I couldn't quite get
4797 4802 them to properly re-execute, but at least the user is warned.
4798 4803
4799 4804 * Started ChangeLog.
@@ -1,9259 +1,9307 b''
1 1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 2 \lyxformat 221
3 3 \textclass article
4 4 \begin_preamble
5 5 %\usepackage{ae,aecompl}
6 6 \usepackage{color}
7 7
8 8 % A few colors to replace the defaults for certain link types
9 9 \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
10 10 \definecolor{darkorange}{rgb}{.71,0.21,0.01}
11 11 \definecolor{darkred}{rgb}{.52,0.08,0.01}
12 12 \definecolor{darkgreen}{rgb}{.12,.54,.11}
13 13
14 14 % Use and configure listings package for nicely formatted code
15 15 \usepackage{listings}
16 16 \lstset{
17 17 language=Python,
18 18 basicstyle=\small\ttfamily,
19 19 commentstyle=\ttfamily\color{blue},
20 20 stringstyle=\ttfamily\color{darkorange},
21 21 showstringspaces=false,
22 22 breaklines=true,
23 23 postbreak = \space\dots
24 24 }
25 25
26 26 \usepackage[%pdftex, % needed for pdflatex
27 27 breaklinks=true, % so long urls are correctly broken across lines
28 28 colorlinks=true,
29 29 urlcolor=blue,
30 30 linkcolor=darkred,
31 31 citecolor=darkgreen,
32 32 ]{hyperref}
33 33
34 34 \usepackage{html}
35 35
36 36 % This helps prevent overly long lines that stretch beyond the margins
37 37 \sloppy
38 38
39 39 % Define a \codelist command which either uses listings for latex, or
40 40 % plain verbatim for html (since latex2html doesn't understand the
41 41 % listings package).
42 42 \usepackage{verbatim}
43 43 \newcommand{\codelist}[1] {
44 44 \latex{\lstinputlisting{#1}}
45 45 \html{\verbatiminput{#1}}
46 46 }
47 47 \end_preamble
48 48 \language english
49 49 \inputencoding latin1
50 50 \fontscheme palatino
51 51 \graphics default
52 52 \paperfontsize 10
53 53 \spacing single
54 54 \papersize Default
55 55 \paperpackage a4
56 56 \use_geometry 1
57 57 \use_amsmath 0
58 58 \use_natbib 0
59 59 \use_numerical_citations 0
60 60 \paperorientation portrait
61 61 \leftmargin 1.1in
62 62 \topmargin 1in
63 63 \rightmargin 1.1in
64 64 \bottommargin 1in
65 65 \secnumdepth 3
66 66 \tocdepth 3
67 67 \paragraph_separation skip
68 68 \defskip medskip
69 69 \quotes_language english
70 70 \quotes_times 2
71 71 \papercolumns 1
72 72 \papersides 1
73 73 \paperpagestyle fancy
74 74
75 75 \layout Title
76 76
77 77 IPython
78 78 \newline
79 79
80 80 \size larger
81 81 An enhanced Interactive Python
82 82 \size large
83 83
84 84 \newline
85 85 User Manual, v.
86 86 __version__
87 87 \layout Author
88 88
89 89 Fernando P�rez
90 90 \layout Standard
91 91
92 92
93 93 \begin_inset ERT
94 94 status Collapsed
95 95
96 96 \layout Standard
97 97
98 98 \backslash
99 99 latex{
100 100 \end_inset
101 101
102 102
103 103 \begin_inset LatexCommand \tableofcontents{}
104 104
105 105 \end_inset
106 106
107 107
108 108 \begin_inset ERT
109 109 status Collapsed
110 110
111 111 \layout Standard
112 112 }
113 113 \end_inset
114 114
115 115
116 116 \layout Standard
117 117
118 118
119 119 \begin_inset ERT
120 120 status Open
121 121
122 122 \layout Standard
123 123
124 124 \backslash
125 125 html{
126 126 \backslash
127 127 bodytext{bgcolor=#ffffff}}
128 128 \end_inset
129 129
130 130
131 131 \layout Section
132 132 \pagebreak_top
133 133 Overview
134 134 \layout Standard
135 135
136 136 One of Python's most useful features is its interactive interpreter.
137 137 This system allows very fast testing of ideas without the overhead of creating
138 138 test files as is typical in most programming languages.
139 139 However, the interpreter supplied with the standard Python distribution
140 140 is somewhat limited for extended interactive use.
141 141 \layout Standard
142 142
143 143 IPython is a free software project (released under the BSD license) which
144 144 tries to:
145 145 \layout Enumerate
146 146
147 147 Provide an interactive shell superior to Python's default.
148 148 IPython has many features for object introspection, system shell access,
149 149 and its own special command system for adding functionality when working
150 150 interactively.
151 151 It tries to be a very efficient environment both for Python code development
152 152 and for exploration of problems using Python objects (in situations like
153 153 data analysis).
154 154 \layout Enumerate
155 155
156 156 Serve as an embeddable, ready to use interpreter for your own programs.
157 157 IPython can be started with a single call from inside another program,
158 158 providing access to the current namespace.
159 159 This can be very useful both for debugging purposes and for situations
160 160 where a blend of batch-processing and interactive exploration are needed.
161 161 \layout Enumerate
162 162
163 163 Offer a flexible framework which can be used as the base environment for
164 164 other systems with Python as the underlying language.
165 165 Specifically scientific environments like Mathematica, IDL and Matlab inspired
166 166 its design, but similar ideas can be useful in many fields.
167 167 \layout Enumerate
168 168
169 169 Allow interactive testing of threaded graphical toolkits.
170 170 IPython has support for interactive, non-blocking control of GTK, Qt and
171 171 WX applications via special threading flags.
172 172 The normal Python shell can only do this for Tkinter applications.
173 173 \layout Subsection
174 174
175 175 Main features
176 176 \layout Itemize
177 177
178 178 Dynamic object introspection.
179 179 One can access docstrings, function definition prototypes, source code,
180 180 source files and other details of any object accessible to the interpreter
181 181 with a single keystroke (`
182 182 \family typewriter
183 183 ?
184 184 \family default
185 185 ', and using `
186 186 \family typewriter
187 187 ??
188 188 \family default
189 189 ' provides additional detail).
190 190 \layout Itemize
191 191
192 192 Searching through modules and namespaces with `
193 193 \family typewriter
194 194 *
195 195 \family default
196 196 ' wildcards, both when using the `
197 197 \family typewriter
198 198 ?
199 199 \family default
200 200 ' system and via the
201 201 \family typewriter
202 202 %psearch
203 203 \family default
204 204 command.
205 205 \layout Itemize
206 206
207 207 Completion in the local namespace, by typing TAB at the prompt.
208 208 This works for keywords, methods, variables and files in the current directory.
209 209 This is supported via the readline library, and full access to configuring
210 210 readline's behavior is provided.
211 211 \layout Itemize
212 212
213 213 Numbered input/output prompts with command history (persistent across sessions
214 214 and tied to each profile), full searching in this history and caching of
215 215 all input and output.
216 216 \layout Itemize
217 217
218 218 User-extensible `magic' commands.
219 219 A set of commands prefixed with
220 220 \family typewriter
221 221 %
222 222 \family default
223 223 is available for controlling IPython itself and provides directory control,
224 224 namespace information and many aliases to common system shell commands.
225 225 \layout Itemize
226 226
227 227 Alias facility for defining your own system aliases.
228 228 \layout Itemize
229 229
230 230 Complete system shell access.
231 231 Lines starting with ! are passed directly to the system shell, and using
232 232 !! captures shell output into python variables for further use.
233 233 \layout Itemize
234 234
235 235 Background execution of Python commands in a separate thread.
236 236 IPython has an internal job manager called
237 237 \family typewriter
238 238 jobs
239 239 \family default
240 240 , and a conveninence backgrounding magic function called
241 241 \family typewriter
242 242 %bg
243 243 \family default
244 244 .
245 245 \layout Itemize
246 246
247 247 The ability to expand python variables when calling the system shell.
248 248 In a shell command, any python variable prefixed with
249 249 \family typewriter
250 250 $
251 251 \family default
252 252 is expanded.
253 253 A double
254 254 \family typewriter
255 255 $$
256 256 \family default
257 257 allows passing a literal
258 258 \family typewriter
259 259 $
260 260 \family default
261 261 to the shell (for access to shell and environment variables like
262 262 \family typewriter
263 263 $PATH
264 264 \family default
265 265 ).
266 266 \layout Itemize
267 267
268 268 Filesystem navigation, via a magic
269 269 \family typewriter
270 270 %cd
271 271 \family default
272 272 command, along with a persistent bookmark system (using
273 273 \family typewriter
274 274 %bookmark
275 275 \family default
276 276 ) for fast access to frequently visited directories.
277 277 \layout Itemize
278 278
279 279 A lightweight persistence framework via the
280 280 \family typewriter
281 281 %store
282 282 \family default
283 283 command, which allows you to save arbitrary Python variables.
284 284 These get restored automatically when your session restarts.
285 285 \layout Itemize
286 286
287 287 Automatic indentation (optional) of code as you type (through the readline
288 288 library).
289 289 \layout Itemize
290 290
291 291 Macro system for quickly re-executing multiple lines of previous input with
292 292 a single name.
293 293 Macros can be stored persistently via
294 294 \family typewriter
295 295 %store
296 296 \family default
297 297 and edited via
298 298 \family typewriter
299 299 %edit
300 300 \family default
301 301 .
302 302
303 303 \layout Itemize
304 304
305 305 Session logging (you can then later use these logs as code in your programs).
306 306 Logs can optionally timestamp all input, and also store session output
307 307 (marked as comments, so the log remains valid Python source code).
308 308 \layout Itemize
309 309
310 310 Session restoring: logs can be replayed to restore a previous session to
311 311 the state where you left it.
312 312 \layout Itemize
313 313
314 314 Verbose and colored exception traceback printouts.
315 315 Easier to parse visually, and in verbose mode they produce a lot of useful
316 316 debugging information (basically a terminal version of the cgitb module).
317 317 \layout Itemize
318 318
319 319 Auto-parentheses: callable objects can be executed without parentheses:
320 320
321 321 \family typewriter
322 322 `sin 3'
323 323 \family default
324 324 is automatically converted to
325 325 \family typewriter
326 326 `sin(3)
327 327 \family default
328 328 '.
329 329 \layout Itemize
330 330
331 331 Auto-quoting: using `
332 332 \family typewriter
333 333 ,
334 334 \family default
335 335 ' or `
336 336 \family typewriter
337 337 ;
338 338 \family default
339 339 ' as the first character forces auto-quoting of the rest of the line:
340 340 \family typewriter
341 341 `,my_function a\SpecialChar ~
342 342 b'
343 343 \family default
344 344 becomes automatically
345 345 \family typewriter
346 346 `my_function("a","b")'
347 347 \family default
348 348 , while
349 349 \family typewriter
350 350 `;my_function a\SpecialChar ~
351 351 b'
352 352 \family default
353 353 becomes
354 354 \family typewriter
355 355 `my_function("a b")'
356 356 \family default
357 357 .
358 358 \layout Itemize
359 359
360 360 Extensible input syntax.
361 361 You can define filters that pre-process user input to simplify input in
362 362 special situations.
363 363 This allows for example pasting multi-line code fragments which start with
364 364
365 365 \family typewriter
366 366 `>>>'
367 367 \family default
368 368 or
369 369 \family typewriter
370 370 `...'
371 371 \family default
372 372 such as those from other python sessions or the standard Python documentation.
373 373 \layout Itemize
374 374
375 375 Flexible configuration system.
376 376 It uses a configuration file which allows permanent setting of all command-line
377 377 options, module loading, code and file execution.
378 378 The system allows recursive file inclusion, so you can have a base file
379 379 with defaults and layers which load other customizations for particular
380 380 projects.
381 381 \layout Itemize
382 382
383 383 Embeddable.
384 384 You can call IPython as a python shell inside your own python programs.
385 385 This can be used both for debugging code or for providing interactive abilities
386 386 to your programs with knowledge about the local namespaces (very useful
387 387 in debugging and data analysis situations).
388 388 \layout Itemize
389 389
390 390 Easy debugger access.
391 391 You can set IPython to call up an enhanced version of the Python debugger
392 392 (
393 393 \family typewriter
394 394 pdb
395 395 \family default
396 396 ) every time there is an uncaught exception.
397 397 This drops you inside the code which triggered the exception with all the
398 398 data live and it is possible to navigate the stack to rapidly isolate the
399 399 source of a bug.
400 400 The
401 401 \family typewriter
402 402 %run
403 403 \family default
404 404 magic command --with the
405 405 \family typewriter
406 406 -d
407 407 \family default
408 408 option-- can run any script under
409 409 \family typewriter
410 410 pdb
411 411 \family default
412 412 's control, automatically setting initial breakpoints for you.
413 413 This version of
414 414 \family typewriter
415 415 pdb
416 416 \family default
417 417 has IPython-specific improvements, including tab-completion and traceback
418 418 coloring support.
419 419 \layout Itemize
420 420
421 421 Profiler support.
422 422 You can run single statements (similar to
423 423 \family typewriter
424 424 profile.run()
425 425 \family default
426 426 ) or complete programs under the profiler's control.
427 427 While this is possible with the standard
428 428 \family typewriter
429 429 profile
430 430 \family default
431 431 module, IPython wraps this functionality with magic commands (see
432 432 \family typewriter
433 433 `%prun'
434 434 \family default
435 435 and
436 436 \family typewriter
437 437 `%run -p
438 438 \family default
439 439 ') convenient for rapid interactive work.
440 440 \layout Subsection
441 441
442 442 Portability and Python requirements
443 443 \layout Standard
444 444
445 445
446 446 \series bold
447 447 Python requirements:
448 448 \series default
449 449 IPython requires with Python version 2.3 or newer.
450 450 If you are still using Python 2.2 and can not upgrade, the last version
451 451 of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
452 452 that.
453 453 \layout Standard
454 454
455 455 IPython is developed under
456 456 \series bold
457 457 Linux
458 458 \series default
459 459 , but it should work in any reasonable Unix-type system (tested OK under
460 460 Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
461 461 \layout Standard
462 462
463 463
464 464 \series bold
465 465 Mac OS X
466 466 \series default
467 467 : it works, apparently without any problems (thanks to Jim Boyle at Lawrence
468 468 Livermore for the information).
469 469 Thanks to Andrea Riciputi, Fink support is available.
470 470 \layout Standard
471 471
472 472
473 473 \series bold
474 474 CygWin
475 475 \series default
476 476 : it works mostly OK, though some users have reported problems with prompt
477 477 coloring.
478 478 No satisfactory solution to this has been found so far, you may want to
479 479 disable colors permanently in the
480 480 \family typewriter
481 481 ipythonrc
482 482 \family default
483 483 configuration file if you experience problems.
484 484 If you have proper color support under cygwin, please post to the IPython
485 485 mailing list so this issue can be resolved for all users.
486 486 \layout Standard
487 487
488 488
489 489 \series bold
490 490 Windows
491 491 \series default
492 492 : it works well under Windows XP/2k, and I suspect NT should behave similarly.
493 493 Section\SpecialChar ~
494 494
495 495 \begin_inset LatexCommand \ref{sub:Under-Windows}
496 496
497 497 \end_inset
498 498
499 499 describes installation details for Windows, including some additional tools
500 500 needed on this platform.
501 501 \layout Standard
502 502
503 503 Windows 9x support is present, and has been reported to work fine (at least
504 504 on WinME).
505 505 \layout Standard
506 506
507 507 Note, that I have very little access to and experience with Windows development.
508 508 However, an excellent group of Win32 users (led by Ville Vainio), consistenly
509 509 contribute bugfixes and platform-specific enhancements, so they more than
510 510 make up for my deficiencies on that front.
511 511 In fact, Win32 users report using IPython as a system shell (see Sec.\SpecialChar ~
512 512
513 513 \begin_inset LatexCommand \ref{sec:IPython-as-shell}
514 514
515 515 \end_inset
516 516
517 517 for details), as it offers a level of control and features which the default
518 518
519 519 \family typewriter
520 520 cmd.exe
521 521 \family default
522 522 doesn't provide.
523 523 \layout Subsection
524 524
525 525 Location
526 526 \layout Standard
527 527
528 528 IPython is generously hosted at
529 529 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
530 530
531 531 \end_inset
532 532
533 533 by the Enthought, Inc and the SciPy project.
534 534 This site offers downloads, subversion access, mailing lists and a bug
535 535 tracking system.
536 536 I am very grateful to Enthought (
537 537 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
538 538
539 539 \end_inset
540 540
541 541 ) and all of the SciPy team for their contribution.
542 542 \layout Section
543 543
544 544
545 545 \begin_inset LatexCommand \label{sec:install}
546 546
547 547 \end_inset
548 548
549 549 Installation
550 550 \layout Subsection
551 551
552 552 Instant instructions
553 553 \layout Standard
554 554
555 555 If you are of the impatient kind, under Linux/Unix simply untar/unzip the
556 556 download, then install with
557 557 \family typewriter
558 558 `python setup.py install'
559 559 \family default
560 560 .
561 561 Under Windows, double-click on the provided
562 562 \family typewriter
563 563 .exe
564 564 \family default
565 565 binary installer.
566 566 \layout Standard
567 567
568 568 Then, take a look at Sections
569 569 \begin_inset LatexCommand \ref{sec:good_config}
570 570
571 571 \end_inset
572 572
573 573 for configuring things optimally and
574 574 \begin_inset LatexCommand \ref{sec:quick_tips}
575 575
576 576 \end_inset
577 577
578 578 for quick tips on efficient use of IPython.
579 579 You can later refer to the rest of the manual for all the gory details.
580 580 \layout Standard
581 581
582 582 See the notes in sec.
583 583
584 584 \begin_inset LatexCommand \ref{sec:upgrade}
585 585
586 586 \end_inset
587 587
588 588 for upgrading IPython versions.
589 589 \layout Subsection
590 590
591 591 Detailed Unix instructions (Linux, Mac OS X, etc.)
592 592 \layout Standard
593 593
594 594 For RPM based systems, simply install the supplied package in the usual
595 595 manner.
596 596 If you download the tar archive, the process is:
597 597 \layout Enumerate
598 598
599 599 Unzip/untar the
600 600 \family typewriter
601 601 ipython-XXX.tar.gz
602 602 \family default
603 603 file wherever you want (
604 604 \family typewriter
605 605 XXX
606 606 \family default
607 607 is the version number).
608 608 It will make a directory called
609 609 \family typewriter
610 610 ipython-XXX.
611 611
612 612 \family default
613 613 Change into that directory where you will find the files
614 614 \family typewriter
615 615 README
616 616 \family default
617 617 and
618 618 \family typewriter
619 619 setup.py
620 620 \family default
621 621 .
622 622
623 623 \family typewriter
624 624 O
625 625 \family default
626 626 nce you've completed the installation, you can safely remove this directory.
627 627
628 628 \layout Enumerate
629 629
630 630 If you are installing over a previous installation of version 0.2.0 or earlier,
631 631 first remove your
632 632 \family typewriter
633 633 $HOME/.ipython
634 634 \family default
635 635 directory, since the configuration file format has changed somewhat (the
636 636 '=' were removed from all option specifications).
637 637 Or you can call ipython with the
638 638 \family typewriter
639 639 -upgrade
640 640 \family default
641 641 option and it will do this automatically for you.
642 642 \layout Enumerate
643 643
644 644 IPython uses distutils, so you can install it by simply typing at the system
645 645 prompt (don't type the
646 646 \family typewriter
647 647 $
648 648 \family default
649 649 )
650 650 \newline
651 651
652 652 \family typewriter
653 653 $ python setup.py install
654 654 \family default
655 655
656 656 \newline
657 657 Note that this assumes you have root access to your machine.
658 658 If you don't have root access or don't want IPython to go in the default
659 659 python directories, you'll need to use the
660 660 \begin_inset ERT
661 661 status Collapsed
662 662
663 663 \layout Standard
664 664
665 665 \backslash
666 666 verb|--home|
667 667 \end_inset
668 668
669 669 option (or
670 670 \begin_inset ERT
671 671 status Collapsed
672 672
673 673 \layout Standard
674 674
675 675 \backslash
676 676 verb|--prefix|
677 677 \end_inset
678 678
679 679 ).
680 680 For example:
681 681 \newline
682 682
683 683 \begin_inset ERT
684 684 status Collapsed
685 685
686 686 \layout Standard
687 687
688 688 \backslash
689 689 verb|$ python setup.py install --home $HOME/local|
690 690 \end_inset
691 691
692 692
693 693 \newline
694 694 will install IPython into
695 695 \family typewriter
696 696 $HOME/local
697 697 \family default
698 698 and its subdirectories (creating them if necessary).
699 699 \newline
700 700 You can type
701 701 \newline
702 702
703 703 \begin_inset ERT
704 704 status Collapsed
705 705
706 706 \layout Standard
707 707
708 708 \backslash
709 709 verb|$ python setup.py --help|
710 710 \end_inset
711 711
712 712
713 713 \newline
714 714 for more details.
715 715 \newline
716 716 Note that if you change the default location for
717 717 \begin_inset ERT
718 718 status Collapsed
719 719
720 720 \layout Standard
721 721
722 722 \backslash
723 723 verb|--home|
724 724 \end_inset
725 725
726 726 at installation, IPython may end up installed at a location which is not
727 727 part of your
728 728 \family typewriter
729 729 $PYTHONPATH
730 730 \family default
731 731 environment variable.
732 732 In this case, you'll need to configure this variable to include the actual
733 733 directory where the
734 734 \family typewriter
735 735 IPython/
736 736 \family default
737 737 directory ended (typically the value you give to
738 738 \begin_inset ERT
739 739 status Collapsed
740 740
741 741 \layout Standard
742 742
743 743 \backslash
744 744 verb|--home|
745 745 \end_inset
746 746
747 747 plus
748 748 \family typewriter
749 749 /lib/python
750 750 \family default
751 751 ).
752 752 \layout Subsubsection
753 753
754 754 Mac OSX information
755 755 \layout Standard
756 756
757 757 Under OSX, there is a choice you need to make.
758 758 Apple ships its own build of Python, which lives in the core OSX filesystem
759 759 hierarchy.
760 760 You can also manually install a separate Python, either purely by hand
761 761 (typically in
762 762 \family typewriter
763 763 /usr/local
764 764 \family default
765 765 ) or by using Fink, which puts everything under
766 766 \family typewriter
767 767 /sw
768 768 \family default
769 769 .
770 770 Which route to follow is a matter of personal preference, as I've seen
771 771 users who favor each of the approaches.
772 772 Here I will simply list the known installation issues under OSX, along
773 773 with their solutions.
774 774 \layout Standard
775 775
776 776 This page:
777 777 \begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
778 778
779 779 \end_inset
780 780
781 781 contains information on this topic, with additional details on how to make
782 782 IPython and matplotlib play nicely under OSX.
783 783 \layout Subsubsection*
784 784
785 785 GUI problems
786 786 \layout Standard
787 787
788 788 The following instructions apply to an install of IPython under OSX from
789 789 unpacking the
790 790 \family typewriter
791 791 .tar.gz
792 792 \family default
793 793 distribution and installing it for the default Python interpreter shipped
794 794 by Apple.
795 795 If you are using a fink install, fink will take care of these details for
796 796 you, by installing IPython against fink's Python.
797 797 \layout Standard
798 798
799 799 IPython offers various forms of support for interacting with graphical applicati
800 800 ons from the command line, from simple Tk apps (which are in principle always
801 801 supported by Python) to interactive control of WX, Qt and GTK apps.
802 802 Under OSX, however, this requires that ipython is installed by calling
803 803 the special
804 804 \family typewriter
805 805 pythonw
806 806 \family default
807 807 script at installation time, which takes care of coordinating things with
808 808 Apple's graphical environment.
809 809 \layout Standard
810 810
811 811 So when installing under OSX, it is best to use the following command:
812 812 \family typewriter
813 813
814 814 \newline
815 815
816 816 \family default
817 817
818 818 \begin_inset ERT
819 819 status Collapsed
820 820
821 821 \layout Standard
822 822
823 823 \backslash
824 824 verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
825 825 \end_inset
826 826
827 827
828 828 \newline
829 829 or
830 830 \newline
831 831
832 832 \begin_inset ERT
833 status Open
833 status Collapsed
834 834
835 835 \layout Standard
836 836
837 837 \backslash
838 838 verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
839 839 \end_inset
840 840
841 841
842 842 \newline
843 843 depending on where you like to keep hand-installed executables.
844 844 \layout Standard
845 845
846 846 The resulting script will have an appropriate shebang line (the first line
847 847 in the script whic begins with
848 848 \family typewriter
849 849 #!...
850 850 \family default
851 851 ) such that the ipython interpreter can interact with the OS X GUI.
852 852 If the installed version does not work and has a shebang line that points
853 853 to, for example, just
854 854 \family typewriter
855 855 /usr/bin/python
856 856 \family default
857 857 , then you might have a stale, cached version in your
858 858 \family typewriter
859 859 build/scripts-<python-version>
860 860 \family default
861 861 directory.
862 862 Delete that directory and rerun the
863 863 \family typewriter
864 864 setup.py
865 865 \family default
866 866 .
867 867
868 868 \layout Standard
869 869
870 870 It is also a good idea to use the special flag
871 871 \begin_inset ERT
872 872 status Collapsed
873 873
874 874 \layout Standard
875 875
876 876 \backslash
877 877 verb|--install-scripts|
878 878 \end_inset
879 879
880 880 as indicated above, to ensure that the ipython scripts end up in a location
881 881 which is part of your
882 882 \family typewriter
883 883 $PATH
884 884 \family default
885 885 .
886 886 Otherwise Apple's Python will put the scripts in an internal directory
887 887 not available by default at the command line (if you use
888 888 \family typewriter
889 889 /usr/local/bin
890 890 \family default
891 891 , you need to make sure this is in your
892 892 \family typewriter
893 893 $PATH
894 894 \family default
895 895 , which may not be true by default).
896 896 \layout Subsubsection*
897 897
898 898 Readline problems
899 899 \layout Standard
900 900
901 901 By default, the Python version shipped by Apple does
902 902 \emph on
903 903 not
904 904 \emph default
905 905 include the readline library, so central to IPython's behavior.
906 906 If you install IPython against Apple's Python, you will not have arrow
907 907 keys, tab completion, etc.
908 908 For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
909 909 \newline
910 910
911 911 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
912 912
913 913 \end_inset
914 914
915 915
916 916 \layout Standard
917 917
918 918 If you are using OSX 10.4 (Tiger), after installing this package you need
919 919 to either:
920 920 \layout Enumerate
921 921
922 922 move
923 923 \family typewriter
924 924 readline.so
925 925 \family default
926 926 from
927 927 \family typewriter
928 928 /Library/Python/2.3
929 929 \family default
930 930 to
931 931 \family typewriter
932 932 /Library/Python/2.3/site-packages
933 933 \family default
934 934 , or
935 935 \layout Enumerate
936 936
937 937 install
938 938 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
939 939
940 940 \end_inset
941 941
942 942
943 943 \layout Standard
944 944
945 945 Users installing against Fink's Python or a properly hand-built one should
946 946 not have this problem.
947 947 \layout Subsubsection*
948 948
949 949 DarwinPorts
950 950 \layout Standard
951 951
952 952 I report here a message from an OSX user, who suggests an alternative means
953 953 of using IPython under this operating system with good results.
954 954 Please let me know of any updates that may be useful for this section.
955 955 His message is reproduced verbatim below:
956 956 \layout Quote
957 957
958 958 From: Markus Banfi
959 959 \family typewriter
960 960 <markus.banfi-AT-mospheira.net>
961 961 \layout Quote
962 962
963 963 As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
964 964 of Fink.
965 965 I had no problems installing ipython with DarwinPorts.
966 966 It's just:
967 967 \layout Quote
968 968
969 969
970 970 \family typewriter
971 971 sudo port install py-ipython
972 972 \layout Quote
973 973
974 974 It automatically resolved all dependencies (python24, readline, py-readline).
975 975 So far I did not encounter any problems with the DarwinPorts port of ipython.
976 976
977 977 \layout Subsection
978 978
979 979
980 980 \begin_inset LatexCommand \label{sub:Under-Windows}
981 981
982 982 \end_inset
983 983
984 984 Windows instructions
985 985 \layout Standard
986 986
987 987 Some of IPython's very useful features are:
988 988 \layout Itemize
989 989
990 990 Integrated readline support (Tab-based file, object and attribute completion,
991 991 input history across sessions, editable command line, etc.)
992 992 \layout Itemize
993 993
994 994 Coloring of prompts, code and tracebacks.
995 995 \layout Standard
996 996
997 997 These, by default, are only available under Unix-like operating systems.
998 998 However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
999 999 from them.
1000 1000 His readline library implements both GNU readline functionality and color
1001 1001 support, so that IPython under Windows XP/2k can be as friendly and powerful
1002 1002 as under Unix-like environments.
1003 1003 \layout Standard
1004 1004
1005 1005 The
1006 1006 \family typewriter
1007 1007 readline
1008 1008 \family default
1009 1009 extension needs two other libraries to work, so in all you need:
1010 1010 \layout Enumerate
1011 1011
1012 1012
1013 1013 \family typewriter
1014 1014 PyWin32
1015 1015 \family default
1016 1016 from
1017 1017 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond}
1018 1018
1019 1019 \end_inset
1020 1020
1021 1021 .
1022 1022 \layout Enumerate
1023 1023
1024 1024
1025 1025 \family typewriter
1026 1026 CTypes
1027 1027 \family default
1028 1028 from
1029 1029 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1030 1030
1031 1031 \end_inset
1032 1032
1033 1033 (you
1034 1034 \emph on
1035 1035 must
1036 1036 \emph default
1037 1037 use version 0.9.1 or newer).
1038 1038 \layout Enumerate
1039 1039
1040 1040
1041 1041 \family typewriter
1042 1042 Readline
1043 1043 \family default
1044 1044 for Windows from
1045 1045 \begin_inset LatexCommand \htmlurl{http://sourceforge.net/projects/uncpythontools}
1046 1046
1047 1047 \end_inset
1048 1048
1049 1049 .
1050 1050 \layout Standard
1051 1051
1052 1052
1053 1053 \series bold
1054 1054 Warning about a broken readline-like library:
1055 1055 \series default
1056 1056 several users have reported problems stemming from using the pseudo-readline
1057 1057 library at
1058 1058 \begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
1059 1059
1060 1060 \end_inset
1061 1061
1062 1062 .
1063 1063 This is a broken library which, while called readline, only implements
1064 1064 an incomplete subset of the readline API.
1065 1065 Since it is still called readline, it fools IPython's detection mechanisms
1066 1066 and causes unpredictable crashes later.
1067 1067 If you wish to use IPython under Windows, you must NOT use this library,
1068 1068 which for all purposes is (at least as of version 1.6) terminally broken.
1069 1069 \layout Subsubsection
1070 1070
1071 1071 Installation procedure
1072 1072 \layout Standard
1073 1073
1074 1074 Once you have the above installed, from the IPython download directory grab
1075 1075 the
1076 1076 \family typewriter
1077 1077 ipython-XXX.win32.exe
1078 1078 \family default
1079 1079 file, where
1080 1080 \family typewriter
1081 1081 XXX
1082 1082 \family default
1083 1083 represents the version number.
1084 1084 This is a regular windows executable installer, which you can simply double-cli
1085 1085 ck to install.
1086 1086 It will add an entry for IPython to your Start Menu, as well as registering
1087 1087 IPython in the Windows list of applications, so you can later uninstall
1088 1088 it from the Control Panel.
1089 1089
1090 1090 \layout Standard
1091 1091
1092 1092 IPython tries to install the configuration information in a directory named
1093 1093
1094 1094 \family typewriter
1095 1095 .ipython
1096 1096 \family default
1097 1097 (
1098 1098 \family typewriter
1099 1099 _ipython
1100 1100 \family default
1101 1101 under Windows) located in your `home' directory.
1102 1102 IPython sets this directory by looking for a
1103 1103 \family typewriter
1104 1104 HOME
1105 1105 \family default
1106 1106 environment variable; if such a variable does not exist, it uses
1107 1107 \family typewriter
1108 1108 HOMEDRIVE
1109 1109 \backslash
1110 1110 HOMEPATH
1111 1111 \family default
1112 1112 (these are always defined by Windows).
1113 1113 This typically gives something like
1114 1114 \family typewriter
1115 1115 C:
1116 1116 \backslash
1117 1117 Documents and Settings
1118 1118 \backslash
1119 1119 YourUserName
1120 1120 \family default
1121 1121 , but your local details may vary.
1122 1122 In this directory you will find all the files that configure IPython's
1123 1123 defaults, and you can put there your profiles and extensions.
1124 1124 This directory is automatically added by IPython to
1125 1125 \family typewriter
1126 1126 sys.path
1127 1127 \family default
1128 1128 , so anything you place there can be found by
1129 1129 \family typewriter
1130 1130 import
1131 1131 \family default
1132 1132 statements.
1133 1133 \layout Paragraph
1134 1134
1135 1135 Upgrading
1136 1136 \layout Standard
1137 1137
1138 1138 For an IPython upgrade, you should first uninstall the previous version.
1139 1139 This will ensure that all files and directories (such as the documentation)
1140 1140 which carry embedded version strings in their names are properly removed.
1141 1141 \layout Paragraph
1142 1142
1143 1143 Manual installation under Win32
1144 1144 \layout Standard
1145 1145
1146 1146 In case the automatic installer does not work for some reason, you can download
1147 1147 the
1148 1148 \family typewriter
1149 1149 ipython-XXX.tar.gz
1150 1150 \family default
1151 1151 file, which contains the full IPython source distribution (the popular
1152 1152 WinZip can read
1153 1153 \family typewriter
1154 1154 .tar.gz
1155 1155 \family default
1156 1156 files).
1157 1157 After uncompressing the archive, you can install it at a command terminal
1158 1158 just like any other Python module, by using
1159 1159 \family typewriter
1160 1160 `python setup.py install'
1161 1161 \family default
1162 1162 .
1163 1163
1164 1164 \layout Standard
1165 1165
1166 1166 After the installation, run the supplied
1167 1167 \family typewriter
1168 1168 win32_manual_post_install.py
1169 1169 \family default
1170 1170 script, which creates the necessary Start Menu shortcuts for you.
1171 1171 \layout Subsection
1172 1172
1173 1173
1174 1174 \begin_inset LatexCommand \label{sec:upgrade}
1175 1175
1176 1176 \end_inset
1177 1177
1178 1178 Upgrading from a previous version
1179 1179 \layout Standard
1180 1180
1181 1181 If you are upgrading from a previous version of IPython, after doing the
1182 1182 routine installation described above, you should call IPython with the
1183 1183
1184 1184 \family typewriter
1185 1185 -upgrade
1186 1186 \family default
1187 1187 option the first time you run your new copy.
1188 1188 This will automatically update your configuration directory while preserving
1189 1189 copies of your old files.
1190 1190 You can then later merge back any personal customizations you may have
1191 1191 made into the new files.
1192 1192 It is a good idea to do this as there may be new options available in the
1193 1193 new configuration files which you will not have.
1194 1194 \layout Standard
1195 1195
1196 1196 Under Windows, if you don't know how to call python scripts with arguments
1197 1197 from a command line, simply delete the old config directory and IPython
1198 1198 will make a new one.
1199 1199 Win2k and WinXP users will find it in
1200 1200 \family typewriter
1201 1201 C:
1202 1202 \backslash
1203 1203 Documents and Settings
1204 1204 \backslash
1205 1205 YourUserName
1206 1206 \backslash
1207 1207 _ipython
1208 1208 \family default
1209 1209 , and Win 9x users under
1210 1210 \family typewriter
1211 1211 C:
1212 1212 \backslash
1213 1213 Program Files
1214 1214 \backslash
1215 1215 IPython
1216 1216 \backslash
1217 1217 _ipython.
1218 1218 \layout Section
1219 1219
1220 1220
1221 1221 \begin_inset LatexCommand \label{sec:good_config}
1222 1222
1223 1223 \end_inset
1224 1224
1225 1225
1226 1226 \begin_inset OptArg
1227 1227 collapsed true
1228 1228
1229 1229 \layout Standard
1230 1230
1231 1231 Initial configuration
1232 1232 \begin_inset ERT
1233 1233 status Collapsed
1234 1234
1235 1235 \layout Standard
1236 1236
1237 1237 \backslash
1238 1238 ldots
1239 1239 \end_inset
1240 1240
1241 1241
1242 1242 \end_inset
1243 1243
1244 1244 Initial configuration of your environment
1245 1245 \layout Standard
1246 1246
1247 1247 This section will help you set various things in your environment for your
1248 1248 IPython sessions to be as efficient as possible.
1249 1249 All of IPython's configuration information, along with several example
1250 1250 files, is stored in a directory named by default
1251 1251 \family typewriter
1252 1252 $HOME/.ipython
1253 1253 \family default
1254 1254 .
1255 1255 You can change this by defining the environment variable
1256 1256 \family typewriter
1257 1257 IPYTHONDIR
1258 1258 \family default
1259 1259 , or at runtime with the command line option
1260 1260 \family typewriter
1261 1261 -ipythondir
1262 1262 \family default
1263 1263 .
1264 1264 \layout Standard
1265 1265
1266 1266 If all goes well, the first time you run IPython it should automatically
1267 1267 create a user copy of the config directory for you, based on its builtin
1268 1268 defaults.
1269 1269 You can look at the files it creates to learn more about configuring the
1270 1270 system.
1271 1271 The main file you will modify to configure IPython's behavior is called
1272 1272
1273 1273 \family typewriter
1274 1274 ipythonrc
1275 1275 \family default
1276 1276 (with a
1277 1277 \family typewriter
1278 1278 .ini
1279 1279 \family default
1280 1280 extension under Windows), included for reference in Sec.
1281 1281
1282 1282 \begin_inset LatexCommand \ref{sec:ipytonrc-sample}
1283 1283
1284 1284 \end_inset
1285 1285
1286 1286 .
1287 1287 This file is very commented and has many variables you can change to suit
1288 1288 your taste, you can find more details in Sec.
1289 1289
1290 1290 \begin_inset LatexCommand \ref{sec:customization}
1291 1291
1292 1292 \end_inset
1293 1293
1294 1294 .
1295 1295 Here we discuss the basic things you will want to make sure things are
1296 1296 working properly from the beginning.
1297 1297 \layout Subsection
1298 1298
1299 1299
1300 1300 \begin_inset LatexCommand \label{sec:help-access}
1301 1301
1302 1302 \end_inset
1303 1303
1304 1304 Access to the Python help system
1305 1305 \layout Standard
1306 1306
1307 1307 This is true for Python in general (not just for IPython): you should have
1308 1308 an environment variable called
1309 1309 \family typewriter
1310 1310 PYTHONDOCS
1311 1311 \family default
1312 1312 pointing to the directory where your HTML Python documentation lives.
1313 1313 In my system it's
1314 1314 \family typewriter
1315 1315 /usr/share/doc/python-docs-2.3.4/html
1316 1316 \family default
1317 1317 , check your local details or ask your systems administrator.
1318 1318
1319 1319 \layout Standard
1320 1320
1321 1321 This is the directory which holds the HTML version of the Python manuals.
1322 1322 Unfortunately it seems that different Linux distributions package these
1323 1323 files differently, so you may have to look around a bit.
1324 1324 Below I show the contents of this directory on my system for reference:
1325 1325 \layout Standard
1326 1326
1327 1327
1328 1328 \family typewriter
1329 1329 [html]> ls
1330 1330 \newline
1331 1331 about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat tut/
1332 1332 about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
1333 1333 \layout Standard
1334 1334
1335 1335 You should really make sure this variable is correctly set so that Python's
1336 1336 pydoc-based help system works.
1337 1337 It is a powerful and convenient system with full access to the Python manuals
1338 1338 and all modules accessible to you.
1339 1339 \layout Standard
1340 1340
1341 1341 Under Windows it seems that pydoc finds the documentation automatically,
1342 1342 so no extra setup appears necessary.
1343 1343 \layout Subsection
1344 1344
1345 1345 Editor
1346 1346 \layout Standard
1347 1347
1348 1348 The
1349 1349 \family typewriter
1350 1350 %edit
1351 1351 \family default
1352 1352 command (and its alias
1353 1353 \family typewriter
1354 1354 %ed
1355 1355 \family default
1356 1356 ) will invoke the editor set in your environment as
1357 1357 \family typewriter
1358 1358 EDITOR
1359 1359 \family default
1360 1360 .
1361 1361 If this variable is not set, it will default to
1362 1362 \family typewriter
1363 1363 vi
1364 1364 \family default
1365 1365 under Linux/Unix and to
1366 1366 \family typewriter
1367 1367 notepad
1368 1368 \family default
1369 1369 under Windows.
1370 1370 You may want to set this variable properly and to a lightweight editor
1371 1371 which doesn't take too long to start (that is, something other than a new
1372 1372 instance of
1373 1373 \family typewriter
1374 1374 Emacs
1375 1375 \family default
1376 1376 ).
1377 1377 This way you can edit multi-line code quickly and with the power of a real
1378 1378 editor right inside IPython.
1379 1379
1380 1380 \layout Standard
1381 1381
1382 1382 If you are a dedicated
1383 1383 \family typewriter
1384 1384 Emacs
1385 1385 \family default
1386 1386 user, you should set up the
1387 1387 \family typewriter
1388 1388 Emacs
1389 1389 \family default
1390 1390 server so that new requests are handled by the original process.
1391 1391 This means that almost no time is spent in handling the request (assuming
1392 1392 an
1393 1393 \family typewriter
1394 1394 Emacs
1395 1395 \family default
1396 1396 process is already running).
1397 1397 For this to work, you need to set your
1398 1398 \family typewriter
1399 1399 EDITOR
1400 1400 \family default
1401 1401 environment variable to
1402 1402 \family typewriter
1403 1403 'emacsclient'
1404 1404 \family default
1405 1405 .
1406 1406
1407 1407 \family typewriter
1408 1408
1409 1409 \family default
1410 1410 The code below, supplied by Francois Pinard, can then be used in your
1411 1411 \family typewriter
1412 1412 .emacs
1413 1413 \family default
1414 1414 file to enable the server:
1415 1415 \layout Standard
1416 1416
1417 1417
1418 1418 \family typewriter
1419 1419 (defvar server-buffer-clients)
1420 1420 \newline
1421 1421 (when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
1422 1422 \newline
1423 1423
1424 1424 \begin_inset ERT
1425 1425 status Collapsed
1426 1426
1427 1427 \layout Standard
1428 1428
1429 1429 \backslash
1430 1430 hspace*{0mm}
1431 1431 \end_inset
1432 1432
1433 1433 \SpecialChar ~
1434 1434 \SpecialChar ~
1435 1435 (server-start)
1436 1436 \newline
1437 1437
1438 1438 \begin_inset ERT
1439 1439 status Collapsed
1440 1440
1441 1441 \layout Standard
1442 1442
1443 1443 \backslash
1444 1444 hspace*{0mm}
1445 1445 \end_inset
1446 1446
1447 1447 \SpecialChar ~
1448 1448 \SpecialChar ~
1449 1449 (defun fp-kill-server-with-buffer-routine ()
1450 1450 \newline
1451 1451
1452 1452 \begin_inset ERT
1453 1453 status Collapsed
1454 1454
1455 1455 \layout Standard
1456 1456
1457 1457 \backslash
1458 1458 hspace*{0mm}
1459 1459 \end_inset
1460 1460
1461 1461 \SpecialChar ~
1462 1462 \SpecialChar ~
1463 1463 \SpecialChar ~
1464 1464 \SpecialChar ~
1465 1465 (and server-buffer-clients (server-done)))
1466 1466 \newline
1467 1467
1468 1468 \begin_inset ERT
1469 1469 status Collapsed
1470 1470
1471 1471 \layout Standard
1472 1472
1473 1473 \backslash
1474 1474 hspace*{0mm}
1475 1475 \end_inset
1476 1476
1477 1477 \SpecialChar ~
1478 1478 \SpecialChar ~
1479 1479 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
1480 1480 \layout Standard
1481 1481
1482 1482 You can also set the value of this editor via the commmand-line option '-
1483 1483 \family typewriter
1484 1484 editor'
1485 1485 \family default
1486 1486 or in your
1487 1487 \family typewriter
1488 1488 ipythonrc
1489 1489 \family default
1490 1490 file.
1491 1491 This is useful if you wish to use specifically for IPython an editor different
1492 1492 from your typical default (and for Windows users who tend to use fewer
1493 1493 environment variables).
1494 1494 \layout Subsection
1495 1495
1496 1496 Color
1497 1497 \layout Standard
1498 1498
1499 1499 The default IPython configuration has most bells and whistles turned on
1500 1500 (they're pretty safe).
1501 1501 But there's one that
1502 1502 \emph on
1503 1503 may
1504 1504 \emph default
1505 1505 cause problems on some systems: the use of color on screen for displaying
1506 1506 information.
1507 1507 This is very useful, since IPython can show prompts and exception tracebacks
1508 1508 with various colors, display syntax-highlighted source code, and in general
1509 1509 make it easier to visually parse information.
1510 1510 \layout Standard
1511 1511
1512 1512 The following terminals seem to handle the color sequences fine:
1513 1513 \layout Itemize
1514 1514
1515 1515 Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
1516 1516 \layout Itemize
1517 1517
1518 1518 CDE terminal (tested under Solaris).
1519 1519 This one boldfaces light colors.
1520 1520 \layout Itemize
1521 1521
1522 1522 (X)Emacs buffers.
1523 1523 See sec.
1524 1524 \begin_inset LatexCommand \ref{sec:emacs}
1525 1525
1526 1526 \end_inset
1527 1527
1528 1528 for more details on using IPython with (X)Emacs.
1529 1529 \layout Itemize
1530 1530
1531 1531 A Windows (XP/2k) command prompt
1532 1532 \emph on
1533 1533 with Gary Bishop's support extensions
1534 1534 \emph default
1535 1535 .
1536 1536 Gary's extensions are discussed in Sec.\SpecialChar ~
1537 1537
1538 1538 \begin_inset LatexCommand \ref{sub:Under-Windows}
1539 1539
1540 1540 \end_inset
1541 1541
1542 1542 .
1543 1543 \layout Itemize
1544 1544
1545 1545 A Windows (XP/2k) CygWin shell.
1546 1546 Although some users have reported problems; it is not clear whether there
1547 1547 is an issue for everyone or only under specific configurations.
1548 1548 If you have full color support under cygwin, please post to the IPython
1549 1549 mailing list so this issue can be resolved for all users.
1550 1550 \layout Standard
1551 1551
1552 1552 These have shown problems:
1553 1553 \layout Itemize
1554 1554
1555 1555 Windows command prompt in WinXP/2k logged into a Linux machine via telnet
1556 1556 or ssh.
1557 1557 \layout Itemize
1558 1558
1559 1559 Windows native command prompt in WinXP/2k,
1560 1560 \emph on
1561 1561 without
1562 1562 \emph default
1563 1563 Gary Bishop's extensions.
1564 1564 Once Gary's readline library is installed, the normal WinXP/2k command
1565 1565 prompt works perfectly.
1566 1566 \layout Standard
1567 1567
1568 1568 Currently the following color schemes are available:
1569 1569 \layout Itemize
1570 1570
1571 1571
1572 1572 \family typewriter
1573 1573 NoColor
1574 1574 \family default
1575 1575 : uses no color escapes at all (all escapes are empty
1576 1576 \begin_inset Quotes eld
1577 1577 \end_inset
1578 1578
1579 1579
1580 1580 \begin_inset Quotes eld
1581 1581 \end_inset
1582 1582
1583 1583 strings).
1584 1584 This 'scheme' is thus fully safe to use in any terminal.
1585 1585 \layout Itemize
1586 1586
1587 1587
1588 1588 \family typewriter
1589 1589 Linux
1590 1590 \family default
1591 1591 : works well in Linux console type environments: dark background with light
1592 1592 fonts.
1593 1593 It uses bright colors for information, so it is difficult to read if you
1594 1594 have a light colored background.
1595 1595 \layout Itemize
1596 1596
1597 1597
1598 1598 \family typewriter
1599 1599 LightBG
1600 1600 \family default
1601 1601 : the basic colors are similar to those in the
1602 1602 \family typewriter
1603 1603 Linux
1604 1604 \family default
1605 1605 scheme but darker.
1606 1606 It is easy to read in terminals with light backgrounds.
1607 1607 \layout Standard
1608 1608
1609 1609 IPython uses colors for two main groups of things: prompts and tracebacks
1610 1610 which are directly printed to the terminal, and the object introspection
1611 1611 system which passes large sets of data through a pager.
1612 1612 \layout Subsubsection
1613 1613
1614 1614 Input/Output prompts and exception tracebacks
1615 1615 \layout Standard
1616 1616
1617 1617 You can test whether the colored prompts and tracebacks work on your system
1618 1618 interactively by typing
1619 1619 \family typewriter
1620 1620 '%colors Linux'
1621 1621 \family default
1622 1622 at the prompt (use '
1623 1623 \family typewriter
1624 1624 %colors LightBG'
1625 1625 \family default
1626 1626 if your terminal has a light background).
1627 1627 If the input prompt shows garbage like:
1628 1628 \newline
1629 1629
1630 1630 \family typewriter
1631 1631 [0;32mIn [[1;32m1[0;32m]: [0;00m
1632 1632 \family default
1633 1633
1634 1634 \newline
1635 1635 instead of (in color) something like:
1636 1636 \newline
1637 1637
1638 1638 \family typewriter
1639 1639 In [1]:
1640 1640 \family default
1641 1641
1642 1642 \newline
1643 1643 this means that your terminal doesn't properly handle color escape sequences.
1644 1644 You can go to a 'no color' mode by typing '
1645 1645 \family typewriter
1646 1646 %colors NoColor
1647 1647 \family default
1648 1648 '.
1649 1649
1650 1650 \layout Standard
1651 1651
1652 1652 You can try using a different terminal emulator program.
1653 1653 To permanently set your color preferences, edit the file
1654 1654 \family typewriter
1655 1655 $HOME/.ipython/ipythonrc
1656 1656 \family default
1657 1657 and set the
1658 1658 \family typewriter
1659 1659 colors
1660 1660 \family default
1661 1661 option to the desired value.
1662 1662 \layout Subsubsection
1663 1663
1664 1664 Object details (types, docstrings, source code, etc.)
1665 1665 \layout Standard
1666 1666
1667 1667 IPython has a set of special functions for studying the objects you are
1668 1668 working with, discussed in detail in Sec.
1669 1669
1670 1670 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1671 1671
1672 1672 \end_inset
1673 1673
1674 1674 .
1675 1675 But this system relies on passing information which is longer than your
1676 1676 screen through a data pager, such as the common Unix
1677 1677 \family typewriter
1678 1678 less
1679 1679 \family default
1680 1680 and
1681 1681 \family typewriter
1682 1682 more
1683 1683 \family default
1684 1684 programs.
1685 1685 In order to be able to see this information in color, your pager needs
1686 1686 to be properly configured.
1687 1687 I strongly recommend using
1688 1688 \family typewriter
1689 1689 less
1690 1690 \family default
1691 1691 instead of
1692 1692 \family typewriter
1693 1693 more
1694 1694 \family default
1695 1695 , as it seems that
1696 1696 \family typewriter
1697 1697 more
1698 1698 \family default
1699 1699 simply can not understand colored text correctly.
1700 1700 \layout Standard
1701 1701
1702 1702 In order to configure
1703 1703 \family typewriter
1704 1704 less
1705 1705 \family default
1706 1706 as your default pager, do the following:
1707 1707 \layout Enumerate
1708 1708
1709 1709 Set the environment
1710 1710 \family typewriter
1711 1711 PAGER
1712 1712 \family default
1713 1713 variable to
1714 1714 \family typewriter
1715 1715 less
1716 1716 \family default
1717 1717 .
1718 1718 \layout Enumerate
1719 1719
1720 1720 Set the environment
1721 1721 \family typewriter
1722 1722 LESS
1723 1723 \family default
1724 1724 variable to
1725 1725 \family typewriter
1726 1726 -r
1727 1727 \family default
1728 1728 (plus any other options you always want to pass to
1729 1729 \family typewriter
1730 1730 less
1731 1731 \family default
1732 1732 by default).
1733 1733 This tells
1734 1734 \family typewriter
1735 1735 less
1736 1736 \family default
1737 1737 to properly interpret control sequences, which is how color information
1738 1738 is given to your terminal.
1739 1739 \layout Standard
1740 1740
1741 1741 For the
1742 1742 \family typewriter
1743 1743 csh
1744 1744 \family default
1745 1745 or
1746 1746 \family typewriter
1747 1747 tcsh
1748 1748 \family default
1749 1749 shells, add to your
1750 1750 \family typewriter
1751 1751 ~/.cshrc
1752 1752 \family default
1753 1753 file the lines:
1754 1754 \layout Standard
1755 1755
1756 1756
1757 1757 \family typewriter
1758 1758 setenv PAGER less
1759 1759 \newline
1760 1760 setenv LESS -r
1761 1761 \layout Standard
1762 1762
1763 1763 There is similar syntax for other Unix shells, look at your system documentation
1764 1764 for details.
1765 1765 \layout Standard
1766 1766
1767 1767 If you are on a system which lacks proper data pagers (such as Windows),
1768 1768 IPython will use a very limited builtin pager.
1769 1769 \layout Subsection
1770 1770
1771 1771
1772 1772 \begin_inset LatexCommand \label{sec:emacs}
1773 1773
1774 1774 \end_inset
1775 1775
1776 1776 (X)Emacs configuration
1777 1777 \layout Standard
1778 1778
1779 1779 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
1780 1780 (X)Emacs and IPython get along very well.
1781 1781
1782 1782 \layout Standard
1783 1783
1784 1784
1785 1785 \series bold
1786 1786 Important note:
1787 1787 \series default
1788 1788 You will need to use a recent enough version of
1789 1789 \family typewriter
1790 1790 python-mode.el
1791 1791 \family default
1792 1792 , along with the file
1793 1793 \family typewriter
1794 1794 ipython.el
1795 1795 \family default
1796 1796 .
1797 1797 You can check that the version you have of
1798 1798 \family typewriter
1799 1799 python-mode.el
1800 1800 \family default
1801 1801 is new enough by either looking at the revision number in the file itself,
1802 1802 or asking for it in (X)Emacs via
1803 1803 \family typewriter
1804 1804 M-x py-version
1805 1805 \family default
1806 1806 .
1807 1807 Versions 4.68 and newer contain the necessary fixes for proper IPython support.
1808 1808 \layout Standard
1809 1809
1810 1810 The file
1811 1811 \family typewriter
1812 1812 ipython.el
1813 1813 \family default
1814 1814 is included with the IPython distribution, in the documentation directory
1815 1815 (where this manual resides in PDF and HTML formats).
1816 1816 \layout Standard
1817 1817
1818 1818 Once you put these files in your Emacs path, all you need in your
1819 1819 \family typewriter
1820 1820 .emacs
1821 1821 \family default
1822 1822 file is:
1823 1823 \layout Standard
1824 1824
1825 1825
1826 1826 \family typewriter
1827 1827 (require 'ipython)
1828 1828 \layout Standard
1829 1829
1830 1830 This should give you full support for executing code snippets via IPython,
1831 1831 opening IPython as your Python shell via
1832 1832 \family typewriter
1833 1833 C-c\SpecialChar ~
1834 1834 !
1835 1835 \family default
1836 1836 , etc.
1837 1837
1838 1838 \layout Subsubsection*
1839 1839
1840 1840 Notes
1841 1841 \layout Itemize
1842 1842
1843 1843 There is one caveat you should be aware of: you must start the IPython shell
1844 1844
1845 1845 \emph on
1846 1846 before
1847 1847 \emph default
1848 1848 attempting to execute any code regions via
1849 1849 \family typewriter
1850 1850 C-c\SpecialChar ~
1851 1851 |
1852 1852 \family default
1853 1853 .
1854 1854 Simply type
1855 1855 \family typewriter
1856 1856 C-c\SpecialChar ~
1857 1857 !
1858 1858 \family default
1859 1859 to start IPython before passing any code regions to the interpreter, and
1860 1860 you shouldn't experience any problems.
1861 1861 \newline
1862 1862 This is due to a bug in Python itself, which has been fixed for Python 2.3,
1863 1863 but exists as of Python 2.2.2 (reported as SF bug [ 737947 ]).
1864 1864 \layout Itemize
1865 1865
1866 1866 The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
1867 1867 ts should be directed to him through the IPython mailing lists.
1868 1868
1869 1869 \layout Itemize
1870 1870
1871 1871 This code is still somewhat experimental so it's a bit rough around the
1872 1872 edges (although in practice, it works quite well).
1873 1873 \layout Itemize
1874 1874
1875 1875 Be aware that if you customize
1876 1876 \family typewriter
1877 1877 py-python-command
1878 1878 \family default
1879 1879 previously, this value will override what
1880 1880 \family typewriter
1881 1881 ipython.el
1882 1882 \family default
1883 1883 does (because loading the customization variables comes later).
1884 1884 \layout Section
1885 1885
1886 1886
1887 1887 \begin_inset LatexCommand \label{sec:quick_tips}
1888 1888
1889 1889 \end_inset
1890 1890
1891 1891 Quick tips
1892 1892 \layout Standard
1893 1893
1894 1894 IPython can be used as an improved replacement for the Python prompt, and
1895 1895 for that you don't really need to read any more of this manual.
1896 1896 But in this section we'll try to summarize a few tips on how to make the
1897 1897 most effective use of it for everyday Python development, highlighting
1898 1898 things you might miss in the rest of the manual (which is getting long).
1899 1899 We'll give references to parts in the manual which provide more detail
1900 1900 when appropriate.
1901 1901 \layout Standard
1902 1902
1903 1903 The following article by Jeremy Jones provides an introductory tutorial
1904 1904 about IPython:
1905 1905 \newline
1906 1906
1907 1907 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
1908 1908
1909 1909 \end_inset
1910 1910
1911 1911
1912 1912 \layout Itemize
1913 1913
1914 1914 The TAB key.
1915 1915 TAB-completion, especially for attributes, is a convenient way to explore
1916 1916 the structure of any object you're dealing with.
1917 1917 Simply type
1918 1918 \family typewriter
1919 1919 object_name.<TAB>
1920 1920 \family default
1921 1921 and a list of the object's attributes will be printed (see sec.
1922 1922
1923 1923 \begin_inset LatexCommand \ref{sec:readline}
1924 1924
1925 1925 \end_inset
1926 1926
1927 1927 for more).
1928 1928 Tab completion also works on file and directory names, which combined with
1929 1929 IPython's alias system allows you to do from within IPython many of the
1930 1930 things you normally would need the system shell for.
1931 1931
1932 1932 \layout Itemize
1933 1933
1934 1934 Explore your objects.
1935 1935 Typing
1936 1936 \family typewriter
1937 1937 object_name?
1938 1938 \family default
1939 1939 will print all sorts of details about any object, including docstrings,
1940 1940 function definition lines (for call arguments) and constructor details
1941 1941 for classes.
1942 1942 The magic commands
1943 1943 \family typewriter
1944 1944 %pdoc
1945 1945 \family default
1946 1946 ,
1947 1947 \family typewriter
1948 1948 %pdef
1949 1949 \family default
1950 1950 ,
1951 1951 \family typewriter
1952 1952 %psource
1953 1953 \family default
1954 1954 and
1955 1955 \family typewriter
1956 1956 %pfile
1957 1957 \family default
1958 1958 will respectively print the docstring, function definition line, full source
1959 1959 code and the complete file for any object (when they can be found).
1960 1960 If automagic is on (it is by default), you don't need to type the '
1961 1961 \family typewriter
1962 1962 %
1963 1963 \family default
1964 1964 ' explicitly.
1965 1965 See sec.
1966 1966
1967 1967 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1968 1968
1969 1969 \end_inset
1970 1970
1971 1971 for more.
1972 1972 \layout Itemize
1973 1973
1974 1974 The
1975 1975 \family typewriter
1976 1976 %run
1977 1977 \family default
1978 1978 magic command allows you to run any python script and load all of its data
1979 1979 directly into the interactive namespace.
1980 1980 Since the file is re-read from disk each time, changes you make to it are
1981 1981 reflected immediately (in contrast to the behavior of
1982 1982 \family typewriter
1983 1983 import
1984 1984 \family default
1985 1985 ).
1986 1986 I rarely use
1987 1987 \family typewriter
1988 1988 import
1989 1989 \family default
1990 1990 for code I am testing, relying on
1991 1991 \family typewriter
1992 1992 %run
1993 1993 \family default
1994 1994 instead.
1995 1995 See sec.
1996 1996
1997 1997 \begin_inset LatexCommand \ref{sec:magic}
1998 1998
1999 1999 \end_inset
2000 2000
2001 2001 for more on this and other magic commands, or type the name of any magic
2002 2002 command and ? to get details on it.
2003 2003 See also sec.
2004 2004
2005 2005 \begin_inset LatexCommand \ref{sec:dreload}
2006 2006
2007 2007 \end_inset
2008 2008
2009 2009 for a recursive reload command.
2010 2010 \newline
2011 2011
2012 2012 \family typewriter
2013 2013 %run
2014 2014 \family default
2015 2015 also has special flags for timing the execution of your scripts (
2016 2016 \family typewriter
2017 2017 -t
2018 2018 \family default
2019 2019 ) and for executing them under the control of either Python's
2020 2020 \family typewriter
2021 2021 pdb
2022 2022 \family default
2023 2023 debugger (
2024 2024 \family typewriter
2025 2025 -d
2026 2026 \family default
2027 2027 ) or profiler (
2028 2028 \family typewriter
2029 2029 -p
2030 2030 \family default
2031 2031 ).
2032 2032 With all of these,
2033 2033 \family typewriter
2034 2034 %run
2035 2035 \family default
2036 2036 can be used as the main tool for efficient interactive development of code
2037 2037 which you write in your editor of choice.
2038 2038 \layout Itemize
2039 2039
2040 2040 Use the Python debugger,
2041 2041 \family typewriter
2042 2042 pdb
2043 2043 \family default
2044 2044
2045 2045 \begin_inset Foot
2046 2046 collapsed true
2047 2047
2048 2048 \layout Standard
2049 2049
2050 2050 Thanks to Christian Hart and Matthew Arnison for the suggestions leading
2051 2051 to IPython's improved debugger and profiler support.
2052 2052 \end_inset
2053 2053
2054 2054 .
2055 2055 The
2056 2056 \family typewriter
2057 2057 %pdb
2058 2058 \family default
2059 2059 command allows you to toggle on and off the automatic invocation of an
2060 2060 IPython-enhanced
2061 2061 \family typewriter
2062 2062 pdb
2063 2063 \family default
2064 2064 debugger (with coloring, tab completion and more) at any uncaught exception.
2065 2065 The advantage of this is that
2066 2066 \family typewriter
2067 2067 pdb
2068 2068 \family default
2069 2069 starts
2070 2070 \emph on
2071 2071 inside
2072 2072 \emph default
2073 2073 the function where the exception occurred, with all data still available.
2074 2074 You can print variables, see code, execute statements and even walk up
2075 2075 and down the call stack to track down the true source of the problem (which
2076 2076 often is many layers in the stack above where the exception gets triggered).
2077 2077 \newline
2078 2078 Running programs with
2079 2079 \family typewriter
2080 2080 %run
2081 2081 \family default
2082 2082 and pdb active can be an efficient to develop and debug code, in many cases
2083 2083 eliminating the need for
2084 2084 \family typewriter
2085 2085 print
2086 2086 \family default
2087 2087 statements or external debugging tools.
2088 2088 I often simply put a
2089 2089 \family typewriter
2090 2090 1/0
2091 2091 \family default
2092 2092 in a place where I want to take a look so that pdb gets called, quickly
2093 2093 view whatever variables I need to or test various pieces of code and then
2094 2094 remove the
2095 2095 \family typewriter
2096 2096 1/0
2097 2097 \family default
2098 2098 .
2099 2099 \newline
2100 2100 Note also that `
2101 2101 \family typewriter
2102 2102 %run -d
2103 2103 \family default
2104 2104 ' activates
2105 2105 \family typewriter
2106 2106 pdb
2107 2107 \family default
2108 2108 and automatically sets initial breakpoints for you to step through your
2109 2109 code, watch variables, etc.
2110 2110 See Sec.\SpecialChar ~
2111 2111
2112 2112 \begin_inset LatexCommand \ref{sec:cache_output}
2113 2113
2114 2114 \end_inset
2115 2115
2116 2116 for details.
2117 2117 \layout Itemize
2118 2118
2119 2119 Use the output cache.
2120 2120 All output results are automatically stored in a global dictionary named
2121 2121
2122 2122 \family typewriter
2123 2123 Out
2124 2124 \family default
2125 2125 and variables named
2126 2126 \family typewriter
2127 2127 _1
2128 2128 \family default
2129 2129 ,
2130 2130 \family typewriter
2131 2131 _2
2132 2132 \family default
2133 2133 , etc.
2134 2134 alias them.
2135 2135 For example, the result of input line 4 is available either as
2136 2136 \family typewriter
2137 2137 Out[4]
2138 2138 \family default
2139 2139 or as
2140 2140 \family typewriter
2141 2141 _4
2142 2142 \family default
2143 2143 .
2144 2144 Additionally, three variables named
2145 2145 \family typewriter
2146 2146 _
2147 2147 \family default
2148 2148 ,
2149 2149 \family typewriter
2150 2150 __
2151 2151 \family default
2152 2152 and
2153 2153 \family typewriter
2154 2154 ___
2155 2155 \family default
2156 2156 are always kept updated with the for the last three results.
2157 2157 This allows you to recall any previous result and further use it for new
2158 2158 calculations.
2159 2159 See Sec.\SpecialChar ~
2160 2160
2161 2161 \begin_inset LatexCommand \ref{sec:cache_output}
2162 2162
2163 2163 \end_inset
2164 2164
2165 2165 for more.
2166 2166 \layout Itemize
2167 2167
2168 2168 Put a '
2169 2169 \family typewriter
2170 2170 ;
2171 2171 \family default
2172 2172 ' at the end of a line to supress the printing of output.
2173 2173 This is useful when doing calculations which generate long output you are
2174 2174 not interested in seeing.
2175 2175 The
2176 2176 \family typewriter
2177 2177 _*
2178 2178 \family default
2179 2179 variables and the
2180 2180 \family typewriter
2181 2181 Out[]
2182 2182 \family default
2183 2183 list do get updated with the contents of the output, even if it is not
2184 2184 printed.
2185 2185 You can thus still access the generated results this way for further processing.
2186 2186 \layout Itemize
2187 2187
2188 2188 A similar system exists for caching input.
2189 2189 All input is stored in a global list called
2190 2190 \family typewriter
2191 2191 In
2192 2192 \family default
2193 2193 , so you can re-execute lines 22 through 28 plus line 34 by typing
2194 2194 \family typewriter
2195 2195 'exec In[22:29]+In[34]'
2196 2196 \family default
2197 2197 (using Python slicing notation).
2198 2198 If you need to execute the same set of lines often, you can assign them
2199 2199 to a macro with the
2200 2200 \family typewriter
2201 2201 %macro
2202 2202 \family default
2203 2203
2204 2204 \family typewriter
2205 2205 function.
2206 2206
2207 2207 \family default
2208 2208 See sec.
2209 2209
2210 2210 \begin_inset LatexCommand \ref{sec:cache_input}
2211 2211
2212 2212 \end_inset
2213 2213
2214 2214 for more.
2215 2215 \layout Itemize
2216 2216
2217 2217 Use your input history.
2218 2218 The
2219 2219 \family typewriter
2220 2220 %hist
2221 2221 \family default
2222 2222 command can show you all previous input, without line numbers if desired
2223 2223 (option
2224 2224 \family typewriter
2225 2225 -n
2226 2226 \family default
2227 2227 ) so you can directly copy and paste code either back in IPython or in a
2228 2228 text editor.
2229 2229 You can also save all your history by turning on logging via
2230 2230 \family typewriter
2231 2231 %logstart
2232 2232 \family default
2233 2233 ; these logs can later be either reloaded as IPython sessions or used as
2234 2234 code for your programs.
2235 2235 \layout Itemize
2236 2236
2237 2237 Define your own macros with
2238 2238 \family typewriter
2239 2239 %macro
2240 2240 \family default
2241 2241 .
2242 2242 This can be useful for automating sequences of expressions when working
2243 2243 interactively.
2244 You can edit a macro (they are just Python variables holding your input
2245 as a string) by simply typing `
2246 \family typewriter
2247 %edit macroname
2248 \family default
2249 ', and macros can be stored persistently across session with `
2250 \family typewriter
2251 %store macroname
2252 \family default
2253 ' (the storage system is per-profile).
2254 The combination of quick macros, persistent storage and editing, allows
2255 you to easily refine quick-and-dirty interactive input into permanent utilities
2256 , always available both in IPython and as files for general reuse.
2257 \layout Itemize
2258
2259 While
2260 \family typewriter
2261 %macro
2262 \family default
2263 saves input lines into memory for interactive re-execution, sometimes you'd
2264 like to save your input directly to a file.
2265 The
2266 \family typewriter
2267 %save
2268 \family default
2269 magic does this: its input sytnax is the same as
2270 \family typewriter
2271 %macro
2272 \family default
2273 , but it saves your input directly to a Python file.
2274 Note that the
2275 \family typewriter
2276 %logstart
2277 \family default
2278 command also saves input, but it logs
2279 \emph on
2280 all
2281 \emph default
2282 input to disk (though you can temporarily suspend it and reactivate it
2283 with
2284 \family typewriter
2285 %logoff/%logon
2286 \family default
2287 );
2288 \family typewriter
2289 %save
2290 \family default
2291 allows you to select which lines of input you need to save.
2244 2292 \layout Itemize
2245 2293
2246 2294 Define your own system aliases.
2247 2295 Even though IPython gives you access to your system shell via the
2248 2296 \family typewriter
2249 2297 !
2250 2298 \family default
2251 2299 prefix, it is convenient to have aliases to the system commands you use
2252 2300 most often.
2253 2301 This allows you to work seamlessly from inside IPython with the same commands
2254 2302 you are used to in your system shell.
2255 2303 \newline
2256 2304 IPython comes with some pre-defined aliases and a complete system for changing
2257 2305 directories, both via a stack (see
2258 2306 \family typewriter
2259 2307 %pushd
2260 2308 \family default
2261 2309 ,
2262 2310 \family typewriter
2263 2311 %popd
2264 2312 \family default
2265 2313 and
2266 2314 \family typewriter
2267 2315 %ds
2268 2316 \family default
2269 2317 ) and via direct
2270 2318 \family typewriter
2271 2319 %cd
2272 2320 \family default
2273 2321 .
2274 2322 The latter keeps a history of visited directories and allows you to go
2275 2323 to any previously visited one.
2276 2324 \layout Itemize
2277 2325
2278 2326 Use Python to manipulate the results of system commands.
2279 2327 The `
2280 2328 \family typewriter
2281 2329 !!
2282 2330 \family default
2283 2331 ' special syntax, and the
2284 2332 \family typewriter
2285 2333 %sc
2286 2334 \family default
2287 2335 and
2288 2336 \family typewriter
2289 2337 %sx
2290 2338 \family default
2291 2339 magic commands allow you to capture system output into Python variables.
2292 2340 \layout Itemize
2293 2341
2294 2342 Expand python variables when calling the shell (either via
2295 2343 \family typewriter
2296 2344 `!'
2297 2345 \family default
2298 2346 and
2299 2347 \family typewriter
2300 2348 `!!'
2301 2349 \family default
2302 2350 or via aliases) by prepending a
2303 2351 \family typewriter
2304 2352 $
2305 2353 \family default
2306 2354 in front of them.
2307 2355 You can also expand complete python expressions.
2308 2356 See sec.\SpecialChar ~
2309 2357
2310 2358 \begin_inset LatexCommand \ref{sub:System-shell-access}
2311 2359
2312 2360 \end_inset
2313 2361
2314 2362 for more.
2315 2363 \layout Itemize
2316 2364
2317 2365 Use profiles to maintain different configurations (modules to load, function
2318 2366 definitions, option settings) for particular tasks.
2319 2367 You can then have customized versions of IPython for specific purposes.
2320 2368 See sec.\SpecialChar ~
2321 2369
2322 2370 \begin_inset LatexCommand \ref{sec:profiles}
2323 2371
2324 2372 \end_inset
2325 2373
2326 2374 for more.
2327 2375 \layout Itemize
2328 2376
2329 2377 Embed IPython in your programs.
2330 2378 A few lines of code are enough to load a complete IPython inside your own
2331 2379 programs, giving you the ability to work with your data interactively after
2332 2380 automatic processing has been completed.
2333 2381 See sec.\SpecialChar ~
2334 2382
2335 2383 \begin_inset LatexCommand \ref{sec:embed}
2336 2384
2337 2385 \end_inset
2338 2386
2339 2387 for more.
2340 2388 \layout Itemize
2341 2389
2342 2390 Use the Python profiler.
2343 2391 When dealing with performance issues, the
2344 2392 \family typewriter
2345 2393 %run
2346 2394 \family default
2347 2395 command with a
2348 2396 \family typewriter
2349 2397 -p
2350 2398 \family default
2351 2399 option allows you to run complete programs under the control of the Python
2352 2400 profiler.
2353 2401 The
2354 2402 \family typewriter
2355 2403 %prun
2356 2404 \family default
2357 2405 command does a similar job for single Python expressions (like function
2358 2406 calls).
2359 2407 \layout Itemize
2360 2408
2361 2409 Use
2362 2410 \family typewriter
2363 2411 %edit
2364 2412 \family default
2365 2413 to have almost multiline editing.
2366 2414 While IPython doesn't support true multiline editing, this command allows
2367 2415 you to call an editor on the spot, and IPython will execute the code you
2368 2416 type in there as if it were typed interactively.
2369 2417 \layout Itemize
2370 2418
2371 2419 Use the IPython.demo.Demo class to load any Python script as an interactive
2372 2420 demo.
2373 2421 With a minimal amount of simple markup, you can control the execution of
2374 2422 the script, stopping as needed.
2375 2423 See sec.\SpecialChar ~
2376 2424
2377 2425 \begin_inset LatexCommand \ref{sec:interactive-demos}
2378 2426
2379 2427 \end_inset
2380 2428
2381 2429 for more.
2382 2430 \layout Standard
2383 2431
2384 2432
2385 2433 \series bold
2386 2434 Effective logging:
2387 2435 \series default
2388 2436 a very useful suggestion sent in by Robert Kern follows
2389 2437 \layout Standard
2390 2438
2391 2439 I recently happened on a nifty way to keep tidy per-project log files.
2392 2440 I made a profile for my project (which is called "parkfield").
2393 2441 \layout LyX-Code
2394 2442
2395 2443 include ipythonrc
2396 2444 \layout LyX-Code
2397 2445
2398 2446 logfile '' # cancel earlier logfile invocation
2399 2447 \layout LyX-Code
2400 2448
2401 2449 execute import time
2402 2450 \layout LyX-Code
2403 2451
2404 2452 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
2405 2453 \layout LyX-Code
2406 2454
2407 2455 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
2408 2456 \layout Standard
2409 2457
2410 2458 I also added a shell alias for convenience:
2411 2459 \layout LyX-Code
2412 2460
2413 2461 alias parkfield="ipython -pylab -profile parkfield"
2414 2462 \layout Standard
2415 2463
2416 2464 Now I have a nice little directory with everything I ever type in, organized
2417 2465 by project and date.
2418 2466 \layout Standard
2419 2467
2420 2468
2421 2469 \series bold
2422 2470 Contribute your own:
2423 2471 \series default
2424 2472 If you have your own favorite tip on using IPython efficiently for a certain
2425 2473 task (especially things which can't be done in the normal Python interpreter),
2426 2474 don't hesitate to send it!
2427 2475 \layout Section
2428 2476
2429 2477 Command-line use
2430 2478 \layout Standard
2431 2479
2432 2480 You start IPython with the command:
2433 2481 \layout Standard
2434 2482
2435 2483
2436 2484 \family typewriter
2437 2485 $ ipython [options] files
2438 2486 \layout Standard
2439 2487
2440 2488 If invoked with no options, it executes all the files listed in sequence
2441 2489 and drops you into the interpreter while still acknowledging any options
2442 2490 you may have set in your ipythonrc file.
2443 2491 This behavior is different from standard Python, which when called as
2444 2492 \family typewriter
2445 2493 python -i
2446 2494 \family default
2447 2495 will only execute one file and ignore your configuration setup.
2448 2496 \layout Standard
2449 2497
2450 2498 Please note that some of the configuration options are not available at
2451 2499 the command line, simply because they are not practical here.
2452 2500 Look into your ipythonrc configuration file for details on those.
2453 2501 This file typically installed in the
2454 2502 \family typewriter
2455 2503 $HOME/.ipython
2456 2504 \family default
2457 2505 directory.
2458 2506 For Windows users,
2459 2507 \family typewriter
2460 2508 $HOME
2461 2509 \family default
2462 2510 resolves to
2463 2511 \family typewriter
2464 2512 C:
2465 2513 \backslash
2466 2514
2467 2515 \backslash
2468 2516 Documents and Settings
2469 2517 \backslash
2470 2518
2471 2519 \backslash
2472 2520 YourUserName
2473 2521 \family default
2474 2522 in most instances.
2475 2523 In the rest of this text, we will refer to this directory as
2476 2524 \family typewriter
2477 2525 IPYTHONDIR
2478 2526 \family default
2479 2527 .
2480 2528 \layout Subsection
2481 2529
2482 2530
2483 2531 \begin_inset LatexCommand \label{sec:threading-opts}
2484 2532
2485 2533 \end_inset
2486 2534
2487 2535 Special Threading Options
2488 2536 \layout Standard
2489 2537
2490 2538 The following special options are ONLY valid at the beginning of the command
2491 2539 line, and not later.
2492 2540 This is because they control the initial- ization of ipython itself, before
2493 2541 the normal option-handling mechanism is active.
2494 2542 \layout List
2495 2543 \labelwidthstring 00.00.0000
2496 2544
2497 2545
2498 2546 \family typewriter
2499 2547 \series bold
2500 2548 -gthread,\SpecialChar ~
2501 2549 -qthread,\SpecialChar ~
2502 2550 -wthread,\SpecialChar ~
2503 2551 -pylab:
2504 2552 \family default
2505 2553 \series default
2506 2554 Only
2507 2555 \emph on
2508 2556 one
2509 2557 \emph default
2510 2558 of these can be given, and it can only be given as the first option passed
2511 2559 to IPython (it will have no effect in any other position).
2512 2560 They provide threading support for the GTK Qt and WXPython toolkits, and
2513 2561 for the matplotlib library.
2514 2562 \layout List
2515 2563 \labelwidthstring 00.00.0000
2516 2564
2517 2565 \SpecialChar ~
2518 2566 With any of the first three options, IPython starts running a separate
2519 2567 thread for the graphical toolkit's operation, so that you can open and
2520 2568 control graphical elements from within an IPython command line, without
2521 2569 blocking.
2522 2570 All three provide essentially the same functionality, respectively for
2523 2571 GTK, QT and WXWidgets (via their Python interfaces).
2524 2572 \layout List
2525 2573 \labelwidthstring 00.00.0000
2526 2574
2527 2575 \SpecialChar ~
2528 2576 Note that with
2529 2577 \family typewriter
2530 2578 -wthread
2531 2579 \family default
2532 2580 , you can additionally use the -wxversion option to request a specific version
2533 2581 of wx to be used.
2534 2582 This requires that you have the
2535 2583 \family typewriter
2536 2584 wxversion
2537 2585 \family default
2538 2586 Python module installed, which is part of recent wxPython distributions.
2539 2587 \layout List
2540 2588 \labelwidthstring 00.00.0000
2541 2589
2542 2590 \SpecialChar ~
2543 2591 If
2544 2592 \family typewriter
2545 2593 -pylab
2546 2594 \family default
2547 2595 is given, IPython loads special support for the mat plotlib library (
2548 2596 \begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
2549 2597
2550 2598 \end_inset
2551 2599
2552 2600 ), allowing interactive usage of any of its backends as defined in the user's
2553 2601
2554 2602 \family typewriter
2555 2603 ~/.matplotlib/matplotlibrc
2556 2604 \family default
2557 2605 file.
2558 2606 It automatically activates GTK, Qt or WX threading for IPyhton if the choice
2559 2607 of matplotlib backend requires it.
2560 2608 It also modifies the
2561 2609 \family typewriter
2562 2610 %run
2563 2611 \family default
2564 2612 command to correctly execute (without blocking) any matplotlib-based script
2565 2613 which calls
2566 2614 \family typewriter
2567 2615 show()
2568 2616 \family default
2569 2617 at the end.
2570 2618
2571 2619 \layout List
2572 2620 \labelwidthstring 00.00.0000
2573 2621
2574 2622
2575 2623 \family typewriter
2576 2624 \series bold
2577 2625 -tk
2578 2626 \family default
2579 2627 \series default
2580 2628 The
2581 2629 \family typewriter
2582 2630 -g/q/wthread
2583 2631 \family default
2584 2632 options, and
2585 2633 \family typewriter
2586 2634 -pylab
2587 2635 \family default
2588 2636 (if matplotlib is configured to use GTK, Qt or WX), will normally block
2589 2637 Tk graphical interfaces.
2590 2638 This means that when either GTK, Qt or WX threading is active, any attempt
2591 2639 to open a Tk GUI will result in a dead window, and possibly cause the Python
2592 2640 interpreter to crash.
2593 2641 An extra option,
2594 2642 \family typewriter
2595 2643 -tk
2596 2644 \family default
2597 2645 , is available to address this issue.
2598 2646 It can
2599 2647 \emph on
2600 2648 only
2601 2649 \emph default
2602 2650 be given as a
2603 2651 \emph on
2604 2652 second
2605 2653 \emph default
2606 2654 option after any of the above (
2607 2655 \family typewriter
2608 2656 -gthread
2609 2657 \family default
2610 2658 ,
2611 2659 \family typewriter
2612 2660 -wthread
2613 2661 \family default
2614 2662 or
2615 2663 \family typewriter
2616 2664 -pylab
2617 2665 \family default
2618 2666 ).
2619 2667 \layout List
2620 2668 \labelwidthstring 00.00.0000
2621 2669
2622 2670 \SpecialChar ~
2623 2671 If
2624 2672 \family typewriter
2625 2673 -tk
2626 2674 \family default
2627 2675 is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
2628 2676 This is however potentially unreliable, and you will have to test on your
2629 2677 platform and Python configuration to determine whether it works for you.
2630 2678 Debian users have reported success, apparently due to the fact that Debian
2631 2679 builds all of Tcl, Tk, Tkinter and Python with pthreads support.
2632 2680 Under other Linux environments (such as Fedora Core 2/3), this option has
2633 2681 caused random crashes and lockups of the Python interpreter.
2634 2682 Under other operating systems (Mac OSX and Windows), you'll need to try
2635 2683 it to find out, since currently no user reports are available.
2636 2684 \layout List
2637 2685 \labelwidthstring 00.00.0000
2638 2686
2639 2687 \SpecialChar ~
2640 2688 There is unfortunately no way for IPython to determine at run time whether
2641 2689
2642 2690 \family typewriter
2643 2691 -tk
2644 2692 \family default
2645 2693 will work reliably or not, so you will need to do some experiments before
2646 2694 relying on it for regular work.
2647 2695
2648 2696 \layout Subsection
2649 2697
2650 2698
2651 2699 \begin_inset LatexCommand \label{sec:cmd-line-opts}
2652 2700
2653 2701 \end_inset
2654 2702
2655 2703 Regular Options
2656 2704 \layout Standard
2657 2705
2658 2706 After the above threading options have been given, regular options can follow
2659 2707 in any order.
2660 2708 All options can be abbreviated to their shortest non-ambiguous form and
2661 2709 are case-sensitive.
2662 2710 One or two dashes can be used.
2663 2711 Some options have an alternate short form, indicated after a
2664 2712 \family typewriter
2665 2713 |
2666 2714 \family default
2667 2715 .
2668 2716 \layout Standard
2669 2717
2670 2718 Most options can also be set from your ipythonrc configuration file.
2671 2719 See the provided example for more details on what the options do.
2672 2720 Options given at the command line override the values set in the ipythonrc
2673 2721 file.
2674 2722 \layout Standard
2675 2723
2676 2724 All options with a
2677 2725 \family typewriter
2678 2726 [no]
2679 2727 \family default
2680 2728 prepended can be specified in negated form (
2681 2729 \family typewriter
2682 2730 -nooption
2683 2731 \family default
2684 2732 instead of
2685 2733 \family typewriter
2686 2734 -option
2687 2735 \family default
2688 2736 ) to turn the feature off.
2689 2737 \layout List
2690 2738 \labelwidthstring 00.00.0000
2691 2739
2692 2740
2693 2741 \family typewriter
2694 2742 \series bold
2695 2743 -help
2696 2744 \family default
2697 2745 \series default
2698 2746 : print a help message and exit.
2699 2747 \layout List
2700 2748 \labelwidthstring 00.00.0000
2701 2749
2702 2750
2703 2751 \family typewriter
2704 2752 \series bold
2705 2753 -pylab:
2706 2754 \family default
2707 2755 \series default
2708 2756 this can
2709 2757 \emph on
2710 2758 only
2711 2759 \emph default
2712 2760 be given as the
2713 2761 \emph on
2714 2762 first
2715 2763 \emph default
2716 2764 option passed to IPython (it will have no effect in any other position).
2717 2765 It adds special support for the matplotlib library (
2718 2766 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
2719 2767
2720 2768 \end_inset
2721 2769
2722 2770 ), allowing interactive usage of any of its backends as defined in the user's
2723 2771
2724 2772 \family typewriter
2725 2773 .matplotlibrc
2726 2774 \family default
2727 2775 file.
2728 2776 It automatically activates GTK or WX threading for IPyhton if the choice
2729 2777 of matplotlib backend requires it.
2730 2778 It also modifies the
2731 2779 \family typewriter
2732 2780 %run
2733 2781 \family default
2734 2782 command to correctly execute (without blocking) any matplotlib-based script
2735 2783 which calls
2736 2784 \family typewriter
2737 2785 show()
2738 2786 \family default
2739 2787 at the end.
2740 2788 See Sec.\SpecialChar ~
2741 2789
2742 2790 \begin_inset LatexCommand \ref{sec:matplotlib-support}
2743 2791
2744 2792 \end_inset
2745 2793
2746 2794 for more details.
2747 2795 \layout List
2748 2796 \labelwidthstring 00.00.0000
2749 2797
2750 2798
2751 2799 \family typewriter
2752 2800 \series bold
2753 2801 -autocall <val>:
2754 2802 \family default
2755 2803 \series default
2756 2804 Make IPython automatically call any callable object even if you didn't
2757 2805 type explicit parentheses.
2758 2806 For example, `str 43' becomes `str(43)' automatically.
2759 2807 The value can be `0' to disable the feature, `1' for
2760 2808 \emph on
2761 2809 smart
2762 2810 \emph default
2763 2811 autocall, where it is not applied if there are no more arguments on the
2764 2812 line, and `2' for
2765 2813 \emph on
2766 2814 full
2767 2815 \emph default
2768 2816 autocall, where all callable objects are automatically called (even if
2769 2817 no arguments are present).
2770 2818 The default is `1'.
2771 2819 \layout List
2772 2820 \labelwidthstring 00.00.0000
2773 2821
2774 2822
2775 2823 \family typewriter
2776 2824 \series bold
2777 2825 -[no]autoindent:
2778 2826 \family default
2779 2827 \series default
2780 2828 Turn automatic indentation on/off.
2781 2829 \layout List
2782 2830 \labelwidthstring 00.00.0000
2783 2831
2784 2832
2785 2833 \family typewriter
2786 2834 \series bold
2787 2835 -[no]automagic
2788 2836 \series default
2789 2837 :
2790 2838 \family default
2791 2839 make magic commands automatic (without needing their first character to
2792 2840 be
2793 2841 \family typewriter
2794 2842 %
2795 2843 \family default
2796 2844 ).
2797 2845 Type
2798 2846 \family typewriter
2799 2847 %magic
2800 2848 \family default
2801 2849 at the IPython prompt for more information.
2802 2850 \layout List
2803 2851 \labelwidthstring 00.00.0000
2804 2852
2805 2853
2806 2854 \family typewriter
2807 2855 \series bold
2808 2856 -[no]autoedit_syntax:
2809 2857 \family default
2810 2858 \series default
2811 2859 When a syntax error occurs after editing a file, automatically open the
2812 2860 file to the trouble causing line for convenient fixing.
2813 2861
2814 2862 \layout List
2815 2863 \labelwidthstring 00.00.0000
2816 2864
2817 2865
2818 2866 \family typewriter
2819 2867 \series bold
2820 2868 -[no]banner
2821 2869 \series default
2822 2870 :
2823 2871 \family default
2824 2872 Print the initial information banner (default on).
2825 2873 \layout List
2826 2874 \labelwidthstring 00.00.0000
2827 2875
2828 2876
2829 2877 \family typewriter
2830 2878 \series bold
2831 2879 -c\SpecialChar ~
2832 2880 <command>:
2833 2881 \family default
2834 2882 \series default
2835 2883 execute the given command string, and set sys.argv to
2836 2884 \family typewriter
2837 2885 ['c']
2838 2886 \family default
2839 2887 .
2840 2888 This is similar to the
2841 2889 \family typewriter
2842 2890 -c
2843 2891 \family default
2844 2892 option in the normal Python interpreter.
2845 2893
2846 2894 \layout List
2847 2895 \labelwidthstring 00.00.0000
2848 2896
2849 2897
2850 2898 \family typewriter
2851 2899 \series bold
2852 2900 -cache_size|cs\SpecialChar ~
2853 2901 <n>
2854 2902 \series default
2855 2903 :
2856 2904 \family default
2857 2905 size of the output cache (maximum number of entries to hold in memory).
2858 2906 The default is 1000, you can change it permanently in your config file.
2859 2907 Setting it to 0 completely disables the caching system, and the minimum
2860 2908 value accepted is 20 (if you provide a value less than 20, it is reset
2861 2909 to 0 and a warning is issued) This limit is defined because otherwise you'll
2862 2910 spend more time re-flushing a too small cache than working.
2863 2911 \layout List
2864 2912 \labelwidthstring 00.00.0000
2865 2913
2866 2914
2867 2915 \family typewriter
2868 2916 \series bold
2869 2917 -classic|cl
2870 2918 \series default
2871 2919 :
2872 2920 \family default
2873 2921 Gives IPython a similar feel to the classic Python prompt.
2874 2922 \layout List
2875 2923 \labelwidthstring 00.00.0000
2876 2924
2877 2925
2878 2926 \family typewriter
2879 2927 \series bold
2880 2928 -colors\SpecialChar ~
2881 2929 <scheme>:
2882 2930 \family default
2883 2931 \series default
2884 2932 Color scheme for prompts and exception reporting.
2885 2933 Currently implemented: NoColor, Linux and LightBG.
2886 2934 \layout List
2887 2935 \labelwidthstring 00.00.0000
2888 2936
2889 2937
2890 2938 \family typewriter
2891 2939 \series bold
2892 2940 -[no]color_info:
2893 2941 \family default
2894 2942 \series default
2895 2943 IPython can display information about objects via a set of functions, and
2896 2944 optionally can use colors for this, syntax highlighting source code and
2897 2945 various other elements.
2898 2946 However, because this information is passed through a pager (like 'less')
2899 2947 and many pagers get confused with color codes, this option is off by default.
2900 2948 You can test it and turn it on permanently in your ipythonrc file if it
2901 2949 works for you.
2902 2950 As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
2903 2951 that in RedHat 7.2 doesn't.
2904 2952 \layout List
2905 2953 \labelwidthstring 00.00.0000
2906 2954
2907 2955 \SpecialChar ~
2908 2956 Test it and turn it on permanently if it works with your system.
2909 2957 The magic function
2910 2958 \family typewriter
2911 2959 %color_info
2912 2960 \family default
2913 2961 allows you to toggle this interactively for testing.
2914 2962 \layout List
2915 2963 \labelwidthstring 00.00.0000
2916 2964
2917 2965
2918 2966 \family typewriter
2919 2967 \series bold
2920 2968 -[no]debug
2921 2969 \family default
2922 2970 \series default
2923 2971 : Show information about the loading process.
2924 2972 Very useful to pin down problems with your configuration files or to get
2925 2973 details about session restores.
2926 2974 \layout List
2927 2975 \labelwidthstring 00.00.0000
2928 2976
2929 2977
2930 2978 \family typewriter
2931 2979 \series bold
2932 2980 -[no]deep_reload
2933 2981 \series default
2934 2982 :
2935 2983 \family default
2936 2984 IPython can use the
2937 2985 \family typewriter
2938 2986 deep_reload
2939 2987 \family default
2940 2988 module which reloads changes in modules recursively (it replaces the
2941 2989 \family typewriter
2942 2990 reload()
2943 2991 \family default
2944 2992 function, so you don't need to change anything to use it).
2945 2993
2946 2994 \family typewriter
2947 2995 deep_reload()
2948 2996 \family default
2949 2997 forces a full reload of modules whose code may have changed, which the
2950 2998 default
2951 2999 \family typewriter
2952 3000 reload()
2953 3001 \family default
2954 3002 function does not.
2955 3003 \layout List
2956 3004 \labelwidthstring 00.00.0000
2957 3005
2958 3006 \SpecialChar ~
2959 3007 When deep_reload is off, IPython will use the normal
2960 3008 \family typewriter
2961 3009 reload()
2962 3010 \family default
2963 3011 , but deep_reload will still be available as
2964 3012 \family typewriter
2965 3013 dreload()
2966 3014 \family default
2967 3015 .
2968 3016 This feature is off by default [which means that you have both normal
2969 3017 \family typewriter
2970 3018 reload()
2971 3019 \family default
2972 3020 and
2973 3021 \family typewriter
2974 3022 dreload()
2975 3023 \family default
2976 3024 ].
2977 3025 \layout List
2978 3026 \labelwidthstring 00.00.0000
2979 3027
2980 3028
2981 3029 \family typewriter
2982 3030 \series bold
2983 3031 -editor\SpecialChar ~
2984 3032 <name>
2985 3033 \family default
2986 3034 \series default
2987 3035 : Which editor to use with the
2988 3036 \family typewriter
2989 3037 %edit
2990 3038 \family default
2991 3039 command.
2992 3040 By default, IPython will honor your
2993 3041 \family typewriter
2994 3042 EDITOR
2995 3043 \family default
2996 3044 environment variable (if not set, vi is the Unix default and notepad the
2997 3045 Windows one).
2998 3046 Since this editor is invoked on the fly by IPython and is meant for editing
2999 3047 small code snippets, you may want to use a small, lightweight editor here
3000 3048 (in case your default
3001 3049 \family typewriter
3002 3050 EDITOR
3003 3051 \family default
3004 3052 is something like Emacs).
3005 3053 \layout List
3006 3054 \labelwidthstring 00.00.0000
3007 3055
3008 3056
3009 3057 \family typewriter
3010 3058 \series bold
3011 3059 -ipythondir\SpecialChar ~
3012 3060 <name>
3013 3061 \series default
3014 3062 :
3015 3063 \family default
3016 3064 name of your IPython configuration directory
3017 3065 \family typewriter
3018 3066 IPYTHONDIR
3019 3067 \family default
3020 3068 .
3021 3069 This can also be specified through the environment variable
3022 3070 \family typewriter
3023 3071 IPYTHONDIR
3024 3072 \family default
3025 3073 .
3026 3074 \layout List
3027 3075 \labelwidthstring 00.00.0000
3028 3076
3029 3077
3030 3078 \family typewriter
3031 3079 \series bold
3032 3080 -log|l
3033 3081 \family default
3034 3082 \series default
3035 3083 : generate a log file of all input.
3036 3084 The file is named
3037 3085 \family typewriter
3038 3086 ipython_log.py
3039 3087 \family default
3040 3088 in your current directory (which prevents logs from multiple IPython sessions
3041 3089 from trampling each other).
3042 3090 You can use this to later restore a session by loading your logfile as
3043 3091 a file to be executed with option
3044 3092 \family typewriter
3045 3093 -logplay
3046 3094 \family default
3047 3095 (see below).
3048 3096 \layout List
3049 3097 \labelwidthstring 00.00.0000
3050 3098
3051 3099
3052 3100 \family typewriter
3053 3101 \series bold
3054 3102 -logfile|lf\SpecialChar ~
3055 3103 <name>
3056 3104 \series default
3057 3105 :
3058 3106 \family default
3059 3107 specify the name of your logfile.
3060 3108 \layout List
3061 3109 \labelwidthstring 00.00.0000
3062 3110
3063 3111
3064 3112 \family typewriter
3065 3113 \series bold
3066 3114 -logplay|lp\SpecialChar ~
3067 3115 <name>
3068 3116 \series default
3069 3117 :
3070 3118 \family default
3071 3119 you can replay a previous log.
3072 3120 For restoring a session as close as possible to the state you left it in,
3073 3121 use this option (don't just run the logfile).
3074 3122 With
3075 3123 \family typewriter
3076 3124 -logplay
3077 3125 \family default
3078 3126 , IPython will try to reconstruct the previous working environment in full,
3079 3127 not just execute the commands in the logfile.
3080 3128 \layout List
3081 3129 \labelwidthstring 00.00.0000
3082 3130
3083 3131 \SpecialChar ~
3084 3132 When a session is restored, logging is automatically turned on again with
3085 3133 the name of the logfile it was invoked with (it is read from the log header).
3086 3134 So once you've turned logging on for a session, you can quit IPython and
3087 3135 reload it as many times as you want and it will continue to log its history
3088 3136 and restore from the beginning every time.
3089 3137 \layout List
3090 3138 \labelwidthstring 00.00.0000
3091 3139
3092 3140 \SpecialChar ~
3093 3141 Caveats: there are limitations in this option.
3094 3142 The history variables
3095 3143 \family typewriter
3096 3144 _i*
3097 3145 \family default
3098 3146 ,
3099 3147 \family typewriter
3100 3148 _*
3101 3149 \family default
3102 3150 and
3103 3151 \family typewriter
3104 3152 _dh
3105 3153 \family default
3106 3154 don't get restored properly.
3107 3155 In the future we will try to implement full session saving by writing and
3108 3156 retrieving a 'snapshot' of the memory state of IPython.
3109 3157 But our first attempts failed because of inherent limitations of Python's
3110 3158 Pickle module, so this may have to wait.
3111 3159 \layout List
3112 3160 \labelwidthstring 00.00.0000
3113 3161
3114 3162
3115 3163 \family typewriter
3116 3164 \series bold
3117 3165 -[no]messages
3118 3166 \series default
3119 3167 :
3120 3168 \family default
3121 3169 Print messages which IPython collects about its startup process (default
3122 3170 on).
3123 3171 \layout List
3124 3172 \labelwidthstring 00.00.0000
3125 3173
3126 3174
3127 3175 \family typewriter
3128 3176 \series bold
3129 3177 -[no]pdb
3130 3178 \family default
3131 3179 \series default
3132 3180 : Automatically call the pdb debugger after every uncaught exception.
3133 3181 If you are used to debugging using pdb, this puts you automatically inside
3134 3182 of it after any call (either in IPython or in code called by it) which
3135 3183 triggers an exception which goes uncaught.
3136 3184 \layout List
3137 3185 \labelwidthstring 00.00.0000
3138 3186
3139 3187
3140 3188 \family typewriter
3141 3189 \series bold
3142 3190 -[no]pprint
3143 3191 \series default
3144 3192 :
3145 3193 \family default
3146 3194 ipython can optionally use the pprint (pretty printer) module for displaying
3147 3195 results.
3148 3196 pprint tends to give a nicer display of nested data structures.
3149 3197 If you like it, you can turn it on permanently in your config file (default
3150 3198 off).
3151 3199 \layout List
3152 3200 \labelwidthstring 00.00.0000
3153 3201
3154 3202
3155 3203 \family typewriter
3156 3204 \series bold
3157 3205 -profile|p <name>
3158 3206 \series default
3159 3207 :
3160 3208 \family default
3161 3209 assume that your config file is
3162 3210 \family typewriter
3163 3211 ipythonrc-<name>
3164 3212 \family default
3165 3213 (looks in current dir first, then in
3166 3214 \family typewriter
3167 3215 IPYTHONDIR
3168 3216 \family default
3169 3217 ).
3170 3218 This is a quick way to keep and load multiple config files for different
3171 3219 tasks, especially if you use the include option of config files.
3172 3220 You can keep a basic
3173 3221 \family typewriter
3174 3222 IPYTHONDIR/ipythonrc
3175 3223 \family default
3176 3224 file and then have other 'profiles' which include this one and load extra
3177 3225 things for particular tasks.
3178 3226 For example:
3179 3227 \layout List
3180 3228 \labelwidthstring 00.00.0000
3181 3229
3182 3230
3183 3231 \family typewriter
3184 3232 \SpecialChar ~
3185 3233
3186 3234 \family default
3187 3235 1.
3188 3236
3189 3237 \family typewriter
3190 3238 $HOME/.ipython/ipythonrc
3191 3239 \family default
3192 3240 : load basic things you always want.
3193 3241 \layout List
3194 3242 \labelwidthstring 00.00.0000
3195 3243
3196 3244
3197 3245 \family typewriter
3198 3246 \SpecialChar ~
3199 3247
3200 3248 \family default
3201 3249 2.
3202 3250
3203 3251 \family typewriter
3204 3252 $HOME/.ipython/ipythonrc-math
3205 3253 \family default
3206 3254 : load (1) and basic math-related modules.
3207 3255
3208 3256 \layout List
3209 3257 \labelwidthstring 00.00.0000
3210 3258
3211 3259
3212 3260 \family typewriter
3213 3261 \SpecialChar ~
3214 3262
3215 3263 \family default
3216 3264 3.
3217 3265
3218 3266 \family typewriter
3219 3267 $HOME/.ipython/ipythonrc-numeric
3220 3268 \family default
3221 3269 : load (1) and Numeric and plotting modules.
3222 3270 \layout List
3223 3271 \labelwidthstring 00.00.0000
3224 3272
3225 3273 \SpecialChar ~
3226 3274 Since it is possible to create an endless loop by having circular file
3227 3275 inclusions, IPython will stop if it reaches 15 recursive inclusions.
3228 3276 \layout List
3229 3277 \labelwidthstring 00.00.0000
3230 3278
3231 3279
3232 3280 \family typewriter
3233 3281 \series bold
3234 3282 -prompt_in1|pi1\SpecialChar ~
3235 3283 <string>:
3236 3284 \family default
3237 3285 \series default
3238 3286 Specify the string used for input prompts.
3239 3287 Note that if you are using numbered prompts, the number is represented
3240 3288 with a '
3241 3289 \backslash
3242 3290 #' in the string.
3243 3291 Don't forget to quote strings with spaces embedded in them.
3244 3292 Default: '
3245 3293 \family typewriter
3246 3294 In\SpecialChar ~
3247 3295 [
3248 3296 \backslash
3249 3297 #]:
3250 3298 \family default
3251 3299 '.
3252 3300 Sec.\SpecialChar ~
3253 3301
3254 3302 \begin_inset LatexCommand \ref{sec:prompts}
3255 3303
3256 3304 \end_inset
3257 3305
3258 3306 discusses in detail all the available escapes to customize your prompts.
3259 3307 \layout List
3260 3308 \labelwidthstring 00.00.0000
3261 3309
3262 3310
3263 3311 \family typewriter
3264 3312 \series bold
3265 3313 -prompt_in2|pi2\SpecialChar ~
3266 3314 <string>:
3267 3315 \family default
3268 3316 \series default
3269 3317 Similar to the previous option, but used for the continuation prompts.
3270 3318 The special sequence '
3271 3319 \family typewriter
3272 3320
3273 3321 \backslash
3274 3322 D
3275 3323 \family default
3276 3324 ' is similar to '
3277 3325 \family typewriter
3278 3326
3279 3327 \backslash
3280 3328 #
3281 3329 \family default
3282 3330 ', but with all digits replaced dots (so you can have your continuation
3283 3331 prompt aligned with your input prompt).
3284 3332 Default: '
3285 3333 \family typewriter
3286 3334 \SpecialChar ~
3287 3335 \SpecialChar ~
3288 3336 \SpecialChar ~
3289 3337 .
3290 3338 \backslash
3291 3339 D.:
3292 3340 \family default
3293 3341 ' (note three spaces at the start for alignment with '
3294 3342 \family typewriter
3295 3343 In\SpecialChar ~
3296 3344 [
3297 3345 \backslash
3298 3346 #]
3299 3347 \family default
3300 3348 ').
3301 3349 \layout List
3302 3350 \labelwidthstring 00.00.0000
3303 3351
3304 3352
3305 3353 \family typewriter
3306 3354 \series bold
3307 3355 -prompt_out|po\SpecialChar ~
3308 3356 <string>:
3309 3357 \family default
3310 3358 \series default
3311 3359 String used for output prompts, also uses numbers like
3312 3360 \family typewriter
3313 3361 prompt_in1
3314 3362 \family default
3315 3363 .
3316 3364 Default: '
3317 3365 \family typewriter
3318 3366 Out[
3319 3367 \backslash
3320 3368 #]:
3321 3369 \family default
3322 3370 '
3323 3371 \layout List
3324 3372 \labelwidthstring 00.00.0000
3325 3373
3326 3374
3327 3375 \family typewriter
3328 3376 \series bold
3329 3377 -quick
3330 3378 \family default
3331 3379 \series default
3332 3380 : start in bare bones mode (no config file loaded).
3333 3381 \layout List
3334 3382 \labelwidthstring 00.00.0000
3335 3383
3336 3384
3337 3385 \family typewriter
3338 3386 \series bold
3339 3387 -rcfile\SpecialChar ~
3340 3388 <name>
3341 3389 \series default
3342 3390 :
3343 3391 \family default
3344 3392 name of your IPython resource configuration file.
3345 3393 Normally IPython loads ipythonrc (from current directory) or
3346 3394 \family typewriter
3347 3395 IPYTHONDIR/ipythonrc
3348 3396 \family default
3349 3397 .
3350 3398 \layout List
3351 3399 \labelwidthstring 00.00.0000
3352 3400
3353 3401 \SpecialChar ~
3354 3402 If the loading of your config file fails, IPython starts with a bare bones
3355 3403 configuration (no modules loaded at all).
3356 3404 \layout List
3357 3405 \labelwidthstring 00.00.0000
3358 3406
3359 3407
3360 3408 \family typewriter
3361 3409 \series bold
3362 3410 -[no]readline
3363 3411 \family default
3364 3412 \series default
3365 3413 : use the readline library, which is needed to support name completion and
3366 3414 command history, among other things.
3367 3415 It is enabled by default, but may cause problems for users of X/Emacs in
3368 3416 Python comint or shell buffers.
3369 3417 \layout List
3370 3418 \labelwidthstring 00.00.0000
3371 3419
3372 3420 \SpecialChar ~
3373 3421 Note that X/Emacs 'eterm' buffers (opened with
3374 3422 \family typewriter
3375 3423 M-x\SpecialChar ~
3376 3424 term
3377 3425 \family default
3378 3426 ) support IPython's readline and syntax coloring fine, only 'emacs' (
3379 3427 \family typewriter
3380 3428 M-x\SpecialChar ~
3381 3429 shell
3382 3430 \family default
3383 3431 and
3384 3432 \family typewriter
3385 3433 C-c\SpecialChar ~
3386 3434 !
3387 3435 \family default
3388 3436 ) buffers do not.
3389 3437 \layout List
3390 3438 \labelwidthstring 00.00.0000
3391 3439
3392 3440
3393 3441 \family typewriter
3394 3442 \series bold
3395 3443 -screen_length|sl\SpecialChar ~
3396 3444 <n>
3397 3445 \series default
3398 3446 :
3399 3447 \family default
3400 3448 number of lines of your screen.
3401 3449 This is used to control printing of very long strings.
3402 3450 Strings longer than this number of lines will be sent through a pager instead
3403 3451 of directly printed.
3404 3452 \layout List
3405 3453 \labelwidthstring 00.00.0000
3406 3454
3407 3455 \SpecialChar ~
3408 3456 The default value for this is 0, which means IPython will auto-detect your
3409 3457 screen size every time it needs to print certain potentially long strings
3410 3458 (this doesn't change the behavior of the 'print' keyword, it's only triggered
3411 3459 internally).
3412 3460 If for some reason this isn't working well (it needs curses support), specify
3413 3461 it yourself.
3414 3462 Otherwise don't change the default.
3415 3463 \layout List
3416 3464 \labelwidthstring 00.00.0000
3417 3465
3418 3466
3419 3467 \family typewriter
3420 3468 \series bold
3421 3469 -separate_in|si\SpecialChar ~
3422 3470 <string>
3423 3471 \series default
3424 3472 :
3425 3473 \family default
3426 3474 separator before input prompts.
3427 3475 Default: '
3428 3476 \family typewriter
3429 3477
3430 3478 \backslash
3431 3479 n
3432 3480 \family default
3433 3481 '
3434 3482 \layout List
3435 3483 \labelwidthstring 00.00.0000
3436 3484
3437 3485
3438 3486 \family typewriter
3439 3487 \series bold
3440 3488 -separate_out|so\SpecialChar ~
3441 3489 <string>
3442 3490 \family default
3443 3491 \series default
3444 3492 : separator before output prompts.
3445 3493 Default: nothing.
3446 3494 \layout List
3447 3495 \labelwidthstring 00.00.0000
3448 3496
3449 3497
3450 3498 \family typewriter
3451 3499 \series bold
3452 3500 -separate_out2|so2\SpecialChar ~
3453 3501 <string>
3454 3502 \series default
3455 3503 :
3456 3504 \family default
3457 3505 separator after output prompts.
3458 3506 Default: nothing.
3459 3507 \layout List
3460 3508 \labelwidthstring 00.00.0000
3461 3509
3462 3510 \SpecialChar ~
3463 3511 For these three options, use the value 0 to specify no separator.
3464 3512 \layout List
3465 3513 \labelwidthstring 00.00.0000
3466 3514
3467 3515
3468 3516 \family typewriter
3469 3517 \series bold
3470 3518 -nosep
3471 3519 \series default
3472 3520 :
3473 3521 \family default
3474 3522 shorthand for
3475 3523 \family typewriter
3476 3524 '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
3477 3525 \family default
3478 3526 .
3479 3527 Simply removes all input/output separators.
3480 3528 \layout List
3481 3529 \labelwidthstring 00.00.0000
3482 3530
3483 3531
3484 3532 \family typewriter
3485 3533 \series bold
3486 3534 -upgrade
3487 3535 \family default
3488 3536 \series default
3489 3537 : allows you to upgrade your
3490 3538 \family typewriter
3491 3539 IPYTHONDIR
3492 3540 \family default
3493 3541 configuration when you install a new version of IPython.
3494 3542 Since new versions may include new command line options or example files,
3495 3543 this copies updated ipythonrc-type files.
3496 3544 However, it backs up (with a
3497 3545 \family typewriter
3498 3546 .old
3499 3547 \family default
3500 3548 extension) all files which it overwrites so that you can merge back any
3501 3549 customizations you might have in your personal files.
3502 3550 \layout List
3503 3551 \labelwidthstring 00.00.0000
3504 3552
3505 3553
3506 3554 \family typewriter
3507 3555 \series bold
3508 3556 -Version
3509 3557 \series default
3510 3558 :
3511 3559 \family default
3512 3560 print version information and exit.
3513 3561 \layout List
3514 3562 \labelwidthstring 00.00.0000
3515 3563
3516 3564
3517 3565 \family typewriter
3518 3566 \series bold
3519 3567 -wxversion\SpecialChar ~
3520 3568 <string>:
3521 3569 \family default
3522 3570 \series default
3523 3571 Select a specific version of wxPython (used in conjunction with
3524 3572 \family typewriter
3525 3573 -wthread
3526 3574 \family default
3527 3575 ).
3528 3576 Requires the wxversion module, part of recent wxPython distributions
3529 3577 \layout List
3530 3578 \labelwidthstring 00.00.0000
3531 3579
3532 3580
3533 3581 \family typewriter
3534 3582 \series bold
3535 3583 -xmode\SpecialChar ~
3536 3584 <modename>
3537 3585 \series default
3538 3586 :
3539 3587 \family default
3540 3588 Mode for exception reporting.
3541 3589 \layout List
3542 3590 \labelwidthstring 00.00.0000
3543 3591
3544 3592 \SpecialChar ~
3545 3593 Valid modes: Plain, Context and Verbose.
3546 3594 \layout List
3547 3595 \labelwidthstring 00.00.0000
3548 3596
3549 3597 \SpecialChar ~
3550 3598 Plain: similar to python's normal traceback printing.
3551 3599 \layout List
3552 3600 \labelwidthstring 00.00.0000
3553 3601
3554 3602 \SpecialChar ~
3555 3603 Context: prints 5 lines of context source code around each line in the
3556 3604 traceback.
3557 3605 \layout List
3558 3606 \labelwidthstring 00.00.0000
3559 3607
3560 3608 \SpecialChar ~
3561 3609 Verbose: similar to Context, but additionally prints the variables currently
3562 3610 visible where the exception happened (shortening their strings if too long).
3563 3611 This can potentially be very slow, if you happen to have a huge data structure
3564 3612 whose string representation is complex to compute.
3565 3613 Your computer may appear to freeze for a while with cpu usage at 100%.
3566 3614 If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
3567 3615 it more than once).
3568 3616 \layout Section
3569 3617
3570 3618 Interactive use
3571 3619 \layout Standard
3572 3620
3573 3621
3574 3622 \series bold
3575 3623 Warning
3576 3624 \series default
3577 3625 : IPython relies on the existence of a global variable called
3578 3626 \family typewriter
3579 3627 __IP
3580 3628 \family default
3581 3629 which controls the shell itself.
3582 3630 If you redefine
3583 3631 \family typewriter
3584 3632 __IP
3585 3633 \family default
3586 3634 to anything, bizarre behavior will quickly occur.
3587 3635 \layout Standard
3588 3636
3589 3637 Other than the above warning, IPython is meant to work as a drop-in replacement
3590 3638 for the standard interactive interpreter.
3591 3639 As such, any code which is valid python should execute normally under IPython
3592 3640 (cases where this is not true should be reported as bugs).
3593 3641 It does, however, offer many features which are not available at a standard
3594 3642 python prompt.
3595 3643 What follows is a list of these.
3596 3644 \layout Subsection
3597 3645
3598 3646 Caution for Windows users
3599 3647 \layout Standard
3600 3648
3601 3649 Windows, unfortunately, uses the `
3602 3650 \family typewriter
3603 3651
3604 3652 \backslash
3605 3653
3606 3654 \family default
3607 3655 ' character as a path separator.
3608 3656 This is a terrible choice, because `
3609 3657 \family typewriter
3610 3658
3611 3659 \backslash
3612 3660
3613 3661 \family default
3614 3662 ' also represents the escape character in most modern programming languages,
3615 3663 including Python.
3616 3664 For this reason, issuing many of the commands discussed below (especially
3617 3665 magics which affect the filesystem) with `
3618 3666 \family typewriter
3619 3667
3620 3668 \backslash
3621 3669
3622 3670 \family default
3623 3671 ' in them will cause strange errors.
3624 3672 \layout Standard
3625 3673
3626 3674 A partial solution is to use instead the `
3627 3675 \family typewriter
3628 3676 /
3629 3677 \family default
3630 3678 ' character as a path separator, which Windows recognizes in
3631 3679 \emph on
3632 3680 most
3633 3681 \emph default
3634 3682 situations.
3635 3683 However, in Windows commands `
3636 3684 \family typewriter
3637 3685 /
3638 3686 \family default
3639 3687 ' flags options, so you can not use it for the root directory.
3640 3688 This means that paths beginning at the root must be typed in a contrived
3641 3689 manner like:
3642 3690 \newline
3643 3691
3644 3692 \family typewriter
3645 3693 %copy
3646 3694 \backslash
3647 3695 opt/foo/bar.txt
3648 3696 \backslash
3649 3697 tmp
3650 3698 \layout Standard
3651 3699
3652 3700 There is no sensible thing IPython can do to truly work around this flaw
3653 3701 in Windows
3654 3702 \begin_inset Foot
3655 3703 collapsed true
3656 3704
3657 3705 \layout Standard
3658 3706
3659 3707 If anyone comes up with a
3660 3708 \emph on
3661 3709 clean
3662 3710 \emph default
3663 3711 solution which works consistently and does not negatively impact other
3664 3712 platforms at all, I'll gladly accept a patch.
3665 3713 \end_inset
3666 3714
3667 3715 .
3668 3716 \layout Subsection
3669 3717
3670 3718
3671 3719 \begin_inset LatexCommand \label{sec:magic}
3672 3720
3673 3721 \end_inset
3674 3722
3675 3723 Magic command system
3676 3724 \layout Standard
3677 3725
3678 3726 IPython will treat any line whose first character is a
3679 3727 \family typewriter
3680 3728 %
3681 3729 \family default
3682 3730 as a special call to a 'magic' function.
3683 3731 These allow you to control the behavior of IPython itself, plus a lot of
3684 3732 system-type features.
3685 3733 They are all prefixed with a
3686 3734 \family typewriter
3687 3735 %
3688 3736 \family default
3689 3737 character, but parameters are given without parentheses or quotes.
3690 3738 \layout Standard
3691 3739
3692 3740 Example: typing
3693 3741 \family typewriter
3694 3742 '%cd mydir'
3695 3743 \family default
3696 3744 (without the quotes) changes you working directory to
3697 3745 \family typewriter
3698 3746 'mydir'
3699 3747 \family default
3700 3748 , if it exists.
3701 3749 \layout Standard
3702 3750
3703 3751 If you have 'automagic' enabled (in your
3704 3752 \family typewriter
3705 3753 ipythonrc
3706 3754 \family default
3707 3755 file, via the command line option
3708 3756 \family typewriter
3709 3757 -automagic
3710 3758 \family default
3711 3759 or with the
3712 3760 \family typewriter
3713 3761 %automagic
3714 3762 \family default
3715 3763 function), you don't need to type in the
3716 3764 \family typewriter
3717 3765 %
3718 3766 \family default
3719 3767 explicitly.
3720 3768 IPython will scan its internal list of magic functions and call one if
3721 3769 it exists.
3722 3770 With automagic on you can then just type '
3723 3771 \family typewriter
3724 3772 cd mydir
3725 3773 \family default
3726 3774 ' to go to directory '
3727 3775 \family typewriter
3728 3776 mydir
3729 3777 \family default
3730 3778 '.
3731 3779 The automagic system has the lowest possible precedence in name searches,
3732 3780 so defining an identifier with the same name as an existing magic function
3733 3781 will shadow it for automagic use.
3734 3782 You can still access the shadowed magic function by explicitly using the
3735 3783
3736 3784 \family typewriter
3737 3785 %
3738 3786 \family default
3739 3787 character at the beginning of the line.
3740 3788 \layout Standard
3741 3789
3742 3790 An example (with automagic on) should clarify all this:
3743 3791 \layout LyX-Code
3744 3792
3745 3793 In [1]: cd ipython # %cd is called by automagic
3746 3794 \layout LyX-Code
3747 3795
3748 3796 /home/fperez/ipython
3749 3797 \layout LyX-Code
3750 3798
3751 3799 In [2]: cd=1 # now cd is just a variable
3752 3800 \layout LyX-Code
3753 3801
3754 3802 In [3]: cd ..
3755 3803 # and doesn't work as a function anymore
3756 3804 \layout LyX-Code
3757 3805
3758 3806 ------------------------------------------------------------
3759 3807 \layout LyX-Code
3760 3808
3761 3809 File "<console>", line 1
3762 3810 \layout LyX-Code
3763 3811
3764 3812 cd ..
3765 3813 \layout LyX-Code
3766 3814
3767 3815 ^
3768 3816 \layout LyX-Code
3769 3817
3770 3818 SyntaxError: invalid syntax
3771 3819 \layout LyX-Code
3772 3820
3773 3821 \layout LyX-Code
3774 3822
3775 3823 In [4]: %cd ..
3776 3824 # but %cd always works
3777 3825 \layout LyX-Code
3778 3826
3779 3827 /home/fperez
3780 3828 \layout LyX-Code
3781 3829
3782 3830 In [5]: del cd # if you remove the cd variable
3783 3831 \layout LyX-Code
3784 3832
3785 3833 In [6]: cd ipython # automagic can work again
3786 3834 \layout LyX-Code
3787 3835
3788 3836 /home/fperez/ipython
3789 3837 \layout Standard
3790 3838
3791 3839 You can define your own magic functions to extend the system.
3792 3840 The following is a snippet of code which shows how to do it.
3793 3841 It is provided as file
3794 3842 \family typewriter
3795 3843 example-magic.py
3796 3844 \family default
3797 3845 in the examples directory:
3798 3846 \layout Standard
3799 3847
3800 3848
3801 3849 \begin_inset ERT
3802 3850 status Open
3803 3851
3804 3852 \layout Standard
3805 3853
3806 3854 \backslash
3807 3855 codelist{examples/example-magic.py}
3808 3856 \end_inset
3809 3857
3810 3858
3811 3859 \layout Standard
3812 3860
3813 3861 You can also define your own aliased names for magic functions.
3814 3862 In your
3815 3863 \family typewriter
3816 3864 ipythonrc
3817 3865 \family default
3818 3866 file, placing a line like:
3819 3867 \layout Standard
3820 3868
3821 3869
3822 3870 \family typewriter
3823 3871 execute __IP.magic_cl = __IP.magic_clear
3824 3872 \layout Standard
3825 3873
3826 3874 will define
3827 3875 \family typewriter
3828 3876 %cl
3829 3877 \family default
3830 3878 as a new name for
3831 3879 \family typewriter
3832 3880 %clear
3833 3881 \family default
3834 3882 .
3835 3883 \layout Standard
3836 3884
3837 3885 Type
3838 3886 \family typewriter
3839 3887 %magic
3840 3888 \family default
3841 3889 for more information, including a list of all available magic functions
3842 3890 at any time and their docstrings.
3843 3891 You can also type
3844 3892 \family typewriter
3845 3893 %magic_function_name?
3846 3894 \family default
3847 3895 (see sec.
3848 3896
3849 3897 \begin_inset LatexCommand \ref{sec:dyn-object-info}
3850 3898
3851 3899 \end_inset
3852 3900
3853 3901 for information on the
3854 3902 \family typewriter
3855 3903 '?'
3856 3904 \family default
3857 3905 system) to get information about any particular magic function you are
3858 3906 interested in.
3859 3907 \layout Subsubsection
3860 3908
3861 3909 Magic commands
3862 3910 \layout Standard
3863 3911
3864 3912 The rest of this section is automatically generated for each release from
3865 3913 the docstrings in the IPython code.
3866 3914 Therefore the formatting is somewhat minimal, but this method has the advantage
3867 3915 of having information always in sync with the code.
3868 3916 \layout Standard
3869 3917
3870 3918 A list of all the magic commands available in IPython's
3871 3919 \emph on
3872 3920 default
3873 3921 \emph default
3874 3922 installation follows.
3875 3923 This is similar to what you'll see by simply typing
3876 3924 \family typewriter
3877 3925 %magic
3878 3926 \family default
3879 3927 at the prompt, but that will also give you information about magic commands
3880 3928 you may have added as part of your personal customizations.
3881 3929 \layout Standard
3882 3930
3883 3931
3884 3932 \begin_inset Include \input{magic.tex}
3885 3933 preview false
3886 3934
3887 3935 \end_inset
3888 3936
3889 3937
3890 3938 \layout Subsection
3891 3939
3892 3940 Access to the standard Python help
3893 3941 \layout Standard
3894 3942
3895 3943 As of Python 2.1, a help system is available with access to object docstrings
3896 3944 and the Python manuals.
3897 3945 Simply type
3898 3946 \family typewriter
3899 3947 'help'
3900 3948 \family default
3901 3949 (no quotes) to access it.
3902 3950 You can also type
3903 3951 \family typewriter
3904 3952 help(object)
3905 3953 \family default
3906 3954 to obtain information about a given object, and
3907 3955 \family typewriter
3908 3956 help('keyword')
3909 3957 \family default
3910 3958 for information on a keyword.
3911 3959 As noted in sec.
3912 3960
3913 3961 \begin_inset LatexCommand \ref{sec:help-access}
3914 3962
3915 3963 \end_inset
3916 3964
3917 3965 , you need to properly configure your environment variable
3918 3966 \family typewriter
3919 3967 PYTHONDOCS
3920 3968 \family default
3921 3969 for this feature to work correctly.
3922 3970 \layout Subsection
3923 3971
3924 3972
3925 3973 \begin_inset LatexCommand \label{sec:dyn-object-info}
3926 3974
3927 3975 \end_inset
3928 3976
3929 3977 Dynamic object information
3930 3978 \layout Standard
3931 3979
3932 3980 Typing
3933 3981 \family typewriter
3934 3982 ?word
3935 3983 \family default
3936 3984 or
3937 3985 \family typewriter
3938 3986 word?
3939 3987 \family default
3940 3988 prints detailed information about an object.
3941 3989 If certain strings in the object are too long (docstrings, code, etc.) they
3942 3990 get snipped in the center for brevity.
3943 3991 This system gives access variable types and values, full source code for
3944 3992 any object (if available), function prototypes and other useful information.
3945 3993 \layout Standard
3946 3994
3947 3995 Typing
3948 3996 \family typewriter
3949 3997 ??word
3950 3998 \family default
3951 3999 or
3952 4000 \family typewriter
3953 4001 word??
3954 4002 \family default
3955 4003 gives access to the full information without snipping long strings.
3956 4004 Long strings are sent to the screen through the
3957 4005 \family typewriter
3958 4006 less
3959 4007 \family default
3960 4008 pager if longer than the screen and printed otherwise.
3961 4009 On systems lacking the
3962 4010 \family typewriter
3963 4011 less
3964 4012 \family default
3965 4013 command, IPython uses a very basic internal pager.
3966 4014 \layout Standard
3967 4015
3968 4016 The following magic functions are particularly useful for gathering information
3969 4017 about your working environment.
3970 4018 You can get more details by typing
3971 4019 \family typewriter
3972 4020 %magic
3973 4021 \family default
3974 4022 or querying them individually (use
3975 4023 \family typewriter
3976 4024 %function_name?
3977 4025 \family default
3978 4026 with or without the
3979 4027 \family typewriter
3980 4028 %
3981 4029 \family default
3982 4030 ), this is just a summary:
3983 4031 \layout List
3984 4032 \labelwidthstring 00.00.0000
3985 4033
3986 4034
3987 4035 \family typewriter
3988 4036 \series bold
3989 4037 %pdoc\SpecialChar ~
3990 4038 <object>
3991 4039 \family default
3992 4040 \series default
3993 4041 : Print (or run through a pager if too long) the docstring for an object.
3994 4042 If the given object is a class, it will print both the class and the constructo
3995 4043 r docstrings.
3996 4044 \layout List
3997 4045 \labelwidthstring 00.00.0000
3998 4046
3999 4047
4000 4048 \family typewriter
4001 4049 \series bold
4002 4050 %pdef\SpecialChar ~
4003 4051 <object>
4004 4052 \family default
4005 4053 \series default
4006 4054 : Print the definition header for any callable object.
4007 4055 If the object is a class, print the constructor information.
4008 4056 \layout List
4009 4057 \labelwidthstring 00.00.0000
4010 4058
4011 4059
4012 4060 \family typewriter
4013 4061 \series bold
4014 4062 %psource\SpecialChar ~
4015 4063 <object>
4016 4064 \family default
4017 4065 \series default
4018 4066 : Print (or run through a pager if too long) the source code for an object.
4019 4067 \layout List
4020 4068 \labelwidthstring 00.00.0000
4021 4069
4022 4070
4023 4071 \family typewriter
4024 4072 \series bold
4025 4073 %pfile\SpecialChar ~
4026 4074 <object>
4027 4075 \family default
4028 4076 \series default
4029 4077 : Show the entire source file where an object was defined via a pager, opening
4030 4078 it at the line where the object definition begins.
4031 4079 \layout List
4032 4080 \labelwidthstring 00.00.0000
4033 4081
4034 4082
4035 4083 \family typewriter
4036 4084 \series bold
4037 4085 %who/%whos
4038 4086 \family default
4039 4087 \series default
4040 4088 : These functions give information about identifiers you have defined interactiv
4041 4089 ely (not things you loaded or defined in your configuration files).
4042 4090
4043 4091 \family typewriter
4044 4092 %who
4045 4093 \family default
4046 4094 just prints a list of identifiers and
4047 4095 \family typewriter
4048 4096 %whos
4049 4097 \family default
4050 4098 prints a table with some basic details about each identifier.
4051 4099 \layout Standard
4052 4100
4053 4101 Note that the dynamic object information functions (
4054 4102 \family typewriter
4055 4103 ?/??, %pdoc, %pfile, %pdef, %psource
4056 4104 \family default
4057 4105 ) give you access to documentation even on things which are not really defined
4058 4106 as separate identifiers.
4059 4107 Try for example typing
4060 4108 \family typewriter
4061 4109 {}.get?
4062 4110 \family default
4063 4111 or after doing
4064 4112 \family typewriter
4065 4113 import os
4066 4114 \family default
4067 4115 , type
4068 4116 \family typewriter
4069 4117 os.path.abspath??
4070 4118 \family default
4071 4119 .
4072 4120 \layout Subsection
4073 4121
4074 4122
4075 4123 \begin_inset LatexCommand \label{sec:readline}
4076 4124
4077 4125 \end_inset
4078 4126
4079 4127 Readline-based features
4080 4128 \layout Standard
4081 4129
4082 4130 These features require the GNU readline library, so they won't work if your
4083 4131 Python installation lacks readline support.
4084 4132 We will first describe the default behavior IPython uses, and then how
4085 4133 to change it to suit your preferences.
4086 4134 \layout Subsubsection
4087 4135
4088 4136 Command line completion
4089 4137 \layout Standard
4090 4138
4091 4139 At any time, hitting TAB will complete any available python commands or
4092 4140 variable names, and show you a list of the possible completions if there's
4093 4141 no unambiguous one.
4094 4142 It will also complete filenames in the current directory if no python names
4095 4143 match what you've typed so far.
4096 4144 \layout Subsubsection
4097 4145
4098 4146 Search command history
4099 4147 \layout Standard
4100 4148
4101 4149 IPython provides two ways for searching through previous input and thus
4102 4150 reduce the need for repetitive typing:
4103 4151 \layout Enumerate
4104 4152
4105 4153 Start typing, and then use
4106 4154 \family typewriter
4107 4155 Ctrl-p
4108 4156 \family default
4109 4157 (previous,up) and
4110 4158 \family typewriter
4111 4159 Ctrl-n
4112 4160 \family default
4113 4161 (next,down) to search through only the history items that match what you've
4114 4162 typed so far.
4115 4163 If you use
4116 4164 \family typewriter
4117 4165 Ctrl-p/Ctrl-n
4118 4166 \family default
4119 4167 at a blank prompt, they just behave like normal arrow keys.
4120 4168 \layout Enumerate
4121 4169
4122 4170 Hit
4123 4171 \family typewriter
4124 4172 Ctrl-r
4125 4173 \family default
4126 4174 : opens a search prompt.
4127 4175 Begin typing and the system searches your history for lines that contain
4128 4176 what you've typed so far, completing as much as it can.
4129 4177 \layout Subsubsection
4130 4178
4131 4179 Persistent command history across sessions
4132 4180 \layout Standard
4133 4181
4134 4182 IPython will save your input history when it leaves and reload it next time
4135 4183 you restart it.
4136 4184 By default, the history file is named
4137 4185 \family typewriter
4138 4186 $IPYTHONDIR/history
4139 4187 \family default
4140 4188 , but if you've loaded a named profile, '
4141 4189 \family typewriter
4142 4190 -PROFILE_NAME
4143 4191 \family default
4144 4192 ' is appended to the name.
4145 4193 This allows you to keep separate histories related to various tasks: commands
4146 4194 related to numerical work will not be clobbered by a system shell history,
4147 4195 for example.
4148 4196 \layout Subsubsection
4149 4197
4150 4198 Autoindent
4151 4199 \layout Standard
4152 4200
4153 4201 IPython can recognize lines ending in ':' and indent the next line, while
4154 4202 also un-indenting automatically after 'raise' or 'return'.
4155 4203
4156 4204 \layout Standard
4157 4205
4158 4206 This feature uses the readline library, so it will honor your
4159 4207 \family typewriter
4160 4208 ~/.inputrc
4161 4209 \family default
4162 4210 configuration (or whatever file your
4163 4211 \family typewriter
4164 4212 INPUTRC
4165 4213 \family default
4166 4214 variable points to).
4167 4215 Adding the following lines to your
4168 4216 \family typewriter
4169 4217 .inputrc
4170 4218 \family default
4171 4219 file can make indenting/unindenting more convenient (
4172 4220 \family typewriter
4173 4221 M-i
4174 4222 \family default
4175 4223 indents,
4176 4224 \family typewriter
4177 4225 M-u
4178 4226 \family default
4179 4227 unindents):
4180 4228 \layout Standard
4181 4229
4182 4230
4183 4231 \family typewriter
4184 4232 $if Python
4185 4233 \newline
4186 4234 "
4187 4235 \backslash
4188 4236 M-i": "\SpecialChar ~
4189 4237 \SpecialChar ~
4190 4238 \SpecialChar ~
4191 4239 \SpecialChar ~
4192 4240 "
4193 4241 \newline
4194 4242 "
4195 4243 \backslash
4196 4244 M-u": "
4197 4245 \backslash
4198 4246 d
4199 4247 \backslash
4200 4248 d
4201 4249 \backslash
4202 4250 d
4203 4251 \backslash
4204 4252 d"
4205 4253 \newline
4206 4254 $endif
4207 4255 \layout Standard
4208 4256
4209 4257 Note that there are 4 spaces between the quote marks after
4210 4258 \family typewriter
4211 4259 "M-i"
4212 4260 \family default
4213 4261 above.
4214 4262 \layout Standard
4215 4263
4216 4264
4217 4265 \series bold
4218 4266 Warning:
4219 4267 \series default
4220 4268 this feature is ON by default, but it can cause problems with the pasting
4221 4269 of multi-line indented code (the pasted code gets re-indented on each line).
4222 4270 A magic function
4223 4271 \family typewriter
4224 4272 %autoindent
4225 4273 \family default
4226 4274 allows you to toggle it on/off at runtime.
4227 4275 You can also disable it permanently on in your
4228 4276 \family typewriter
4229 4277 ipythonrc
4230 4278 \family default
4231 4279 file (set
4232 4280 \family typewriter
4233 4281 autoindent 0
4234 4282 \family default
4235 4283 ).
4236 4284 \layout Subsubsection
4237 4285
4238 4286 Customizing readline behavior
4239 4287 \layout Standard
4240 4288
4241 4289 All these features are based on the GNU readline library, which has an extremely
4242 4290 customizable interface.
4243 4291 Normally, readline is configured via a file which defines the behavior
4244 4292 of the library; the details of the syntax for this can be found in the
4245 4293 readline documentation available with your system or on the Internet.
4246 4294 IPython doesn't read this file (if it exists) directly, but it does support
4247 4295 passing to readline valid options via a simple interface.
4248 4296 In brief, you can customize readline by setting the following options in
4249 4297 your
4250 4298 \family typewriter
4251 4299 ipythonrc
4252 4300 \family default
4253 4301 configuration file (note that these options can
4254 4302 \emph on
4255 4303 not
4256 4304 \emph default
4257 4305 be specified at the command line):
4258 4306 \layout List
4259 4307 \labelwidthstring 00.00.0000
4260 4308
4261 4309
4262 4310 \family typewriter
4263 4311 \series bold
4264 4312 readline_parse_and_bind:
4265 4313 \family default
4266 4314 \series default
4267 4315 this option can appear as many times as you want, each time defining a
4268 4316 string to be executed via a
4269 4317 \family typewriter
4270 4318 readline.parse_and_bind()
4271 4319 \family default
4272 4320 command.
4273 4321 The syntax for valid commands of this kind can be found by reading the
4274 4322 documentation for the GNU readline library, as these commands are of the
4275 4323 kind which readline accepts in its configuration file.
4276 4324 \layout List
4277 4325 \labelwidthstring 00.00.0000
4278 4326
4279 4327
4280 4328 \family typewriter
4281 4329 \series bold
4282 4330 readline_remove_delims:
4283 4331 \family default
4284 4332 \series default
4285 4333 a string of characters to be removed from the default word-delimiters list
4286 4334 used by readline, so that completions may be performed on strings which
4287 4335 contain them.
4288 4336 Do not change the default value unless you know what you're doing.
4289 4337 \layout List
4290 4338 \labelwidthstring 00.00.0000
4291 4339
4292 4340
4293 4341 \family typewriter
4294 4342 \series bold
4295 4343 readline_omit__names
4296 4344 \family default
4297 4345 \series default
4298 4346 : when tab-completion is enabled, hitting
4299 4347 \family typewriter
4300 4348 <tab>
4301 4349 \family default
4302 4350 after a '
4303 4351 \family typewriter
4304 4352 .
4305 4353 \family default
4306 4354 ' in a name will complete all attributes of an object, including all the
4307 4355 special methods whose names include double underscores (like
4308 4356 \family typewriter
4309 4357 __getitem__
4310 4358 \family default
4311 4359 or
4312 4360 \family typewriter
4313 4361 __class__
4314 4362 \family default
4315 4363 ).
4316 4364 If you'd rather not see these names by default, you can set this option
4317 4365 to 1.
4318 4366 Note that even when this option is set, you can still see those names by
4319 4367 explicitly typing a
4320 4368 \family typewriter
4321 4369 _
4322 4370 \family default
4323 4371 after the period and hitting
4324 4372 \family typewriter
4325 4373 <tab>
4326 4374 \family default
4327 4375 : '
4328 4376 \family typewriter
4329 4377 name._<tab>
4330 4378 \family default
4331 4379 ' will always complete attribute names starting with '
4332 4380 \family typewriter
4333 4381 _
4334 4382 \family default
4335 4383 '.
4336 4384 \layout List
4337 4385 \labelwidthstring 00.00.0000
4338 4386
4339 4387 \SpecialChar ~
4340 4388 This option is off by default so that new users see all attributes of any
4341 4389 objects they are dealing with.
4342 4390 \layout Standard
4343 4391
4344 4392 You will find the default values along with a corresponding detailed explanation
4345 4393 in your
4346 4394 \family typewriter
4347 4395 ipythonrc
4348 4396 \family default
4349 4397 file.
4350 4398 \layout Subsection
4351 4399
4352 4400 Session logging and restoring
4353 4401 \layout Standard
4354 4402
4355 4403 You can log all input from a session either by starting IPython with the
4356 4404 command line switches
4357 4405 \family typewriter
4358 4406 -log
4359 4407 \family default
4360 4408 or
4361 4409 \family typewriter
4362 4410 -logfile
4363 4411 \family default
4364 4412 (see sec.
4365 4413
4366 4414 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
4367 4415
4368 4416 \end_inset
4369 4417
4370 4418 )or by activating the logging at any moment with the magic function
4371 4419 \family typewriter
4372 4420 %logstart
4373 4421 \family default
4374 4422 .
4375 4423
4376 4424 \layout Standard
4377 4425
4378 4426 Log files can later be reloaded with the
4379 4427 \family typewriter
4380 4428 -logplay
4381 4429 \family default
4382 4430 option and IPython will attempt to 'replay' the log by executing all the
4383 4431 lines in it, thus restoring the state of a previous session.
4384 4432 This feature is not quite perfect, but can still be useful in many cases.
4385 4433 \layout Standard
4386 4434
4387 4435 The log files can also be used as a way to have a permanent record of any
4388 4436 code you wrote while experimenting.
4389 4437 Log files are regular text files which you can later open in your favorite
4390 4438 text editor to extract code or to 'clean them up' before using them to
4391 4439 replay a session.
4392 4440 \layout Standard
4393 4441
4394 4442 The
4395 4443 \family typewriter
4396 4444 %logstart
4397 4445 \family default
4398 4446 function for activating logging in mid-session is used as follows:
4399 4447 \layout Standard
4400 4448
4401 4449
4402 4450 \family typewriter
4403 4451 %logstart [log_name [log_mode]]
4404 4452 \layout Standard
4405 4453
4406 4454 If no name is given, it defaults to a file named
4407 4455 \family typewriter
4408 4456 'log'
4409 4457 \family default
4410 4458 in your IPYTHONDIR directory, in
4411 4459 \family typewriter
4412 4460 'rotate'
4413 4461 \family default
4414 4462 mode (see below).
4415 4463 \layout Standard
4416 4464
4417 4465 '
4418 4466 \family typewriter
4419 4467 %logstart name
4420 4468 \family default
4421 4469 ' saves to file
4422 4470 \family typewriter
4423 4471 'name'
4424 4472 \family default
4425 4473 in
4426 4474 \family typewriter
4427 4475 'backup'
4428 4476 \family default
4429 4477 mode.
4430 4478 It saves your history up to that point and then continues logging.
4431 4479 \layout Standard
4432 4480
4433 4481
4434 4482 \family typewriter
4435 4483 %logstart
4436 4484 \family default
4437 4485 takes a second optional parameter: logging mode.
4438 4486 This can be one of (note that the modes are given unquoted):
4439 4487 \layout List
4440 4488 \labelwidthstring 00.00.0000
4441 4489
4442 4490
4443 4491 \family typewriter
4444 4492 over
4445 4493 \family default
4446 4494 : overwrite existing
4447 4495 \family typewriter
4448 4496 log_name
4449 4497 \family default
4450 4498 .
4451 4499 \layout List
4452 4500 \labelwidthstring 00.00.0000
4453 4501
4454 4502
4455 4503 \family typewriter
4456 4504 backup
4457 4505 \family default
4458 4506 : rename (if exists) to
4459 4507 \family typewriter
4460 4508 log_name~
4461 4509 \family default
4462 4510 and start
4463 4511 \family typewriter
4464 4512 log_name
4465 4513 \family default
4466 4514 .
4467 4515 \layout List
4468 4516 \labelwidthstring 00.00.0000
4469 4517
4470 4518
4471 4519 \family typewriter
4472 4520 append
4473 4521 \family default
4474 4522 : well, that says it.
4475 4523 \layout List
4476 4524 \labelwidthstring 00.00.0000
4477 4525
4478 4526
4479 4527 \family typewriter
4480 4528 rotate
4481 4529 \family default
4482 4530 : create rotating logs
4483 4531 \family typewriter
4484 4532 log_name
4485 4533 \family default
4486 4534 .
4487 4535 \family typewriter
4488 4536 1~
4489 4537 \family default
4490 4538 ,
4491 4539 \family typewriter
4492 4540 log_name.2~
4493 4541 \family default
4494 4542 , etc.
4495 4543 \layout Standard
4496 4544
4497 4545 The
4498 4546 \family typewriter
4499 4547 %logoff
4500 4548 \family default
4501 4549 and
4502 4550 \family typewriter
4503 4551 %logon
4504 4552 \family default
4505 4553 functions allow you to temporarily stop and resume logging to a file which
4506 4554 had previously been started with
4507 4555 \family typewriter
4508 4556 %logstart
4509 4557 \family default
4510 4558 .
4511 4559 They will fail (with an explanation) if you try to use them before logging
4512 4560 has been started.
4513 4561 \layout Subsection
4514 4562
4515 4563
4516 4564 \begin_inset LatexCommand \label{sub:System-shell-access}
4517 4565
4518 4566 \end_inset
4519 4567
4520 4568 System shell access
4521 4569 \layout Standard
4522 4570
4523 4571 Any input line beginning with a
4524 4572 \family typewriter
4525 4573 !
4526 4574 \family default
4527 4575 character is passed verbatim (minus the
4528 4576 \family typewriter
4529 4577 !
4530 4578 \family default
4531 4579 , of course) to the underlying operating system.
4532 4580 For example, typing
4533 4581 \family typewriter
4534 4582 !ls
4535 4583 \family default
4536 4584 will run
4537 4585 \family typewriter
4538 4586 'ls'
4539 4587 \family default
4540 4588 in the current directory.
4541 4589 \layout Subsubsection
4542 4590
4543 4591 Manual capture of command output
4544 4592 \layout Standard
4545 4593
4546 4594 If the input line begins with
4547 4595 \emph on
4548 4596 two
4549 4597 \emph default
4550 4598 exclamation marks,
4551 4599 \family typewriter
4552 4600 !!
4553 4601 \family default
4554 4602 , the command is executed but its output is captured and returned as a python
4555 4603 list, split on newlines.
4556 4604 Any output sent by the subprocess to standard error is printed separately,
4557 4605 so that the resulting list only captures standard output.
4558 4606 The
4559 4607 \family typewriter
4560 4608 !!
4561 4609 \family default
4562 4610 syntax is a shorthand for the
4563 4611 \family typewriter
4564 4612 %sx
4565 4613 \family default
4566 4614 magic command.
4567 4615 \layout Standard
4568 4616
4569 4617 Finally, the
4570 4618 \family typewriter
4571 4619 %sc
4572 4620 \family default
4573 4621 magic (short for `shell capture') is similar to
4574 4622 \family typewriter
4575 4623 %sx
4576 4624 \family default
4577 4625 , but allowing more fine-grained control of the capture details, and storing
4578 4626 the result directly into a named variable.
4579 4627 \layout Standard
4580 4628
4581 4629 See Sec.\SpecialChar ~
4582 4630
4583 4631 \begin_inset LatexCommand \ref{sec:magic}
4584 4632
4585 4633 \end_inset
4586 4634
4587 4635 for details on the magics
4588 4636 \family typewriter
4589 4637 %sc
4590 4638 \family default
4591 4639 and
4592 4640 \family typewriter
4593 4641 %sx
4594 4642 \family default
4595 4643 , or use IPython's own help (
4596 4644 \family typewriter
4597 4645 sc?
4598 4646 \family default
4599 4647 and
4600 4648 \family typewriter
4601 4649 sx?
4602 4650 \family default
4603 4651 ) for further details.
4604 4652 \layout Standard
4605 4653
4606 4654 IPython also allows you to expand the value of python variables when making
4607 4655 system calls.
4608 4656 Any python variable or expression which you prepend with
4609 4657 \family typewriter
4610 4658 $
4611 4659 \family default
4612 4660 will get expanded before the system call is made.
4613 4661
4614 4662 \layout Standard
4615 4663
4616 4664
4617 4665 \family typewriter
4618 4666 In [1]: pyvar='Hello world'
4619 4667 \newline
4620 4668 In [2]: !echo "A python variable: $pyvar"
4621 4669 \newline
4622 4670 A python variable: Hello world
4623 4671 \layout Standard
4624 4672
4625 4673 If you want the shell to actually see a literal
4626 4674 \family typewriter
4627 4675 $
4628 4676 \family default
4629 4677 , you need to type it twice:
4630 4678 \layout Standard
4631 4679
4632 4680
4633 4681 \family typewriter
4634 4682 In [3]: !echo "A system variable: $$HOME"
4635 4683 \newline
4636 4684 A system variable: /home/fperez
4637 4685 \layout Standard
4638 4686
4639 4687 You can pass arbitrary expressions, though you'll need to delimit them with
4640 4688
4641 4689 \family typewriter
4642 4690 {}
4643 4691 \family default
4644 4692 if there is ambiguity as to the extent of the expression:
4645 4693 \layout Standard
4646 4694
4647 4695
4648 4696 \family typewriter
4649 4697 In [5]: x=10
4650 4698 \newline
4651 4699 In [6]: y=20
4652 4700 \newline
4653 4701 In [13]: !echo $x+y
4654 4702 \newline
4655 4703 10+y
4656 4704 \newline
4657 4705 In [7]: !echo ${x+y}
4658 4706 \newline
4659 4707 30
4660 4708 \layout Standard
4661 4709
4662 4710 Even object attributes can be expanded:
4663 4711 \layout Standard
4664 4712
4665 4713
4666 4714 \family typewriter
4667 4715 In [12]: !echo $sys.argv
4668 4716 \newline
4669 4717 [/home/fperez/usr/bin/ipython]
4670 4718 \layout Subsection
4671 4719
4672 4720 System command aliases
4673 4721 \layout Standard
4674 4722
4675 4723 The
4676 4724 \family typewriter
4677 4725 %alias
4678 4726 \family default
4679 4727 magic function and the
4680 4728 \family typewriter
4681 4729 alias
4682 4730 \family default
4683 4731 option in the
4684 4732 \family typewriter
4685 4733 ipythonrc
4686 4734 \family default
4687 4735 configuration file allow you to define magic functions which are in fact
4688 4736 system shell commands.
4689 4737 These aliases can have parameters.
4690 4738
4691 4739 \layout Standard
4692 4740
4693 4741 '
4694 4742 \family typewriter
4695 4743 %alias alias_name cmd
4696 4744 \family default
4697 4745 ' defines '
4698 4746 \family typewriter
4699 4747 alias_name
4700 4748 \family default
4701 4749 ' as an alias for '
4702 4750 \family typewriter
4703 4751 cmd
4704 4752 \family default
4705 4753 '
4706 4754 \layout Standard
4707 4755
4708 4756 Then, typing '
4709 4757 \family typewriter
4710 4758 %alias_name params
4711 4759 \family default
4712 4760 ' will execute the system command '
4713 4761 \family typewriter
4714 4762 cmd params
4715 4763 \family default
4716 4764 ' (from your underlying operating system).
4717 4765
4718 4766 \layout Standard
4719 4767
4720 4768 You can also define aliases with parameters using
4721 4769 \family typewriter
4722 4770 %s
4723 4771 \family default
4724 4772 specifiers (one per parameter).
4725 4773 The following example defines the
4726 4774 \family typewriter
4727 4775 %parts
4728 4776 \family default
4729 4777 function as an alias to the command '
4730 4778 \family typewriter
4731 4779 echo first %s second %s
4732 4780 \family default
4733 4781 ' where each
4734 4782 \family typewriter
4735 4783 %s
4736 4784 \family default
4737 4785 will be replaced by a positional parameter to the call to
4738 4786 \family typewriter
4739 4787 %parts:
4740 4788 \layout Standard
4741 4789
4742 4790
4743 4791 \family typewriter
4744 4792 In [1]: alias parts echo first %s second %s
4745 4793 \newline
4746 4794 In [2]: %parts A B
4747 4795 \newline
4748 4796 first A second B
4749 4797 \newline
4750 4798 In [3]: %parts A
4751 4799 \newline
4752 4800 Incorrect number of arguments: 2 expected.
4753 4801
4754 4802 \newline
4755 4803 parts is an alias to: 'echo first %s second %s'
4756 4804 \layout Standard
4757 4805
4758 4806 If called with no parameters,
4759 4807 \family typewriter
4760 4808 %alias
4761 4809 \family default
4762 4810 prints the table of currently defined aliases.
4763 4811 \layout Standard
4764 4812
4765 4813 The
4766 4814 \family typewriter
4767 4815 %rehash/rehashx
4768 4816 \family default
4769 4817 magics allow you to load your entire
4770 4818 \family typewriter
4771 4819 $PATH
4772 4820 \family default
4773 4821 as ipython aliases.
4774 4822 See their respective docstrings (or sec.\SpecialChar ~
4775 4823
4776 4824 \begin_inset LatexCommand \ref{sec:magic}
4777 4825
4778 4826 \end_inset
4779 4827
4780 4828 for further details).
4781 4829 \layout Subsection
4782 4830
4783 4831
4784 4832 \begin_inset LatexCommand \label{sec:dreload}
4785 4833
4786 4834 \end_inset
4787 4835
4788 4836 Recursive reload
4789 4837 \layout Standard
4790 4838
4791 4839 The
4792 4840 \family typewriter
4793 4841 %dreload
4794 4842 \family default
4795 4843 command does a recursive reload of a module: changes made to the module
4796 4844 since you imported will actually be available without having to exit.
4797 4845 \layout Subsection
4798 4846
4799 4847 Verbose and colored exception traceback printouts
4800 4848 \layout Standard
4801 4849
4802 4850 IPython provides the option to see very detailed exception tracebacks, which
4803 4851 can be especially useful when debugging large programs.
4804 4852 You can run any Python file with the
4805 4853 \family typewriter
4806 4854 %run
4807 4855 \family default
4808 4856 function to benefit from these detailed tracebacks.
4809 4857 Furthermore, both normal and verbose tracebacks can be colored (if your
4810 4858 terminal supports it) which makes them much easier to parse visually.
4811 4859 \layout Standard
4812 4860
4813 4861 See the magic
4814 4862 \family typewriter
4815 4863 xmode
4816 4864 \family default
4817 4865 and
4818 4866 \family typewriter
4819 4867 colors
4820 4868 \family default
4821 4869 functions for details (just type
4822 4870 \family typewriter
4823 4871 %magic
4824 4872 \family default
4825 4873 ).
4826 4874 \layout Standard
4827 4875
4828 4876 These features are basically a terminal version of Ka-Ping Yee's
4829 4877 \family typewriter
4830 4878 cgitb
4831 4879 \family default
4832 4880 module, now part of the standard Python library.
4833 4881 \layout Subsection
4834 4882
4835 4883
4836 4884 \begin_inset LatexCommand \label{sec:cache_input}
4837 4885
4838 4886 \end_inset
4839 4887
4840 4888 Input caching system
4841 4889 \layout Standard
4842 4890
4843 4891 IPython offers numbered prompts (In/Out) with input and output caching.
4844 4892 All input is saved and can be retrieved as variables (besides the usual
4845 4893 arrow key recall).
4846 4894 \layout Standard
4847 4895
4848 4896 The following GLOBAL variables always exist (so don't overwrite them!):
4849 4897
4850 4898 \family typewriter
4851 4899 _i
4852 4900 \family default
4853 4901 : stores previous input.
4854 4902
4855 4903 \family typewriter
4856 4904 _ii
4857 4905 \family default
4858 4906 : next previous.
4859 4907
4860 4908 \family typewriter
4861 4909 _iii
4862 4910 \family default
4863 4911 : next-next previous.
4864 4912
4865 4913 \family typewriter
4866 4914 _ih
4867 4915 \family default
4868 4916 : a list of all input
4869 4917 \family typewriter
4870 4918 _ih[n]
4871 4919 \family default
4872 4920 is the input from line
4873 4921 \family typewriter
4874 4922 n
4875 4923 \family default
4876 4924 and this list is aliased to the global variable
4877 4925 \family typewriter
4878 4926 In
4879 4927 \family default
4880 4928 .
4881 4929 If you overwrite
4882 4930 \family typewriter
4883 4931 In
4884 4932 \family default
4885 4933 with a variable of your own, you can remake the assignment to the internal
4886 4934 list with a simple
4887 4935 \family typewriter
4888 4936 'In=_ih'
4889 4937 \family default
4890 4938 .
4891 4939 \layout Standard
4892 4940
4893 4941 Additionally, global variables named
4894 4942 \family typewriter
4895 4943 _i<n>
4896 4944 \family default
4897 4945 are dynamically created (
4898 4946 \family typewriter
4899 4947 <n>
4900 4948 \family default
4901 4949 being the prompt counter), such that
4902 4950 \newline
4903 4951
4904 4952 \family typewriter
4905 4953 _i<n> == _ih[<n>] == In[<n>].
4906 4954 \layout Standard
4907 4955
4908 4956 For example, what you typed at prompt 14 is available as
4909 4957 \family typewriter
4910 4958 _i14,
4911 4959 \family default
4912 4960
4913 4961 \family typewriter
4914 4962 _ih[14]
4915 4963 \family default
4916 4964 and
4917 4965 \family typewriter
4918 4966 In[14]
4919 4967 \family default
4920 4968 .
4921 4969 \layout Standard
4922 4970
4923 4971 This allows you to easily cut and paste multi line interactive prompts by
4924 4972 printing them out: they print like a clean string, without prompt characters.
4925 4973 You can also manipulate them like regular variables (they are strings),
4926 4974 modify or exec them (typing
4927 4975 \family typewriter
4928 4976 'exec _i9'
4929 4977 \family default
4930 4978 will re-execute the contents of input prompt 9, '
4931 4979 \family typewriter
4932 4980 exec In[9:14]+In[18]
4933 4981 \family default
4934 4982 ' will re-execute lines 9 through 13 and line 18).
4935 4983 \layout Standard
4936 4984
4937 4985 You can also re-execute multiple lines of input easily by using the magic
4938 4986
4939 4987 \family typewriter
4940 4988 %macro
4941 4989 \family default
4942 4990 function (which automates the process and allows re-execution without having
4943 4991 to type '
4944 4992 \family typewriter
4945 4993 exec
4946 4994 \family default
4947 4995 ' every time).
4948 4996 The macro system also allows you to re-execute previous lines which include
4949 4997 magic function calls (which require special processing).
4950 4998 Type
4951 4999 \family typewriter
4952 5000 %macro?
4953 5001 \family default
4954 5002 or see sec.
4955 5003
4956 5004 \begin_inset LatexCommand \ref{sec:magic}
4957 5005
4958 5006 \end_inset
4959 5007
4960 5008 for more details on the macro system.
4961 5009 \layout Standard
4962 5010
4963 5011 A history function
4964 5012 \family typewriter
4965 5013 %hist
4966 5014 \family default
4967 5015 allows you to see any part of your input history by printing a range of
4968 5016 the
4969 5017 \family typewriter
4970 5018 _i
4971 5019 \family default
4972 5020 variables.
4973 5021 \layout Subsection
4974 5022
4975 5023
4976 5024 \begin_inset LatexCommand \label{sec:cache_output}
4977 5025
4978 5026 \end_inset
4979 5027
4980 5028 Output caching system
4981 5029 \layout Standard
4982 5030
4983 5031 For output that is returned from actions, a system similar to the input
4984 5032 cache exists but using
4985 5033 \family typewriter
4986 5034 _
4987 5035 \family default
4988 5036 instead of
4989 5037 \family typewriter
4990 5038 _i
4991 5039 \family default
4992 5040 .
4993 5041 Only actions that produce a result (NOT assignments, for example) are cached.
4994 5042 If you are familiar with Mathematica, IPython's
4995 5043 \family typewriter
4996 5044 _
4997 5045 \family default
4998 5046 variables behave exactly like Mathematica's
4999 5047 \family typewriter
5000 5048 %
5001 5049 \family default
5002 5050 variables.
5003 5051 \layout Standard
5004 5052
5005 5053 The following GLOBAL variables always exist (so don't overwrite them!):
5006 5054
5007 5055 \layout List
5008 5056 \labelwidthstring 00.00.0000
5009 5057
5010 5058
5011 5059 \family typewriter
5012 5060 \series bold
5013 5061 _
5014 5062 \family default
5015 5063 \series default
5016 5064 (a
5017 5065 \emph on
5018 5066 single
5019 5067 \emph default
5020 5068 underscore) : stores previous output, like Python's default interpreter.
5021 5069 \layout List
5022 5070 \labelwidthstring 00.00.0000
5023 5071
5024 5072
5025 5073 \family typewriter
5026 5074 \series bold
5027 5075 __
5028 5076 \family default
5029 5077 \series default
5030 5078 (two underscores): next previous.
5031 5079 \layout List
5032 5080 \labelwidthstring 00.00.0000
5033 5081
5034 5082
5035 5083 \family typewriter
5036 5084 \series bold
5037 5085 ___
5038 5086 \family default
5039 5087 \series default
5040 5088 (three underscores): next-next previous.
5041 5089 \layout Standard
5042 5090
5043 5091 Additionally, global variables named
5044 5092 \family typewriter
5045 5093 _<n>
5046 5094 \family default
5047 5095 are dynamically created (
5048 5096 \family typewriter
5049 5097 <n>
5050 5098 \family default
5051 5099 being the prompt counter), such that the result of output
5052 5100 \family typewriter
5053 5101 <n>
5054 5102 \family default
5055 5103 is always available as
5056 5104 \family typewriter
5057 5105 _<n>
5058 5106 \family default
5059 5107 (don't use the angle brackets, just the number, e.g.
5060 5108
5061 5109 \family typewriter
5062 5110 _21
5063 5111 \family default
5064 5112 ).
5065 5113 \layout Standard
5066 5114
5067 5115 These global variables are all stored in a global dictionary (not a list,
5068 5116 since it only has entries for lines which returned a result) available
5069 5117 under the names
5070 5118 \family typewriter
5071 5119 _oh
5072 5120 \family default
5073 5121 and
5074 5122 \family typewriter
5075 5123 Out
5076 5124 \family default
5077 5125 (similar to
5078 5126 \family typewriter
5079 5127 _ih
5080 5128 \family default
5081 5129 and
5082 5130 \family typewriter
5083 5131 In
5084 5132 \family default
5085 5133 ).
5086 5134 So the output from line 12 can be obtained as
5087 5135 \family typewriter
5088 5136 _12
5089 5137 \family default
5090 5138 ,
5091 5139 \family typewriter
5092 5140 Out[12]
5093 5141 \family default
5094 5142 or
5095 5143 \family typewriter
5096 5144 _oh[12]
5097 5145 \family default
5098 5146 .
5099 5147 If you accidentally overwrite the
5100 5148 \family typewriter
5101 5149 Out
5102 5150 \family default
5103 5151 variable you can recover it by typing
5104 5152 \family typewriter
5105 5153 'Out=_oh
5106 5154 \family default
5107 5155 ' at the prompt.
5108 5156 \layout Standard
5109 5157
5110 5158 This system obviously can potentially put heavy memory demands on your system,
5111 5159 since it prevents Python's garbage collector from removing any previously
5112 5160 computed results.
5113 5161 You can control how many results are kept in memory with the option (at
5114 5162 the command line or in your
5115 5163 \family typewriter
5116 5164 ipythonrc
5117 5165 \family default
5118 5166 file)
5119 5167 \family typewriter
5120 5168 cache_size
5121 5169 \family default
5122 5170 .
5123 5171 If you set it to 0, the whole system is completely disabled and the prompts
5124 5172 revert to the classic
5125 5173 \family typewriter
5126 5174 '>>>'
5127 5175 \family default
5128 5176 of normal Python.
5129 5177 \layout Subsection
5130 5178
5131 5179 Directory history
5132 5180 \layout Standard
5133 5181
5134 5182 Your history of visited directories is kept in the global list
5135 5183 \family typewriter
5136 5184 _dh
5137 5185 \family default
5138 5186 , and the magic
5139 5187 \family typewriter
5140 5188 %cd
5141 5189 \family default
5142 5190 command can be used to go to any entry in that list.
5143 5191 The
5144 5192 \family typewriter
5145 5193 %dhist
5146 5194 \family default
5147 5195 command allows you to view this history.
5148 5196 \layout Subsection
5149 5197
5150 5198 Automatic parentheses and quotes
5151 5199 \layout Standard
5152 5200
5153 5201 These features were adapted from Nathan Gray's LazyPython.
5154 5202 They are meant to allow less typing for common situations.
5155 5203 \layout Subsubsection
5156 5204
5157 5205 Automatic parentheses
5158 5206 \layout Standard
5159 5207
5160 5208 Callable objects (i.e.
5161 5209 functions, methods, etc) can be invoked like this (notice the commas between
5162 5210 the arguments):
5163 5211 \layout Standard
5164 5212
5165 5213
5166 5214 \family typewriter
5167 5215 >>> callable_ob arg1, arg2, arg3
5168 5216 \layout Standard
5169 5217
5170 5218 and the input will be translated to this:
5171 5219 \layout Standard
5172 5220
5173 5221
5174 5222 \family typewriter
5175 5223 --> callable_ob(arg1, arg2, arg3)
5176 5224 \layout Standard
5177 5225
5178 5226 You can force automatic parentheses by using '/' as the first character
5179 5227 of a line.
5180 5228 For example:
5181 5229 \layout Standard
5182 5230
5183 5231
5184 5232 \family typewriter
5185 5233 >>> /globals # becomes 'globals()'
5186 5234 \layout Standard
5187 5235
5188 5236 Note that the '/' MUST be the first character on the line! This won't work:
5189 5237
5190 5238 \layout Standard
5191 5239
5192 5240
5193 5241 \family typewriter
5194 5242 >>> print /globals # syntax error
5195 5243 \layout Standard
5196 5244
5197 5245 In most cases the automatic algorithm should work, so you should rarely
5198 5246 need to explicitly invoke /.
5199 5247 One notable exception is if you are trying to call a function with a list
5200 5248 of tuples as arguments (the parenthesis will confuse IPython):
5201 5249 \layout Standard
5202 5250
5203 5251
5204 5252 \family typewriter
5205 5253 In [1]: zip (1,2,3),(4,5,6) # won't work
5206 5254 \layout Standard
5207 5255
5208 5256 but this will work:
5209 5257 \layout Standard
5210 5258
5211 5259
5212 5260 \family typewriter
5213 5261 In [2]: /zip (1,2,3),(4,5,6)
5214 5262 \newline
5215 5263 ------> zip ((1,2,3),(4,5,6))
5216 5264 \newline
5217 5265 Out[2]= [(1, 4), (2, 5), (3, 6)]
5218 5266 \layout Standard
5219 5267
5220 5268 IPython tells you that it has altered your command line by displaying the
5221 5269 new command line preceded by
5222 5270 \family typewriter
5223 5271 -->
5224 5272 \family default
5225 5273 .
5226 5274 e.g.:
5227 5275 \layout Standard
5228 5276
5229 5277
5230 5278 \family typewriter
5231 5279 In [18]: callable list
5232 5280 \newline
5233 5281 -------> callable (list)
5234 5282 \layout Subsubsection
5235 5283
5236 5284 Automatic quoting
5237 5285 \layout Standard
5238 5286
5239 5287 You can force automatic quoting of a function's arguments by using
5240 5288 \family typewriter
5241 5289 `,'
5242 5290 \family default
5243 5291 or
5244 5292 \family typewriter
5245 5293 `;'
5246 5294 \family default
5247 5295 as the first character of a line.
5248 5296 For example:
5249 5297 \layout Standard
5250 5298
5251 5299
5252 5300 \family typewriter
5253 5301 >>> ,my_function /home/me # becomes my_function("/home/me")
5254 5302 \layout Standard
5255 5303
5256 5304 If you use
5257 5305 \family typewriter
5258 5306 `;'
5259 5307 \family default
5260 5308 instead, the whole argument is quoted as a single string (while
5261 5309 \family typewriter
5262 5310 `,'
5263 5311 \family default
5264 5312 splits on whitespace):
5265 5313 \layout Standard
5266 5314
5267 5315
5268 5316 \family typewriter
5269 5317 >>> ,my_function a b c # becomes my_function("a","b","c")
5270 5318 \layout Standard
5271 5319
5272 5320
5273 5321 \family typewriter
5274 5322 >>> ;my_function a b c # becomes my_function("a b c")
5275 5323 \layout Standard
5276 5324
5277 5325 Note that the `
5278 5326 \family typewriter
5279 5327 ,
5280 5328 \family default
5281 5329 ' or `
5282 5330 \family typewriter
5283 5331 ;
5284 5332 \family default
5285 5333 ' MUST be the first character on the line! This won't work:
5286 5334 \layout Standard
5287 5335
5288 5336
5289 5337 \family typewriter
5290 5338 >>> x = ,my_function /home/me # syntax error
5291 5339 \layout Section
5292 5340
5293 5341
5294 5342 \begin_inset LatexCommand \label{sec:customization}
5295 5343
5296 5344 \end_inset
5297 5345
5298 5346 Customization
5299 5347 \layout Standard
5300 5348
5301 5349 As we've already mentioned, IPython reads a configuration file which can
5302 5350 be specified at the command line (
5303 5351 \family typewriter
5304 5352 -rcfile
5305 5353 \family default
5306 5354 ) or which by default is assumed to be called
5307 5355 \family typewriter
5308 5356 ipythonrc
5309 5357 \family default
5310 5358 .
5311 5359 Such a file is looked for in the current directory where IPython is started
5312 5360 and then in your
5313 5361 \family typewriter
5314 5362 IPYTHONDIR
5315 5363 \family default
5316 5364 , which allows you to have local configuration files for specific projects.
5317 5365 In this section we will call these types of configuration files simply
5318 5366 rcfiles (short for resource configuration file).
5319 5367 \layout Standard
5320 5368
5321 5369 The syntax of an rcfile is one of key-value pairs separated by whitespace,
5322 5370 one per line.
5323 5371 Lines beginning with a
5324 5372 \family typewriter
5325 5373 #
5326 5374 \family default
5327 5375 are ignored as comments, but comments can
5328 5376 \series bold
5329 5377 not
5330 5378 \series default
5331 5379 be put on lines with data (the parser is fairly primitive).
5332 5380 Note that these are not python files, and this is deliberate, because it
5333 5381 allows us to do some things which would be quite tricky to implement if
5334 5382 they were normal python files.
5335 5383 \layout Standard
5336 5384
5337 5385 First, an rcfile can contain permanent default values for almost all command
5338 5386 line options (except things like
5339 5387 \family typewriter
5340 5388 -help
5341 5389 \family default
5342 5390 or
5343 5391 \family typewriter
5344 5392 -Version
5345 5393 \family default
5346 5394 ).
5347 5395 Sec\SpecialChar ~
5348 5396
5349 5397 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
5350 5398
5351 5399 \end_inset
5352 5400
5353 5401 contains a description of all command-line options.
5354 5402 However, values you explicitly specify at the command line override the
5355 5403 values defined in the rcfile.
5356 5404 \layout Standard
5357 5405
5358 5406 Besides command line option values, the rcfile can specify values for certain
5359 5407 extra special options which are not available at the command line.
5360 5408 These options are briefly described below.
5361 5409
5362 5410 \layout Standard
5363 5411
5364 5412 Each of these options may appear as many times as you need it in the file.
5365 5413 \layout List
5366 5414 \labelwidthstring 00.00.0000
5367 5415
5368 5416
5369 5417 \family typewriter
5370 5418 \series bold
5371 5419 include\SpecialChar ~
5372 5420 <file1>\SpecialChar ~
5373 5421 <file2>\SpecialChar ~
5374 5422 ...
5375 5423 \family default
5376 5424 \series default
5377 5425 : you can name
5378 5426 \emph on
5379 5427 other
5380 5428 \emph default
5381 5429 rcfiles you want to recursively load up to 15 levels (don't use the
5382 5430 \family typewriter
5383 5431 <>
5384 5432 \family default
5385 5433 brackets in your names!).
5386 5434 This feature allows you to define a 'base' rcfile with general options
5387 5435 and special-purpose files which can be loaded only when needed with particular
5388 5436 configuration options.
5389 5437 To make this more convenient, IPython accepts the
5390 5438 \family typewriter
5391 5439 -profile <name>
5392 5440 \family default
5393 5441 option (abbreviates to
5394 5442 \family typewriter
5395 5443 -p <name
5396 5444 \family default
5397 5445 >)
5398 5446 \family typewriter
5399 5447 which
5400 5448 \family default
5401 5449 tells it to look for an rcfile named
5402 5450 \family typewriter
5403 5451 ipythonrc-<name>
5404 5452 \family default
5405 5453 .
5406 5454
5407 5455 \layout List
5408 5456 \labelwidthstring 00.00.0000
5409 5457
5410 5458
5411 5459 \family typewriter
5412 5460 \series bold
5413 5461 import_mod\SpecialChar ~
5414 5462 <mod1>\SpecialChar ~
5415 5463 <mod2>\SpecialChar ~
5416 5464 ...
5417 5465 \family default
5418 5466 \series default
5419 5467 : import modules with '
5420 5468 \family typewriter
5421 5469 import
5422 5470 \family default
5423 5471
5424 5472 \family typewriter
5425 5473 <mod1>,<mod2>,...
5426 5474 \family default
5427 5475 '
5428 5476 \layout List
5429 5477 \labelwidthstring 00.00.0000
5430 5478
5431 5479
5432 5480 \family typewriter
5433 5481 \series bold
5434 5482 import_some\SpecialChar ~
5435 5483 <mod>\SpecialChar ~
5436 5484 <f1>\SpecialChar ~
5437 5485 <f2>\SpecialChar ~
5438 5486 ...
5439 5487 \family default
5440 5488 \series default
5441 5489 : import functions with '
5442 5490 \family typewriter
5443 5491 from <mod> import
5444 5492 \family default
5445 5493
5446 5494 \family typewriter
5447 5495 <f1>,<f2>,...
5448 5496 \family default
5449 5497 '
5450 5498 \layout List
5451 5499 \labelwidthstring 00.00.0000
5452 5500
5453 5501
5454 5502 \family typewriter
5455 5503 \series bold
5456 5504 import_all\SpecialChar ~
5457 5505 <mod1>\SpecialChar ~
5458 5506 <mod2>\SpecialChar ~
5459 5507 ...
5460 5508 \family default
5461 5509 \series default
5462 5510 : for each module listed import functions with '
5463 5511 \family typewriter
5464 5512 from <mod> import *
5465 5513 \family default
5466 5514 '
5467 5515 \layout List
5468 5516 \labelwidthstring 00.00.0000
5469 5517
5470 5518
5471 5519 \family typewriter
5472 5520 \series bold
5473 5521 execute\SpecialChar ~
5474 5522 <python\SpecialChar ~
5475 5523 code>
5476 5524 \family default
5477 5525 \series default
5478 5526 : give any single-line python code to be executed.
5479 5527 \layout List
5480 5528 \labelwidthstring 00.00.0000
5481 5529
5482 5530
5483 5531 \family typewriter
5484 5532 \series bold
5485 5533 execfile\SpecialChar ~
5486 5534 <filename>
5487 5535 \family default
5488 5536 \series default
5489 5537 : execute the python file given with an '
5490 5538 \family typewriter
5491 5539 execfile(filename)
5492 5540 \family default
5493 5541 ' command.
5494 5542 Username expansion is performed on the given names.
5495 5543 So if you need any amount of extra fancy customization that won't fit in
5496 5544 any of the above 'canned' options, you can just put it in a separate python
5497 5545 file and execute it.
5498 5546 \layout List
5499 5547 \labelwidthstring 00.00.0000
5500 5548
5501 5549
5502 5550 \family typewriter
5503 5551 \series bold
5504 5552 alias\SpecialChar ~
5505 5553 <alias_def>
5506 5554 \family default
5507 5555 \series default
5508 5556 : this is equivalent to calling '
5509 5557 \family typewriter
5510 5558 %alias\SpecialChar ~
5511 5559 <alias_def>
5512 5560 \family default
5513 5561 ' at the IPython command line.
5514 5562 This way, from within IPython you can do common system tasks without having
5515 5563 to exit it or use the
5516 5564 \family typewriter
5517 5565 !
5518 5566 \family default
5519 5567 escape.
5520 5568 IPython isn't meant to be a shell replacement, but it is often very useful
5521 5569 to be able to do things with files while testing code.
5522 5570 This gives you the flexibility to have within IPython any aliases you may
5523 5571 be used to under your normal system shell.
5524 5572 \layout Subsection
5525 5573
5526 5574
5527 5575 \begin_inset LatexCommand \label{sec:ipytonrc-sample}
5528 5576
5529 5577 \end_inset
5530 5578
5531 5579 Sample
5532 5580 \family typewriter
5533 5581 ipythonrc
5534 5582 \family default
5535 5583 file
5536 5584 \layout Standard
5537 5585
5538 5586 The default rcfile, called
5539 5587 \family typewriter
5540 5588 ipythonrc
5541 5589 \family default
5542 5590 and supplied in your
5543 5591 \family typewriter
5544 5592 IPYTHONDIR
5545 5593 \family default
5546 5594 directory contains lots of comments on all of these options.
5547 5595 We reproduce it here for reference:
5548 5596 \layout Standard
5549 5597
5550 5598
5551 5599 \begin_inset ERT
5552 5600 status Open
5553 5601
5554 5602 \layout Standard
5555 5603
5556 5604 \backslash
5557 5605 codelist{../IPython/UserConfig/ipythonrc}
5558 5606 \end_inset
5559 5607
5560 5608
5561 5609 \layout Subsection
5562 5610
5563 5611
5564 5612 \begin_inset LatexCommand \label{sec:prompts}
5565 5613
5566 5614 \end_inset
5567 5615
5568 5616 Fine-tuning your prompt
5569 5617 \layout Standard
5570 5618
5571 5619 IPython's prompts can be customized using a syntax similar to that of the
5572 5620
5573 5621 \family typewriter
5574 5622 bash
5575 5623 \family default
5576 5624 shell.
5577 5625 Many of
5578 5626 \family typewriter
5579 5627 bash
5580 5628 \family default
5581 5629 's escapes are supported, as well as a few additional ones.
5582 5630 We list them below:
5583 5631 \layout Description
5584 5632
5585 5633
5586 5634 \backslash
5587 5635 # the prompt/history count number
5588 5636 \layout Description
5589 5637
5590 5638
5591 5639 \backslash
5592 5640 D the prompt/history count, with the actual digits replaced by dots.
5593 5641 Used mainly in continuation prompts (prompt_in2)
5594 5642 \layout Description
5595 5643
5596 5644
5597 5645 \backslash
5598 5646 w the current working directory
5599 5647 \layout Description
5600 5648
5601 5649
5602 5650 \backslash
5603 5651 W the basename of current working directory
5604 5652 \layout Description
5605 5653
5606 5654
5607 5655 \backslash
5608 5656 X
5609 5657 \emph on
5610 5658 n
5611 5659 \emph default
5612 5660 where
5613 5661 \begin_inset Formula $n=0\ldots5.$
5614 5662 \end_inset
5615 5663
5616 5664 The current working directory, with
5617 5665 \family typewriter
5618 5666 $HOME
5619 5667 \family default
5620 5668 replaced by
5621 5669 \family typewriter
5622 5670 ~
5623 5671 \family default
5624 5672 , and filtered out to contain only
5625 5673 \begin_inset Formula $n$
5626 5674 \end_inset
5627 5675
5628 5676 path elements
5629 5677 \layout Description
5630 5678
5631 5679
5632 5680 \backslash
5633 5681 Y
5634 5682 \emph on
5635 5683 n
5636 5684 \emph default
5637 5685 Similar to
5638 5686 \backslash
5639 5687 X
5640 5688 \emph on
5641 5689 n
5642 5690 \emph default
5643 5691 , but with the
5644 5692 \begin_inset Formula $n+1$
5645 5693 \end_inset
5646 5694
5647 5695 element included if it is
5648 5696 \family typewriter
5649 5697 ~
5650 5698 \family default
5651 5699 (this is similar to the behavior of the %c
5652 5700 \emph on
5653 5701 n
5654 5702 \emph default
5655 5703 escapes in
5656 5704 \family typewriter
5657 5705 tcsh
5658 5706 \family default
5659 5707 )
5660 5708 \layout Description
5661 5709
5662 5710
5663 5711 \backslash
5664 5712 u the username of the current user
5665 5713 \layout Description
5666 5714
5667 5715
5668 5716 \backslash
5669 5717 $ if the effective UID is 0, a #, otherwise a $
5670 5718 \layout Description
5671 5719
5672 5720
5673 5721 \backslash
5674 5722 h the hostname up to the first `.'
5675 5723 \layout Description
5676 5724
5677 5725
5678 5726 \backslash
5679 5727 H the hostname
5680 5728 \layout Description
5681 5729
5682 5730
5683 5731 \backslash
5684 5732 n a newline
5685 5733 \layout Description
5686 5734
5687 5735
5688 5736 \backslash
5689 5737 r a carriage return
5690 5738 \layout Description
5691 5739
5692 5740
5693 5741 \backslash
5694 5742 v IPython version string
5695 5743 \layout Standard
5696 5744
5697 5745 In addition to these, ANSI color escapes can be insterted into the prompts,
5698 5746 as
5699 5747 \family typewriter
5700 5748
5701 5749 \backslash
5702 5750 C_
5703 5751 \emph on
5704 5752 ColorName
5705 5753 \family default
5706 5754 \emph default
5707 5755 .
5708 5756 The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
5709 5757 LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
5710 5758 Normal, Purple, Red, White, Yellow.
5711 5759 \layout Standard
5712 5760
5713 5761 Finally, IPython supports the evaluation of arbitrary expressions in your
5714 5762 prompt string.
5715 5763 The prompt strings are evaluated through the syntax of PEP 215, but basically
5716 5764 you can use
5717 5765 \family typewriter
5718 5766 $x.y
5719 5767 \family default
5720 5768 to expand the value of
5721 5769 \family typewriter
5722 5770 x.y
5723 5771 \family default
5724 5772 , and for more complicated expressions you can use braces:
5725 5773 \family typewriter
5726 5774 ${foo()+x}
5727 5775 \family default
5728 5776 will call function
5729 5777 \family typewriter
5730 5778 foo
5731 5779 \family default
5732 5780 and add to it the value of
5733 5781 \family typewriter
5734 5782 x
5735 5783 \family default
5736 5784 , before putting the result into your prompt.
5737 5785 For example, using
5738 5786 \newline
5739 5787
5740 5788 \family typewriter
5741 5789 prompt_in1 '${commands.getoutput("uptime")}
5742 5790 \backslash
5743 5791 nIn [
5744 5792 \backslash
5745 5793 #]: '
5746 5794 \newline
5747 5795
5748 5796 \family default
5749 5797 will print the result of the uptime command on each prompt (assuming the
5750 5798
5751 5799 \family typewriter
5752 5800 commands
5753 5801 \family default
5754 5802 module has been imported in your
5755 5803 \family typewriter
5756 5804 ipythonrc
5757 5805 \family default
5758 5806 file).
5759 5807 \layout Subsubsection
5760 5808
5761 5809 Prompt examples
5762 5810 \layout Standard
5763 5811
5764 5812 The following options in an ipythonrc file will give you IPython's default
5765 5813 prompts:
5766 5814 \layout Standard
5767 5815
5768 5816
5769 5817 \family typewriter
5770 5818 prompt_in1 'In [
5771 5819 \backslash
5772 5820 #]:'
5773 5821 \newline
5774 5822 prompt_in2 '\SpecialChar ~
5775 5823 \SpecialChar ~
5776 5824 \SpecialChar ~
5777 5825 .
5778 5826 \backslash
5779 5827 D.:'
5780 5828 \newline
5781 5829 prompt_out 'Out[
5782 5830 \backslash
5783 5831 #]:'
5784 5832 \layout Standard
5785 5833
5786 5834 which look like this:
5787 5835 \layout Standard
5788 5836
5789 5837
5790 5838 \family typewriter
5791 5839 In [1]: 1+2
5792 5840 \newline
5793 5841 Out[1]: 3
5794 5842 \layout Standard
5795 5843
5796 5844
5797 5845 \family typewriter
5798 5846 In [2]: for i in (1,2,3):
5799 5847 \newline
5800 5848
5801 5849 \begin_inset ERT
5802 5850 status Collapsed
5803 5851
5804 5852 \layout Standard
5805 5853
5806 5854 \backslash
5807 5855 hspace*{0mm}
5808 5856 \end_inset
5809 5857
5810 5858 \SpecialChar ~
5811 5859 \SpecialChar ~
5812 5860 \SpecialChar ~
5813 5861 ...: \SpecialChar ~
5814 5862 \SpecialChar ~
5815 5863 \SpecialChar ~
5816 5864 \SpecialChar ~
5817 5865 print i,
5818 5866 \newline
5819 5867
5820 5868 \begin_inset ERT
5821 5869 status Collapsed
5822 5870
5823 5871 \layout Standard
5824 5872
5825 5873 \backslash
5826 5874 hspace*{0mm}
5827 5875 \end_inset
5828 5876
5829 5877 \SpecialChar ~
5830 5878 \SpecialChar ~
5831 5879 \SpecialChar ~
5832 5880 ...:
5833 5881 \newline
5834 5882 1 2 3
5835 5883 \layout Standard
5836 5884
5837 5885 These will give you a very colorful prompt with path information:
5838 5886 \layout Standard
5839 5887
5840 5888
5841 5889 \family typewriter
5842 5890 #prompt_in1 '
5843 5891 \backslash
5844 5892 C_Red
5845 5893 \backslash
5846 5894 u
5847 5895 \backslash
5848 5896 C_Blue[
5849 5897 \backslash
5850 5898 C_Cyan
5851 5899 \backslash
5852 5900 Y1
5853 5901 \backslash
5854 5902 C_Blue]
5855 5903 \backslash
5856 5904 C_LightGreen
5857 5905 \backslash
5858 5906 #>'
5859 5907 \newline
5860 5908 prompt_in2 ' ..
5861 5909 \backslash
5862 5910 D>'
5863 5911 \newline
5864 5912 prompt_out '<
5865 5913 \backslash
5866 5914 #>'
5867 5915 \layout Standard
5868 5916
5869 5917 which look like this:
5870 5918 \layout Standard
5871 5919
5872 5920
5873 5921 \family typewriter
5874 5922 \color red
5875 5923 fperez
5876 5924 \color blue
5877 5925 [
5878 5926 \color cyan
5879 5927 ~/ipython
5880 5928 \color blue
5881 5929 ]
5882 5930 \color green
5883 5931 1>
5884 5932 \color default
5885 5933 1+2
5886 5934 \newline
5887 5935
5888 5936 \begin_inset ERT
5889 5937 status Collapsed
5890 5938
5891 5939 \layout Standard
5892 5940
5893 5941 \backslash
5894 5942 hspace*{0mm}
5895 5943 \end_inset
5896 5944
5897 5945 \SpecialChar ~
5898 5946 \SpecialChar ~
5899 5947 \SpecialChar ~
5900 5948 \SpecialChar ~
5901 5949 \SpecialChar ~
5902 5950 \SpecialChar ~
5903 5951 \SpecialChar ~
5904 5952 \SpecialChar ~
5905 5953 \SpecialChar ~
5906 5954 \SpecialChar ~
5907 5955 \SpecialChar ~
5908 5956 \SpecialChar ~
5909 5957 \SpecialChar ~
5910 5958 \SpecialChar ~
5911 5959 \SpecialChar ~
5912 5960 \SpecialChar ~
5913 5961
5914 5962 \color red
5915 5963 <1>
5916 5964 \color default
5917 5965 3
5918 5966 \newline
5919 5967
5920 5968 \color red
5921 5969 fperez
5922 5970 \color blue
5923 5971 [
5924 5972 \color cyan
5925 5973 ~/ipython
5926 5974 \color blue
5927 5975 ]
5928 5976 \color green
5929 5977 2>
5930 5978 \color default
5931 5979 for i in (1,2,3):
5932 5980 \newline
5933 5981
5934 5982 \begin_inset ERT
5935 5983 status Collapsed
5936 5984
5937 5985 \layout Standard
5938 5986
5939 5987 \backslash
5940 5988 hspace*{0mm}
5941 5989 \end_inset
5942 5990
5943 5991 \SpecialChar ~
5944 5992 \SpecialChar ~
5945 5993 \SpecialChar ~
5946 5994 \SpecialChar ~
5947 5995 \SpecialChar ~
5948 5996 \SpecialChar ~
5949 5997 \SpecialChar ~
5950 5998 \SpecialChar ~
5951 5999 \SpecialChar ~
5952 6000 \SpecialChar ~
5953 6001 \SpecialChar ~
5954 6002 \SpecialChar ~
5955 6003 \SpecialChar ~
5956 6004 \SpecialChar ~
5957 6005 \SpecialChar ~
5958 6006
5959 6007 \color green
5960 6008 ...>
5961 6009 \color default
5962 6010 \SpecialChar ~
5963 6011 \SpecialChar ~
5964 6012 \SpecialChar ~
5965 6013 \SpecialChar ~
5966 6014 print i,
5967 6015 \newline
5968 6016
5969 6017 \begin_inset ERT
5970 6018 status Collapsed
5971 6019
5972 6020 \layout Standard
5973 6021
5974 6022 \backslash
5975 6023 hspace*{0mm}
5976 6024 \end_inset
5977 6025
5978 6026 \SpecialChar ~
5979 6027 \SpecialChar ~
5980 6028 \SpecialChar ~
5981 6029 \SpecialChar ~
5982 6030 \SpecialChar ~
5983 6031 \SpecialChar ~
5984 6032 \SpecialChar ~
5985 6033 \SpecialChar ~
5986 6034 \SpecialChar ~
5987 6035 \SpecialChar ~
5988 6036 \SpecialChar ~
5989 6037 \SpecialChar ~
5990 6038 \SpecialChar ~
5991 6039 \SpecialChar ~
5992 6040 \SpecialChar ~
5993 6041
5994 6042 \color green
5995 6043 ...>
5996 6044 \color default
5997 6045
5998 6046 \newline
5999 6047 1 2 3
6000 6048 \layout Standard
6001 6049
6002 6050 The following shows the usage of dynamic expression evaluation:
6003 6051 \layout Subsection
6004 6052
6005 6053
6006 6054 \begin_inset LatexCommand \label{sec:profiles}
6007 6055
6008 6056 \end_inset
6009 6057
6010 6058 IPython profiles
6011 6059 \layout Standard
6012 6060
6013 6061 As we already mentioned, IPython supports the
6014 6062 \family typewriter
6015 6063 -profile
6016 6064 \family default
6017 6065 command-line option (see sec.
6018 6066
6019 6067 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6020 6068
6021 6069 \end_inset
6022 6070
6023 6071 ).
6024 6072 A profile is nothing more than a particular configuration file like your
6025 6073 basic
6026 6074 \family typewriter
6027 6075 ipythonrc
6028 6076 \family default
6029 6077 one, but with particular customizations for a specific purpose.
6030 6078 When you start IPython with '
6031 6079 \family typewriter
6032 6080 ipython -profile <name>
6033 6081 \family default
6034 6082 ', it assumes that in your
6035 6083 \family typewriter
6036 6084 IPYTHONDIR
6037 6085 \family default
6038 6086 there is a file called
6039 6087 \family typewriter
6040 6088 ipythonrc-<name>
6041 6089 \family default
6042 6090 , and loads it instead of the normal
6043 6091 \family typewriter
6044 6092 ipythonrc
6045 6093 \family default
6046 6094 .
6047 6095 \layout Standard
6048 6096
6049 6097 This system allows you to maintain multiple configurations which load modules,
6050 6098 set options, define functions, etc.
6051 6099 suitable for different tasks and activate them in a very simple manner.
6052 6100 In order to avoid having to repeat all of your basic options (common things
6053 6101 that don't change such as your color preferences, for example), any profile
6054 6102 can include another configuration file.
6055 6103 The most common way to use profiles is then to have each one include your
6056 6104 basic
6057 6105 \family typewriter
6058 6106 ipythonrc
6059 6107 \family default
6060 6108 file as a starting point, and then add further customizations.
6061 6109 \layout Standard
6062 6110
6063 6111 In sections
6064 6112 \begin_inset LatexCommand \ref{sec:syntax-extensions}
6065 6113
6066 6114 \end_inset
6067 6115
6068 6116 and
6069 6117 \begin_inset LatexCommand \ref{sec:Gnuplot}
6070 6118
6071 6119 \end_inset
6072 6120
6073 6121 we discuss some particular profiles which come as part of the standard
6074 6122 IPython distribution.
6075 6123 You may also look in your
6076 6124 \family typewriter
6077 6125 IPYTHONDIR
6078 6126 \family default
6079 6127 directory, any file whose name begins with
6080 6128 \family typewriter
6081 6129 ipythonrc-
6082 6130 \family default
6083 6131 is a profile.
6084 6132 You can use those as examples for further customizations to suit your own
6085 6133 needs.
6086 6134 \layout Section
6087 6135
6088 6136
6089 6137 \begin_inset OptArg
6090 6138 collapsed false
6091 6139
6092 6140 \layout Standard
6093 6141
6094 6142 IPython as default...
6095 6143 \end_inset
6096 6144
6097 6145 IPython as your default Python environment
6098 6146 \layout Standard
6099 6147
6100 6148 Python honors the environment variable
6101 6149 \family typewriter
6102 6150 PYTHONSTARTUP
6103 6151 \family default
6104 6152 and will execute at startup the file referenced by this variable.
6105 6153 If you put at the end of this file the following two lines of code:
6106 6154 \layout Standard
6107 6155
6108 6156
6109 6157 \family typewriter
6110 6158 import IPython
6111 6159 \newline
6112 6160 IPython.Shell.IPShell().mainloop(sys_exit=1)
6113 6161 \layout Standard
6114 6162
6115 6163 then IPython will be your working environment anytime you start Python.
6116 6164 The
6117 6165 \family typewriter
6118 6166 sys_exit=1
6119 6167 \family default
6120 6168 is needed to have IPython issue a call to
6121 6169 \family typewriter
6122 6170 sys.exit()
6123 6171 \family default
6124 6172 when it finishes, otherwise you'll be back at the normal Python '
6125 6173 \family typewriter
6126 6174 >>>
6127 6175 \family default
6128 6176 ' prompt
6129 6177 \begin_inset Foot
6130 6178 collapsed true
6131 6179
6132 6180 \layout Standard
6133 6181
6134 6182 Based on an idea by Holger Krekel.
6135 6183 \end_inset
6136 6184
6137 6185 .
6138 6186 \layout Standard
6139 6187
6140 6188 This is probably useful to developers who manage multiple Python versions
6141 6189 and don't want to have correspondingly multiple IPython versions.
6142 6190 Note that in this mode, there is no way to pass IPython any command-line
6143 6191 options, as those are trapped first by Python itself.
6144 6192 \layout Section
6145 6193
6146 6194
6147 6195 \begin_inset LatexCommand \label{sec:embed}
6148 6196
6149 6197 \end_inset
6150 6198
6151 6199 Embedding IPython
6152 6200 \layout Standard
6153 6201
6154 6202 It is possible to start an IPython instance
6155 6203 \emph on
6156 6204 inside
6157 6205 \emph default
6158 6206 your own Python programs.
6159 6207 This allows you to evaluate dynamically the state of your code, operate
6160 6208 with your variables, analyze them, etc.
6161 6209 Note however that any changes you make to values while in the shell do
6162 6210
6163 6211 \emph on
6164 6212 not
6165 6213 \emph default
6166 6214 propagate back to the running code, so it is safe to modify your values
6167 6215 because you won't break your code in bizarre ways by doing so.
6168 6216 \layout Standard
6169 6217
6170 6218 This feature allows you to easily have a fully functional python environment
6171 6219 for doing object introspection anywhere in your code with a simple function
6172 6220 call.
6173 6221 In some cases a simple print statement is enough, but if you need to do
6174 6222 more detailed analysis of a code fragment this feature can be very valuable.
6175 6223 \layout Standard
6176 6224
6177 6225 It can also be useful in scientific computing situations where it is common
6178 6226 to need to do some automatic, computationally intensive part and then stop
6179 6227 to look at data, plots, etc
6180 6228 \begin_inset Foot
6181 6229 collapsed true
6182 6230
6183 6231 \layout Standard
6184 6232
6185 6233 This functionality was inspired by IDL's combination of the
6186 6234 \family typewriter
6187 6235 stop
6188 6236 \family default
6189 6237 keyword and the
6190 6238 \family typewriter
6191 6239 .continue
6192 6240 \family default
6193 6241 executive command, which I have found very useful in the past, and by a
6194 6242 posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
6195 6243 06/01 concerning similar uses of pyrepl.
6196 6244 \end_inset
6197 6245
6198 6246 .
6199 6247 Opening an IPython instance will give you full access to your data and
6200 6248 functions, and you can resume program execution once you are done with
6201 6249 the interactive part (perhaps to stop again later, as many times as needed).
6202 6250 \layout Standard
6203 6251
6204 6252 The following code snippet is the bare minimum you need to include in your
6205 6253 Python programs for this to work (detailed examples follow later):
6206 6254 \layout LyX-Code
6207 6255
6208 6256 from IPython.Shell import IPShellEmbed
6209 6257 \layout LyX-Code
6210 6258
6211 6259 ipshell = IPShellEmbed()
6212 6260 \layout LyX-Code
6213 6261
6214 6262 ipshell() # this call anywhere in your program will start IPython
6215 6263 \layout Standard
6216 6264
6217 6265 You can run embedded instances even in code which is itself being run at
6218 6266 the IPython interactive prompt with '
6219 6267 \family typewriter
6220 6268 %run\SpecialChar ~
6221 6269 <filename>
6222 6270 \family default
6223 6271 '.
6224 6272 Since it's easy to get lost as to where you are (in your top-level IPython
6225 6273 or in your embedded one), it's a good idea in such cases to set the in/out
6226 6274 prompts to something different for the embedded instances.
6227 6275 The code examples below illustrate this.
6228 6276 \layout Standard
6229 6277
6230 6278 You can also have multiple IPython instances in your program and open them
6231 6279 separately, for example with different options for data presentation.
6232 6280 If you close and open the same instance multiple times, its prompt counters
6233 6281 simply continue from each execution to the next.
6234 6282 \layout Standard
6235 6283
6236 6284 Please look at the docstrings in the
6237 6285 \family typewriter
6238 6286 Shell.py
6239 6287 \family default
6240 6288 module for more details on the use of this system.
6241 6289 \layout Standard
6242 6290
6243 6291 The following sample file illustrating how to use the embedding functionality
6244 6292 is provided in the examples directory as
6245 6293 \family typewriter
6246 6294 example-embed.py
6247 6295 \family default
6248 6296 .
6249 6297 It should be fairly self-explanatory:
6250 6298 \layout Standard
6251 6299
6252 6300
6253 6301 \begin_inset ERT
6254 6302 status Open
6255 6303
6256 6304 \layout Standard
6257 6305
6258 6306 \backslash
6259 6307 codelist{examples/example-embed.py}
6260 6308 \end_inset
6261 6309
6262 6310
6263 6311 \layout Standard
6264 6312
6265 6313 Once you understand how the system functions, you can use the following
6266 6314 code fragments in your programs which are ready for cut and paste:
6267 6315 \layout Standard
6268 6316
6269 6317
6270 6318 \begin_inset ERT
6271 6319 status Open
6272 6320
6273 6321 \layout Standard
6274 6322
6275 6323 \backslash
6276 6324 codelist{examples/example-embed-short.py}
6277 6325 \end_inset
6278 6326
6279 6327
6280 6328 \layout Section
6281 6329
6282 6330
6283 6331 \begin_inset LatexCommand \label{sec:using-pdb}
6284 6332
6285 6333 \end_inset
6286 6334
6287 6335 Using the Python debugger (
6288 6336 \family typewriter
6289 6337 pdb
6290 6338 \family default
6291 6339 )
6292 6340 \layout Subsection
6293 6341
6294 6342 Running entire programs via
6295 6343 \family typewriter
6296 6344 pdb
6297 6345 \layout Standard
6298 6346
6299 6347
6300 6348 \family typewriter
6301 6349 pdb
6302 6350 \family default
6303 6351 , the Python debugger, is a powerful interactive debugger which allows you
6304 6352 to step through code, set breakpoints, watch variables, etc.
6305 6353 IPython makes it very easy to start any script under the control of
6306 6354 \family typewriter
6307 6355 pdb
6308 6356 \family default
6309 6357 , regardless of whether you have wrapped it into a
6310 6358 \family typewriter
6311 6359 `main()'
6312 6360 \family default
6313 6361 function or not.
6314 6362 For this, simply type
6315 6363 \family typewriter
6316 6364 `%run -d myscript'
6317 6365 \family default
6318 6366 at an IPython prompt.
6319 6367 See the
6320 6368 \family typewriter
6321 6369 %run
6322 6370 \family default
6323 6371 command's documentation (via
6324 6372 \family typewriter
6325 6373 `%run?'
6326 6374 \family default
6327 6375 or in Sec.\SpecialChar ~
6328 6376
6329 6377 \begin_inset LatexCommand \ref{sec:magic}
6330 6378
6331 6379 \end_inset
6332 6380
6333 6381 ) for more details, including how to control where
6334 6382 \family typewriter
6335 6383 pdb
6336 6384 \family default
6337 6385 will stop execution first.
6338 6386 \layout Standard
6339 6387
6340 6388 For more information on the use of the
6341 6389 \family typewriter
6342 6390 pdb
6343 6391 \family default
6344 6392 debugger, read the included
6345 6393 \family typewriter
6346 6394 pdb.doc
6347 6395 \family default
6348 6396 file (part of the standard Python distribution).
6349 6397 On a stock Linux system it is located at
6350 6398 \family typewriter
6351 6399 /usr/lib/python2.3/pdb.doc
6352 6400 \family default
6353 6401 , but the easiest way to read it is by using the
6354 6402 \family typewriter
6355 6403 help()
6356 6404 \family default
6357 6405 function of the
6358 6406 \family typewriter
6359 6407 pdb
6360 6408 \family default
6361 6409 module as follows (in an IPython prompt):
6362 6410 \layout Standard
6363 6411
6364 6412
6365 6413 \family typewriter
6366 6414 In [1]: import pdb
6367 6415 \newline
6368 6416 In [2]: pdb.help()
6369 6417 \layout Standard
6370 6418
6371 6419 This will load the
6372 6420 \family typewriter
6373 6421 pdb.doc
6374 6422 \family default
6375 6423 document in a file viewer for you automatically.
6376 6424 \layout Subsection
6377 6425
6378 6426 Automatic invocation of
6379 6427 \family typewriter
6380 6428 pdb
6381 6429 \family default
6382 6430 on exceptions
6383 6431 \layout Standard
6384 6432
6385 6433 IPython, if started with the
6386 6434 \family typewriter
6387 6435 -pdb
6388 6436 \family default
6389 6437 option (or if the option is set in your rc file) can call the Python
6390 6438 \family typewriter
6391 6439 pdb
6392 6440 \family default
6393 6441 debugger every time your code triggers an uncaught exception
6394 6442 \begin_inset Foot
6395 6443 collapsed true
6396 6444
6397 6445 \layout Standard
6398 6446
6399 6447 Many thanks to Christopher Hart for the request which prompted adding this
6400 6448 feature to IPython.
6401 6449 \end_inset
6402 6450
6403 6451 .
6404 6452 This feature can also be toggled at any time with the
6405 6453 \family typewriter
6406 6454 %pdb
6407 6455 \family default
6408 6456 magic command.
6409 6457 This can be extremely useful in order to find the origin of subtle bugs,
6410 6458 because
6411 6459 \family typewriter
6412 6460 pdb
6413 6461 \family default
6414 6462 opens up at the point in your code which triggered the exception, and while
6415 6463 your program is at this point `dead', all the data is still available and
6416 6464 you can walk up and down the stack frame and understand the origin of the
6417 6465 problem.
6418 6466 \layout Standard
6419 6467
6420 6468 Furthermore, you can use these debugging facilities both with the embedded
6421 6469 IPython mode and without IPython at all.
6422 6470 For an embedded shell (see sec.
6423 6471
6424 6472 \begin_inset LatexCommand \ref{sec:embed}
6425 6473
6426 6474 \end_inset
6427 6475
6428 6476 ), simply call the constructor with
6429 6477 \family typewriter
6430 6478 `-pdb'
6431 6479 \family default
6432 6480 in the argument string and automatically
6433 6481 \family typewriter
6434 6482 pdb
6435 6483 \family default
6436 6484 will be called if an uncaught exception is triggered by your code.
6437 6485
6438 6486 \layout Standard
6439 6487
6440 6488 For stand-alone use of the feature in your programs which do not use IPython
6441 6489 at all, put the following lines toward the top of your `main' routine:
6442 6490 \layout Standard
6443 6491 \align left
6444 6492
6445 6493 \family typewriter
6446 6494 import sys,IPython.ultraTB
6447 6495 \newline
6448 6496 sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbose', color_scheme=`Linux',
6449 6497 call_pdb=1)
6450 6498 \layout Standard
6451 6499
6452 6500 The
6453 6501 \family typewriter
6454 6502 mode
6455 6503 \family default
6456 6504 keyword can be either
6457 6505 \family typewriter
6458 6506 `Verbose'
6459 6507 \family default
6460 6508 or
6461 6509 \family typewriter
6462 6510 `Plain'
6463 6511 \family default
6464 6512 , giving either very detailed or normal tracebacks respectively.
6465 6513 The
6466 6514 \family typewriter
6467 6515 color_scheme
6468 6516 \family default
6469 6517 keyword can be one of
6470 6518 \family typewriter
6471 6519 `NoColor'
6472 6520 \family default
6473 6521 ,
6474 6522 \family typewriter
6475 6523 `Linux'
6476 6524 \family default
6477 6525 (default) or
6478 6526 \family typewriter
6479 6527 `LightBG'
6480 6528 \family default
6481 6529 .
6482 6530 These are the same options which can be set in IPython with
6483 6531 \family typewriter
6484 6532 -colors
6485 6533 \family default
6486 6534 and
6487 6535 \family typewriter
6488 6536 -xmode
6489 6537 \family default
6490 6538 .
6491 6539 \layout Standard
6492 6540
6493 6541 This will give any of your programs detailed, colored tracebacks with automatic
6494 6542 invocation of
6495 6543 \family typewriter
6496 6544 pdb
6497 6545 \family default
6498 6546 .
6499 6547 \layout Section
6500 6548
6501 6549
6502 6550 \begin_inset LatexCommand \label{sec:syntax-extensions}
6503 6551
6504 6552 \end_inset
6505 6553
6506 6554 Extensions for syntax processing
6507 6555 \layout Standard
6508 6556
6509 6557 This isn't for the faint of heart, because the potential for breaking things
6510 6558 is quite high.
6511 6559 But it can be a very powerful and useful feature.
6512 6560 In a nutshell, you can redefine the way IPython processes the user input
6513 6561 line to accept new, special extensions to the syntax without needing to
6514 6562 change any of IPython's own code.
6515 6563 \layout Standard
6516 6564
6517 6565 In the
6518 6566 \family typewriter
6519 6567 IPython/Extensions
6520 6568 \family default
6521 6569 directory you will find some examples supplied, which we will briefly describe
6522 6570 now.
6523 6571 These can be used `as is' (and both provide very useful functionality),
6524 6572 or you can use them as a starting point for writing your own extensions.
6525 6573 \layout Subsection
6526 6574
6527 6575 Pasting of code starting with
6528 6576 \family typewriter
6529 6577 `>>>
6530 6578 \family default
6531 6579 ' or
6532 6580 \family typewriter
6533 6581 `...
6534 6582
6535 6583 \family default
6536 6584 '
6537 6585 \layout Standard
6538 6586
6539 6587 In the python tutorial it is common to find code examples which have been
6540 6588 taken from real python sessions.
6541 6589 The problem with those is that all the lines begin with either
6542 6590 \family typewriter
6543 6591 `>>>
6544 6592 \family default
6545 6593 ' or
6546 6594 \family typewriter
6547 6595 `...
6548 6596
6549 6597 \family default
6550 6598 ', which makes it impossible to paste them all at once.
6551 6599 One must instead do a line by line manual copying, carefully removing the
6552 6600 leading extraneous characters.
6553 6601 \layout Standard
6554 6602
6555 6603 This extension identifies those starting characters and removes them from
6556 6604 the input automatically, so that one can paste multi-line examples directly
6557 6605 into IPython, saving a lot of time.
6558 6606 Please look at the file
6559 6607 \family typewriter
6560 6608 InterpreterPasteInput.py
6561 6609 \family default
6562 6610 in the
6563 6611 \family typewriter
6564 6612 IPython/Extensions
6565 6613 \family default
6566 6614 directory for details on how this is done.
6567 6615 \layout Standard
6568 6616
6569 6617 IPython comes with a special profile enabling this feature, called
6570 6618 \family typewriter
6571 6619 tutorial
6572 6620 \family default
6573 6621 \emph on
6574 6622 .
6575 6623
6576 6624 \emph default
6577 6625 Simply start IPython via
6578 6626 \family typewriter
6579 6627 `ipython\SpecialChar ~
6580 6628 -p\SpecialChar ~
6581 6629 tutorial'
6582 6630 \family default
6583 6631 and the feature will be available.
6584 6632 In a normal IPython session you can activate the feature by importing the
6585 6633 corresponding module with:
6586 6634 \newline
6587 6635
6588 6636 \family typewriter
6589 6637 In [1]: import IPython.Extensions.InterpreterPasteInput
6590 6638 \layout Standard
6591 6639
6592 6640 The following is a 'screenshot' of how things work when this extension is
6593 6641 on, copying an example from the standard tutorial:
6594 6642 \layout Standard
6595 6643
6596 6644
6597 6645 \family typewriter
6598 6646 IPython profile: tutorial
6599 6647 \newline
6600 6648 \SpecialChar ~
6601 6649
6602 6650 \newline
6603 6651 *** Pasting of code with ">>>" or "..." has been enabled.
6604 6652 \newline
6605 6653 \SpecialChar ~
6606 6654
6607 6655 \newline
6608 6656 In [1]: >>> def fib2(n): # return Fibonacci series up to n
6609 6657 \newline
6610 6658
6611 6659 \begin_inset ERT
6612 6660 status Collapsed
6613 6661
6614 6662 \layout Standard
6615 6663
6616 6664 \backslash
6617 6665 hspace*{0mm}
6618 6666 \end_inset
6619 6667
6620 6668 \SpecialChar ~
6621 6669 \SpecialChar ~
6622 6670 ...: ...\SpecialChar ~
6623 6671 \SpecialChar ~
6624 6672 \SpecialChar ~
6625 6673 \SpecialChar ~
6626 6674 """Return a list containing the Fibonacci series up to n."""
6627 6675 \newline
6628 6676
6629 6677 \begin_inset ERT
6630 6678 status Collapsed
6631 6679
6632 6680 \layout Standard
6633 6681
6634 6682 \backslash
6635 6683 hspace*{0mm}
6636 6684 \end_inset
6637 6685
6638 6686 \SpecialChar ~
6639 6687 \SpecialChar ~
6640 6688 ...: ...\SpecialChar ~
6641 6689 \SpecialChar ~
6642 6690 \SpecialChar ~
6643 6691 \SpecialChar ~
6644 6692 result = []
6645 6693 \newline
6646 6694
6647 6695 \begin_inset ERT
6648 6696 status Collapsed
6649 6697
6650 6698 \layout Standard
6651 6699
6652 6700 \backslash
6653 6701 hspace*{0mm}
6654 6702 \end_inset
6655 6703
6656 6704 \SpecialChar ~
6657 6705 \SpecialChar ~
6658 6706 ...: ...\SpecialChar ~
6659 6707 \SpecialChar ~
6660 6708 \SpecialChar ~
6661 6709 \SpecialChar ~
6662 6710 a, b = 0, 1
6663 6711 \newline
6664 6712
6665 6713 \begin_inset ERT
6666 6714 status Collapsed
6667 6715
6668 6716 \layout Standard
6669 6717
6670 6718 \backslash
6671 6719 hspace*{0mm}
6672 6720 \end_inset
6673 6721
6674 6722 \SpecialChar ~
6675 6723 \SpecialChar ~
6676 6724 ...: ...\SpecialChar ~
6677 6725 \SpecialChar ~
6678 6726 \SpecialChar ~
6679 6727 \SpecialChar ~
6680 6728 while b < n:
6681 6729 \newline
6682 6730
6683 6731 \begin_inset ERT
6684 6732 status Collapsed
6685 6733
6686 6734 \layout Standard
6687 6735
6688 6736 \backslash
6689 6737 hspace*{0mm}
6690 6738 \end_inset
6691 6739
6692 6740 \SpecialChar ~
6693 6741 \SpecialChar ~
6694 6742 ...: ...\SpecialChar ~
6695 6743 \SpecialChar ~
6696 6744 \SpecialChar ~
6697 6745 \SpecialChar ~
6698 6746 \SpecialChar ~
6699 6747 \SpecialChar ~
6700 6748 \SpecialChar ~
6701 6749 \SpecialChar ~
6702 6750 result.append(b)\SpecialChar ~
6703 6751 \SpecialChar ~
6704 6752 \SpecialChar ~
6705 6753 # see below
6706 6754 \newline
6707 6755
6708 6756 \begin_inset ERT
6709 6757 status Collapsed
6710 6758
6711 6759 \layout Standard
6712 6760
6713 6761 \backslash
6714 6762 hspace*{0mm}
6715 6763 \end_inset
6716 6764
6717 6765 \SpecialChar ~
6718 6766 \SpecialChar ~
6719 6767 ...: ...\SpecialChar ~
6720 6768 \SpecialChar ~
6721 6769 \SpecialChar ~
6722 6770 \SpecialChar ~
6723 6771 \SpecialChar ~
6724 6772 \SpecialChar ~
6725 6773 \SpecialChar ~
6726 6774 \SpecialChar ~
6727 6775 a, b = b, a+b
6728 6776 \newline
6729 6777
6730 6778 \begin_inset ERT
6731 6779 status Collapsed
6732 6780
6733 6781 \layout Standard
6734 6782
6735 6783 \backslash
6736 6784 hspace*{0mm}
6737 6785 \end_inset
6738 6786
6739 6787 \SpecialChar ~
6740 6788 \SpecialChar ~
6741 6789 ...: ...\SpecialChar ~
6742 6790 \SpecialChar ~
6743 6791 \SpecialChar ~
6744 6792 \SpecialChar ~
6745 6793 return result
6746 6794 \newline
6747 6795
6748 6796 \begin_inset ERT
6749 6797 status Collapsed
6750 6798
6751 6799 \layout Standard
6752 6800
6753 6801 \backslash
6754 6802 hspace*{0mm}
6755 6803 \end_inset
6756 6804
6757 6805 \SpecialChar ~
6758 6806 \SpecialChar ~
6759 6807 ...:
6760 6808 \newline
6761 6809 \SpecialChar ~
6762 6810
6763 6811 \newline
6764 6812 In [2]: fib2(10)
6765 6813 \newline
6766 6814 Out[2]: [1, 1, 2, 3, 5, 8]
6767 6815 \layout Standard
6768 6816
6769 6817 Note that as currently written, this extension does
6770 6818 \emph on
6771 6819 not
6772 6820 \emph default
6773 6821 recognize IPython's prompts for pasting.
6774 6822 Those are more complicated, since the user can change them very easily,
6775 6823 they involve numbers and can vary in length.
6776 6824 One could however extract all the relevant information from the IPython
6777 6825 instance and build an appropriate regular expression.
6778 6826 This is left as an exercise for the reader.
6779 6827 \layout Subsection
6780 6828
6781 6829 Input of physical quantities with units
6782 6830 \layout Standard
6783 6831
6784 6832 The module
6785 6833 \family typewriter
6786 6834 PhysicalQInput
6787 6835 \family default
6788 6836 allows a simplified form of input for physical quantities with units.
6789 6837 This file is meant to be used in conjunction with the
6790 6838 \family typewriter
6791 6839 PhysicalQInteractive
6792 6840 \family default
6793 6841 module (in the same directory) and
6794 6842 \family typewriter
6795 6843 Physics.PhysicalQuantities
6796 6844 \family default
6797 6845 from Konrad Hinsen's ScientificPython (
6798 6846 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/hinsen/scientific.html}
6799 6847
6800 6848 \end_inset
6801 6849
6802 6850 ).
6803 6851 \layout Standard
6804 6852
6805 6853 The
6806 6854 \family typewriter
6807 6855 Physics.PhysicalQuantities
6808 6856 \family default
6809 6857 module defines
6810 6858 \family typewriter
6811 6859 PhysicalQuantity
6812 6860 \family default
6813 6861 objects, but these must be declared as instances of a class.
6814 6862 For example, to define
6815 6863 \family typewriter
6816 6864 v
6817 6865 \family default
6818 6866 as a velocity of 3\SpecialChar ~
6819 6867 m/s, normally you would write:
6820 6868 \family typewriter
6821 6869
6822 6870 \newline
6823 6871 In [1]: v = PhysicalQuantity(3,'m/s')
6824 6872 \layout Standard
6825 6873
6826 6874 Using the
6827 6875 \family typewriter
6828 6876 PhysicalQ_Input
6829 6877 \family default
6830 6878 extension this can be input instead as:
6831 6879 \family typewriter
6832 6880
6833 6881 \newline
6834 6882 In [1]: v = 3 m/s
6835 6883 \family default
6836 6884
6837 6885 \newline
6838 6886 which is much more convenient for interactive use (even though it is blatantly
6839 6887 invalid Python syntax).
6840 6888 \layout Standard
6841 6889
6842 6890 The
6843 6891 \family typewriter
6844 6892 physics
6845 6893 \family default
6846 6894 profile supplied with IPython (enabled via
6847 6895 \family typewriter
6848 6896 'ipython -p physics'
6849 6897 \family default
6850 6898 ) uses these extensions, which you can also activate with:
6851 6899 \layout Standard
6852 6900
6853 6901
6854 6902 \family typewriter
6855 6903 from math import * # math MUST be imported BEFORE PhysicalQInteractive
6856 6904 \newline
6857 6905 from IPython.Extensions.PhysicalQInteractive import *
6858 6906 \newline
6859 6907 import IPython.Extensions.PhysicalQInput
6860 6908 \layout Section
6861 6909
6862 6910
6863 6911 \begin_inset LatexCommand \label{sec:IPython-as-shell}
6864 6912
6865 6913 \end_inset
6866 6914
6867 6915 IPython as a system shell
6868 6916 \layout Standard
6869 6917
6870 6918 IPython ships with a special profile called
6871 6919 \family typewriter
6872 6920 pysh
6873 6921 \family default
6874 6922 , which you can activate at the command line as
6875 6923 \family typewriter
6876 6924 `ipython -p pysh'
6877 6925 \family default
6878 6926 .
6879 6927 This loads
6880 6928 \family typewriter
6881 6929 InterpreterExec
6882 6930 \family default
6883 6931 , along with some additional facilities and a prompt customized for filesystem
6884 6932 navigation.
6885 6933 \layout Standard
6886 6934
6887 6935 Note that this does
6888 6936 \emph on
6889 6937 not
6890 6938 \emph default
6891 6939 make IPython a full-fledged system shell.
6892 6940 In particular, it has no job control, so if you type Ctrl-Z (under Unix),
6893 6941 you'll suspend pysh itself, not the process you just started.
6894 6942
6895 6943 \layout Standard
6896 6944
6897 6945 What the shell profile allows you to do is to use the convenient and powerful
6898 6946 syntax of Python to do quick scripting at the command line.
6899 6947 Below we describe some of its features.
6900 6948 \layout Subsection
6901 6949
6902 6950 Aliases
6903 6951 \layout Standard
6904 6952
6905 6953 All of your
6906 6954 \family typewriter
6907 6955 $PATH
6908 6956 \family default
6909 6957 has been loaded as IPython aliases, so you should be able to type any normal
6910 6958 system command and have it executed.
6911 6959 See
6912 6960 \family typewriter
6913 6961 %alias?
6914 6962 \family default
6915 6963 and
6916 6964 \family typewriter
6917 6965 %unalias?
6918 6966 \family default
6919 6967 for details on the alias facilities.
6920 6968 See also
6921 6969 \family typewriter
6922 6970 %rehash?
6923 6971 \family default
6924 6972 and
6925 6973 \family typewriter
6926 6974 %rehashx?
6927 6975 \family default
6928 6976 for details on the mechanism used to load
6929 6977 \family typewriter
6930 6978 $PATH
6931 6979 \family default
6932 6980 .
6933 6981 \layout Subsection
6934 6982
6935 6983 Special syntax
6936 6984 \layout Standard
6937 6985
6938 6986 Any lines which begin with
6939 6987 \family typewriter
6940 6988 `~'
6941 6989 \family default
6942 6990 ,
6943 6991 \family typewriter
6944 6992 `/'
6945 6993 \family default
6946 6994 and
6947 6995 \family typewriter
6948 6996 `.'
6949 6997 \family default
6950 6998 will be executed as shell commands instead of as Python code.
6951 6999 The special escapes below are also recognized.
6952 7000
6953 7001 \family typewriter
6954 7002 !cmd
6955 7003 \family default
6956 7004 is valid in single or multi-line input, all others are only valid in single-lin
6957 7005 e input:
6958 7006 \layout Description
6959 7007
6960 7008
6961 7009 \family typewriter
6962 7010 !cmd
6963 7011 \family default
6964 7012 pass `cmd' directly to the shell
6965 7013 \layout Description
6966 7014
6967 7015
6968 7016 \family typewriter
6969 7017 !!cmd
6970 7018 \family default
6971 7019 execute `cmd' and return output as a list (split on `
6972 7020 \backslash
6973 7021 n')
6974 7022 \layout Description
6975 7023
6976 7024
6977 7025 \family typewriter
6978 7026 $var=cmd
6979 7027 \family default
6980 7028 capture output of cmd into var, as a string
6981 7029 \layout Description
6982 7030
6983 7031
6984 7032 \family typewriter
6985 7033 $$var=cmd
6986 7034 \family default
6987 7035 capture output of cmd into var, as a list (split on `
6988 7036 \backslash
6989 7037 n')
6990 7038 \layout Standard
6991 7039
6992 7040 The
6993 7041 \family typewriter
6994 7042 $
6995 7043 \family default
6996 7044 /
6997 7045 \family typewriter
6998 7046 $$
6999 7047 \family default
7000 7048 syntaxes make Python variables from system output, which you can later
7001 7049 use for further scripting.
7002 7050 The converse is also possible: when executing an alias or calling to the
7003 7051 system via
7004 7052 \family typewriter
7005 7053 !
7006 7054 \family default
7007 7055 /
7008 7056 \family typewriter
7009 7057 !!
7010 7058 \family default
7011 7059 , you can expand any python variable or expression by prepending it with
7012 7060
7013 7061 \family typewriter
7014 7062 $
7015 7063 \family default
7016 7064 .
7017 7065 Full details of the allowed syntax can be found in Python's PEP 215.
7018 7066 \layout Standard
7019 7067
7020 7068 A few brief examples will illustrate these (note that the indentation below
7021 7069 may be incorrectly displayed):
7022 7070 \layout Standard
7023 7071
7024 7072
7025 7073 \family typewriter
7026 7074 fperez[~/test]|3> !ls *s.py
7027 7075 \newline
7028 7076 scopes.py strings.py
7029 7077 \layout Standard
7030 7078
7031 7079 ls is an internal alias, so there's no need to use
7032 7080 \family typewriter
7033 7081 !
7034 7082 \family default
7035 7083 :
7036 7084 \layout Standard
7037 7085
7038 7086
7039 7087 \family typewriter
7040 7088 fperez[~/test]|4> ls *s.py
7041 7089 \newline
7042 7090 scopes.py* strings.py
7043 7091 \layout Standard
7044 7092
7045 7093 !!ls will return the output into a Python variable:
7046 7094 \layout Standard
7047 7095
7048 7096
7049 7097 \family typewriter
7050 7098 fperez[~/test]|5> !!ls *s.py
7051 7099 \newline
7052 7100
7053 7101 \begin_inset ERT
7054 7102 status Collapsed
7055 7103
7056 7104 \layout Standard
7057 7105
7058 7106 \backslash
7059 7107 hspace*{0mm}
7060 7108 \end_inset
7061 7109
7062 7110 \SpecialChar ~
7063 7111 \SpecialChar ~
7064 7112 \SpecialChar ~
7065 7113 \SpecialChar ~
7066 7114 \SpecialChar ~
7067 7115 \SpecialChar ~
7068 7116 \SpecialChar ~
7069 7117 \SpecialChar ~
7070 7118 \SpecialChar ~
7071 7119 \SpecialChar ~
7072 7120 \SpecialChar ~
7073 7121 \SpecialChar ~
7074 7122 \SpecialChar ~
7075 7123 \SpecialChar ~
7076 7124 <5> ['scopes.py', 'strings.py']
7077 7125 \newline
7078 7126 fperez[~/test]|6> print _5
7079 7127 \newline
7080 7128 ['scopes.py', 'strings.py']
7081 7129 \layout Standard
7082 7130
7083 7131
7084 7132 \family typewriter
7085 7133 $
7086 7134 \family default
7087 7135 and
7088 7136 \family typewriter
7089 7137 $$
7090 7138 \family default
7091 7139 allow direct capture to named variables:
7092 7140 \layout Standard
7093 7141
7094 7142
7095 7143 \family typewriter
7096 7144 fperez[~/test]|7> $astr = ls *s.py
7097 7145 \newline
7098 7146 fperez[~/test]|8> astr
7099 7147 \newline
7100 7148
7101 7149 \begin_inset ERT
7102 7150 status Collapsed
7103 7151
7104 7152 \layout Standard
7105 7153
7106 7154 \backslash
7107 7155 hspace*{0mm}
7108 7156 \end_inset
7109 7157
7110 7158 \SpecialChar ~
7111 7159 \SpecialChar ~
7112 7160 \SpecialChar ~
7113 7161 \SpecialChar ~
7114 7162 \SpecialChar ~
7115 7163 \SpecialChar ~
7116 7164 \SpecialChar ~
7117 7165 \SpecialChar ~
7118 7166 \SpecialChar ~
7119 7167 \SpecialChar ~
7120 7168 \SpecialChar ~
7121 7169 \SpecialChar ~
7122 7170 \SpecialChar ~
7123 7171 \SpecialChar ~
7124 7172 <8> 'scopes.py
7125 7173 \backslash
7126 7174 nstrings.py'
7127 7175 \layout Standard
7128 7176
7129 7177
7130 7178 \family typewriter
7131 7179 fperez[~/test]|9> $$alist = ls *s.py
7132 7180 \newline
7133 7181 fperez[~/test]|10> alist
7134 7182 \newline
7135 7183
7136 7184 \begin_inset ERT
7137 7185 status Collapsed
7138 7186
7139 7187 \layout Standard
7140 7188
7141 7189 \backslash
7142 7190 hspace*{0mm}
7143 7191 \end_inset
7144 7192
7145 7193 \SpecialChar ~
7146 7194 \SpecialChar ~
7147 7195 \SpecialChar ~
7148 7196 \SpecialChar ~
7149 7197 \SpecialChar ~
7150 7198 \SpecialChar ~
7151 7199 \SpecialChar ~
7152 7200 \SpecialChar ~
7153 7201 \SpecialChar ~
7154 7202 \SpecialChar ~
7155 7203 \SpecialChar ~
7156 7204 \SpecialChar ~
7157 7205 \SpecialChar ~
7158 7206 \SpecialChar ~
7159 7207 <10> ['scopes.py', 'strings.py']
7160 7208 \layout Standard
7161 7209
7162 7210 alist is now a normal python list you can loop over.
7163 7211 Using
7164 7212 \family typewriter
7165 7213 $
7166 7214 \family default
7167 7215 will expand back the python values when alias calls are made:
7168 7216 \layout Standard
7169 7217
7170 7218
7171 7219 \family typewriter
7172 7220 fperez[~/test]|11> for f in alist:
7173 7221 \newline
7174 7222
7175 7223 \begin_inset ERT
7176 7224 status Collapsed
7177 7225
7178 7226 \layout Standard
7179 7227
7180 7228 \backslash
7181 7229 hspace*{0mm}
7182 7230 \end_inset
7183 7231
7184 7232 \SpecialChar ~
7185 7233 \SpecialChar ~
7186 7234 \SpecialChar ~
7187 7235 \SpecialChar ~
7188 7236 \SpecialChar ~
7189 7237 \SpecialChar ~
7190 7238 \SpecialChar ~
7191 7239 \SpecialChar ~
7192 7240 \SpecialChar ~
7193 7241 \SpecialChar ~
7194 7242 \SpecialChar ~
7195 7243 \SpecialChar ~
7196 7244 \SpecialChar ~
7197 7245 \SpecialChar ~
7198 7246 |..> \SpecialChar ~
7199 7247 \SpecialChar ~
7200 7248 \SpecialChar ~
7201 7249 \SpecialChar ~
7202 7250 print 'file',f,
7203 7251 \newline
7204 7252
7205 7253 \begin_inset ERT
7206 7254 status Collapsed
7207 7255
7208 7256 \layout Standard
7209 7257
7210 7258 \backslash
7211 7259 hspace*{0mm}
7212 7260 \end_inset
7213 7261
7214 7262 \SpecialChar ~
7215 7263 \SpecialChar ~
7216 7264 \SpecialChar ~
7217 7265 \SpecialChar ~
7218 7266 \SpecialChar ~
7219 7267 \SpecialChar ~
7220 7268 \SpecialChar ~
7221 7269 \SpecialChar ~
7222 7270 \SpecialChar ~
7223 7271 \SpecialChar ~
7224 7272 \SpecialChar ~
7225 7273 \SpecialChar ~
7226 7274 \SpecialChar ~
7227 7275 \SpecialChar ~
7228 7276 |..> \SpecialChar ~
7229 7277 \SpecialChar ~
7230 7278 \SpecialChar ~
7231 7279 \SpecialChar ~
7232 7280 wc -l $f
7233 7281 \newline
7234 7282
7235 7283 \begin_inset ERT
7236 7284 status Collapsed
7237 7285
7238 7286 \layout Standard
7239 7287
7240 7288 \backslash
7241 7289 hspace*{0mm}
7242 7290 \end_inset
7243 7291
7244 7292 \SpecialChar ~
7245 7293 \SpecialChar ~
7246 7294 \SpecialChar ~
7247 7295 \SpecialChar ~
7248 7296 \SpecialChar ~
7249 7297 \SpecialChar ~
7250 7298 \SpecialChar ~
7251 7299 \SpecialChar ~
7252 7300 \SpecialChar ~
7253 7301 \SpecialChar ~
7254 7302 \SpecialChar ~
7255 7303 \SpecialChar ~
7256 7304 \SpecialChar ~
7257 7305 \SpecialChar ~
7258 7306 |..>
7259 7307 \newline
7260 7308 file scopes.py 13 scopes.py
7261 7309 \newline
7262 7310 file strings.py 4 strings.py
7263 7311 \layout Standard
7264 7312
7265 7313 Note that you may need to protect your variables with braces if you want
7266 7314 to append strings to their names.
7267 7315 To copy all files in alist to
7268 7316 \family typewriter
7269 7317 .bak
7270 7318 \family default
7271 7319 extensions, you must use:
7272 7320 \layout Standard
7273 7321
7274 7322
7275 7323 \family typewriter
7276 7324 fperez[~/test]|12> for f in alist:
7277 7325 \newline
7278 7326
7279 7327 \begin_inset ERT
7280 7328 status Collapsed
7281 7329
7282 7330 \layout Standard
7283 7331
7284 7332 \backslash
7285 7333 hspace*{0mm}
7286 7334 \end_inset
7287 7335
7288 7336 \SpecialChar ~
7289 7337 \SpecialChar ~
7290 7338 \SpecialChar ~
7291 7339 \SpecialChar ~
7292 7340 \SpecialChar ~
7293 7341 \SpecialChar ~
7294 7342 \SpecialChar ~
7295 7343 \SpecialChar ~
7296 7344 \SpecialChar ~
7297 7345 \SpecialChar ~
7298 7346 \SpecialChar ~
7299 7347 \SpecialChar ~
7300 7348 \SpecialChar ~
7301 7349 \SpecialChar ~
7302 7350 |..> \SpecialChar ~
7303 7351 \SpecialChar ~
7304 7352 \SpecialChar ~
7305 7353 \SpecialChar ~
7306 7354 cp $f ${f}.bak
7307 7355 \layout Standard
7308 7356
7309 7357 If you try using
7310 7358 \family typewriter
7311 7359 $f.bak
7312 7360 \family default
7313 7361 , you'll get an AttributeError exception saying that your string object
7314 7362 doesn't have a
7315 7363 \family typewriter
7316 7364 .bak
7317 7365 \family default
7318 7366 attribute.
7319 7367 This is because the
7320 7368 \family typewriter
7321 7369 $
7322 7370 \family default
7323 7371 expansion mechanism allows you to expand full Python expressions:
7324 7372 \layout Standard
7325 7373
7326 7374
7327 7375 \family typewriter
7328 7376 fperez[~/test]|13> echo "sys.platform is: $sys.platform"
7329 7377 \newline
7330 7378 sys.platform is: linux2
7331 7379 \layout Standard
7332 7380
7333 7381 IPython's input history handling is still active, which allows you to rerun
7334 7382 a single block of multi-line input by simply using exec:
7335 7383 \newline
7336 7384
7337 7385 \family typewriter
7338 7386 fperez[~/test]|14> $$alist = ls *.eps
7339 7387 \newline
7340 7388 fperez[~/test]|15> exec _i11
7341 7389 \newline
7342 7390 file image2.eps 921 image2.eps
7343 7391 \newline
7344 7392 file image.eps 921 image.eps
7345 7393 \layout Standard
7346 7394
7347 7395 While these are new special-case syntaxes, they are designed to allow very
7348 7396 efficient use of the shell with minimal typing.
7349 7397 At an interactive shell prompt, conciseness of expression wins over readability.
7350 7398 \layout Subsection
7351 7399
7352 7400 Useful functions and modules
7353 7401 \layout Standard
7354 7402
7355 7403 The os, sys and shutil modules from the Python standard library are automaticall
7356 7404 y loaded.
7357 7405 Some additional functions, useful for shell usage, are listed below.
7358 7406 You can request more help about them with `
7359 7407 \family typewriter
7360 7408 ?
7361 7409 \family default
7362 7410 '.
7363 7411 \layout Description
7364 7412
7365 7413
7366 7414 \family typewriter
7367 7415 shell
7368 7416 \family default
7369 7417 - execute a command in the underlying system shell
7370 7418 \layout Description
7371 7419
7372 7420
7373 7421 \family typewriter
7374 7422 system
7375 7423 \family default
7376 7424 - like
7377 7425 \family typewriter
7378 7426 shell()
7379 7427 \family default
7380 7428 , but return the exit status of the command
7381 7429 \layout Description
7382 7430
7383 7431
7384 7432 \family typewriter
7385 7433 sout
7386 7434 \family default
7387 7435 - capture the output of a command as a string
7388 7436 \layout Description
7389 7437
7390 7438
7391 7439 \family typewriter
7392 7440 lout
7393 7441 \family default
7394 7442 - capture the output of a command as a list (split on `
7395 7443 \backslash
7396 7444 n')
7397 7445 \layout Description
7398 7446
7399 7447
7400 7448 \family typewriter
7401 7449 getoutputerror
7402 7450 \family default
7403 7451 - capture (output,error) of a shell commandss
7404 7452 \layout Standard
7405 7453
7406 7454
7407 7455 \family typewriter
7408 7456 sout
7409 7457 \family default
7410 7458 /
7411 7459 \family typewriter
7412 7460 lout
7413 7461 \family default
7414 7462 are the functional equivalents of
7415 7463 \family typewriter
7416 7464 $
7417 7465 \family default
7418 7466 /
7419 7467 \family typewriter
7420 7468 $$
7421 7469 \family default
7422 7470 .
7423 7471 They are provided to allow you to capture system output in the middle of
7424 7472 true python code, function definitions, etc (where
7425 7473 \family typewriter
7426 7474 $
7427 7475 \family default
7428 7476 and
7429 7477 \family typewriter
7430 7478 $$
7431 7479 \family default
7432 7480 are invalid).
7433 7481 \layout Subsection
7434 7482
7435 7483 Directory management
7436 7484 \layout Standard
7437 7485
7438 7486 Since each command passed by pysh to the underlying system is executed in
7439 7487 a subshell which exits immediately, you can NOT use !cd to navigate the
7440 7488 filesystem.
7441 7489 \layout Standard
7442 7490
7443 7491 Pysh provides its own builtin
7444 7492 \family typewriter
7445 7493 `%cd
7446 7494 \family default
7447 7495 ' magic command to move in the filesystem (the
7448 7496 \family typewriter
7449 7497 %
7450 7498 \family default
7451 7499 is not required with automagic on).
7452 7500 It also maintains a list of visited directories (use
7453 7501 \family typewriter
7454 7502 %dhist
7455 7503 \family default
7456 7504 to see it) and allows direct switching to any of them.
7457 7505 Type
7458 7506 \family typewriter
7459 7507 `cd?
7460 7508 \family default
7461 7509 ' for more details.
7462 7510 \layout Standard
7463 7511
7464 7512
7465 7513 \family typewriter
7466 7514 %pushd
7467 7515 \family default
7468 7516 ,
7469 7517 \family typewriter
7470 7518 %popd
7471 7519 \family default
7472 7520 and
7473 7521 \family typewriter
7474 7522 %dirs
7475 7523 \family default
7476 7524 are provided for directory stack handling.
7477 7525 \layout Subsection
7478 7526
7479 7527 Prompt customization
7480 7528 \layout Standard
7481 7529
7482 7530 The supplied
7483 7531 \family typewriter
7484 7532 ipythonrc-pysh
7485 7533 \family default
7486 7534 profile comes with an example of a very colored and detailed prompt, mainly
7487 7535 to serve as an illustration.
7488 7536 The valid escape sequences, besides color names, are:
7489 7537 \layout Description
7490 7538
7491 7539
7492 7540 \backslash
7493 7541 # - Prompt number.
7494 7542 \layout Description
7495 7543
7496 7544
7497 7545 \backslash
7498 7546 D - Dots, as many as there are digits in
7499 7547 \backslash
7500 7548 # (so they align).
7501 7549 \layout Description
7502 7550
7503 7551
7504 7552 \backslash
7505 7553 w - Current working directory (cwd).
7506 7554 \layout Description
7507 7555
7508 7556
7509 7557 \backslash
7510 7558 W - Basename of current working directory.
7511 7559 \layout Description
7512 7560
7513 7561
7514 7562 \backslash
7515 7563 X
7516 7564 \emph on
7517 7565 N
7518 7566 \emph default
7519 7567 - Where
7520 7568 \emph on
7521 7569 N
7522 7570 \emph default
7523 7571 =0..5.
7524 7572 N terms of the cwd, with $HOME written as ~.
7525 7573 \layout Description
7526 7574
7527 7575
7528 7576 \backslash
7529 7577 Y
7530 7578 \emph on
7531 7579 N
7532 7580 \emph default
7533 7581 - Where
7534 7582 \emph on
7535 7583 N
7536 7584 \emph default
7537 7585 =0..5.
7538 7586 Like X
7539 7587 \emph on
7540 7588 N
7541 7589 \emph default
7542 7590 , but if ~ is term
7543 7591 \emph on
7544 7592 N
7545 7593 \emph default
7546 7594 +1 it's also shown.
7547 7595 \layout Description
7548 7596
7549 7597
7550 7598 \backslash
7551 7599 u - Username.
7552 7600 \layout Description
7553 7601
7554 7602
7555 7603 \backslash
7556 7604 H - Full hostname.
7557 7605 \layout Description
7558 7606
7559 7607
7560 7608 \backslash
7561 7609 h - Hostname up to first '.'
7562 7610 \layout Description
7563 7611
7564 7612
7565 7613 \backslash
7566 7614 $ - Root symbol ($ or #).
7567 7615
7568 7616 \layout Description
7569 7617
7570 7618
7571 7619 \backslash
7572 7620 t - Current time, in H:M:S format.
7573 7621 \layout Description
7574 7622
7575 7623
7576 7624 \backslash
7577 7625 v - IPython release version.
7578 7626
7579 7627 \layout Description
7580 7628
7581 7629
7582 7630 \backslash
7583 7631 n - Newline.
7584 7632
7585 7633 \layout Description
7586 7634
7587 7635
7588 7636 \backslash
7589 7637 r - Carriage return.
7590 7638
7591 7639 \layout Description
7592 7640
7593 7641
7594 7642 \backslash
7595 7643
7596 7644 \backslash
7597 7645 - An explicitly escaped '
7598 7646 \backslash
7599 7647 '.
7600 7648 \layout Standard
7601 7649
7602 7650 You can configure your prompt colors using any ANSI color escape.
7603 7651 Each color escape sets the color for any subsequent text, until another
7604 7652 escape comes in and changes things.
7605 7653 The valid color escapes are:
7606 7654 \layout Description
7607 7655
7608 7656
7609 7657 \backslash
7610 7658 C_Black
7611 7659 \layout Description
7612 7660
7613 7661
7614 7662 \backslash
7615 7663 C_Blue
7616 7664 \layout Description
7617 7665
7618 7666
7619 7667 \backslash
7620 7668 C_Brown
7621 7669 \layout Description
7622 7670
7623 7671
7624 7672 \backslash
7625 7673 C_Cyan
7626 7674 \layout Description
7627 7675
7628 7676
7629 7677 \backslash
7630 7678 C_DarkGray
7631 7679 \layout Description
7632 7680
7633 7681
7634 7682 \backslash
7635 7683 C_Green
7636 7684 \layout Description
7637 7685
7638 7686
7639 7687 \backslash
7640 7688 C_LightBlue
7641 7689 \layout Description
7642 7690
7643 7691
7644 7692 \backslash
7645 7693 C_LightCyan
7646 7694 \layout Description
7647 7695
7648 7696
7649 7697 \backslash
7650 7698 C_LightGray
7651 7699 \layout Description
7652 7700
7653 7701
7654 7702 \backslash
7655 7703 C_LightGreen
7656 7704 \layout Description
7657 7705
7658 7706
7659 7707 \backslash
7660 7708 C_LightPurple
7661 7709 \layout Description
7662 7710
7663 7711
7664 7712 \backslash
7665 7713 C_LightRed
7666 7714 \layout Description
7667 7715
7668 7716
7669 7717 \backslash
7670 7718 C_Purple
7671 7719 \layout Description
7672 7720
7673 7721
7674 7722 \backslash
7675 7723 C_Red
7676 7724 \layout Description
7677 7725
7678 7726
7679 7727 \backslash
7680 7728 C_White
7681 7729 \layout Description
7682 7730
7683 7731
7684 7732 \backslash
7685 7733 C_Yellow
7686 7734 \layout Description
7687 7735
7688 7736
7689 7737 \backslash
7690 7738 C_Normal Stop coloring, defaults to your terminal settings.
7691 7739 \layout Section
7692 7740
7693 7741
7694 7742 \begin_inset LatexCommand \label{sec:Threading-support}
7695 7743
7696 7744 \end_inset
7697 7745
7698 7746 Threading support
7699 7747 \layout Standard
7700 7748
7701 7749
7702 7750 \series bold
7703 7751 WARNING:
7704 7752 \series default
7705 7753 The threading support is still somewhat experimental, and it has only seen
7706 7754 reasonable testing under Linux.
7707 7755 Threaded code is particularly tricky to debug, and it tends to show extremely
7708 7756 platform-dependent behavior.
7709 7757 Since I only have access to Linux machines, I will have to rely on user's
7710 7758 experiences and assistance for this area of IPython to improve under other
7711 7759 platforms.
7712 7760 \layout Standard
7713 7761
7714 7762 IPython, via the
7715 7763 \family typewriter
7716 7764 -gthread
7717 7765 \family default
7718 7766 ,
7719 7767 \family typewriter
7720 7768 -qthread
7721 7769 \family default
7722 7770 and
7723 7771 \family typewriter
7724 7772 -wthread
7725 7773 \family default
7726 7774 options (described in Sec.\SpecialChar ~
7727 7775
7728 7776 \begin_inset LatexCommand \ref{sec:threading-opts}
7729 7777
7730 7778 \end_inset
7731 7779
7732 7780 ), can run in multithreaded mode to support pyGTK, Qt and WXPython applications
7733 7781 respectively.
7734 7782 These GUI toolkits need to control the python main loop of execution, so
7735 7783 under a normal Python interpreter, starting a pyGTK, Qt or WXPython application
7736 7784 will immediately freeze the shell.
7737 7785
7738 7786 \layout Standard
7739 7787
7740 7788 IPython, with one of these options (you can only use one at a time), separates
7741 7789 the graphical loop and IPython's code execution run into different threads.
7742 7790 This allows you to test interactively (with
7743 7791 \family typewriter
7744 7792 %run
7745 7793 \family default
7746 7794 , for example) your GUI code without blocking.
7747 7795 \layout Standard
7748 7796
7749 7797 A nice mini-tutorial on using IPython along with the Qt Designer application
7750 7798 is available at the SciPy wiki:
7751 7799 \begin_inset LatexCommand \htmlurl{http://www.scipy.org/wikis/topical_software/QtWithIPythonAndDesigner}
7752 7800
7753 7801 \end_inset
7754 7802
7755 7803 .
7756 7804 \layout Subsection
7757 7805
7758 7806 Tk issues
7759 7807 \layout Standard
7760 7808
7761 7809 As indicated in Sec.\SpecialChar ~
7762 7810
7763 7811 \begin_inset LatexCommand \ref{sec:threading-opts}
7764 7812
7765 7813 \end_inset
7766 7814
7767 7815 , a special
7768 7816 \family typewriter
7769 7817 -tk
7770 7818 \family default
7771 7819 option is provided to try and allow Tk graphical applications to coexist
7772 7820 interactively with WX, Qt or GTK ones.
7773 7821 Whether this works at all, however, is very platform and configuration
7774 7822 dependent.
7775 7823 Please experiment with simple test cases before committing to using this
7776 7824 combination of Tk and GTK/Qt/WX threading in a production environment.
7777 7825 \layout Subsection
7778 7826
7779 7827 Signals and Threads
7780 7828 \layout Standard
7781 7829
7782 7830 When any of the thread systems (GTK, Qt or WX) are active, either directly
7783 7831 or via
7784 7832 \family typewriter
7785 7833 -pylab
7786 7834 \family default
7787 7835 with a threaded backend, it is impossible to interrupt long-running Python
7788 7836 code via
7789 7837 \family typewriter
7790 7838 Ctrl-C
7791 7839 \family default
7792 7840 .
7793 7841 IPython can not pass the KeyboardInterrupt exception (or the underlying
7794 7842
7795 7843 \family typewriter
7796 7844 SIGINT
7797 7845 \family default
7798 7846 ) across threads, so any long-running process started from IPython will
7799 7847 run to completion, or will have to be killed via an external (OS-based)
7800 7848 mechanism.
7801 7849 \layout Standard
7802 7850
7803 7851 To the best of my knowledge, this limitation is imposed by the Python interprete
7804 7852 r itself, and it comes from the difficulty of writing portable signal/threaded
7805 7853 code.
7806 7854 If any user is an expert on this topic and can suggest a better solution,
7807 7855 I would love to hear about it.
7808 7856 In the IPython sources, look at the
7809 7857 \family typewriter
7810 7858 Shell.py
7811 7859 \family default
7812 7860 module, and in particular at the
7813 7861 \family typewriter
7814 7862 runcode()
7815 7863 \family default
7816 7864 method.
7817 7865
7818 7866 \layout Subsection
7819 7867
7820 7868 I/O pitfalls
7821 7869 \layout Standard
7822 7870
7823 7871 Be mindful that the Python interpreter switches between threads every
7824 7872 \begin_inset Formula $N$
7825 7873 \end_inset
7826 7874
7827 7875 bytecodes, where the default value as of Python\SpecialChar ~
7828 7876 2.3 is
7829 7877 \begin_inset Formula $N=100.$
7830 7878 \end_inset
7831 7879
7832 7880 This value can be read by using the
7833 7881 \family typewriter
7834 7882 sys.getcheckinterval()
7835 7883 \family default
7836 7884 function, and it can be reset via
7837 7885 \family typewriter
7838 7886 sys.setcheckinterval(
7839 7887 \emph on
7840 7888 N
7841 7889 \emph default
7842 7890 )
7843 7891 \family default
7844 7892 .
7845 7893 This switching of threads can cause subtly confusing effects if one of
7846 7894 your threads is doing file I/O.
7847 7895 In text mode, most systems only flush file buffers when they encounter
7848 7896 a
7849 7897 \family typewriter
7850 7898 `
7851 7899 \backslash
7852 7900 n'
7853 7901 \family default
7854 7902 .
7855 7903 An instruction as simple as
7856 7904 \family typewriter
7857 7905
7858 7906 \newline
7859 7907 \SpecialChar ~
7860 7908 \SpecialChar ~
7861 7909 print >> filehandle,
7862 7910 \begin_inset Quotes eld
7863 7911 \end_inset
7864 7912
7865 7913 hello world
7866 7914 \begin_inset Quotes erd
7867 7915 \end_inset
7868 7916
7869 7917
7870 7918 \family default
7871 7919
7872 7920 \newline
7873 7921 actually consists of several bytecodes, so it is possible that the newline
7874 7922 does not reach your file before the next thread switch.
7875 7923 Similarly, if you are writing to a file in binary mode, the file won't
7876 7924 be flushed until the buffer fills, and your other thread may see apparently
7877 7925 truncated files.
7878 7926
7879 7927 \layout Standard
7880 7928
7881 7929 For this reason, if you are using IPython's thread support and have (for
7882 7930 example) a GUI application which will read data generated by files written
7883 7931 to from the IPython thread, the safest approach is to open all of your
7884 7932 files in unbuffered mode (the third argument to the
7885 7933 \family typewriter
7886 7934 file/open
7887 7935 \family default
7888 7936 function is the buffering value):
7889 7937 \newline
7890 7938
7891 7939 \family typewriter
7892 7940 \SpecialChar ~
7893 7941 \SpecialChar ~
7894 7942 filehandle = open(filename,mode,0)
7895 7943 \layout Standard
7896 7944
7897 7945 This is obviously a brute force way of avoiding race conditions with the
7898 7946 file buffering.
7899 7947 If you want to do it cleanly, and you have a resource which is being shared
7900 7948 by the interactive IPython loop and your GUI thread, you should really
7901 7949 handle it with thread locking and syncrhonization properties.
7902 7950 The Python documentation discusses these.
7903 7951 \layout Section
7904 7952
7905 7953
7906 7954 \begin_inset LatexCommand \label{sec:interactive-demos}
7907 7955
7908 7956 \end_inset
7909 7957
7910 7958 Interactive demos with IPython
7911 7959 \layout Standard
7912 7960
7913 7961 IPython ships with a basic system for running scripts interactively in sections,
7914 7962 useful when presenting code to audiences.
7915 7963 A few tags embedded in comments (so that the script remains valid Python
7916 7964 code) divide a file into separate blocks, and the demo can be run one block
7917 7965 at a time, with IPython printing (with syntax highlighting) the block before
7918 7966 executing it, and returning to the interactive prompt after each block.
7919 7967 The interactive namespace is updated after each block is run with the contents
7920 7968 of the demo's namespace.
7921 7969 \layout Standard
7922 7970
7923 7971 This allows you to show a piece of code, run it and then execute interactively
7924 7972 commands based on the variables just created.
7925 7973 Once you want to continue, you simply execute the next block of the demo.
7926 7974 The following listing shows the markup necessary for dividing a script
7927 7975 into sections for execution as a demo.
7928 7976 \layout Standard
7929 7977
7930 7978
7931 7979 \begin_inset ERT
7932 7980 status Open
7933 7981
7934 7982 \layout Standard
7935 7983
7936 7984 \backslash
7937 7985 codelist{examples/example-demo.py}
7938 7986 \end_inset
7939 7987
7940 7988
7941 7989 \layout Standard
7942 7990
7943 7991 In order to run a file as a demo, you must first make a
7944 7992 \family typewriter
7945 7993 Demo
7946 7994 \family default
7947 7995 object out of it.
7948 7996 If the file is named
7949 7997 \family typewriter
7950 7998 myscript.py
7951 7999 \family default
7952 8000 , the following code will make a demo:
7953 8001 \layout LyX-Code
7954 8002
7955 8003 from IPython.demo import Demo
7956 8004 \layout LyX-Code
7957 8005
7958 8006 mydemo = Demo('myscript.py')
7959 8007 \layout Standard
7960 8008
7961 8009 This creates the
7962 8010 \family typewriter
7963 8011 mydemo
7964 8012 \family default
7965 8013 object, whose blocks you run one at a time by simply calling the object
7966 8014 with no arguments.
7967 8015 If you have autocall active in IPython (the default), all you need to do
7968 8016 is type
7969 8017 \layout LyX-Code
7970 8018
7971 8019 mydemo
7972 8020 \layout Standard
7973 8021
7974 8022 and IPython will call it, executing each block.
7975 8023 Demo objects can be restarted, you can move forward or back skipping blocks,
7976 8024 re-execute the last block, etc.
7977 8025 Simply use the Tab key on a demo object to see its methods, and call
7978 8026 \family typewriter
7979 8027 `?'
7980 8028 \family default
7981 8029 on them to see their docstrings for more usage details.
7982 8030 In addition, the
7983 8031 \family typewriter
7984 8032 demo
7985 8033 \family default
7986 8034 module itself contains a comprehensive docstring, which you can access
7987 8035 via
7988 8036 \layout LyX-Code
7989 8037
7990 8038 from IPython import demo
7991 8039 \layout LyX-Code
7992 8040
7993 8041 demo?
7994 8042 \layout Standard
7995 8043
7996 8044
7997 8045 \series bold
7998 8046 Limitations:
7999 8047 \series default
8000 8048 It is important to note that these demos are limited to fairly simple uses.
8001 8049 In particular, you can
8002 8050 \emph on
8003 8051 not
8004 8052 \emph default
8005 8053 put division marks in indented code (loops, if statements, function definitions
8006 8054 , etc.) Supporting something like this would basically require tracking the
8007 8055 internal execution state of the Python interpreter, so only top-level divisions
8008 8056 are allowed.
8009 8057 If you want to be able to open an IPython instance at an arbitrary point
8010 8058 in a program, you can use IPython's embedding facilities, described in
8011 8059 detail in Sec\SpecialChar \@.
8012 8060 \SpecialChar ~
8013 8061
8014 8062 \begin_inset LatexCommand \ref{sec:embed}
8015 8063
8016 8064 \end_inset
8017 8065
8018 8066 .
8019 8067 \layout Section
8020 8068
8021 8069
8022 8070 \begin_inset LatexCommand \label{sec:matplotlib-support}
8023 8071
8024 8072 \end_inset
8025 8073
8026 8074 Plotting with
8027 8075 \family typewriter
8028 8076 matplotlib
8029 8077 \family default
8030 8078
8031 8079 \layout Standard
8032 8080
8033 8081 The matplotlib library (
8034 8082 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
8035 8083
8036 8084 \end_inset
8037 8085
8038 8086 ) provides high quality 2D plotting for Python.
8039 8087 Matplotlib can produce plots on screen using a variety of GUI toolkits,
8040 8088 including Tk, GTK and WXPython.
8041 8089 It also provides a number of commands useful for scientific computing,
8042 8090 all with a syntax compatible with that of the popular Matlab program.
8043 8091 \layout Standard
8044 8092
8045 8093 IPython accepts the special option
8046 8094 \family typewriter
8047 8095 -pylab
8048 8096 \family default
8049 8097 (Sec.\SpecialChar ~
8050 8098
8051 8099 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
8052 8100
8053 8101 \end_inset
8054 8102
8055 8103 ).
8056 8104 This configures it to support matplotlib, honoring the settings in the
8057 8105
8058 8106 \family typewriter
8059 8107 .matplotlibrc
8060 8108 \family default
8061 8109 file.
8062 8110 IPython will detect the user's choice of matplotlib GUI backend, and automatica
8063 8111 lly select the proper threading model to prevent blocking.
8064 8112 It also sets matplotlib in interactive mode and modifies
8065 8113 \family typewriter
8066 8114 %run
8067 8115 \family default
8068 8116 slightly, so that any matplotlib-based script can be executed using
8069 8117 \family typewriter
8070 8118 %run
8071 8119 \family default
8072 8120 and the final
8073 8121 \family typewriter
8074 8122 show()
8075 8123 \family default
8076 8124 command does not block the interactive shell.
8077 8125 \layout Standard
8078 8126
8079 8127 The
8080 8128 \family typewriter
8081 8129 -pylab
8082 8130 \family default
8083 8131 option must be given first in order for IPython to configure its threading
8084 8132 mode.
8085 8133 However, you can still issue other options afterwards.
8086 8134 This allows you to have a matplotlib-based environment customized with
8087 8135 additional modules using the standard IPython profile mechanism (Sec.\SpecialChar ~
8088 8136
8089 8137 \begin_inset LatexCommand \ref{sec:profiles}
8090 8138
8091 8139 \end_inset
8092 8140
8093 8141 ): ``
8094 8142 \family typewriter
8095 8143 ipython -pylab -p myprofile
8096 8144 \family default
8097 8145 '' will load the profile defined in
8098 8146 \family typewriter
8099 8147 ipythonrc-myprofile
8100 8148 \family default
8101 8149 after configuring matplotlib.
8102 8150 \layout Section
8103 8151
8104 8152
8105 8153 \begin_inset LatexCommand \label{sec:Gnuplot}
8106 8154
8107 8155 \end_inset
8108 8156
8109 8157 Plotting with
8110 8158 \family typewriter
8111 8159 Gnuplot
8112 8160 \layout Standard
8113 8161
8114 8162 Through the magic extension system described in sec.
8115 8163
8116 8164 \begin_inset LatexCommand \ref{sec:magic}
8117 8165
8118 8166 \end_inset
8119 8167
8120 8168 , IPython incorporates a mechanism for conveniently interfacing with the
8121 8169 Gnuplot system (
8122 8170 \begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
8123 8171
8124 8172 \end_inset
8125 8173
8126 8174 ).
8127 8175 Gnuplot is a very complete 2D and 3D plotting package available for many
8128 8176 operating systems and commonly included in modern Linux distributions.
8129 8177
8130 8178 \layout Standard
8131 8179
8132 8180 Besides having Gnuplot installed, this functionality requires the
8133 8181 \family typewriter
8134 8182 Gnuplot.py
8135 8183 \family default
8136 8184 module for interfacing python with Gnuplot.
8137 8185 It can be downloaded from:
8138 8186 \begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
8139 8187
8140 8188 \end_inset
8141 8189
8142 8190 .
8143 8191 \layout Subsection
8144 8192
8145 8193 Proper Gnuplot configuration
8146 8194 \layout Standard
8147 8195
8148 8196 As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
8149 8197 However, as of
8150 8198 \family typewriter
8151 8199 Gnuplot.py
8152 8200 \family default
8153 8201 version 1.7, a new option was added to communicate between Python and Gnuplot
8154 8202 via FIFOs (pipes).
8155 8203 This mechanism, while fast, also breaks the mouse system.
8156 8204 You must therefore set the variable
8157 8205 \family typewriter
8158 8206 prefer_fifo_data
8159 8207 \family default
8160 8208 to
8161 8209 \family typewriter
8162 8210 0
8163 8211 \family default
8164 8212 in file
8165 8213 \family typewriter
8166 8214 gp_unix.py
8167 8215 \family default
8168 8216 if you wish to keep the interactive mouse and keyboard features working
8169 8217 properly (
8170 8218 \family typewriter
8171 8219 prefer_inline_data
8172 8220 \family default
8173 8221 also must be
8174 8222 \family typewriter
8175 8223 0
8176 8224 \family default
8177 8225 , but this is the default so unless you've changed it manually you should
8178 8226 be fine).
8179 8227 \layout Standard
8180 8228
8181 8229 'Out of the box', Gnuplot is configured with a rather poor set of size,
8182 8230 color and linewidth choices which make the graphs fairly hard to read on
8183 8231 modern high-resolution displays (although they work fine on old 640x480
8184 8232 ones).
8185 8233 Below is a section of my
8186 8234 \family typewriter
8187 8235 .Xdefaults
8188 8236 \family default
8189 8237 file which I use for having a more convenient Gnuplot setup.
8190 8238 Remember to load it by running
8191 8239 \family typewriter
8192 8240 `xrdb .Xdefaults`
8193 8241 \family default
8194 8242 :
8195 8243 \layout Standard
8196 8244
8197 8245
8198 8246 \family typewriter
8199 8247 !******************************************************************
8200 8248 \newline
8201 8249 ! gnuplot options
8202 8250 \newline
8203 8251 ! modify this for a convenient window size
8204 8252 \newline
8205 8253 gnuplot*geometry: 780x580
8206 8254 \layout Standard
8207 8255
8208 8256
8209 8257 \family typewriter
8210 8258 ! on-screen font (not for PostScript)
8211 8259 \newline
8212 8260 gnuplot*font: -misc-fixed-bold-r-normal--15-120-100-100-c-90-iso8859-1
8213 8261 \layout Standard
8214 8262
8215 8263
8216 8264 \family typewriter
8217 8265 ! color options
8218 8266 \newline
8219 8267 gnuplot*background: black
8220 8268 \newline
8221 8269 gnuplot*textColor: white
8222 8270 \newline
8223 8271 gnuplot*borderColor: white
8224 8272 \newline
8225 8273 gnuplot*axisColor: white
8226 8274 \newline
8227 8275 gnuplot*line1Color: red
8228 8276 \newline
8229 8277 gnuplot*line2Color: green
8230 8278 \newline
8231 8279 gnuplot*line3Color: blue
8232 8280 \newline
8233 8281 gnuplot*line4Color: magenta
8234 8282 \newline
8235 8283 gnuplot*line5Color: cyan
8236 8284 \newline
8237 8285 gnuplot*line6Color: sienna
8238 8286 \newline
8239 8287 gnuplot*line7Color: orange
8240 8288 \newline
8241 8289 gnuplot*line8Color: coral
8242 8290 \layout Standard
8243 8291
8244 8292
8245 8293 \family typewriter
8246 8294 ! multiplicative factor for point styles
8247 8295 \newline
8248 8296 gnuplot*pointsize: 2
8249 8297 \layout Standard
8250 8298
8251 8299
8252 8300 \family typewriter
8253 8301 ! line width options (in pixels)
8254 8302 \newline
8255 8303 gnuplot*borderWidth: 2
8256 8304 \newline
8257 8305 gnuplot*axisWidth: 2
8258 8306 \newline
8259 8307 gnuplot*line1Width: 2
8260 8308 \newline
8261 8309 gnuplot*line2Width: 2
8262 8310 \newline
8263 8311 gnuplot*line3Width: 2
8264 8312 \newline
8265 8313 gnuplot*line4Width: 2
8266 8314 \newline
8267 8315 gnuplot*line5Width: 2
8268 8316 \newline
8269 8317 gnuplot*line6Width: 2
8270 8318 \newline
8271 8319 gnuplot*line7Width: 2
8272 8320 \newline
8273 8321 gnuplot*line8Width: 2
8274 8322 \layout Subsection
8275 8323
8276 8324 The
8277 8325 \family typewriter
8278 8326 IPython.GnuplotRuntime
8279 8327 \family default
8280 8328 module
8281 8329 \layout Standard
8282 8330
8283 8331 IPython includes a module called
8284 8332 \family typewriter
8285 8333 Gnuplot2.py
8286 8334 \family default
8287 8335 which extends and improves the default
8288 8336 \family typewriter
8289 8337 Gnuplot
8290 8338 \family default
8291 8339 .
8292 8340 \family typewriter
8293 8341 py
8294 8342 \family default
8295 8343 (which it still relies upon).
8296 8344 For example, the new
8297 8345 \family typewriter
8298 8346 plot
8299 8347 \family default
8300 8348 function adds several improvements to the original making it more convenient
8301 8349 for interactive use, and
8302 8350 \family typewriter
8303 8351 hardcopy
8304 8352 \family default
8305 8353 fixes a bug in the original which under some circumstances blocks the creation
8306 8354 of PostScript output.
8307 8355 \layout Standard
8308 8356
8309 8357 For scripting use,
8310 8358 \family typewriter
8311 8359 GnuplotRuntime.py
8312 8360 \family default
8313 8361 is provided, which wraps
8314 8362 \family typewriter
8315 8363 Gnuplot2.py
8316 8364 \family default
8317 8365 and creates a series of global aliases.
8318 8366 These make it easy to control Gnuplot plotting jobs through the Python
8319 8367 language.
8320 8368 \layout Standard
8321 8369
8322 8370 Below is some example code which illustrates how to configure Gnuplot inside
8323 8371 your own programs but have it available for further interactive use through
8324 8372 an embedded IPython instance.
8325 8373 Simply run this file at a system prompt.
8326 8374 This file is provided as
8327 8375 \family typewriter
8328 8376 example-gnuplot.py
8329 8377 \family default
8330 8378 in the examples directory:
8331 8379 \layout Standard
8332 8380
8333 8381
8334 8382 \begin_inset ERT
8335 8383 status Open
8336 8384
8337 8385 \layout Standard
8338 8386
8339 8387 \backslash
8340 8388 codelist{examples/example-gnuplot.py}
8341 8389 \end_inset
8342 8390
8343 8391
8344 8392 \layout Subsection
8345 8393
8346 8394 The
8347 8395 \family typewriter
8348 8396 numeric
8349 8397 \family default
8350 8398 profile: a scientific computing environment
8351 8399 \layout Standard
8352 8400
8353 8401 The
8354 8402 \family typewriter
8355 8403 numeric
8356 8404 \family default
8357 8405 IPython profile, which you can activate with
8358 8406 \family typewriter
8359 8407 `ipython -p numeric
8360 8408 \family default
8361 8409 ' will automatically load the IPython Gnuplot extensions (plus Numeric and
8362 8410 other useful things for numerical computing), contained in the
8363 8411 \family typewriter
8364 8412 IPython.GnuplotInteractive
8365 8413 \family default
8366 8414 module.
8367 8415 This will create the globals
8368 8416 \family typewriter
8369 8417 Gnuplot
8370 8418 \family default
8371 8419 (an alias to the improved Gnuplot2 module),
8372 8420 \family typewriter
8373 8421 gp
8374 8422 \family default
8375 8423 (a Gnuplot active instance), the new magic commands
8376 8424 \family typewriter
8377 8425 %gpc
8378 8426 \family default
8379 8427 and
8380 8428 \family typewriter
8381 8429 %gp_set_instance
8382 8430 \family default
8383 8431 and several other convenient globals.
8384 8432 Type
8385 8433 \family typewriter
8386 8434 gphelp()
8387 8435 \family default
8388 8436 for further details.
8389 8437 \layout Standard
8390 8438
8391 8439 This should turn IPython into a convenient environment for numerical computing,
8392 8440 with all the functions in the NumPy library and the Gnuplot facilities
8393 8441 for plotting.
8394 8442 Further improvements can be obtained by loading the SciPy libraries for
8395 8443 scientific computing, available at
8396 8444 \begin_inset LatexCommand \htmlurl{http://scipy.org}
8397 8445
8398 8446 \end_inset
8399 8447
8400 8448 .
8401 8449 \layout Standard
8402 8450
8403 8451 If you are in the middle of a working session with numerical objects and
8404 8452 need to plot them but you didn't start the
8405 8453 \family typewriter
8406 8454 numeric
8407 8455 \family default
8408 8456 profile, you can load these extensions at any time by typing
8409 8457 \newline
8410 8458
8411 8459 \family typewriter
8412 8460 from IPython.GnuplotInteractive import *
8413 8461 \newline
8414 8462
8415 8463 \family default
8416 8464 at the IPython prompt.
8417 8465 This will allow you to keep your objects intact and start using Gnuplot
8418 8466 to view them.
8419 8467 \layout Section
8420 8468
8421 8469 Reporting bugs
8422 8470 \layout Subsection*
8423 8471
8424 8472 Automatic crash reports
8425 8473 \layout Standard
8426 8474
8427 8475 Ideally, IPython itself shouldn't crash.
8428 8476 It will catch exceptions produced by you, but bugs in its internals will
8429 8477 still crash it.
8430 8478 \layout Standard
8431 8479
8432 8480 In such a situation, IPython will leave a file named
8433 8481 \family typewriter
8434 8482 IPython_crash_report.txt
8435 8483 \family default
8436 8484 in your IPYTHONDIR directory (that way if crashes happen several times
8437 8485 it won't litter many directories, the post-mortem file is always located
8438 8486 in the same place and new occurrences just overwrite the previous one).
8439 8487 If you can mail this file to the developers (see sec.
8440 8488
8441 8489 \begin_inset LatexCommand \ref{sec:credits}
8442 8490
8443 8491 \end_inset
8444 8492
8445 8493 for names and addresses), it will help us
8446 8494 \emph on
8447 8495 a lot
8448 8496 \emph default
8449 8497 in understanding the cause of the problem and fixing it sooner.
8450 8498 \layout Subsection*
8451 8499
8452 8500 The bug tracker
8453 8501 \layout Standard
8454 8502
8455 8503 IPython also has an online bug-tracker, located at
8456 8504 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython}
8457 8505
8458 8506 \end_inset
8459 8507
8460 8508 .
8461 8509 In addition to mailing the developers, it would be a good idea to file
8462 8510 a bug report here.
8463 8511 This will ensure that the issue is properly followed to conclusion.
8464 8512 \layout Standard
8465 8513
8466 8514 You can also use this bug tracker to file feature requests.
8467 8515 \layout Section
8468 8516
8469 8517 Brief history
8470 8518 \layout Subsection
8471 8519
8472 8520 Origins
8473 8521 \layout Standard
8474 8522
8475 8523 The current IPython system grew out of the following three projects:
8476 8524 \layout List
8477 8525 \labelwidthstring 00.00.0000
8478 8526
8479 8527 ipython by Fernando Pérez.
8480 8528 I was working on adding Mathematica-type prompts and a flexible configuration
8481 8529 system (something better than
8482 8530 \family typewriter
8483 8531 $PYTHONSTARTUP
8484 8532 \family default
8485 8533 ) to the standard Python interactive interpreter.
8486 8534 \layout List
8487 8535 \labelwidthstring 00.00.0000
8488 8536
8489 8537 IPP by Janko Hauser.
8490 8538 Very well organized, great usability.
8491 8539 Had an old help system.
8492 8540 IPP was used as the `container' code into which I added the functionality
8493 8541 from ipython and LazyPython.
8494 8542 \layout List
8495 8543 \labelwidthstring 00.00.0000
8496 8544
8497 8545 LazyPython by Nathan Gray.
8498 8546 Simple but
8499 8547 \emph on
8500 8548 very
8501 8549 \emph default
8502 8550 powerful.
8503 8551 The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
8504 8552 were all taken from here.
8505 8553 \layout Standard
8506 8554
8507 8555 When I found out (see sec.
8508 8556
8509 8557 \begin_inset LatexCommand \ref{figgins}
8510 8558
8511 8559 \end_inset
8512 8560
8513 8561 ) about IPP and LazyPython I tried to join all three into a unified system.
8514 8562 I thought this could provide a very nice working environment, both for
8515 8563 regular programming and scientific computing: shell-like features, IDL/Matlab
8516 8564 numerics, Mathematica-type prompt history and great object introspection
8517 8565 and help facilities.
8518 8566 I think it worked reasonably well, though it was a lot more work than I
8519 8567 had initially planned.
8520 8568 \layout Subsection
8521 8569
8522 8570 Current status
8523 8571 \layout Standard
8524 8572
8525 8573 The above listed features work, and quite well for the most part.
8526 8574 But until a major internal restructuring is done (see below), only bug
8527 8575 fixing will be done, no other features will be added (unless very minor
8528 8576 and well localized in the cleaner parts of the code).
8529 8577 \layout Standard
8530 8578
8531 8579 IPython consists of some 12000 lines of pure python code, of which roughly
8532 8580 50% are fairly clean.
8533 8581 The other 50% are fragile, messy code which needs a massive restructuring
8534 8582 before any further major work is done.
8535 8583 Even the messy code is fairly well documented though, and most of the problems
8536 8584 in the (non-existent) class design are well pointed to by a PyChecker run.
8537 8585 So the rewriting work isn't that bad, it will just be time-consuming.
8538 8586 \layout Subsection
8539 8587
8540 8588 Future
8541 8589 \layout Standard
8542 8590
8543 8591 See the separate
8544 8592 \family typewriter
8545 8593 new_design
8546 8594 \family default
8547 8595 document for details.
8548 8596 Ultimately, I would like to see IPython become part of the standard Python
8549 8597 distribution as a `big brother with batteries' to the standard Python interacti
8550 8598 ve interpreter.
8551 8599 But that will never happen with the current state of the code, so all contribut
8552 8600 ions are welcome.
8553 8601 \layout Section
8554 8602
8555 8603 License
8556 8604 \layout Standard
8557 8605
8558 8606 IPython is released under the terms of the BSD license, whose general form
8559 8607 can be found at:
8560 8608 \begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
8561 8609
8562 8610 \end_inset
8563 8611
8564 8612 .
8565 8613 The full text of the IPython license is reproduced below:
8566 8614 \layout Quote
8567 8615
8568 8616
8569 8617 \family typewriter
8570 8618 \size small
8571 8619 IPython is released under a BSD-type license.
8572 8620 \layout Quote
8573 8621
8574 8622
8575 8623 \family typewriter
8576 8624 \size small
8577 8625 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
8578 8626 \layout Quote
8579 8627
8580 8628
8581 8629 \family typewriter
8582 8630 \size small
8583 8631 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
8584 8632 \newline
8585 8633 Nathaniel Gray <n8gray@caltech.edu>.
8586 8634 \layout Quote
8587 8635
8588 8636
8589 8637 \family typewriter
8590 8638 \size small
8591 8639 All rights reserved.
8592 8640 \layout Quote
8593 8641
8594 8642
8595 8643 \family typewriter
8596 8644 \size small
8597 8645 Redistribution and use in source and binary forms, with or without modification,
8598 8646 are permitted provided that the following conditions are met:
8599 8647 \layout Quote
8600 8648
8601 8649
8602 8650 \family typewriter
8603 8651 \size small
8604 8652 a.
8605 8653 Redistributions of source code must retain the above copyright notice,
8606 8654 this list of conditions and the following disclaimer.
8607 8655 \layout Quote
8608 8656
8609 8657
8610 8658 \family typewriter
8611 8659 \size small
8612 8660 b.
8613 8661 Redistributions in binary form must reproduce the above copyright notice,
8614 8662 this list of conditions and the following disclaimer in the documentation
8615 8663 and/or other materials provided with the distribution.
8616 8664 \layout Quote
8617 8665
8618 8666
8619 8667 \family typewriter
8620 8668 \size small
8621 8669 c.
8622 8670 Neither the name of the copyright holders nor the names of any contributors
8623 8671 to this software may be used to endorse or promote products derived from
8624 8672 this software without specific prior written permission.
8625 8673 \layout Quote
8626 8674
8627 8675
8628 8676 \family typewriter
8629 8677 \size small
8630 8678 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
8631 8679 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
8632 8680 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
8633 8681 PURPOSE ARE DISCLAIMED.
8634 8682 IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
8635 8683 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
8636 8684 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
8637 8685 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
8638 8686 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8639 8687 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
8640 8688 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8641 8689
8642 8690 \layout Standard
8643 8691
8644 8692 Individual authors are the holders of the copyright for their code and are
8645 8693 listed in each file.
8646 8694 \layout Standard
8647 8695
8648 8696 Some files (
8649 8697 \family typewriter
8650 8698 DPyGetOpt.py
8651 8699 \family default
8652 8700 , for example) may be licensed under different conditions.
8653 8701 Ultimately each file indicates clearly the conditions under which its author/au
8654 8702 thors have decided to publish the code.
8655 8703 \layout Standard
8656 8704
8657 8705 Versions of IPython up to and including 0.6.3 were released under the GNU
8658 8706 Lesser General Public License (LGPL), available at
8659 8707 \begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
8660 8708
8661 8709 \end_inset
8662 8710
8663 8711 .
8664 8712 \layout Section
8665 8713
8666 8714
8667 8715 \begin_inset LatexCommand \label{sec:credits}
8668 8716
8669 8717 \end_inset
8670 8718
8671 8719 Credits
8672 8720 \layout Standard
8673 8721
8674 8722 IPython is mainly developed by Fernando Pérez
8675 8723 \family typewriter
8676 8724 <fperez@colorado.edu>
8677 8725 \family default
8678 8726 , but the project was born from mixing in Fernando's code with the IPP project
8679 8727 by Janko Hauser
8680 8728 \family typewriter
8681 8729 <jhauser-AT-zscout.de>
8682 8730 \family default
8683 8731 and LazyPython by Nathan Gray
8684 8732 \family typewriter
8685 8733 <n8gray-AT-caltech.edu>
8686 8734 \family default
8687 8735 .
8688 8736 For all IPython-related requests, please contact Fernando.
8689 8737
8690 8738 \layout Standard
8691 8739
8692 8740 As of late 2005, the following developers have joined the core team:
8693 8741 \layout List
8694 8742 \labelwidthstring 00.00.0000
8695 8743
8696 8744 Robert\SpecialChar ~
8697 8745 Kern
8698 8746 \family typewriter
8699 8747 <rkern-AT-enthought.com>
8700 8748 \family default
8701 8749 : co-mentored the 2005 Google Summer of Code project to develop python interacti
8702 8750 ve notebooks (XML documents) and graphical interface.
8703 8751 This project was awarded to the students Tzanko Matev
8704 8752 \family typewriter
8705 8753 <tsanko-AT-gmail.com>
8706 8754 \family default
8707 8755 and Toni Alatalo
8708 8756 \family typewriter
8709 8757 <antont-AT-an.org>
8710 8758 \layout List
8711 8759 \labelwidthstring 00.00.0000
8712 8760
8713 8761 Brian\SpecialChar ~
8714 8762 Granger
8715 8763 \family typewriter
8716 8764 <bgranger-AT-scu.edu>
8717 8765 \family default
8718 8766 : extending IPython to allow support for interactive parallel computing.
8719 8767 \layout Standard
8720 8768
8721 8769 User or development help should be requested via the IPython mailing lists:
8722 8770 \layout Description
8723 8771
8724 8772 User\SpecialChar ~
8725 8773 list:
8726 8774 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
8727 8775
8728 8776 \end_inset
8729 8777
8730 8778
8731 8779 \layout Description
8732 8780
8733 8781 Developer's\SpecialChar ~
8734 8782 list:
8735 8783 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
8736 8784
8737 8785 \end_inset
8738 8786
8739 8787
8740 8788 \layout Standard
8741 8789
8742 8790 The IPython project is also very grateful to
8743 8791 \begin_inset Foot
8744 8792 collapsed true
8745 8793
8746 8794 \layout Standard
8747 8795
8748 8796 I've mangled email addresses to reduce spam, since the IPython manuals can
8749 8797 be accessed online.
8750 8798 \end_inset
8751 8799
8752 8800 :
8753 8801 \layout Standard
8754 8802
8755 8803 Bill Bumgarner
8756 8804 \family typewriter
8757 8805 <bbum-AT-friday.com>
8758 8806 \family default
8759 8807 : for providing the DPyGetOpt module which gives very powerful and convenient
8760 8808 handling of command-line options (light years ahead of what Python 2.1.1's
8761 8809 getopt module does).
8762 8810 \layout Standard
8763 8811
8764 8812 Ka-Ping Yee
8765 8813 \family typewriter
8766 8814 <ping-AT-lfw.org>
8767 8815 \family default
8768 8816 : for providing the Itpl module for convenient and powerful string interpolation
8769 8817 with a much nicer syntax than formatting through the '%' operator.
8770 8818 \layout Standard
8771 8819
8772 8820 Arnd Bäcker
8773 8821 \family typewriter
8774 8822 <baecker-AT-physik.tu-dresden.de>
8775 8823 \family default
8776 8824 : for his many very useful suggestions and comments, and lots of help with
8777 8825 testing and documentation checking.
8778 8826 Many of IPython's newer features are a result of discussions with him (bugs
8779 8827 are still my fault, not his).
8780 8828 \layout Standard
8781 8829
8782 8830 Obviously Guido van\SpecialChar ~
8783 8831 Rossum and the whole Python development team, that goes
8784 8832 without saying.
8785 8833 \layout Standard
8786 8834
8787 8835 IPython's website is generously hosted at
8788 8836 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
8789 8837
8790 8838 \end_inset
8791 8839
8792 8840 by Enthought (
8793 8841 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
8794 8842
8795 8843 \end_inset
8796 8844
8797 8845 ).
8798 8846 I am very grateful to them and all of the SciPy team for their contribution.
8799 8847 \layout Standard
8800 8848
8801 8849
8802 8850 \begin_inset LatexCommand \label{figgins}
8803 8851
8804 8852 \end_inset
8805 8853
8806 8854 Fernando would also like to thank Stephen Figgins
8807 8855 \family typewriter
8808 8856 <fig-AT-monitor.net>
8809 8857 \family default
8810 8858 , an O'Reilly Python editor.
8811 8859 His Oct/11/2001 article about IPP and LazyPython, was what got this project
8812 8860 started.
8813 8861 You can read it at:
8814 8862 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
8815 8863
8816 8864 \end_inset
8817 8865
8818 8866 .
8819 8867 \layout Standard
8820 8868
8821 8869 And last but not least, all the kind IPython users who have emailed new
8822 8870 code, bug reports, fixes, comments and ideas.
8823 8871 A brief list follows, please let me know if I have ommitted your name by
8824 8872 accident:
8825 8873 \layout List
8826 8874 \labelwidthstring 00.00.0000
8827 8875
8828 8876 Jack\SpecialChar ~
8829 8877 Moffit
8830 8878 \family typewriter
8831 8879 <jack-AT-xiph.org>
8832 8880 \family default
8833 8881 Bug fixes, including the infamous color problem.
8834 8882 This bug alone caused many lost hours and frustration, many thanks to him
8835 8883 for the fix.
8836 8884 I've always been a fan of Ogg & friends, now I have one more reason to
8837 8885 like these folks.
8838 8886 \newline
8839 8887 Jack is also contributing with Debian packaging and many other things.
8840 8888 \layout List
8841 8889 \labelwidthstring 00.00.0000
8842 8890
8843 8891 Alexander\SpecialChar ~
8844 8892 Schmolck
8845 8893 \family typewriter
8846 8894 <a.schmolck-AT-gmx.net>
8847 8895 \family default
8848 8896 Emacs work, bug reports, bug fixes, ideas, lots more.
8849 8897 The ipython.el mode for (X)Emacs is Alex's code, providing full support
8850 8898 for IPython under (X)Emacs.
8851 8899 \layout List
8852 8900 \labelwidthstring 00.00.0000
8853 8901
8854 8902 Andrea\SpecialChar ~
8855 8903 Riciputi
8856 8904 \family typewriter
8857 8905 <andrea.riciputi-AT-libero.it>
8858 8906 \family default
8859 8907 Mac OSX information, Fink package management.
8860 8908 \layout List
8861 8909 \labelwidthstring 00.00.0000
8862 8910
8863 8911 Gary\SpecialChar ~
8864 8912 Bishop
8865 8913 \family typewriter
8866 8914 <gb-AT-cs.unc.edu>
8867 8915 \family default
8868 8916 Bug reports, and patches to work around the exception handling idiosyncracies
8869 8917 of WxPython.
8870 8918 Readline and color support for Windows.
8871 8919 \layout List
8872 8920 \labelwidthstring 00.00.0000
8873 8921
8874 8922 Jeffrey\SpecialChar ~
8875 8923 Collins
8876 8924 \family typewriter
8877 8925 <Jeff.Collins-AT-vexcel.com>
8878 8926 \family default
8879 8927 Bug reports.
8880 8928 Much improved readline support, including fixes for Python 2.3.
8881 8929 \layout List
8882 8930 \labelwidthstring 00.00.0000
8883 8931
8884 8932 Dryice\SpecialChar ~
8885 8933 Liu
8886 8934 \family typewriter
8887 8935 <dryice-AT-liu.com.cn>
8888 8936 \family default
8889 8937 FreeBSD port.
8890 8938 \layout List
8891 8939 \labelwidthstring 00.00.0000
8892 8940
8893 8941 Mike\SpecialChar ~
8894 8942 Heeter
8895 8943 \family typewriter
8896 8944 <korora-AT-SDF.LONESTAR.ORG>
8897 8945 \layout List
8898 8946 \labelwidthstring 00.00.0000
8899 8947
8900 8948 Christopher\SpecialChar ~
8901 8949 Hart
8902 8950 \family typewriter
8903 8951 <hart-AT-caltech.edu>
8904 8952 \family default
8905 8953 PDB integration.
8906 8954 \layout List
8907 8955 \labelwidthstring 00.00.0000
8908 8956
8909 8957 Milan\SpecialChar ~
8910 8958 Zamazal
8911 8959 \family typewriter
8912 8960 <pdm-AT-zamazal.org>
8913 8961 \family default
8914 8962 Emacs info.
8915 8963 \layout List
8916 8964 \labelwidthstring 00.00.0000
8917 8965
8918 8966 Philip\SpecialChar ~
8919 8967 Hisley
8920 8968 \family typewriter
8921 8969 <compsys-AT-starpower.net>
8922 8970 \layout List
8923 8971 \labelwidthstring 00.00.0000
8924 8972
8925 8973 Holger\SpecialChar ~
8926 8974 Krekel
8927 8975 \family typewriter
8928 8976 <pyth-AT-devel.trillke.net>
8929 8977 \family default
8930 8978 Tab completion, lots more.
8931 8979 \layout List
8932 8980 \labelwidthstring 00.00.0000
8933 8981
8934 8982 Robin\SpecialChar ~
8935 8983 Siebler
8936 8984 \family typewriter
8937 8985 <robinsiebler-AT-starband.net>
8938 8986 \layout List
8939 8987 \labelwidthstring 00.00.0000
8940 8988
8941 8989 Ralf\SpecialChar ~
8942 8990 Ahlbrink
8943 8991 \family typewriter
8944 8992 <ralf_ahlbrink-AT-web.de>
8945 8993 \layout List
8946 8994 \labelwidthstring 00.00.0000
8947 8995
8948 8996 Thorsten\SpecialChar ~
8949 8997 Kampe
8950 8998 \family typewriter
8951 8999 <thorsten-AT-thorstenkampe.de>
8952 9000 \layout List
8953 9001 \labelwidthstring 00.00.0000
8954 9002
8955 9003 Fredrik\SpecialChar ~
8956 9004 Kant
8957 9005 \family typewriter
8958 9006 <fredrik.kant-AT-front.com>
8959 9007 \family default
8960 9008 Windows setup.
8961 9009 \layout List
8962 9010 \labelwidthstring 00.00.0000
8963 9011
8964 9012 Syver\SpecialChar ~
8965 9013 Enstad
8966 9014 \family typewriter
8967 9015 <syver-en-AT-online.no>
8968 9016 \family default
8969 9017 Windows setup.
8970 9018 \layout List
8971 9019 \labelwidthstring 00.00.0000
8972 9020
8973 9021 Richard
8974 9022 \family typewriter
8975 9023 <rxe-AT-renre-europe.com>
8976 9024 \family default
8977 9025 Global embedding.
8978 9026 \layout List
8979 9027 \labelwidthstring 00.00.0000
8980 9028
8981 9029 Hayden\SpecialChar ~
8982 9030 Callow
8983 9031 \family typewriter
8984 9032 <h.callow-AT-elec.canterbury.ac.nz>
8985 9033 \family default
8986 9034 Gnuplot.py 1.6 compatibility.
8987 9035 \layout List
8988 9036 \labelwidthstring 00.00.0000
8989 9037
8990 9038 Leonardo\SpecialChar ~
8991 9039 Santagada
8992 9040 \family typewriter
8993 9041 <retype-AT-terra.com.br>
8994 9042 \family default
8995 9043 Fixes for Windows installation.
8996 9044 \layout List
8997 9045 \labelwidthstring 00.00.0000
8998 9046
8999 9047 Christopher\SpecialChar ~
9000 9048 Armstrong
9001 9049 \family typewriter
9002 9050 <radix-AT-twistedmatrix.com>
9003 9051 \family default
9004 9052 Bugfixes.
9005 9053 \layout List
9006 9054 \labelwidthstring 00.00.0000
9007 9055
9008 9056 Francois\SpecialChar ~
9009 9057 Pinard
9010 9058 \family typewriter
9011 9059 <pinard-AT-iro.umontreal.ca>
9012 9060 \family default
9013 9061 Code and documentation fixes.
9014 9062 \layout List
9015 9063 \labelwidthstring 00.00.0000
9016 9064
9017 9065 Cory\SpecialChar ~
9018 9066 Dodt
9019 9067 \family typewriter
9020 9068 <cdodt-AT-fcoe.k12.ca.us>
9021 9069 \family default
9022 9070 Bug reports and Windows ideas.
9023 9071 Patches for Windows installer.
9024 9072 \layout List
9025 9073 \labelwidthstring 00.00.0000
9026 9074
9027 9075 Olivier\SpecialChar ~
9028 9076 Aubert
9029 9077 \family typewriter
9030 9078 <oaubert-AT-bat710.univ-lyon1.fr>
9031 9079 \family default
9032 9080 New magics.
9033 9081 \layout List
9034 9082 \labelwidthstring 00.00.0000
9035 9083
9036 9084 King\SpecialChar ~
9037 9085 C.\SpecialChar ~
9038 9086 Shu
9039 9087 \family typewriter
9040 9088 <kingshu-AT-myrealbox.com>
9041 9089 \family default
9042 9090 Autoindent patch.
9043 9091 \layout List
9044 9092 \labelwidthstring 00.00.0000
9045 9093
9046 9094 Chris\SpecialChar ~
9047 9095 Drexler
9048 9096 \family typewriter
9049 9097 <chris-AT-ac-drexler.de>
9050 9098 \family default
9051 9099 Readline packages for Win32/CygWin.
9052 9100 \layout List
9053 9101 \labelwidthstring 00.00.0000
9054 9102
9055 9103 Gustavo\SpecialChar ~
9056 9104 Córdova\SpecialChar ~
9057 9105 Avila
9058 9106 \family typewriter
9059 9107 <gcordova-AT-sismex.com>
9060 9108 \family default
9061 9109 EvalDict code for nice, lightweight string interpolation.
9062 9110 \layout List
9063 9111 \labelwidthstring 00.00.0000
9064 9112
9065 9113 Kasper\SpecialChar ~
9066 9114 Souren
9067 9115 \family typewriter
9068 9116 <Kasper.Souren-AT-ircam.fr>
9069 9117 \family default
9070 9118 Bug reports, ideas.
9071 9119 \layout List
9072 9120 \labelwidthstring 00.00.0000
9073 9121
9074 9122 Gever\SpecialChar ~
9075 9123 Tulley
9076 9124 \family typewriter
9077 9125 <gever-AT-helium.com>
9078 9126 \family default
9079 9127 Code contributions.
9080 9128 \layout List
9081 9129 \labelwidthstring 00.00.0000
9082 9130
9083 9131 Ralf\SpecialChar ~
9084 9132 Schmitt
9085 9133 \family typewriter
9086 9134 <ralf-AT-brainbot.com>
9087 9135 \family default
9088 9136 Bug reports & fixes.
9089 9137 \layout List
9090 9138 \labelwidthstring 00.00.0000
9091 9139
9092 9140 Oliver\SpecialChar ~
9093 9141 Sander
9094 9142 \family typewriter
9095 9143 <osander-AT-gmx.de>
9096 9144 \family default
9097 9145 Bug reports.
9098 9146 \layout List
9099 9147 \labelwidthstring 00.00.0000
9100 9148
9101 9149 Rod\SpecialChar ~
9102 9150 Holland
9103 9151 \family typewriter
9104 9152 <rhh-AT-structurelabs.com>
9105 9153 \family default
9106 9154 Bug reports and fixes to logging module.
9107 9155 \layout List
9108 9156 \labelwidthstring 00.00.0000
9109 9157
9110 9158 Daniel\SpecialChar ~
9111 9159 'Dang'\SpecialChar ~
9112 9160 Griffith
9113 9161 \family typewriter
9114 9162 <pythondev-dang-AT-lazytwinacres.net>
9115 9163 \family default
9116 9164 Fixes, enhancement suggestions for system shell use.
9117 9165 \layout List
9118 9166 \labelwidthstring 00.00.0000
9119 9167
9120 9168 Viktor\SpecialChar ~
9121 9169 Ransmayr
9122 9170 \family typewriter
9123 9171 <viktor.ransmayr-AT-t-online.de>
9124 9172 \family default
9125 9173 Tests and reports on Windows installation issues.
9126 9174 Contributed a true Windows binary installer.
9127 9175 \layout List
9128 9176 \labelwidthstring 00.00.0000
9129 9177
9130 9178 Mike\SpecialChar ~
9131 9179 Salib
9132 9180 \family typewriter
9133 9181 <msalib-AT-mit.edu>
9134 9182 \family default
9135 9183 Help fixing a subtle bug related to traceback printing.
9136 9184 \layout List
9137 9185 \labelwidthstring 00.00.0000
9138 9186
9139 9187 W.J.\SpecialChar ~
9140 9188 van\SpecialChar ~
9141 9189 der\SpecialChar ~
9142 9190 Laan
9143 9191 \family typewriter
9144 9192 <gnufnork-AT-hetdigitalegat.nl>
9145 9193 \family default
9146 9194 Bash-like prompt specials.
9147 9195 \layout List
9148 9196 \labelwidthstring 00.00.0000
9149 9197
9150 9198 Ville\SpecialChar ~
9151 9199 Vainio
9152 9200 \family typewriter
9153 9201 <vivainio-AT-kolumbus.fi>
9154 9202 \family default
9155 9203 Bugfixes and suggestions.
9156 9204 Excellent patches for many new features.
9157 9205 \layout List
9158 9206 \labelwidthstring 00.00.0000
9159 9207
9160 9208 Antoon\SpecialChar ~
9161 9209 Pardon
9162 9210 \family typewriter
9163 9211 <Antoon.Pardon-AT-rece.vub.ac.be>
9164 9212 \family default
9165 9213 Critical fix for the multithreaded IPython.
9166 9214 \layout List
9167 9215 \labelwidthstring 00.00.0000
9168 9216
9169 9217 John\SpecialChar ~
9170 9218 Hunter
9171 9219 \family typewriter
9172 9220 <jdhunter-AT-nitace.bsd.uchicago.edu>
9173 9221 \family default
9174 9222 Matplotlib author, helped with all the development of support for matplotlib
9175 9223 in IPyhton, including making necessary changes to matplotlib itself.
9176 9224 \layout List
9177 9225 \labelwidthstring 00.00.0000
9178 9226
9179 9227 Matthew\SpecialChar ~
9180 9228 Arnison
9181 9229 \family typewriter
9182 9230 <maffew-AT-cat.org.au>
9183 9231 \family default
9184 9232 Bug reports, `
9185 9233 \family typewriter
9186 9234 %run -d
9187 9235 \family default
9188 9236 ' idea.
9189 9237 \layout List
9190 9238 \labelwidthstring 00.00.0000
9191 9239
9192 9240 Prabhu\SpecialChar ~
9193 9241 Ramachandran
9194 9242 \family typewriter
9195 9243 <prabhu_r-AT-users.sourceforge.net>
9196 9244 \family default
9197 9245 Help with (X)Emacs support, threading patches, ideas...
9198 9246 \layout List
9199 9247 \labelwidthstring 00.00.0000
9200 9248
9201 9249 Norbert\SpecialChar ~
9202 9250 Tretkowski
9203 9251 \family typewriter
9204 9252 <tretkowski-AT-inittab.de>
9205 9253 \family default
9206 9254 help with Debian packaging and distribution.
9207 9255 \layout List
9208 9256 \labelwidthstring 00.00.0000
9209 9257
9210 9258 George\SpecialChar ~
9211 9259 Sakkis <
9212 9260 \family typewriter
9213 9261 gsakkis-AT-eden.rutgers.edu>
9214 9262 \family default
9215 9263 New matcher for tab-completing named arguments of user-defined functions.
9216 9264 \layout List
9217 9265 \labelwidthstring 00.00.0000
9218 9266
9219 9267 J�rgen\SpecialChar ~
9220 9268 Stenarson
9221 9269 \family typewriter
9222 9270 <jorgen.stenarson-AT-bostream.nu>
9223 9271 \family default
9224 9272 Wildcard support implementation for searching namespaces.
9225 9273 \layout List
9226 9274 \labelwidthstring 00.00.0000
9227 9275
9228 9276 Vivian\SpecialChar ~
9229 9277 De\SpecialChar ~
9230 9278 Smedt
9231 9279 \family typewriter
9232 9280 <vivian-AT-vdesmedt.com>
9233 9281 \family default
9234 9282 Debugger enhancements, so that when pdb is activated from within IPython,
9235 9283 coloring, tab completion and other features continue to work seamlessly.
9236 9284 \layout List
9237 9285 \labelwidthstring 00.00.0000
9238 9286
9239 9287 Scott\SpecialChar ~
9240 9288 Tsai
9241 9289 \family typewriter
9242 9290 <scottt958-AT-yahoo.com.tw>
9243 9291 \family default
9244 9292 Support for automatic editor invocation on syntax errors (see
9245 9293 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
9246 9294
9247 9295 \end_inset
9248 9296
9249 9297 ).
9250 9298 \layout List
9251 9299 \labelwidthstring 00.00.0000
9252 9300
9253 9301 Alexander\SpecialChar ~
9254 9302 Belchenko
9255 9303 \family typewriter
9256 9304 <bialix-AT-ukr.net>
9257 9305 \family default
9258 9306 Improvements for win32 paging system.
9259 9307 \the_end
@@ -1,99 +1,103 b''
1 1 #!/bin/sh
2 2 # IPython release script
3 3
4 4 PYVER=`python -V 2>&1 | awk '{print $2}' | awk -F '.' '{print $1$2}' `
5 5 version=`ipython -Version`
6 6 ipdir=~/ipython/ipython
7 7
8 8 echo
9 9 echo "Releasing IPython version $version"
10 10 echo "=================================="
11 11
12 12 echo "Marking ChangeLog with release information and making NEWS file..."
13 13
14 14 # Stamp changelog and save a copy of the status at each version, in case later
15 15 # we want the NEWS file to start from a point before the very last release (if
16 16 # very small interim releases have no significant changes).
17 17
18 18 cd $ipdir/doc
19 19 cp ChangeLog ChangeLog.old
20 20 cp ChangeLog ChangeLog.$version
21 21 daystamp=`date +%Y-%m-%d`
22 22 echo $daystamp " ***" Released version $version > ChangeLog
23 23 echo >> ChangeLog
24 24 cat ChangeLog.old >> ChangeLog
25 25 rm ChangeLog.old
26 26
27 27 # Build NEWS file
28 28 echo "Changes between the last two releases (major or minor)" > NEWS
29 29 echo "Note that this is an auto-generated diff of the ChangeLogs" >> NEWS
30 30 echo >> NEWS
31 31 diff ChangeLog.previous ChangeLog | grep -v '^0a' | sed 's/^> //g' >> NEWS
32 32 cp ChangeLog ChangeLog.previous
33 33
34 34 # Clean up build/dist directories
35 35 rm -rf $ipdir/build/*
36 36 rm -rf $ipdir/dist/*
37 37
38 38 # Perform local backup
39 39 cd $ipdir/tools
40 40 ./bkp.py
41 41
42 42 # Build source and binary distros
43 43 cd $ipdir
44 44 ./setup.py sdist --formats=gztar
45 45 #./setup.py bdist_rpm --release=py$PYVER
46 46 python2.3 ./setup.py bdist_rpm --release=py23 --python=/usr/bin/python2.3
47 47
48 48 # A 2.4-specific RPM, where we must use the --python option to ensure that
49 49 # the resulting RPM is really built with 2.4 (so things go to
50 50 # lib/python2.4/...)
51 51 python2.4 ./setup.py bdist_rpm --release=py24 --python=/usr/bin/python2.4
52 52
53 # Build eggs
54 python2.3 ./setup_bdist_egg.py
55 python2.4 ./setup_bdist_egg.py
56
53 57 # Call the windows build separately, so that the extra Windows scripts don't
54 58 # get pulled into Unix builds (setup.py has code which checks for
55 59 # bdist_wininst)
56 60 #./setup.py bdist_wininst --install-script=ipython_win_post_install.py
57 61
58 62 # For now, make the win32 installer with a hand-built 2.3.5 python, which is
59 63 # the only one that fixes a crash in the post-install phase.
60 64 $HOME/tmp/local/bin/python2.3 setup.py bdist_wininst \
61 65 --install-script=ipython_win_post_install.py
62 66
63 67
64 68 # Register with the Python Package Index (PyPI)
65 69 echo "Registering with PyPI..."
66 70 cd $ipdir
67 71 ./setup.py register
68 72
69 73 # Upload all files
70 74 cd $ipdir/dist
71 75 echo "Uploading distribution files..."
72 76 scp * fperez@scipy.org:www/dist/
73 77
74 78 echo "Uploading backup files..."
75 79 cd ~/ipython/backup
76 80 scp `ls -1tr | tail -1` fperez@scipy.org:www/backup/
77 81
78 82 echo "Updating webpage..."
79 83 cd $ipdir/doc
80 84 www=~/ipython/homepage
81 85 cp ChangeLog NEWS $www
82 86 rm -rf $www/doc/*
83 87 cp -r manual.pdf manual/ $www/doc
84 88 cd $www
85 89 ./update
86 90
87 91 # Alert package maintainers
88 92 echo "Alerting package maintainers..."
89 93 maintainers='fperez@colorado.edu ariciputi@users.sourceforge.net jack@xiph.org tretkowski@inittab.de dryice@hotpop.com'
90 94 #maintainers='fperez@colorado.edu'
91 95
92 96 for email in $maintainers
93 97 do
94 98 echo "Emailing $email..."
95 99 mail -s "[Package maintainer notice] A new IPython is out. Version: $version" \
96 100 $email < NEWS
97 101 done
98 102
99 103 echo "Done!"
@@ -1,24 +1,28 b''
1 1 #!/bin/sh
2 2
3 3 # release test
4 4
5 5 # clean up build/dist directories
6 6 rm -rf ~/ipython/ipython/build/*
7 7 rm -rf ~/ipython/ipython/dist/*
8 8
9 9 # build source distros
10 10 cd ~/ipython/ipython
11 11
12 12 ./setup.py sdist --formats=gztar
13 13
14 14 python2.3 ./setup.py bdist_rpm --release=py23 --python=/usr/bin/python2.3
15 15 python2.4 ./setup.py bdist_rpm --release=py24 --python=/usr/bin/python2.4
16 16
17 # Build eggs
18 python2.3 ./setup_bdist_egg.py
19 python2.4 ./setup_bdist_egg.py
20
17 21 # Call the windows build separately, so that the extra Windows scripts don't
18 22 # get pulled into Unix builds (setup.py has code which checks for
19 23 # bdist_wininst)
20 24
21 25 # For now, make the win32 installer with a hand-built 2.3.5 python, which is
22 26 # the only one that fixes a crash in the post-install phase.
23 27 $HOME/tmp/local/bin/python2.3 setup.py bdist_wininst \
24 28 --install-script=ipython_win_post_install.py
General Comments 0
You need to be logged in to leave comments. Login now