##// END OF EJS Templates
renamed rehash_dir.py to ext_rehashdir.py (a convention for naming...
vivainio -
Show More
1 NO CONTENT: file renamed from IPython/Extensions/rehash_dir.py to IPython/Extensions/ext_rehashdir.py
@@ -1,4974 +1,4975 b''
1 1 2006-01-20 Ville Vainio <vivainio@gmail.com>
2 2
3 * Ipython/Extensions/rehash_dir.py: Created a usable example
4 of how to extend ipython with new magics. Also added Extensions
5 dir to pythonpath to make executing extensions easy.
3 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
4 (%rehashdir, very useful, try it out) of how to extend ipython
5 with new magics. Also added Extensions dir to pythonpath to make
6 importing extensions easy.
6 7
7 8 * %store now complains when trying to store interactively declared
8 9 classes / instances of those classes.
9 10
10 11 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
11 12
12 13 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
13 14 multiline code with autoindent on working. But I am really not
14 15 sure, so this needs more testing. Will commit a debug-enabled
15 16 version for now, while I test it some more, so that Ville and
16 17 others may also catch any problems. Also made
17 18 self.indent_current_str() a method, to ensure that there's no
18 19 chance of the indent space count and the corresponding string
19 20 falling out of sync. All code needing the string should just call
20 21 the method.
21 22
22 23 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
23 24
24 25 * IPython/Magic.py (magic_edit): fix check for when users don't
25 26 save their output files, the try/except was in the wrong section.
26 27
27 28 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
28 29
29 30 * IPython/Magic.py (magic_run): fix __file__ global missing from
30 31 script's namespace when executed via %run. After a report by
31 32 Vivian.
32 33
33 34 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
34 35 when using python 2.4. The parent constructor changed in 2.4, and
35 36 we need to track it directly (we can't call it, as it messes up
36 37 readline and tab-completion inside our pdb would stop working).
37 38 After a bug report by R. Bernstein <rocky-AT-panix.com>.
38 39
39 40 2006-01-16 Ville Vainio <vivainio@gmail.com>
40 41
41 42 * Ipython/magic.py:Reverted back to old %edit functionality
42 43 that returns file contents on exit.
43 44
44 45 * IPython/path.py: Added Jason Orendorff's "path" module to
45 46 IPython tree, http://www.jorendorff.com/articles/python/path/.
46 47 You can get path objects conveniently through %sc, and !!, e.g.:
47 48 sc files=ls
48 49 for p in files.paths: # or files.p
49 50 print p,p.mtime
50 51
51 52 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
52 53 now work again without considering the exclusion regexp -
53 54 hence, things like ',foo my/path' turn to 'foo("my/path")'
54 55 instead of syntax error.
55 56
56 57
57 58 2006-01-14 Ville Vainio <vivainio@gmail.com>
58 59
59 60 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
60 61 ipapi decorators for python 2.4 users, options() provides access to rc
61 62 data.
62 63
63 64 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
64 65 as path separators (even on Linux ;-). Space character after
65 66 backslash (as yielded by tab completer) is still space;
66 67 "%cd long\ name" works as expected.
67 68
68 69 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
69 70 as "chain of command", with priority. API stays the same,
70 71 TryNext exception raised by a hook function signals that
71 72 current hook failed and next hook should try handling it, as
72 73 suggested by Walter Dörwald <walter@livinglogic.de>. Walter also
73 74 requested configurable display hook, which is now implemented.
74 75
75 76 2006-01-13 Ville Vainio <vivainio@gmail.com>
76 77
77 78 * IPython/platutils*.py: platform specific utility functions,
78 79 so far only set_term_title is implemented (change terminal
79 80 label in windowing systems). %cd now changes the title to
80 81 current dir.
81 82
82 83 * IPython/Release.py: Added myself to "authors" list,
83 84 had to create new files.
84 85
85 86 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
86 87 shell escape; not a known bug but had potential to be one in the
87 88 future.
88 89
89 90 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
90 91 extension API for IPython! See the module for usage example. Fix
91 92 OInspect for docstring-less magic functions.
92 93
93 94
94 95 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
95 96
96 97 * IPython/iplib.py (raw_input): temporarily deactivate all
97 98 attempts at allowing pasting of code with autoindent on. It
98 99 introduced bugs (reported by Prabhu) and I can't seem to find a
99 100 robust combination which works in all cases. Will have to revisit
100 101 later.
101 102
102 103 * IPython/genutils.py: remove isspace() function. We've dropped
103 104 2.2 compatibility, so it's OK to use the string method.
104 105
105 106 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
106 107
107 108 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
108 109 matching what NOT to autocall on, to include all python binary
109 110 operators (including things like 'and', 'or', 'is' and 'in').
110 111 Prompted by a bug report on 'foo & bar', but I realized we had
111 112 many more potential bug cases with other operators. The regexp is
112 113 self.re_exclude_auto, it's fairly commented.
113 114
114 115 2006-01-12 Ville Vainio <vivainio@gmail.com>
115 116
116 117 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
117 118 Prettified and hardened string/backslash quoting with ipsystem(),
118 119 ipalias() and ipmagic(). Now even \ characters are passed to
119 120 %magics, !shell escapes and aliases exactly as they are in the
120 121 ipython command line. Should improve backslash experience,
121 122 particularly in Windows (path delimiter for some commands that
122 123 won't understand '/'), but Unix benefits as well (regexps). %cd
123 124 magic still doesn't support backslash path delimiters, though. Also
124 125 deleted all pretense of supporting multiline command strings in
125 126 !system or %magic commands. Thanks to Jerry McRae for suggestions.
126 127
127 128 * doc/build_doc_instructions.txt added. Documentation on how to
128 129 use doc/update_manual.py, added yesterday. Both files contributed
129 130 by Jörgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
130 131 doc/*.sh for deprecation at a later date.
131 132
132 133 * /ipython.py Added ipython.py to root directory for
133 134 zero-installation (tar xzvf ipython.tgz; cd ipython; python
134 135 ipython.py) and development convenience (no need to kee doing
135 136 "setup.py install" between changes).
136 137
137 138 * Made ! and !! shell escapes work (again) in multiline expressions:
138 139 if 1:
139 140 !ls
140 141 !!ls
141 142
142 143 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
143 144
144 145 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
145 146 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
146 147 module in case-insensitive installation. Was causing crashes
147 148 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
148 149
149 150 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
150 151 <marienz-AT-gentoo.org>, closes
151 152 http://www.scipy.net/roundup/ipython/issue51.
152 153
153 154 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
154 155
155 156 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
156 157 problem of excessive CPU usage under *nix and keyboard lag under
157 158 win32.
158 159
159 160 2006-01-10 *** Released version 0.7.0
160 161
161 162 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
162 163
163 164 * IPython/Release.py (revision): tag version number to 0.7.0,
164 165 ready for release.
165 166
166 167 * IPython/Magic.py (magic_edit): Add print statement to %edit so
167 168 it informs the user of the name of the temp. file used. This can
168 169 help if you decide later to reuse that same file, so you know
169 170 where to copy the info from.
170 171
171 172 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
172 173
173 174 * setup_bdist_egg.py: little script to build an egg. Added
174 175 support in the release tools as well.
175 176
176 177 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
177 178
178 179 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
179 180 version selection (new -wxversion command line and ipythonrc
180 181 parameter). Patch contributed by Arnd Baecker
181 182 <arnd.baecker-AT-web.de>.
182 183
183 184 * IPython/iplib.py (embed_mainloop): fix tab-completion in
184 185 embedded instances, for variables defined at the interactive
185 186 prompt of the embedded ipython. Reported by Arnd.
186 187
187 188 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
188 189 it can be used as a (stateful) toggle, or with a direct parameter.
189 190
190 191 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
191 192 could be triggered in certain cases and cause the traceback
192 193 printer not to work.
193 194
194 195 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
195 196
196 197 * IPython/iplib.py (_should_recompile): Small fix, closes
197 198 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
198 199
199 200 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
200 201
201 202 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
202 203 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
203 204 Moad for help with tracking it down.
204 205
205 206 * IPython/iplib.py (handle_auto): fix autocall handling for
206 207 objects which support BOTH __getitem__ and __call__ (so that f [x]
207 208 is left alone, instead of becoming f([x]) automatically).
208 209
209 210 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
210 211 Ville's patch.
211 212
212 213 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
213 214
214 215 * IPython/iplib.py (handle_auto): changed autocall semantics to
215 216 include 'smart' mode, where the autocall transformation is NOT
216 217 applied if there are no arguments on the line. This allows you to
217 218 just type 'foo' if foo is a callable to see its internal form,
218 219 instead of having it called with no arguments (typically a
219 220 mistake). The old 'full' autocall still exists: for that, you
220 221 need to set the 'autocall' parameter to 2 in your ipythonrc file.
221 222
222 223 * IPython/completer.py (Completer.attr_matches): add
223 224 tab-completion support for Enthoughts' traits. After a report by
224 225 Arnd and a patch by Prabhu.
225 226
226 227 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
227 228
228 229 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
229 230 Schmolck's patch to fix inspect.getinnerframes().
230 231
231 232 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
232 233 for embedded instances, regarding handling of namespaces and items
233 234 added to the __builtin__ one. Multiple embedded instances and
234 235 recursive embeddings should work better now (though I'm not sure
235 236 I've got all the corner cases fixed, that code is a bit of a brain
236 237 twister).
237 238
238 239 * IPython/Magic.py (magic_edit): added support to edit in-memory
239 240 macros (automatically creates the necessary temp files). %edit
240 241 also doesn't return the file contents anymore, it's just noise.
241 242
242 243 * IPython/completer.py (Completer.attr_matches): revert change to
243 244 complete only on attributes listed in __all__. I realized it
244 245 cripples the tab-completion system as a tool for exploring the
245 246 internals of unknown libraries (it renders any non-__all__
246 247 attribute off-limits). I got bit by this when trying to see
247 248 something inside the dis module.
248 249
249 250 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
250 251
251 252 * IPython/iplib.py (InteractiveShell.__init__): add .meta
252 253 namespace for users and extension writers to hold data in. This
253 254 follows the discussion in
254 255 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
255 256
256 257 * IPython/completer.py (IPCompleter.complete): small patch to help
257 258 tab-completion under Emacs, after a suggestion by John Barnard
258 259 <barnarj-AT-ccf.org>.
259 260
260 261 * IPython/Magic.py (Magic.extract_input_slices): added support for
261 262 the slice notation in magics to use N-M to represent numbers N...M
262 263 (closed endpoints). This is used by %macro and %save.
263 264
264 265 * IPython/completer.py (Completer.attr_matches): for modules which
265 266 define __all__, complete only on those. After a patch by Jeffrey
266 267 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
267 268 speed up this routine.
268 269
269 270 * IPython/Logger.py (Logger.log): fix a history handling bug. I
270 271 don't know if this is the end of it, but the behavior now is
271 272 certainly much more correct. Note that coupled with macros,
272 273 slightly surprising (at first) behavior may occur: a macro will in
273 274 general expand to multiple lines of input, so upon exiting, the
274 275 in/out counters will both be bumped by the corresponding amount
275 276 (as if the macro's contents had been typed interactively). Typing
276 277 %hist will reveal the intermediate (silently processed) lines.
277 278
278 279 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
279 280 pickle to fail (%run was overwriting __main__ and not restoring
280 281 it, but pickle relies on __main__ to operate).
281 282
282 283 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
283 284 using properties, but forgot to make the main InteractiveShell
284 285 class a new-style class. Properties fail silently, and
285 286 misteriously, with old-style class (getters work, but
286 287 setters don't do anything).
287 288
288 289 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
289 290
290 291 * IPython/Magic.py (magic_history): fix history reporting bug (I
291 292 know some nasties are still there, I just can't seem to find a
292 293 reproducible test case to track them down; the input history is
293 294 falling out of sync...)
294 295
295 296 * IPython/iplib.py (handle_shell_escape): fix bug where both
296 297 aliases and system accesses where broken for indented code (such
297 298 as loops).
298 299
299 300 * IPython/genutils.py (shell): fix small but critical bug for
300 301 win32 system access.
301 302
302 303 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
303 304
304 305 * IPython/iplib.py (showtraceback): remove use of the
305 306 sys.last_{type/value/traceback} structures, which are non
306 307 thread-safe.
307 308 (_prefilter): change control flow to ensure that we NEVER
308 309 introspect objects when autocall is off. This will guarantee that
309 310 having an input line of the form 'x.y', where access to attribute
310 311 'y' has side effects, doesn't trigger the side effect TWICE. It
311 312 is important to note that, with autocall on, these side effects
312 313 can still happen.
313 314 (ipsystem): new builtin, to complete the ip{magic/alias/system}
314 315 trio. IPython offers these three kinds of special calls which are
315 316 not python code, and it's a good thing to have their call method
316 317 be accessible as pure python functions (not just special syntax at
317 318 the command line). It gives us a better internal implementation
318 319 structure, as well as exposing these for user scripting more
319 320 cleanly.
320 321
321 322 * IPython/macro.py (Macro.__init__): moved macros to a standalone
322 323 file. Now that they'll be more likely to be used with the
323 324 persistance system (%store), I want to make sure their module path
324 325 doesn't change in the future, so that we don't break things for
325 326 users' persisted data.
326 327
327 328 * IPython/iplib.py (autoindent_update): move indentation
328 329 management into the _text_ processing loop, not the keyboard
329 330 interactive one. This is necessary to correctly process non-typed
330 331 multiline input (such as macros).
331 332
332 333 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
333 334 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
334 335 which was producing problems in the resulting manual.
335 336 (magic_whos): improve reporting of instances (show their class,
336 337 instead of simply printing 'instance' which isn't terribly
337 338 informative).
338 339
339 340 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
340 341 (minor mods) to support network shares under win32.
341 342
342 343 * IPython/winconsole.py (get_console_size): add new winconsole
343 344 module and fixes to page_dumb() to improve its behavior under
344 345 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
345 346
346 347 * IPython/Magic.py (Macro): simplified Macro class to just
347 348 subclass list. We've had only 2.2 compatibility for a very long
348 349 time, yet I was still avoiding subclassing the builtin types. No
349 350 more (I'm also starting to use properties, though I won't shift to
350 351 2.3-specific features quite yet).
351 352 (magic_store): added Ville's patch for lightweight variable
352 353 persistence, after a request on the user list by Matt Wilkie
353 354 <maphew-AT-gmail.com>. The new %store magic's docstring has full
354 355 details.
355 356
356 357 * IPython/iplib.py (InteractiveShell.post_config_initialization):
357 358 changed the default logfile name from 'ipython.log' to
358 359 'ipython_log.py'. These logs are real python files, and now that
359 360 we have much better multiline support, people are more likely to
360 361 want to use them as such. Might as well name them correctly.
361 362
362 363 * IPython/Magic.py: substantial cleanup. While we can't stop
363 364 using magics as mixins, due to the existing customizations 'out
364 365 there' which rely on the mixin naming conventions, at least I
365 366 cleaned out all cross-class name usage. So once we are OK with
366 367 breaking compatibility, the two systems can be separated.
367 368
368 369 * IPython/Logger.py: major cleanup. This one is NOT a mixin
369 370 anymore, and the class is a fair bit less hideous as well. New
370 371 features were also introduced: timestamping of input, and logging
371 372 of output results. These are user-visible with the -t and -o
372 373 options to %logstart. Closes
373 374 http://www.scipy.net/roundup/ipython/issue11 and a request by
374 375 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
375 376
376 377 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
377 378
378 379 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
379 380 better hadnle backslashes in paths. See the thread 'More Windows
380 381 questions part 2 - \/ characters revisited' on the iypthon user
381 382 list:
382 383 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
383 384
384 385 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
385 386
386 387 (InteractiveShell.__init__): change threaded shells to not use the
387 388 ipython crash handler. This was causing more problems than not,
388 389 as exceptions in the main thread (GUI code, typically) would
389 390 always show up as a 'crash', when they really weren't.
390 391
391 392 The colors and exception mode commands (%colors/%xmode) have been
392 393 synchronized to also take this into account, so users can get
393 394 verbose exceptions for their threaded code as well. I also added
394 395 support for activating pdb inside this exception handler as well,
395 396 so now GUI authors can use IPython's enhanced pdb at runtime.
396 397
397 398 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
398 399 true by default, and add it to the shipped ipythonrc file. Since
399 400 this asks the user before proceeding, I think it's OK to make it
400 401 true by default.
401 402
402 403 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
403 404 of the previous special-casing of input in the eval loop. I think
404 405 this is cleaner, as they really are commands and shouldn't have
405 406 a special role in the middle of the core code.
406 407
407 408 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
408 409
409 410 * IPython/iplib.py (edit_syntax_error): added support for
410 411 automatically reopening the editor if the file had a syntax error
411 412 in it. Thanks to scottt who provided the patch at:
412 413 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
413 414 version committed).
414 415
415 416 * IPython/iplib.py (handle_normal): add suport for multi-line
416 417 input with emtpy lines. This fixes
417 418 http://www.scipy.net/roundup/ipython/issue43 and a similar
418 419 discussion on the user list.
419 420
420 421 WARNING: a behavior change is necessarily introduced to support
421 422 blank lines: now a single blank line with whitespace does NOT
422 423 break the input loop, which means that when autoindent is on, by
423 424 default hitting return on the next (indented) line does NOT exit.
424 425
425 426 Instead, to exit a multiline input you can either have:
426 427
427 428 - TWO whitespace lines (just hit return again), or
428 429 - a single whitespace line of a different length than provided
429 430 by the autoindent (add or remove a space).
430 431
431 432 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
432 433 module to better organize all readline-related functionality.
433 434 I've deleted FlexCompleter and put all completion clases here.
434 435
435 436 * IPython/iplib.py (raw_input): improve indentation management.
436 437 It is now possible to paste indented code with autoindent on, and
437 438 the code is interpreted correctly (though it still looks bad on
438 439 screen, due to the line-oriented nature of ipython).
439 440 (MagicCompleter.complete): change behavior so that a TAB key on an
440 441 otherwise empty line actually inserts a tab, instead of completing
441 442 on the entire global namespace. This makes it easier to use the
442 443 TAB key for indentation. After a request by Hans Meine
443 444 <hans_meine-AT-gmx.net>
444 445 (_prefilter): add support so that typing plain 'exit' or 'quit'
445 446 does a sensible thing. Originally I tried to deviate as little as
446 447 possible from the default python behavior, but even that one may
447 448 change in this direction (thread on python-dev to that effect).
448 449 Regardless, ipython should do the right thing even if CPython's
449 450 '>>>' prompt doesn't.
450 451 (InteractiveShell): removed subclassing code.InteractiveConsole
451 452 class. By now we'd overridden just about all of its methods: I've
452 453 copied the remaining two over, and now ipython is a standalone
453 454 class. This will provide a clearer picture for the chainsaw
454 455 branch refactoring.
455 456
456 457 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
457 458
458 459 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
459 460 failures for objects which break when dir() is called on them.
460 461
461 462 * IPython/FlexCompleter.py (Completer.__init__): Added support for
462 463 distinct local and global namespaces in the completer API. This
463 464 change allows us top properly handle completion with distinct
464 465 scopes, including in embedded instances (this had never really
465 466 worked correctly).
466 467
467 468 Note: this introduces a change in the constructor for
468 469 MagicCompleter, as a new global_namespace parameter is now the
469 470 second argument (the others were bumped one position).
470 471
471 472 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
472 473
473 474 * IPython/iplib.py (embed_mainloop): fix tab-completion in
474 475 embedded instances (which can be done now thanks to Vivian's
475 476 frame-handling fixes for pdb).
476 477 (InteractiveShell.__init__): Fix namespace handling problem in
477 478 embedded instances. We were overwriting __main__ unconditionally,
478 479 and this should only be done for 'full' (non-embedded) IPython;
479 480 embedded instances must respect the caller's __main__. Thanks to
480 481 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
481 482
482 483 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
483 484
484 485 * setup.py: added download_url to setup(). This registers the
485 486 download address at PyPI, which is not only useful to humans
486 487 browsing the site, but is also picked up by setuptools (the Eggs
487 488 machinery). Thanks to Ville and R. Kern for the info/discussion
488 489 on this.
489 490
490 491 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
491 492
492 493 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
493 494 This brings a lot of nice functionality to the pdb mode, which now
494 495 has tab-completion, syntax highlighting, and better stack handling
495 496 than before. Many thanks to Vivian De Smedt
496 497 <vivian-AT-vdesmedt.com> for the original patches.
497 498
498 499 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
499 500
500 501 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
501 502 sequence to consistently accept the banner argument. The
502 503 inconsistency was tripping SAGE, thanks to Gary Zablackis
503 504 <gzabl-AT-yahoo.com> for the report.
504 505
505 506 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
506 507
507 508 * IPython/iplib.py (InteractiveShell.post_config_initialization):
508 509 Fix bug where a naked 'alias' call in the ipythonrc file would
509 510 cause a crash. Bug reported by Jorgen Stenarson.
510 511
511 512 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
512 513
513 514 * IPython/ipmaker.py (make_IPython): cleanups which should improve
514 515 startup time.
515 516
516 517 * IPython/iplib.py (runcode): my globals 'fix' for embedded
517 518 instances had introduced a bug with globals in normal code. Now
518 519 it's working in all cases.
519 520
520 521 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
521 522 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
522 523 has been introduced to set the default case sensitivity of the
523 524 searches. Users can still select either mode at runtime on a
524 525 per-search basis.
525 526
526 527 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
527 528
528 529 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
529 530 attributes in wildcard searches for subclasses. Modified version
530 531 of a patch by Jorgen.
531 532
532 533 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
533 534
534 535 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
535 536 embedded instances. I added a user_global_ns attribute to the
536 537 InteractiveShell class to handle this.
537 538
538 539 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
539 540
540 541 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
541 542 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
542 543 (reported under win32, but may happen also in other platforms).
543 544 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
544 545
545 546 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
546 547
547 548 * IPython/Magic.py (magic_psearch): new support for wildcard
548 549 patterns. Now, typing ?a*b will list all names which begin with a
549 550 and end in b, for example. The %psearch magic has full
550 551 docstrings. Many thanks to Jörgen Stenarson
551 552 <jorgen.stenarson-AT-bostream.nu>, author of the patches
552 553 implementing this functionality.
553 554
554 555 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
555 556
556 557 * Manual: fixed long-standing annoyance of double-dashes (as in
557 558 --prefix=~, for example) being stripped in the HTML version. This
558 559 is a latex2html bug, but a workaround was provided. Many thanks
559 560 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
560 561 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
561 562 rolling. This seemingly small issue had tripped a number of users
562 563 when first installing, so I'm glad to see it gone.
563 564
564 565 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
565 566
566 567 * IPython/Extensions/numeric_formats.py: fix missing import,
567 568 reported by Stephen Walton.
568 569
569 570 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
570 571
571 572 * IPython/demo.py: finish demo module, fully documented now.
572 573
573 574 * IPython/genutils.py (file_read): simple little utility to read a
574 575 file and ensure it's closed afterwards.
575 576
576 577 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
577 578
578 579 * IPython/demo.py (Demo.__init__): added support for individually
579 580 tagging blocks for automatic execution.
580 581
581 582 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
582 583 syntax-highlighted python sources, requested by John.
583 584
584 585 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
585 586
586 587 * IPython/demo.py (Demo.again): fix bug where again() blocks after
587 588 finishing.
588 589
589 590 * IPython/genutils.py (shlex_split): moved from Magic to here,
590 591 where all 2.2 compatibility stuff lives. I needed it for demo.py.
591 592
592 593 * IPython/demo.py (Demo.__init__): added support for silent
593 594 blocks, improved marks as regexps, docstrings written.
594 595 (Demo.__init__): better docstring, added support for sys.argv.
595 596
596 597 * IPython/genutils.py (marquee): little utility used by the demo
597 598 code, handy in general.
598 599
599 600 * IPython/demo.py (Demo.__init__): new class for interactive
600 601 demos. Not documented yet, I just wrote it in a hurry for
601 602 scipy'05. Will docstring later.
602 603
603 604 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
604 605
605 606 * IPython/Shell.py (sigint_handler): Drastic simplification which
606 607 also seems to make Ctrl-C work correctly across threads! This is
607 608 so simple, that I can't beleive I'd missed it before. Needs more
608 609 testing, though.
609 610 (KBINT): Never mind, revert changes. I'm sure I'd tried something
610 611 like this before...
611 612
612 613 * IPython/genutils.py (get_home_dir): add protection against
613 614 non-dirs in win32 registry.
614 615
615 616 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
616 617 bug where dict was mutated while iterating (pysh crash).
617 618
618 619 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
619 620
620 621 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
621 622 spurious newlines added by this routine. After a report by
622 623 F. Mantegazza.
623 624
624 625 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
625 626
626 627 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
627 628 calls. These were a leftover from the GTK 1.x days, and can cause
628 629 problems in certain cases (after a report by John Hunter).
629 630
630 631 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
631 632 os.getcwd() fails at init time. Thanks to patch from David Remahl
632 633 <chmod007-AT-mac.com>.
633 634 (InteractiveShell.__init__): prevent certain special magics from
634 635 being shadowed by aliases. Closes
635 636 http://www.scipy.net/roundup/ipython/issue41.
636 637
637 638 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
638 639
639 640 * IPython/iplib.py (InteractiveShell.complete): Added new
640 641 top-level completion method to expose the completion mechanism
641 642 beyond readline-based environments.
642 643
643 644 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
644 645
645 646 * tools/ipsvnc (svnversion): fix svnversion capture.
646 647
647 648 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
648 649 attribute to self, which was missing. Before, it was set by a
649 650 routine which in certain cases wasn't being called, so the
650 651 instance could end up missing the attribute. This caused a crash.
651 652 Closes http://www.scipy.net/roundup/ipython/issue40.
652 653
653 654 2005-08-16 Fernando Perez <fperez@colorado.edu>
654 655
655 656 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
656 657 contains non-string attribute. Closes
657 658 http://www.scipy.net/roundup/ipython/issue38.
658 659
659 660 2005-08-14 Fernando Perez <fperez@colorado.edu>
660 661
661 662 * tools/ipsvnc: Minor improvements, to add changeset info.
662 663
663 664 2005-08-12 Fernando Perez <fperez@colorado.edu>
664 665
665 666 * IPython/iplib.py (runsource): remove self.code_to_run_src
666 667 attribute. I realized this is nothing more than
667 668 '\n'.join(self.buffer), and having the same data in two different
668 669 places is just asking for synchronization bugs. This may impact
669 670 people who have custom exception handlers, so I need to warn
670 671 ipython-dev about it (F. Mantegazza may use them).
671 672
672 673 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
673 674
674 675 * IPython/genutils.py: fix 2.2 compatibility (generators)
675 676
676 677 2005-07-18 Fernando Perez <fperez@colorado.edu>
677 678
678 679 * IPython/genutils.py (get_home_dir): fix to help users with
679 680 invalid $HOME under win32.
680 681
681 682 2005-07-17 Fernando Perez <fperez@colorado.edu>
682 683
683 684 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
684 685 some old hacks and clean up a bit other routines; code should be
685 686 simpler and a bit faster.
686 687
687 688 * IPython/iplib.py (interact): removed some last-resort attempts
688 689 to survive broken stdout/stderr. That code was only making it
689 690 harder to abstract out the i/o (necessary for gui integration),
690 691 and the crashes it could prevent were extremely rare in practice
691 692 (besides being fully user-induced in a pretty violent manner).
692 693
693 694 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
694 695 Nothing major yet, but the code is simpler to read; this should
695 696 make it easier to do more serious modifications in the future.
696 697
697 698 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
698 699 which broke in .15 (thanks to a report by Ville).
699 700
700 701 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
701 702 be quite correct, I know next to nothing about unicode). This
702 703 will allow unicode strings to be used in prompts, amongst other
703 704 cases. It also will prevent ipython from crashing when unicode
704 705 shows up unexpectedly in many places. If ascii encoding fails, we
705 706 assume utf_8. Currently the encoding is not a user-visible
706 707 setting, though it could be made so if there is demand for it.
707 708
708 709 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
709 710
710 711 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
711 712
712 713 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
713 714
714 715 * IPython/genutils.py: Add 2.2 compatibility here, so all other
715 716 code can work transparently for 2.2/2.3.
716 717
717 718 2005-07-16 Fernando Perez <fperez@colorado.edu>
718 719
719 720 * IPython/ultraTB.py (ExceptionColors): Make a global variable
720 721 out of the color scheme table used for coloring exception
721 722 tracebacks. This allows user code to add new schemes at runtime.
722 723 This is a minimally modified version of the patch at
723 724 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
724 725 for the contribution.
725 726
726 727 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
727 728 slightly modified version of the patch in
728 729 http://www.scipy.net/roundup/ipython/issue34, which also allows me
729 730 to remove the previous try/except solution (which was costlier).
730 731 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
731 732
732 733 2005-06-08 Fernando Perez <fperez@colorado.edu>
733 734
734 735 * IPython/iplib.py (write/write_err): Add methods to abstract all
735 736 I/O a bit more.
736 737
737 738 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
738 739 warning, reported by Aric Hagberg, fix by JD Hunter.
739 740
740 741 2005-06-02 *** Released version 0.6.15
741 742
742 743 2005-06-01 Fernando Perez <fperez@colorado.edu>
743 744
744 745 * IPython/iplib.py (MagicCompleter.file_matches): Fix
745 746 tab-completion of filenames within open-quoted strings. Note that
746 747 this requires that in ~/.ipython/ipythonrc, users change the
747 748 readline delimiters configuration to read:
748 749
749 750 readline_remove_delims -/~
750 751
751 752
752 753 2005-05-31 *** Released version 0.6.14
753 754
754 755 2005-05-29 Fernando Perez <fperez@colorado.edu>
755 756
756 757 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
757 758 with files not on the filesystem. Reported by Eliyahu Sandler
758 759 <eli@gondolin.net>
759 760
760 761 2005-05-22 Fernando Perez <fperez@colorado.edu>
761 762
762 763 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
763 764 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
764 765
765 766 2005-05-19 Fernando Perez <fperez@colorado.edu>
766 767
767 768 * IPython/iplib.py (safe_execfile): close a file which could be
768 769 left open (causing problems in win32, which locks open files).
769 770 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
770 771
771 772 2005-05-18 Fernando Perez <fperez@colorado.edu>
772 773
773 774 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
774 775 keyword arguments correctly to safe_execfile().
775 776
776 777 2005-05-13 Fernando Perez <fperez@colorado.edu>
777 778
778 779 * ipython.1: Added info about Qt to manpage, and threads warning
779 780 to usage page (invoked with --help).
780 781
781 782 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
782 783 new matcher (it goes at the end of the priority list) to do
783 784 tab-completion on named function arguments. Submitted by George
784 785 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
785 786 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
786 787 for more details.
787 788
788 789 * IPython/Magic.py (magic_run): Added new -e flag to ignore
789 790 SystemExit exceptions in the script being run. Thanks to a report
790 791 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
791 792 producing very annoying behavior when running unit tests.
792 793
793 794 2005-05-12 Fernando Perez <fperez@colorado.edu>
794 795
795 796 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
796 797 which I'd broken (again) due to a changed regexp. In the process,
797 798 added ';' as an escape to auto-quote the whole line without
798 799 splitting its arguments. Thanks to a report by Jerry McRae
799 800 <qrs0xyc02-AT-sneakemail.com>.
800 801
801 802 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
802 803 possible crashes caused by a TokenError. Reported by Ed Schofield
803 804 <schofield-AT-ftw.at>.
804 805
805 806 2005-05-06 Fernando Perez <fperez@colorado.edu>
806 807
807 808 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
808 809
809 810 2005-04-29 Fernando Perez <fperez@colorado.edu>
810 811
811 812 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
812 813 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
813 814 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
814 815 which provides support for Qt interactive usage (similar to the
815 816 existing one for WX and GTK). This had been often requested.
816 817
817 818 2005-04-14 *** Released version 0.6.13
818 819
819 820 2005-04-08 Fernando Perez <fperez@colorado.edu>
820 821
821 822 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
822 823 from _ofind, which gets called on almost every input line. Now,
823 824 we only try to get docstrings if they are actually going to be
824 825 used (the overhead of fetching unnecessary docstrings can be
825 826 noticeable for certain objects, such as Pyro proxies).
826 827
827 828 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
828 829 for completers. For some reason I had been passing them the state
829 830 variable, which completers never actually need, and was in
830 831 conflict with the rlcompleter API. Custom completers ONLY need to
831 832 take the text parameter.
832 833
833 834 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
834 835 work correctly in pysh. I've also moved all the logic which used
835 836 to be in pysh.py here, which will prevent problems with future
836 837 upgrades. However, this time I must warn users to update their
837 838 pysh profile to include the line
838 839
839 840 import_all IPython.Extensions.InterpreterExec
840 841
841 842 because otherwise things won't work for them. They MUST also
842 843 delete pysh.py and the line
843 844
844 845 execfile pysh.py
845 846
846 847 from their ipythonrc-pysh.
847 848
848 849 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
849 850 robust in the face of objects whose dir() returns non-strings
850 851 (which it shouldn't, but some broken libs like ITK do). Thanks to
851 852 a patch by John Hunter (implemented differently, though). Also
852 853 minor improvements by using .extend instead of + on lists.
853 854
854 855 * pysh.py:
855 856
856 857 2005-04-06 Fernando Perez <fperez@colorado.edu>
857 858
858 859 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
859 860 by default, so that all users benefit from it. Those who don't
860 861 want it can still turn it off.
861 862
862 863 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
863 864 config file, I'd forgotten about this, so users were getting it
864 865 off by default.
865 866
866 867 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
867 868 consistency. Now magics can be called in multiline statements,
868 869 and python variables can be expanded in magic calls via $var.
869 870 This makes the magic system behave just like aliases or !system
870 871 calls.
871 872
872 873 2005-03-28 Fernando Perez <fperez@colorado.edu>
873 874
874 875 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
875 876 expensive string additions for building command. Add support for
876 877 trailing ';' when autocall is used.
877 878
878 879 2005-03-26 Fernando Perez <fperez@colorado.edu>
879 880
880 881 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
881 882 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
882 883 ipython.el robust against prompts with any number of spaces
883 884 (including 0) after the ':' character.
884 885
885 886 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
886 887 continuation prompt, which misled users to think the line was
887 888 already indented. Closes debian Bug#300847, reported to me by
888 889 Norbert Tretkowski <tretkowski-AT-inittab.de>.
889 890
890 891 2005-03-23 Fernando Perez <fperez@colorado.edu>
891 892
892 893 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
893 894 properly aligned if they have embedded newlines.
894 895
895 896 * IPython/iplib.py (runlines): Add a public method to expose
896 897 IPython's code execution machinery, so that users can run strings
897 898 as if they had been typed at the prompt interactively.
898 899 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
899 900 methods which can call the system shell, but with python variable
900 901 expansion. The three such methods are: __IPYTHON__.system,
901 902 .getoutput and .getoutputerror. These need to be documented in a
902 903 'public API' section (to be written) of the manual.
903 904
904 905 2005-03-20 Fernando Perez <fperez@colorado.edu>
905 906
906 907 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
907 908 for custom exception handling. This is quite powerful, and it
908 909 allows for user-installable exception handlers which can trap
909 910 custom exceptions at runtime and treat them separately from
910 911 IPython's default mechanisms. At the request of Frédéric
911 912 Mantegazza <mantegazza-AT-ill.fr>.
912 913 (InteractiveShell.set_custom_completer): public API function to
913 914 add new completers at runtime.
914 915
915 916 2005-03-19 Fernando Perez <fperez@colorado.edu>
916 917
917 918 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
918 919 allow objects which provide their docstrings via non-standard
919 920 mechanisms (like Pyro proxies) to still be inspected by ipython's
920 921 ? system.
921 922
922 923 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
923 924 automatic capture system. I tried quite hard to make it work
924 925 reliably, and simply failed. I tried many combinations with the
925 926 subprocess module, but eventually nothing worked in all needed
926 927 cases (not blocking stdin for the child, duplicating stdout
927 928 without blocking, etc). The new %sc/%sx still do capture to these
928 929 magical list/string objects which make shell use much more
929 930 conveninent, so not all is lost.
930 931
931 932 XXX - FIX MANUAL for the change above!
932 933
933 934 (runsource): I copied code.py's runsource() into ipython to modify
934 935 it a bit. Now the code object and source to be executed are
935 936 stored in ipython. This makes this info accessible to third-party
936 937 tools, like custom exception handlers. After a request by Frédéric
937 938 Mantegazza <mantegazza-AT-ill.fr>.
938 939
939 940 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
940 941 history-search via readline (like C-p/C-n). I'd wanted this for a
941 942 long time, but only recently found out how to do it. For users
942 943 who already have their ipythonrc files made and want this, just
943 944 add:
944 945
945 946 readline_parse_and_bind "\e[A": history-search-backward
946 947 readline_parse_and_bind "\e[B": history-search-forward
947 948
948 949 2005-03-18 Fernando Perez <fperez@colorado.edu>
949 950
950 951 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
951 952 LSString and SList classes which allow transparent conversions
952 953 between list mode and whitespace-separated string.
953 954 (magic_r): Fix recursion problem in %r.
954 955
955 956 * IPython/genutils.py (LSString): New class to be used for
956 957 automatic storage of the results of all alias/system calls in _o
957 958 and _e (stdout/err). These provide a .l/.list attribute which
958 959 does automatic splitting on newlines. This means that for most
959 960 uses, you'll never need to do capturing of output with %sc/%sx
960 961 anymore, since ipython keeps this always done for you. Note that
961 962 only the LAST results are stored, the _o/e variables are
962 963 overwritten on each call. If you need to save their contents
963 964 further, simply bind them to any other name.
964 965
965 966 2005-03-17 Fernando Perez <fperez@colorado.edu>
966 967
967 968 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
968 969 prompt namespace handling.
969 970
970 971 2005-03-16 Fernando Perez <fperez@colorado.edu>
971 972
972 973 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
973 974 classic prompts to be '>>> ' (final space was missing, and it
974 975 trips the emacs python mode).
975 976 (BasePrompt.__str__): Added safe support for dynamic prompt
976 977 strings. Now you can set your prompt string to be '$x', and the
977 978 value of x will be printed from your interactive namespace. The
978 979 interpolation syntax includes the full Itpl support, so
979 980 ${foo()+x+bar()} is a valid prompt string now, and the function
980 981 calls will be made at runtime.
981 982
982 983 2005-03-15 Fernando Perez <fperez@colorado.edu>
983 984
984 985 * IPython/Magic.py (magic_history): renamed %hist to %history, to
985 986 avoid name clashes in pylab. %hist still works, it just forwards
986 987 the call to %history.
987 988
988 989 2005-03-02 *** Released version 0.6.12
989 990
990 991 2005-03-02 Fernando Perez <fperez@colorado.edu>
991 992
992 993 * IPython/iplib.py (handle_magic): log magic calls properly as
993 994 ipmagic() function calls.
994 995
995 996 * IPython/Magic.py (magic_time): Improved %time to support
996 997 statements and provide wall-clock as well as CPU time.
997 998
998 999 2005-02-27 Fernando Perez <fperez@colorado.edu>
999 1000
1000 1001 * IPython/hooks.py: New hooks module, to expose user-modifiable
1001 1002 IPython functionality in a clean manner. For now only the editor
1002 1003 hook is actually written, and other thigns which I intend to turn
1003 1004 into proper hooks aren't yet there. The display and prefilter
1004 1005 stuff, for example, should be hooks. But at least now the
1005 1006 framework is in place, and the rest can be moved here with more
1006 1007 time later. IPython had had a .hooks variable for a long time for
1007 1008 this purpose, but I'd never actually used it for anything.
1008 1009
1009 1010 2005-02-26 Fernando Perez <fperez@colorado.edu>
1010 1011
1011 1012 * IPython/ipmaker.py (make_IPython): make the default ipython
1012 1013 directory be called _ipython under win32, to follow more the
1013 1014 naming peculiarities of that platform (where buggy software like
1014 1015 Visual Sourcesafe breaks with .named directories). Reported by
1015 1016 Ville Vainio.
1016 1017
1017 1018 2005-02-23 Fernando Perez <fperez@colorado.edu>
1018 1019
1019 1020 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1020 1021 auto_aliases for win32 which were causing problems. Users can
1021 1022 define the ones they personally like.
1022 1023
1023 1024 2005-02-21 Fernando Perez <fperez@colorado.edu>
1024 1025
1025 1026 * IPython/Magic.py (magic_time): new magic to time execution of
1026 1027 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1027 1028
1028 1029 2005-02-19 Fernando Perez <fperez@colorado.edu>
1029 1030
1030 1031 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1031 1032 into keys (for prompts, for example).
1032 1033
1033 1034 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1034 1035 prompts in case users want them. This introduces a small behavior
1035 1036 change: ipython does not automatically add a space to all prompts
1036 1037 anymore. To get the old prompts with a space, users should add it
1037 1038 manually to their ipythonrc file, so for example prompt_in1 should
1038 1039 now read 'In [\#]: ' instead of 'In [\#]:'.
1039 1040 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1040 1041 file) to control left-padding of secondary prompts.
1041 1042
1042 1043 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1043 1044 the profiler can't be imported. Fix for Debian, which removed
1044 1045 profile.py because of License issues. I applied a slightly
1045 1046 modified version of the original Debian patch at
1046 1047 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1047 1048
1048 1049 2005-02-17 Fernando Perez <fperez@colorado.edu>
1049 1050
1050 1051 * IPython/genutils.py (native_line_ends): Fix bug which would
1051 1052 cause improper line-ends under win32 b/c I was not opening files
1052 1053 in binary mode. Bug report and fix thanks to Ville.
1053 1054
1054 1055 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1055 1056 trying to catch spurious foo[1] autocalls. My fix actually broke
1056 1057 ',/' autoquote/call with explicit escape (bad regexp).
1057 1058
1058 1059 2005-02-15 *** Released version 0.6.11
1059 1060
1060 1061 2005-02-14 Fernando Perez <fperez@colorado.edu>
1061 1062
1062 1063 * IPython/background_jobs.py: New background job management
1063 1064 subsystem. This is implemented via a new set of classes, and
1064 1065 IPython now provides a builtin 'jobs' object for background job
1065 1066 execution. A convenience %bg magic serves as a lightweight
1066 1067 frontend for starting the more common type of calls. This was
1067 1068 inspired by discussions with B. Granger and the BackgroundCommand
1068 1069 class described in the book Python Scripting for Computational
1069 1070 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1070 1071 (although ultimately no code from this text was used, as IPython's
1071 1072 system is a separate implementation).
1072 1073
1073 1074 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1074 1075 to control the completion of single/double underscore names
1075 1076 separately. As documented in the example ipytonrc file, the
1076 1077 readline_omit__names variable can now be set to 2, to omit even
1077 1078 single underscore names. Thanks to a patch by Brian Wong
1078 1079 <BrianWong-AT-AirgoNetworks.Com>.
1079 1080 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1080 1081 be autocalled as foo([1]) if foo were callable. A problem for
1081 1082 things which are both callable and implement __getitem__.
1082 1083 (init_readline): Fix autoindentation for win32. Thanks to a patch
1083 1084 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1084 1085
1085 1086 2005-02-12 Fernando Perez <fperez@colorado.edu>
1086 1087
1087 1088 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1088 1089 which I had written long ago to sort out user error messages which
1089 1090 may occur during startup. This seemed like a good idea initially,
1090 1091 but it has proven a disaster in retrospect. I don't want to
1091 1092 change much code for now, so my fix is to set the internal 'debug'
1092 1093 flag to true everywhere, whose only job was precisely to control
1093 1094 this subsystem. This closes issue 28 (as well as avoiding all
1094 1095 sorts of strange hangups which occur from time to time).
1095 1096
1096 1097 2005-02-07 Fernando Perez <fperez@colorado.edu>
1097 1098
1098 1099 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1099 1100 previous call produced a syntax error.
1100 1101
1101 1102 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1102 1103 classes without constructor.
1103 1104
1104 1105 2005-02-06 Fernando Perez <fperez@colorado.edu>
1105 1106
1106 1107 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1107 1108 completions with the results of each matcher, so we return results
1108 1109 to the user from all namespaces. This breaks with ipython
1109 1110 tradition, but I think it's a nicer behavior. Now you get all
1110 1111 possible completions listed, from all possible namespaces (python,
1111 1112 filesystem, magics...) After a request by John Hunter
1112 1113 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1113 1114
1114 1115 2005-02-05 Fernando Perez <fperez@colorado.edu>
1115 1116
1116 1117 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1117 1118 the call had quote characters in it (the quotes were stripped).
1118 1119
1119 1120 2005-01-31 Fernando Perez <fperez@colorado.edu>
1120 1121
1121 1122 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1122 1123 Itpl.itpl() to make the code more robust against psyco
1123 1124 optimizations.
1124 1125
1125 1126 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1126 1127 of causing an exception. Quicker, cleaner.
1127 1128
1128 1129 2005-01-28 Fernando Perez <fperez@colorado.edu>
1129 1130
1130 1131 * scripts/ipython_win_post_install.py (install): hardcode
1131 1132 sys.prefix+'python.exe' as the executable path. It turns out that
1132 1133 during the post-installation run, sys.executable resolves to the
1133 1134 name of the binary installer! I should report this as a distutils
1134 1135 bug, I think. I updated the .10 release with this tiny fix, to
1135 1136 avoid annoying the lists further.
1136 1137
1137 1138 2005-01-27 *** Released version 0.6.10
1138 1139
1139 1140 2005-01-27 Fernando Perez <fperez@colorado.edu>
1140 1141
1141 1142 * IPython/numutils.py (norm): Added 'inf' as optional name for
1142 1143 L-infinity norm, included references to mathworld.com for vector
1143 1144 norm definitions.
1144 1145 (amin/amax): added amin/amax for array min/max. Similar to what
1145 1146 pylab ships with after the recent reorganization of names.
1146 1147 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1147 1148
1148 1149 * ipython.el: committed Alex's recent fixes and improvements.
1149 1150 Tested with python-mode from CVS, and it looks excellent. Since
1150 1151 python-mode hasn't released anything in a while, I'm temporarily
1151 1152 putting a copy of today's CVS (v 4.70) of python-mode in:
1152 1153 http://ipython.scipy.org/tmp/python-mode.el
1153 1154
1154 1155 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1155 1156 sys.executable for the executable name, instead of assuming it's
1156 1157 called 'python.exe' (the post-installer would have produced broken
1157 1158 setups on systems with a differently named python binary).
1158 1159
1159 1160 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1160 1161 references to os.linesep, to make the code more
1161 1162 platform-independent. This is also part of the win32 coloring
1162 1163 fixes.
1163 1164
1164 1165 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1165 1166 lines, which actually cause coloring bugs because the length of
1166 1167 the line is very difficult to correctly compute with embedded
1167 1168 escapes. This was the source of all the coloring problems under
1168 1169 Win32. I think that _finally_, Win32 users have a properly
1169 1170 working ipython in all respects. This would never have happened
1170 1171 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1171 1172
1172 1173 2005-01-26 *** Released version 0.6.9
1173 1174
1174 1175 2005-01-25 Fernando Perez <fperez@colorado.edu>
1175 1176
1176 1177 * setup.py: finally, we have a true Windows installer, thanks to
1177 1178 the excellent work of Viktor Ransmayr
1178 1179 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1179 1180 Windows users. The setup routine is quite a bit cleaner thanks to
1180 1181 this, and the post-install script uses the proper functions to
1181 1182 allow a clean de-installation using the standard Windows Control
1182 1183 Panel.
1183 1184
1184 1185 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1185 1186 environment variable under all OSes (including win32) if
1186 1187 available. This will give consistency to win32 users who have set
1187 1188 this variable for any reason. If os.environ['HOME'] fails, the
1188 1189 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1189 1190
1190 1191 2005-01-24 Fernando Perez <fperez@colorado.edu>
1191 1192
1192 1193 * IPython/numutils.py (empty_like): add empty_like(), similar to
1193 1194 zeros_like() but taking advantage of the new empty() Numeric routine.
1194 1195
1195 1196 2005-01-23 *** Released version 0.6.8
1196 1197
1197 1198 2005-01-22 Fernando Perez <fperez@colorado.edu>
1198 1199
1199 1200 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1200 1201 automatic show() calls. After discussing things with JDH, it
1201 1202 turns out there are too many corner cases where this can go wrong.
1202 1203 It's best not to try to be 'too smart', and simply have ipython
1203 1204 reproduce as much as possible the default behavior of a normal
1204 1205 python shell.
1205 1206
1206 1207 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1207 1208 line-splitting regexp and _prefilter() to avoid calling getattr()
1208 1209 on assignments. This closes
1209 1210 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1210 1211 readline uses getattr(), so a simple <TAB> keypress is still
1211 1212 enough to trigger getattr() calls on an object.
1212 1213
1213 1214 2005-01-21 Fernando Perez <fperez@colorado.edu>
1214 1215
1215 1216 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1216 1217 docstring under pylab so it doesn't mask the original.
1217 1218
1218 1219 2005-01-21 *** Released version 0.6.7
1219 1220
1220 1221 2005-01-21 Fernando Perez <fperez@colorado.edu>
1221 1222
1222 1223 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1223 1224 signal handling for win32 users in multithreaded mode.
1224 1225
1225 1226 2005-01-17 Fernando Perez <fperez@colorado.edu>
1226 1227
1227 1228 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1228 1229 instances with no __init__. After a crash report by Norbert Nemec
1229 1230 <Norbert-AT-nemec-online.de>.
1230 1231
1231 1232 2005-01-14 Fernando Perez <fperez@colorado.edu>
1232 1233
1233 1234 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1234 1235 names for verbose exceptions, when multiple dotted names and the
1235 1236 'parent' object were present on the same line.
1236 1237
1237 1238 2005-01-11 Fernando Perez <fperez@colorado.edu>
1238 1239
1239 1240 * IPython/genutils.py (flag_calls): new utility to trap and flag
1240 1241 calls in functions. I need it to clean up matplotlib support.
1241 1242 Also removed some deprecated code in genutils.
1242 1243
1243 1244 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1244 1245 that matplotlib scripts called with %run, which don't call show()
1245 1246 themselves, still have their plotting windows open.
1246 1247
1247 1248 2005-01-05 Fernando Perez <fperez@colorado.edu>
1248 1249
1249 1250 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1250 1251 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1251 1252
1252 1253 2004-12-19 Fernando Perez <fperez@colorado.edu>
1253 1254
1254 1255 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1255 1256 parent_runcode, which was an eyesore. The same result can be
1256 1257 obtained with Python's regular superclass mechanisms.
1257 1258
1258 1259 2004-12-17 Fernando Perez <fperez@colorado.edu>
1259 1260
1260 1261 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1261 1262 reported by Prabhu.
1262 1263 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1263 1264 sys.stderr) instead of explicitly calling sys.stderr. This helps
1264 1265 maintain our I/O abstractions clean, for future GUI embeddings.
1265 1266
1266 1267 * IPython/genutils.py (info): added new utility for sys.stderr
1267 1268 unified info message handling (thin wrapper around warn()).
1268 1269
1269 1270 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1270 1271 composite (dotted) names on verbose exceptions.
1271 1272 (VerboseTB.nullrepr): harden against another kind of errors which
1272 1273 Python's inspect module can trigger, and which were crashing
1273 1274 IPython. Thanks to a report by Marco Lombardi
1274 1275 <mlombard-AT-ma010192.hq.eso.org>.
1275 1276
1276 1277 2004-12-13 *** Released version 0.6.6
1277 1278
1278 1279 2004-12-12 Fernando Perez <fperez@colorado.edu>
1279 1280
1280 1281 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1281 1282 generated by pygtk upon initialization if it was built without
1282 1283 threads (for matplotlib users). After a crash reported by
1283 1284 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1284 1285
1285 1286 * IPython/ipmaker.py (make_IPython): fix small bug in the
1286 1287 import_some parameter for multiple imports.
1287 1288
1288 1289 * IPython/iplib.py (ipmagic): simplified the interface of
1289 1290 ipmagic() to take a single string argument, just as it would be
1290 1291 typed at the IPython cmd line.
1291 1292 (ipalias): Added new ipalias() with an interface identical to
1292 1293 ipmagic(). This completes exposing a pure python interface to the
1293 1294 alias and magic system, which can be used in loops or more complex
1294 1295 code where IPython's automatic line mangling is not active.
1295 1296
1296 1297 * IPython/genutils.py (timing): changed interface of timing to
1297 1298 simply run code once, which is the most common case. timings()
1298 1299 remains unchanged, for the cases where you want multiple runs.
1299 1300
1300 1301 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1301 1302 bug where Python2.2 crashes with exec'ing code which does not end
1302 1303 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1303 1304 before.
1304 1305
1305 1306 2004-12-10 Fernando Perez <fperez@colorado.edu>
1306 1307
1307 1308 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1308 1309 -t to -T, to accomodate the new -t flag in %run (the %run and
1309 1310 %prun options are kind of intermixed, and it's not easy to change
1310 1311 this with the limitations of python's getopt).
1311 1312
1312 1313 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1313 1314 the execution of scripts. It's not as fine-tuned as timeit.py,
1314 1315 but it works from inside ipython (and under 2.2, which lacks
1315 1316 timeit.py). Optionally a number of runs > 1 can be given for
1316 1317 timing very short-running code.
1317 1318
1318 1319 * IPython/genutils.py (uniq_stable): new routine which returns a
1319 1320 list of unique elements in any iterable, but in stable order of
1320 1321 appearance. I needed this for the ultraTB fixes, and it's a handy
1321 1322 utility.
1322 1323
1323 1324 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1324 1325 dotted names in Verbose exceptions. This had been broken since
1325 1326 the very start, now x.y will properly be printed in a Verbose
1326 1327 traceback, instead of x being shown and y appearing always as an
1327 1328 'undefined global'. Getting this to work was a bit tricky,
1328 1329 because by default python tokenizers are stateless. Saved by
1329 1330 python's ability to easily add a bit of state to an arbitrary
1330 1331 function (without needing to build a full-blown callable object).
1331 1332
1332 1333 Also big cleanup of this code, which had horrendous runtime
1333 1334 lookups of zillions of attributes for colorization. Moved all
1334 1335 this code into a few templates, which make it cleaner and quicker.
1335 1336
1336 1337 Printout quality was also improved for Verbose exceptions: one
1337 1338 variable per line, and memory addresses are printed (this can be
1338 1339 quite handy in nasty debugging situations, which is what Verbose
1339 1340 is for).
1340 1341
1341 1342 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1342 1343 the command line as scripts to be loaded by embedded instances.
1343 1344 Doing so has the potential for an infinite recursion if there are
1344 1345 exceptions thrown in the process. This fixes a strange crash
1345 1346 reported by Philippe MULLER <muller-AT-irit.fr>.
1346 1347
1347 1348 2004-12-09 Fernando Perez <fperez@colorado.edu>
1348 1349
1349 1350 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1350 1351 to reflect new names in matplotlib, which now expose the
1351 1352 matlab-compatible interface via a pylab module instead of the
1352 1353 'matlab' name. The new code is backwards compatible, so users of
1353 1354 all matplotlib versions are OK. Patch by J. Hunter.
1354 1355
1355 1356 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1356 1357 of __init__ docstrings for instances (class docstrings are already
1357 1358 automatically printed). Instances with customized docstrings
1358 1359 (indep. of the class) are also recognized and all 3 separate
1359 1360 docstrings are printed (instance, class, constructor). After some
1360 1361 comments/suggestions by J. Hunter.
1361 1362
1362 1363 2004-12-05 Fernando Perez <fperez@colorado.edu>
1363 1364
1364 1365 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1365 1366 warnings when tab-completion fails and triggers an exception.
1366 1367
1367 1368 2004-12-03 Fernando Perez <fperez@colorado.edu>
1368 1369
1369 1370 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1370 1371 be triggered when using 'run -p'. An incorrect option flag was
1371 1372 being set ('d' instead of 'D').
1372 1373 (manpage): fix missing escaped \- sign.
1373 1374
1374 1375 2004-11-30 *** Released version 0.6.5
1375 1376
1376 1377 2004-11-30 Fernando Perez <fperez@colorado.edu>
1377 1378
1378 1379 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1379 1380 setting with -d option.
1380 1381
1381 1382 * setup.py (docfiles): Fix problem where the doc glob I was using
1382 1383 was COMPLETELY BROKEN. It was giving the right files by pure
1383 1384 accident, but failed once I tried to include ipython.el. Note:
1384 1385 glob() does NOT allow you to do exclusion on multiple endings!
1385 1386
1386 1387 2004-11-29 Fernando Perez <fperez@colorado.edu>
1387 1388
1388 1389 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1389 1390 the manpage as the source. Better formatting & consistency.
1390 1391
1391 1392 * IPython/Magic.py (magic_run): Added new -d option, to run
1392 1393 scripts under the control of the python pdb debugger. Note that
1393 1394 this required changing the %prun option -d to -D, to avoid a clash
1394 1395 (since %run must pass options to %prun, and getopt is too dumb to
1395 1396 handle options with string values with embedded spaces). Thanks
1396 1397 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1397 1398 (magic_who_ls): added type matching to %who and %whos, so that one
1398 1399 can filter their output to only include variables of certain
1399 1400 types. Another suggestion by Matthew.
1400 1401 (magic_whos): Added memory summaries in kb and Mb for arrays.
1401 1402 (magic_who): Improve formatting (break lines every 9 vars).
1402 1403
1403 1404 2004-11-28 Fernando Perez <fperez@colorado.edu>
1404 1405
1405 1406 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1406 1407 cache when empty lines were present.
1407 1408
1408 1409 2004-11-24 Fernando Perez <fperez@colorado.edu>
1409 1410
1410 1411 * IPython/usage.py (__doc__): document the re-activated threading
1411 1412 options for WX and GTK.
1412 1413
1413 1414 2004-11-23 Fernando Perez <fperez@colorado.edu>
1414 1415
1415 1416 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1416 1417 the -wthread and -gthread options, along with a new -tk one to try
1417 1418 and coordinate Tk threading with wx/gtk. The tk support is very
1418 1419 platform dependent, since it seems to require Tcl and Tk to be
1419 1420 built with threads (Fedora1/2 appears NOT to have it, but in
1420 1421 Prabhu's Debian boxes it works OK). But even with some Tk
1421 1422 limitations, this is a great improvement.
1422 1423
1423 1424 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1424 1425 info in user prompts. Patch by Prabhu.
1425 1426
1426 1427 2004-11-18 Fernando Perez <fperez@colorado.edu>
1427 1428
1428 1429 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1429 1430 EOFErrors and bail, to avoid infinite loops if a non-terminating
1430 1431 file is fed into ipython. Patch submitted in issue 19 by user,
1431 1432 many thanks.
1432 1433
1433 1434 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1434 1435 autoquote/parens in continuation prompts, which can cause lots of
1435 1436 problems. Closes roundup issue 20.
1436 1437
1437 1438 2004-11-17 Fernando Perez <fperez@colorado.edu>
1438 1439
1439 1440 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1440 1441 reported as debian bug #280505. I'm not sure my local changelog
1441 1442 entry has the proper debian format (Jack?).
1442 1443
1443 1444 2004-11-08 *** Released version 0.6.4
1444 1445
1445 1446 2004-11-08 Fernando Perez <fperez@colorado.edu>
1446 1447
1447 1448 * IPython/iplib.py (init_readline): Fix exit message for Windows
1448 1449 when readline is active. Thanks to a report by Eric Jones
1449 1450 <eric-AT-enthought.com>.
1450 1451
1451 1452 2004-11-07 Fernando Perez <fperez@colorado.edu>
1452 1453
1453 1454 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1454 1455 sometimes seen by win2k/cygwin users.
1455 1456
1456 1457 2004-11-06 Fernando Perez <fperez@colorado.edu>
1457 1458
1458 1459 * IPython/iplib.py (interact): Change the handling of %Exit from
1459 1460 trying to propagate a SystemExit to an internal ipython flag.
1460 1461 This is less elegant than using Python's exception mechanism, but
1461 1462 I can't get that to work reliably with threads, so under -pylab
1462 1463 %Exit was hanging IPython. Cross-thread exception handling is
1463 1464 really a bitch. Thaks to a bug report by Stephen Walton
1464 1465 <stephen.walton-AT-csun.edu>.
1465 1466
1466 1467 2004-11-04 Fernando Perez <fperez@colorado.edu>
1467 1468
1468 1469 * IPython/iplib.py (raw_input_original): store a pointer to the
1469 1470 true raw_input to harden against code which can modify it
1470 1471 (wx.py.PyShell does this and would otherwise crash ipython).
1471 1472 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1472 1473
1473 1474 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1474 1475 Ctrl-C problem, which does not mess up the input line.
1475 1476
1476 1477 2004-11-03 Fernando Perez <fperez@colorado.edu>
1477 1478
1478 1479 * IPython/Release.py: Changed licensing to BSD, in all files.
1479 1480 (name): lowercase name for tarball/RPM release.
1480 1481
1481 1482 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1482 1483 use throughout ipython.
1483 1484
1484 1485 * IPython/Magic.py (Magic._ofind): Switch to using the new
1485 1486 OInspect.getdoc() function.
1486 1487
1487 1488 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1488 1489 of the line currently being canceled via Ctrl-C. It's extremely
1489 1490 ugly, but I don't know how to do it better (the problem is one of
1490 1491 handling cross-thread exceptions).
1491 1492
1492 1493 2004-10-28 Fernando Perez <fperez@colorado.edu>
1493 1494
1494 1495 * IPython/Shell.py (signal_handler): add signal handlers to trap
1495 1496 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1496 1497 report by Francesc Alted.
1497 1498
1498 1499 2004-10-21 Fernando Perez <fperez@colorado.edu>
1499 1500
1500 1501 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1501 1502 to % for pysh syntax extensions.
1502 1503
1503 1504 2004-10-09 Fernando Perez <fperez@colorado.edu>
1504 1505
1505 1506 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1506 1507 arrays to print a more useful summary, without calling str(arr).
1507 1508 This avoids the problem of extremely lengthy computations which
1508 1509 occur if arr is large, and appear to the user as a system lockup
1509 1510 with 100% cpu activity. After a suggestion by Kristian Sandberg
1510 1511 <Kristian.Sandberg@colorado.edu>.
1511 1512 (Magic.__init__): fix bug in global magic escapes not being
1512 1513 correctly set.
1513 1514
1514 1515 2004-10-08 Fernando Perez <fperez@colorado.edu>
1515 1516
1516 1517 * IPython/Magic.py (__license__): change to absolute imports of
1517 1518 ipython's own internal packages, to start adapting to the absolute
1518 1519 import requirement of PEP-328.
1519 1520
1520 1521 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1521 1522 files, and standardize author/license marks through the Release
1522 1523 module instead of having per/file stuff (except for files with
1523 1524 particular licenses, like the MIT/PSF-licensed codes).
1524 1525
1525 1526 * IPython/Debugger.py: remove dead code for python 2.1
1526 1527
1527 1528 2004-10-04 Fernando Perez <fperez@colorado.edu>
1528 1529
1529 1530 * IPython/iplib.py (ipmagic): New function for accessing magics
1530 1531 via a normal python function call.
1531 1532
1532 1533 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1533 1534 from '@' to '%', to accomodate the new @decorator syntax of python
1534 1535 2.4.
1535 1536
1536 1537 2004-09-29 Fernando Perez <fperez@colorado.edu>
1537 1538
1538 1539 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1539 1540 matplotlib.use to prevent running scripts which try to switch
1540 1541 interactive backends from within ipython. This will just crash
1541 1542 the python interpreter, so we can't allow it (but a detailed error
1542 1543 is given to the user).
1543 1544
1544 1545 2004-09-28 Fernando Perez <fperez@colorado.edu>
1545 1546
1546 1547 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1547 1548 matplotlib-related fixes so that using @run with non-matplotlib
1548 1549 scripts doesn't pop up spurious plot windows. This requires
1549 1550 matplotlib >= 0.63, where I had to make some changes as well.
1550 1551
1551 1552 * IPython/ipmaker.py (make_IPython): update version requirement to
1552 1553 python 2.2.
1553 1554
1554 1555 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1555 1556 banner arg for embedded customization.
1556 1557
1557 1558 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1558 1559 explicit uses of __IP as the IPython's instance name. Now things
1559 1560 are properly handled via the shell.name value. The actual code
1560 1561 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1561 1562 is much better than before. I'll clean things completely when the
1562 1563 magic stuff gets a real overhaul.
1563 1564
1564 1565 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1565 1566 minor changes to debian dir.
1566 1567
1567 1568 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1568 1569 pointer to the shell itself in the interactive namespace even when
1569 1570 a user-supplied dict is provided. This is needed for embedding
1570 1571 purposes (found by tests with Michel Sanner).
1571 1572
1572 1573 2004-09-27 Fernando Perez <fperez@colorado.edu>
1573 1574
1574 1575 * IPython/UserConfig/ipythonrc: remove []{} from
1575 1576 readline_remove_delims, so that things like [modname.<TAB> do
1576 1577 proper completion. This disables [].TAB, but that's a less common
1577 1578 case than module names in list comprehensions, for example.
1578 1579 Thanks to a report by Andrea Riciputi.
1579 1580
1580 1581 2004-09-09 Fernando Perez <fperez@colorado.edu>
1581 1582
1582 1583 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1583 1584 blocking problems in win32 and osx. Fix by John.
1584 1585
1585 1586 2004-09-08 Fernando Perez <fperez@colorado.edu>
1586 1587
1587 1588 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1588 1589 for Win32 and OSX. Fix by John Hunter.
1589 1590
1590 1591 2004-08-30 *** Released version 0.6.3
1591 1592
1592 1593 2004-08-30 Fernando Perez <fperez@colorado.edu>
1593 1594
1594 1595 * setup.py (isfile): Add manpages to list of dependent files to be
1595 1596 updated.
1596 1597
1597 1598 2004-08-27 Fernando Perez <fperez@colorado.edu>
1598 1599
1599 1600 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1600 1601 for now. They don't really work with standalone WX/GTK code
1601 1602 (though matplotlib IS working fine with both of those backends).
1602 1603 This will neeed much more testing. I disabled most things with
1603 1604 comments, so turning it back on later should be pretty easy.
1604 1605
1605 1606 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1606 1607 autocalling of expressions like r'foo', by modifying the line
1607 1608 split regexp. Closes
1608 1609 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1609 1610 Riley <ipythonbugs-AT-sabi.net>.
1610 1611 (InteractiveShell.mainloop): honor --nobanner with banner
1611 1612 extensions.
1612 1613
1613 1614 * IPython/Shell.py: Significant refactoring of all classes, so
1614 1615 that we can really support ALL matplotlib backends and threading
1615 1616 models (John spotted a bug with Tk which required this). Now we
1616 1617 should support single-threaded, WX-threads and GTK-threads, both
1617 1618 for generic code and for matplotlib.
1618 1619
1619 1620 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1620 1621 -pylab, to simplify things for users. Will also remove the pylab
1621 1622 profile, since now all of matplotlib configuration is directly
1622 1623 handled here. This also reduces startup time.
1623 1624
1624 1625 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1625 1626 shell wasn't being correctly called. Also in IPShellWX.
1626 1627
1627 1628 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1628 1629 fine-tune banner.
1629 1630
1630 1631 * IPython/numutils.py (spike): Deprecate these spike functions,
1631 1632 delete (long deprecated) gnuplot_exec handler.
1632 1633
1633 1634 2004-08-26 Fernando Perez <fperez@colorado.edu>
1634 1635
1635 1636 * ipython.1: Update for threading options, plus some others which
1636 1637 were missing.
1637 1638
1638 1639 * IPython/ipmaker.py (__call__): Added -wthread option for
1639 1640 wxpython thread handling. Make sure threading options are only
1640 1641 valid at the command line.
1641 1642
1642 1643 * scripts/ipython: moved shell selection into a factory function
1643 1644 in Shell.py, to keep the starter script to a minimum.
1644 1645
1645 1646 2004-08-25 Fernando Perez <fperez@colorado.edu>
1646 1647
1647 1648 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1648 1649 John. Along with some recent changes he made to matplotlib, the
1649 1650 next versions of both systems should work very well together.
1650 1651
1651 1652 2004-08-24 Fernando Perez <fperez@colorado.edu>
1652 1653
1653 1654 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1654 1655 tried to switch the profiling to using hotshot, but I'm getting
1655 1656 strange errors from prof.runctx() there. I may be misreading the
1656 1657 docs, but it looks weird. For now the profiling code will
1657 1658 continue to use the standard profiler.
1658 1659
1659 1660 2004-08-23 Fernando Perez <fperez@colorado.edu>
1660 1661
1661 1662 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1662 1663 threaded shell, by John Hunter. It's not quite ready yet, but
1663 1664 close.
1664 1665
1665 1666 2004-08-22 Fernando Perez <fperez@colorado.edu>
1666 1667
1667 1668 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1668 1669 in Magic and ultraTB.
1669 1670
1670 1671 * ipython.1: document threading options in manpage.
1671 1672
1672 1673 * scripts/ipython: Changed name of -thread option to -gthread,
1673 1674 since this is GTK specific. I want to leave the door open for a
1674 1675 -wthread option for WX, which will most likely be necessary. This
1675 1676 change affects usage and ipmaker as well.
1676 1677
1677 1678 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1678 1679 handle the matplotlib shell issues. Code by John Hunter
1679 1680 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1680 1681 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1681 1682 broken (and disabled for end users) for now, but it puts the
1682 1683 infrastructure in place.
1683 1684
1684 1685 2004-08-21 Fernando Perez <fperez@colorado.edu>
1685 1686
1686 1687 * ipythonrc-pylab: Add matplotlib support.
1687 1688
1688 1689 * matplotlib_config.py: new files for matplotlib support, part of
1689 1690 the pylab profile.
1690 1691
1691 1692 * IPython/usage.py (__doc__): documented the threading options.
1692 1693
1693 1694 2004-08-20 Fernando Perez <fperez@colorado.edu>
1694 1695
1695 1696 * ipython: Modified the main calling routine to handle the -thread
1696 1697 and -mpthread options. This needs to be done as a top-level hack,
1697 1698 because it determines which class to instantiate for IPython
1698 1699 itself.
1699 1700
1700 1701 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1701 1702 classes to support multithreaded GTK operation without blocking,
1702 1703 and matplotlib with all backends. This is a lot of still very
1703 1704 experimental code, and threads are tricky. So it may still have a
1704 1705 few rough edges... This code owes a lot to
1705 1706 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1706 1707 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1707 1708 to John Hunter for all the matplotlib work.
1708 1709
1709 1710 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1710 1711 options for gtk thread and matplotlib support.
1711 1712
1712 1713 2004-08-16 Fernando Perez <fperez@colorado.edu>
1713 1714
1714 1715 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1715 1716 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1716 1717 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1717 1718
1718 1719 2004-08-11 Fernando Perez <fperez@colorado.edu>
1719 1720
1720 1721 * setup.py (isfile): Fix build so documentation gets updated for
1721 1722 rpms (it was only done for .tgz builds).
1722 1723
1723 1724 2004-08-10 Fernando Perez <fperez@colorado.edu>
1724 1725
1725 1726 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1726 1727
1727 1728 * iplib.py : Silence syntax error exceptions in tab-completion.
1728 1729
1729 1730 2004-08-05 Fernando Perez <fperez@colorado.edu>
1730 1731
1731 1732 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1732 1733 'color off' mark for continuation prompts. This was causing long
1733 1734 continuation lines to mis-wrap.
1734 1735
1735 1736 2004-08-01 Fernando Perez <fperez@colorado.edu>
1736 1737
1737 1738 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1738 1739 for building ipython to be a parameter. All this is necessary
1739 1740 right now to have a multithreaded version, but this insane
1740 1741 non-design will be cleaned up soon. For now, it's a hack that
1741 1742 works.
1742 1743
1743 1744 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1744 1745 args in various places. No bugs so far, but it's a dangerous
1745 1746 practice.
1746 1747
1747 1748 2004-07-31 Fernando Perez <fperez@colorado.edu>
1748 1749
1749 1750 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1750 1751 fix completion of files with dots in their names under most
1751 1752 profiles (pysh was OK because the completion order is different).
1752 1753
1753 1754 2004-07-27 Fernando Perez <fperez@colorado.edu>
1754 1755
1755 1756 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1756 1757 keywords manually, b/c the one in keyword.py was removed in python
1757 1758 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1758 1759 This is NOT a bug under python 2.3 and earlier.
1759 1760
1760 1761 2004-07-26 Fernando Perez <fperez@colorado.edu>
1761 1762
1762 1763 * IPython/ultraTB.py (VerboseTB.text): Add another
1763 1764 linecache.checkcache() call to try to prevent inspect.py from
1764 1765 crashing under python 2.3. I think this fixes
1765 1766 http://www.scipy.net/roundup/ipython/issue17.
1766 1767
1767 1768 2004-07-26 *** Released version 0.6.2
1768 1769
1769 1770 2004-07-26 Fernando Perez <fperez@colorado.edu>
1770 1771
1771 1772 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1772 1773 fail for any number.
1773 1774 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1774 1775 empty bookmarks.
1775 1776
1776 1777 2004-07-26 *** Released version 0.6.1
1777 1778
1778 1779 2004-07-26 Fernando Perez <fperez@colorado.edu>
1779 1780
1780 1781 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1781 1782
1782 1783 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1783 1784 escaping '()[]{}' in filenames.
1784 1785
1785 1786 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1786 1787 Python 2.2 users who lack a proper shlex.split.
1787 1788
1788 1789 2004-07-19 Fernando Perez <fperez@colorado.edu>
1789 1790
1790 1791 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1791 1792 for reading readline's init file. I follow the normal chain:
1792 1793 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1793 1794 report by Mike Heeter. This closes
1794 1795 http://www.scipy.net/roundup/ipython/issue16.
1795 1796
1796 1797 2004-07-18 Fernando Perez <fperez@colorado.edu>
1797 1798
1798 1799 * IPython/iplib.py (__init__): Add better handling of '\' under
1799 1800 Win32 for filenames. After a patch by Ville.
1800 1801
1801 1802 2004-07-17 Fernando Perez <fperez@colorado.edu>
1802 1803
1803 1804 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1804 1805 autocalling would be triggered for 'foo is bar' if foo is
1805 1806 callable. I also cleaned up the autocall detection code to use a
1806 1807 regexp, which is faster. Bug reported by Alexander Schmolck.
1807 1808
1808 1809 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1809 1810 '?' in them would confuse the help system. Reported by Alex
1810 1811 Schmolck.
1811 1812
1812 1813 2004-07-16 Fernando Perez <fperez@colorado.edu>
1813 1814
1814 1815 * IPython/GnuplotInteractive.py (__all__): added plot2.
1815 1816
1816 1817 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1817 1818 plotting dictionaries, lists or tuples of 1d arrays.
1818 1819
1819 1820 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1820 1821 optimizations.
1821 1822
1822 1823 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1823 1824 the information which was there from Janko's original IPP code:
1824 1825
1825 1826 03.05.99 20:53 porto.ifm.uni-kiel.de
1826 1827 --Started changelog.
1827 1828 --make clear do what it say it does
1828 1829 --added pretty output of lines from inputcache
1829 1830 --Made Logger a mixin class, simplifies handling of switches
1830 1831 --Added own completer class. .string<TAB> expands to last history
1831 1832 line which starts with string. The new expansion is also present
1832 1833 with Ctrl-r from the readline library. But this shows, who this
1833 1834 can be done for other cases.
1834 1835 --Added convention that all shell functions should accept a
1835 1836 parameter_string This opens the door for different behaviour for
1836 1837 each function. @cd is a good example of this.
1837 1838
1838 1839 04.05.99 12:12 porto.ifm.uni-kiel.de
1839 1840 --added logfile rotation
1840 1841 --added new mainloop method which freezes first the namespace
1841 1842
1842 1843 07.05.99 21:24 porto.ifm.uni-kiel.de
1843 1844 --added the docreader classes. Now there is a help system.
1844 1845 -This is only a first try. Currently it's not easy to put new
1845 1846 stuff in the indices. But this is the way to go. Info would be
1846 1847 better, but HTML is every where and not everybody has an info
1847 1848 system installed and it's not so easy to change html-docs to info.
1848 1849 --added global logfile option
1849 1850 --there is now a hook for object inspection method pinfo needs to
1850 1851 be provided for this. Can be reached by two '??'.
1851 1852
1852 1853 08.05.99 20:51 porto.ifm.uni-kiel.de
1853 1854 --added a README
1854 1855 --bug in rc file. Something has changed so functions in the rc
1855 1856 file need to reference the shell and not self. Not clear if it's a
1856 1857 bug or feature.
1857 1858 --changed rc file for new behavior
1858 1859
1859 1860 2004-07-15 Fernando Perez <fperez@colorado.edu>
1860 1861
1861 1862 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1862 1863 cache was falling out of sync in bizarre manners when multi-line
1863 1864 input was present. Minor optimizations and cleanup.
1864 1865
1865 1866 (Logger): Remove old Changelog info for cleanup. This is the
1866 1867 information which was there from Janko's original code:
1867 1868
1868 1869 Changes to Logger: - made the default log filename a parameter
1869 1870
1870 1871 - put a check for lines beginning with !@? in log(). Needed
1871 1872 (even if the handlers properly log their lines) for mid-session
1872 1873 logging activation to work properly. Without this, lines logged
1873 1874 in mid session, which get read from the cache, would end up
1874 1875 'bare' (with !@? in the open) in the log. Now they are caught
1875 1876 and prepended with a #.
1876 1877
1877 1878 * IPython/iplib.py (InteractiveShell.init_readline): added check
1878 1879 in case MagicCompleter fails to be defined, so we don't crash.
1879 1880
1880 1881 2004-07-13 Fernando Perez <fperez@colorado.edu>
1881 1882
1882 1883 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1883 1884 of EPS if the requested filename ends in '.eps'.
1884 1885
1885 1886 2004-07-04 Fernando Perez <fperez@colorado.edu>
1886 1887
1887 1888 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1888 1889 escaping of quotes when calling the shell.
1889 1890
1890 1891 2004-07-02 Fernando Perez <fperez@colorado.edu>
1891 1892
1892 1893 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1893 1894 gettext not working because we were clobbering '_'. Fixes
1894 1895 http://www.scipy.net/roundup/ipython/issue6.
1895 1896
1896 1897 2004-07-01 Fernando Perez <fperez@colorado.edu>
1897 1898
1898 1899 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1899 1900 into @cd. Patch by Ville.
1900 1901
1901 1902 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1902 1903 new function to store things after ipmaker runs. Patch by Ville.
1903 1904 Eventually this will go away once ipmaker is removed and the class
1904 1905 gets cleaned up, but for now it's ok. Key functionality here is
1905 1906 the addition of the persistent storage mechanism, a dict for
1906 1907 keeping data across sessions (for now just bookmarks, but more can
1907 1908 be implemented later).
1908 1909
1909 1910 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1910 1911 persistent across sections. Patch by Ville, I modified it
1911 1912 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1912 1913 added a '-l' option to list all bookmarks.
1913 1914
1914 1915 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1915 1916 center for cleanup. Registered with atexit.register(). I moved
1916 1917 here the old exit_cleanup(). After a patch by Ville.
1917 1918
1918 1919 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1919 1920 characters in the hacked shlex_split for python 2.2.
1920 1921
1921 1922 * IPython/iplib.py (file_matches): more fixes to filenames with
1922 1923 whitespace in them. It's not perfect, but limitations in python's
1923 1924 readline make it impossible to go further.
1924 1925
1925 1926 2004-06-29 Fernando Perez <fperez@colorado.edu>
1926 1927
1927 1928 * IPython/iplib.py (file_matches): escape whitespace correctly in
1928 1929 filename completions. Bug reported by Ville.
1929 1930
1930 1931 2004-06-28 Fernando Perez <fperez@colorado.edu>
1931 1932
1932 1933 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1933 1934 the history file will be called 'history-PROFNAME' (or just
1934 1935 'history' if no profile is loaded). I was getting annoyed at
1935 1936 getting my Numerical work history clobbered by pysh sessions.
1936 1937
1937 1938 * IPython/iplib.py (InteractiveShell.__init__): Internal
1938 1939 getoutputerror() function so that we can honor the system_verbose
1939 1940 flag for _all_ system calls. I also added escaping of #
1940 1941 characters here to avoid confusing Itpl.
1941 1942
1942 1943 * IPython/Magic.py (shlex_split): removed call to shell in
1943 1944 parse_options and replaced it with shlex.split(). The annoying
1944 1945 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1945 1946 to backport it from 2.3, with several frail hacks (the shlex
1946 1947 module is rather limited in 2.2). Thanks to a suggestion by Ville
1947 1948 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1948 1949 problem.
1949 1950
1950 1951 (Magic.magic_system_verbose): new toggle to print the actual
1951 1952 system calls made by ipython. Mainly for debugging purposes.
1952 1953
1953 1954 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1954 1955 doesn't support persistence. Reported (and fix suggested) by
1955 1956 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1956 1957
1957 1958 2004-06-26 Fernando Perez <fperez@colorado.edu>
1958 1959
1959 1960 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1960 1961 continue prompts.
1961 1962
1962 1963 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1963 1964 function (basically a big docstring) and a few more things here to
1964 1965 speedup startup. pysh.py is now very lightweight. We want because
1965 1966 it gets execfile'd, while InterpreterExec gets imported, so
1966 1967 byte-compilation saves time.
1967 1968
1968 1969 2004-06-25 Fernando Perez <fperez@colorado.edu>
1969 1970
1970 1971 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1971 1972 -NUM', which was recently broken.
1972 1973
1973 1974 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1974 1975 in multi-line input (but not !!, which doesn't make sense there).
1975 1976
1976 1977 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1977 1978 It's just too useful, and people can turn it off in the less
1978 1979 common cases where it's a problem.
1979 1980
1980 1981 2004-06-24 Fernando Perez <fperez@colorado.edu>
1981 1982
1982 1983 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1983 1984 special syntaxes (like alias calling) is now allied in multi-line
1984 1985 input. This is still _very_ experimental, but it's necessary for
1985 1986 efficient shell usage combining python looping syntax with system
1986 1987 calls. For now it's restricted to aliases, I don't think it
1987 1988 really even makes sense to have this for magics.
1988 1989
1989 1990 2004-06-23 Fernando Perez <fperez@colorado.edu>
1990 1991
1991 1992 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1992 1993 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1993 1994
1994 1995 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1995 1996 extensions under Windows (after code sent by Gary Bishop). The
1996 1997 extensions considered 'executable' are stored in IPython's rc
1997 1998 structure as win_exec_ext.
1998 1999
1999 2000 * IPython/genutils.py (shell): new function, like system() but
2000 2001 without return value. Very useful for interactive shell work.
2001 2002
2002 2003 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2003 2004 delete aliases.
2004 2005
2005 2006 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2006 2007 sure that the alias table doesn't contain python keywords.
2007 2008
2008 2009 2004-06-21 Fernando Perez <fperez@colorado.edu>
2009 2010
2010 2011 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2011 2012 non-existent items are found in $PATH. Reported by Thorsten.
2012 2013
2013 2014 2004-06-20 Fernando Perez <fperez@colorado.edu>
2014 2015
2015 2016 * IPython/iplib.py (complete): modified the completer so that the
2016 2017 order of priorities can be easily changed at runtime.
2017 2018
2018 2019 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2019 2020 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2020 2021
2021 2022 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2022 2023 expand Python variables prepended with $ in all system calls. The
2023 2024 same was done to InteractiveShell.handle_shell_escape. Now all
2024 2025 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2025 2026 expansion of python variables and expressions according to the
2026 2027 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2027 2028
2028 2029 Though PEP-215 has been rejected, a similar (but simpler) one
2029 2030 seems like it will go into Python 2.4, PEP-292 -
2030 2031 http://www.python.org/peps/pep-0292.html.
2031 2032
2032 2033 I'll keep the full syntax of PEP-215, since IPython has since the
2033 2034 start used Ka-Ping Yee's reference implementation discussed there
2034 2035 (Itpl), and I actually like the powerful semantics it offers.
2035 2036
2036 2037 In order to access normal shell variables, the $ has to be escaped
2037 2038 via an extra $. For example:
2038 2039
2039 2040 In [7]: PATH='a python variable'
2040 2041
2041 2042 In [8]: !echo $PATH
2042 2043 a python variable
2043 2044
2044 2045 In [9]: !echo $$PATH
2045 2046 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2046 2047
2047 2048 (Magic.parse_options): escape $ so the shell doesn't evaluate
2048 2049 things prematurely.
2049 2050
2050 2051 * IPython/iplib.py (InteractiveShell.call_alias): added the
2051 2052 ability for aliases to expand python variables via $.
2052 2053
2053 2054 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2054 2055 system, now there's a @rehash/@rehashx pair of magics. These work
2055 2056 like the csh rehash command, and can be invoked at any time. They
2056 2057 build a table of aliases to everything in the user's $PATH
2057 2058 (@rehash uses everything, @rehashx is slower but only adds
2058 2059 executable files). With this, the pysh.py-based shell profile can
2059 2060 now simply call rehash upon startup, and full access to all
2060 2061 programs in the user's path is obtained.
2061 2062
2062 2063 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2063 2064 functionality is now fully in place. I removed the old dynamic
2064 2065 code generation based approach, in favor of a much lighter one
2065 2066 based on a simple dict. The advantage is that this allows me to
2066 2067 now have thousands of aliases with negligible cost (unthinkable
2067 2068 with the old system).
2068 2069
2069 2070 2004-06-19 Fernando Perez <fperez@colorado.edu>
2070 2071
2071 2072 * IPython/iplib.py (__init__): extended MagicCompleter class to
2072 2073 also complete (last in priority) on user aliases.
2073 2074
2074 2075 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2075 2076 call to eval.
2076 2077 (ItplNS.__init__): Added a new class which functions like Itpl,
2077 2078 but allows configuring the namespace for the evaluation to occur
2078 2079 in.
2079 2080
2080 2081 2004-06-18 Fernando Perez <fperez@colorado.edu>
2081 2082
2082 2083 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2083 2084 better message when 'exit' or 'quit' are typed (a common newbie
2084 2085 confusion).
2085 2086
2086 2087 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2087 2088 check for Windows users.
2088 2089
2089 2090 * IPython/iplib.py (InteractiveShell.user_setup): removed
2090 2091 disabling of colors for Windows. I'll test at runtime and issue a
2091 2092 warning if Gary's readline isn't found, as to nudge users to
2092 2093 download it.
2093 2094
2094 2095 2004-06-16 Fernando Perez <fperez@colorado.edu>
2095 2096
2096 2097 * IPython/genutils.py (Stream.__init__): changed to print errors
2097 2098 to sys.stderr. I had a circular dependency here. Now it's
2098 2099 possible to run ipython as IDLE's shell (consider this pre-alpha,
2099 2100 since true stdout things end up in the starting terminal instead
2100 2101 of IDLE's out).
2101 2102
2102 2103 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2103 2104 users who haven't # updated their prompt_in2 definitions. Remove
2104 2105 eventually.
2105 2106 (multiple_replace): added credit to original ASPN recipe.
2106 2107
2107 2108 2004-06-15 Fernando Perez <fperez@colorado.edu>
2108 2109
2109 2110 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2110 2111 list of auto-defined aliases.
2111 2112
2112 2113 2004-06-13 Fernando Perez <fperez@colorado.edu>
2113 2114
2114 2115 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2115 2116 install was really requested (so setup.py can be used for other
2116 2117 things under Windows).
2117 2118
2118 2119 2004-06-10 Fernando Perez <fperez@colorado.edu>
2119 2120
2120 2121 * IPython/Logger.py (Logger.create_log): Manually remove any old
2121 2122 backup, since os.remove may fail under Windows. Fixes bug
2122 2123 reported by Thorsten.
2123 2124
2124 2125 2004-06-09 Fernando Perez <fperez@colorado.edu>
2125 2126
2126 2127 * examples/example-embed.py: fixed all references to %n (replaced
2127 2128 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2128 2129 for all examples and the manual as well.
2129 2130
2130 2131 2004-06-08 Fernando Perez <fperez@colorado.edu>
2131 2132
2132 2133 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2133 2134 alignment and color management. All 3 prompt subsystems now
2134 2135 inherit from BasePrompt.
2135 2136
2136 2137 * tools/release: updates for windows installer build and tag rpms
2137 2138 with python version (since paths are fixed).
2138 2139
2139 2140 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2140 2141 which will become eventually obsolete. Also fixed the default
2141 2142 prompt_in2 to use \D, so at least new users start with the correct
2142 2143 defaults.
2143 2144 WARNING: Users with existing ipythonrc files will need to apply
2144 2145 this fix manually!
2145 2146
2146 2147 * setup.py: make windows installer (.exe). This is finally the
2147 2148 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2148 2149 which I hadn't included because it required Python 2.3 (or recent
2149 2150 distutils).
2150 2151
2151 2152 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2152 2153 usage of new '\D' escape.
2153 2154
2154 2155 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2155 2156 lacks os.getuid())
2156 2157 (CachedOutput.set_colors): Added the ability to turn coloring
2157 2158 on/off with @colors even for manually defined prompt colors. It
2158 2159 uses a nasty global, but it works safely and via the generic color
2159 2160 handling mechanism.
2160 2161 (Prompt2.__init__): Introduced new escape '\D' for continuation
2161 2162 prompts. It represents the counter ('\#') as dots.
2162 2163 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2163 2164 need to update their ipythonrc files and replace '%n' with '\D' in
2164 2165 their prompt_in2 settings everywhere. Sorry, but there's
2165 2166 otherwise no clean way to get all prompts to properly align. The
2166 2167 ipythonrc shipped with IPython has been updated.
2167 2168
2168 2169 2004-06-07 Fernando Perez <fperez@colorado.edu>
2169 2170
2170 2171 * setup.py (isfile): Pass local_icons option to latex2html, so the
2171 2172 resulting HTML file is self-contained. Thanks to
2172 2173 dryice-AT-liu.com.cn for the tip.
2173 2174
2174 2175 * pysh.py: I created a new profile 'shell', which implements a
2175 2176 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2176 2177 system shell, nor will it become one anytime soon. It's mainly
2177 2178 meant to illustrate the use of the new flexible bash-like prompts.
2178 2179 I guess it could be used by hardy souls for true shell management,
2179 2180 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2180 2181 profile. This uses the InterpreterExec extension provided by
2181 2182 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2182 2183
2183 2184 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2184 2185 auto-align itself with the length of the previous input prompt
2185 2186 (taking into account the invisible color escapes).
2186 2187 (CachedOutput.__init__): Large restructuring of this class. Now
2187 2188 all three prompts (primary1, primary2, output) are proper objects,
2188 2189 managed by the 'parent' CachedOutput class. The code is still a
2189 2190 bit hackish (all prompts share state via a pointer to the cache),
2190 2191 but it's overall far cleaner than before.
2191 2192
2192 2193 * IPython/genutils.py (getoutputerror): modified to add verbose,
2193 2194 debug and header options. This makes the interface of all getout*
2194 2195 functions uniform.
2195 2196 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2196 2197
2197 2198 * IPython/Magic.py (Magic.default_option): added a function to
2198 2199 allow registering default options for any magic command. This
2199 2200 makes it easy to have profiles which customize the magics globally
2200 2201 for a certain use. The values set through this function are
2201 2202 picked up by the parse_options() method, which all magics should
2202 2203 use to parse their options.
2203 2204
2204 2205 * IPython/genutils.py (warn): modified the warnings framework to
2205 2206 use the Term I/O class. I'm trying to slowly unify all of
2206 2207 IPython's I/O operations to pass through Term.
2207 2208
2208 2209 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2209 2210 the secondary prompt to correctly match the length of the primary
2210 2211 one for any prompt. Now multi-line code will properly line up
2211 2212 even for path dependent prompts, such as the new ones available
2212 2213 via the prompt_specials.
2213 2214
2214 2215 2004-06-06 Fernando Perez <fperez@colorado.edu>
2215 2216
2216 2217 * IPython/Prompts.py (prompt_specials): Added the ability to have
2217 2218 bash-like special sequences in the prompts, which get
2218 2219 automatically expanded. Things like hostname, current working
2219 2220 directory and username are implemented already, but it's easy to
2220 2221 add more in the future. Thanks to a patch by W.J. van der Laan
2221 2222 <gnufnork-AT-hetdigitalegat.nl>
2222 2223 (prompt_specials): Added color support for prompt strings, so
2223 2224 users can define arbitrary color setups for their prompts.
2224 2225
2225 2226 2004-06-05 Fernando Perez <fperez@colorado.edu>
2226 2227
2227 2228 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2228 2229 code to load Gary Bishop's readline and configure it
2229 2230 automatically. Thanks to Gary for help on this.
2230 2231
2231 2232 2004-06-01 Fernando Perez <fperez@colorado.edu>
2232 2233
2233 2234 * IPython/Logger.py (Logger.create_log): fix bug for logging
2234 2235 with no filename (previous fix was incomplete).
2235 2236
2236 2237 2004-05-25 Fernando Perez <fperez@colorado.edu>
2237 2238
2238 2239 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2239 2240 parens would get passed to the shell.
2240 2241
2241 2242 2004-05-20 Fernando Perez <fperez@colorado.edu>
2242 2243
2243 2244 * IPython/Magic.py (Magic.magic_prun): changed default profile
2244 2245 sort order to 'time' (the more common profiling need).
2245 2246
2246 2247 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2247 2248 so that source code shown is guaranteed in sync with the file on
2248 2249 disk (also changed in psource). Similar fix to the one for
2249 2250 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2250 2251 <yann.ledu-AT-noos.fr>.
2251 2252
2252 2253 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2253 2254 with a single option would not be correctly parsed. Closes
2254 2255 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2255 2256 introduced in 0.6.0 (on 2004-05-06).
2256 2257
2257 2258 2004-05-13 *** Released version 0.6.0
2258 2259
2259 2260 2004-05-13 Fernando Perez <fperez@colorado.edu>
2260 2261
2261 2262 * debian/: Added debian/ directory to CVS, so that debian support
2262 2263 is publicly accessible. The debian package is maintained by Jack
2263 2264 Moffit <jack-AT-xiph.org>.
2264 2265
2265 2266 * Documentation: included the notes about an ipython-based system
2266 2267 shell (the hypothetical 'pysh') into the new_design.pdf document,
2267 2268 so that these ideas get distributed to users along with the
2268 2269 official documentation.
2269 2270
2270 2271 2004-05-10 Fernando Perez <fperez@colorado.edu>
2271 2272
2272 2273 * IPython/Logger.py (Logger.create_log): fix recently introduced
2273 2274 bug (misindented line) where logstart would fail when not given an
2274 2275 explicit filename.
2275 2276
2276 2277 2004-05-09 Fernando Perez <fperez@colorado.edu>
2277 2278
2278 2279 * IPython/Magic.py (Magic.parse_options): skip system call when
2279 2280 there are no options to look for. Faster, cleaner for the common
2280 2281 case.
2281 2282
2282 2283 * Documentation: many updates to the manual: describing Windows
2283 2284 support better, Gnuplot updates, credits, misc small stuff. Also
2284 2285 updated the new_design doc a bit.
2285 2286
2286 2287 2004-05-06 *** Released version 0.6.0.rc1
2287 2288
2288 2289 2004-05-06 Fernando Perez <fperez@colorado.edu>
2289 2290
2290 2291 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2291 2292 operations to use the vastly more efficient list/''.join() method.
2292 2293 (FormattedTB.text): Fix
2293 2294 http://www.scipy.net/roundup/ipython/issue12 - exception source
2294 2295 extract not updated after reload. Thanks to Mike Salib
2295 2296 <msalib-AT-mit.edu> for pinning the source of the problem.
2296 2297 Fortunately, the solution works inside ipython and doesn't require
2297 2298 any changes to python proper.
2298 2299
2299 2300 * IPython/Magic.py (Magic.parse_options): Improved to process the
2300 2301 argument list as a true shell would (by actually using the
2301 2302 underlying system shell). This way, all @magics automatically get
2302 2303 shell expansion for variables. Thanks to a comment by Alex
2303 2304 Schmolck.
2304 2305
2305 2306 2004-04-04 Fernando Perez <fperez@colorado.edu>
2306 2307
2307 2308 * IPython/iplib.py (InteractiveShell.interact): Added a special
2308 2309 trap for a debugger quit exception, which is basically impossible
2309 2310 to handle by normal mechanisms, given what pdb does to the stack.
2310 2311 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2311 2312
2312 2313 2004-04-03 Fernando Perez <fperez@colorado.edu>
2313 2314
2314 2315 * IPython/genutils.py (Term): Standardized the names of the Term
2315 2316 class streams to cin/cout/cerr, following C++ naming conventions
2316 2317 (I can't use in/out/err because 'in' is not a valid attribute
2317 2318 name).
2318 2319
2319 2320 * IPython/iplib.py (InteractiveShell.interact): don't increment
2320 2321 the prompt if there's no user input. By Daniel 'Dang' Griffith
2321 2322 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2322 2323 Francois Pinard.
2323 2324
2324 2325 2004-04-02 Fernando Perez <fperez@colorado.edu>
2325 2326
2326 2327 * IPython/genutils.py (Stream.__init__): Modified to survive at
2327 2328 least importing in contexts where stdin/out/err aren't true file
2328 2329 objects, such as PyCrust (they lack fileno() and mode). However,
2329 2330 the recovery facilities which rely on these things existing will
2330 2331 not work.
2331 2332
2332 2333 2004-04-01 Fernando Perez <fperez@colorado.edu>
2333 2334
2334 2335 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2335 2336 use the new getoutputerror() function, so it properly
2336 2337 distinguishes stdout/err.
2337 2338
2338 2339 * IPython/genutils.py (getoutputerror): added a function to
2339 2340 capture separately the standard output and error of a command.
2340 2341 After a comment from dang on the mailing lists. This code is
2341 2342 basically a modified version of commands.getstatusoutput(), from
2342 2343 the standard library.
2343 2344
2344 2345 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2345 2346 '!!' as a special syntax (shorthand) to access @sx.
2346 2347
2347 2348 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2348 2349 command and return its output as a list split on '\n'.
2349 2350
2350 2351 2004-03-31 Fernando Perez <fperez@colorado.edu>
2351 2352
2352 2353 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2353 2354 method to dictionaries used as FakeModule instances if they lack
2354 2355 it. At least pydoc in python2.3 breaks for runtime-defined
2355 2356 functions without this hack. At some point I need to _really_
2356 2357 understand what FakeModule is doing, because it's a gross hack.
2357 2358 But it solves Arnd's problem for now...
2358 2359
2359 2360 2004-02-27 Fernando Perez <fperez@colorado.edu>
2360 2361
2361 2362 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2362 2363 mode would behave erratically. Also increased the number of
2363 2364 possible logs in rotate mod to 999. Thanks to Rod Holland
2364 2365 <rhh@StructureLABS.com> for the report and fixes.
2365 2366
2366 2367 2004-02-26 Fernando Perez <fperez@colorado.edu>
2367 2368
2368 2369 * IPython/genutils.py (page): Check that the curses module really
2369 2370 has the initscr attribute before trying to use it. For some
2370 2371 reason, the Solaris curses module is missing this. I think this
2371 2372 should be considered a Solaris python bug, but I'm not sure.
2372 2373
2373 2374 2004-01-17 Fernando Perez <fperez@colorado.edu>
2374 2375
2375 2376 * IPython/genutils.py (Stream.__init__): Changes to try to make
2376 2377 ipython robust against stdin/out/err being closed by the user.
2377 2378 This is 'user error' (and blocks a normal python session, at least
2378 2379 the stdout case). However, Ipython should be able to survive such
2379 2380 instances of abuse as gracefully as possible. To simplify the
2380 2381 coding and maintain compatibility with Gary Bishop's Term
2381 2382 contributions, I've made use of classmethods for this. I think
2382 2383 this introduces a dependency on python 2.2.
2383 2384
2384 2385 2004-01-13 Fernando Perez <fperez@colorado.edu>
2385 2386
2386 2387 * IPython/numutils.py (exp_safe): simplified the code a bit and
2387 2388 removed the need for importing the kinds module altogether.
2388 2389
2389 2390 2004-01-06 Fernando Perez <fperez@colorado.edu>
2390 2391
2391 2392 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2392 2393 a magic function instead, after some community feedback. No
2393 2394 special syntax will exist for it, but its name is deliberately
2394 2395 very short.
2395 2396
2396 2397 2003-12-20 Fernando Perez <fperez@colorado.edu>
2397 2398
2398 2399 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2399 2400 new functionality, to automagically assign the result of a shell
2400 2401 command to a variable. I'll solicit some community feedback on
2401 2402 this before making it permanent.
2402 2403
2403 2404 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2404 2405 requested about callables for which inspect couldn't obtain a
2405 2406 proper argspec. Thanks to a crash report sent by Etienne
2406 2407 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2407 2408
2408 2409 2003-12-09 Fernando Perez <fperez@colorado.edu>
2409 2410
2410 2411 * IPython/genutils.py (page): patch for the pager to work across
2411 2412 various versions of Windows. By Gary Bishop.
2412 2413
2413 2414 2003-12-04 Fernando Perez <fperez@colorado.edu>
2414 2415
2415 2416 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2416 2417 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2417 2418 While I tested this and it looks ok, there may still be corner
2418 2419 cases I've missed.
2419 2420
2420 2421 2003-12-01 Fernando Perez <fperez@colorado.edu>
2421 2422
2422 2423 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2423 2424 where a line like 'p,q=1,2' would fail because the automagic
2424 2425 system would be triggered for @p.
2425 2426
2426 2427 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2427 2428 cleanups, code unmodified.
2428 2429
2429 2430 * IPython/genutils.py (Term): added a class for IPython to handle
2430 2431 output. In most cases it will just be a proxy for stdout/err, but
2431 2432 having this allows modifications to be made for some platforms,
2432 2433 such as handling color escapes under Windows. All of this code
2433 2434 was contributed by Gary Bishop, with minor modifications by me.
2434 2435 The actual changes affect many files.
2435 2436
2436 2437 2003-11-30 Fernando Perez <fperez@colorado.edu>
2437 2438
2438 2439 * IPython/iplib.py (file_matches): new completion code, courtesy
2439 2440 of Jeff Collins. This enables filename completion again under
2440 2441 python 2.3, which disabled it at the C level.
2441 2442
2442 2443 2003-11-11 Fernando Perez <fperez@colorado.edu>
2443 2444
2444 2445 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2445 2446 for Numeric.array(map(...)), but often convenient.
2446 2447
2447 2448 2003-11-05 Fernando Perez <fperez@colorado.edu>
2448 2449
2449 2450 * IPython/numutils.py (frange): Changed a call from int() to
2450 2451 int(round()) to prevent a problem reported with arange() in the
2451 2452 numpy list.
2452 2453
2453 2454 2003-10-06 Fernando Perez <fperez@colorado.edu>
2454 2455
2455 2456 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2456 2457 prevent crashes if sys lacks an argv attribute (it happens with
2457 2458 embedded interpreters which build a bare-bones sys module).
2458 2459 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2459 2460
2460 2461 2003-09-24 Fernando Perez <fperez@colorado.edu>
2461 2462
2462 2463 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2463 2464 to protect against poorly written user objects where __getattr__
2464 2465 raises exceptions other than AttributeError. Thanks to a bug
2465 2466 report by Oliver Sander <osander-AT-gmx.de>.
2466 2467
2467 2468 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2468 2469 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2469 2470
2470 2471 2003-09-09 Fernando Perez <fperez@colorado.edu>
2471 2472
2472 2473 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2473 2474 unpacking a list whith a callable as first element would
2474 2475 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2475 2476 Collins.
2476 2477
2477 2478 2003-08-25 *** Released version 0.5.0
2478 2479
2479 2480 2003-08-22 Fernando Perez <fperez@colorado.edu>
2480 2481
2481 2482 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2482 2483 improperly defined user exceptions. Thanks to feedback from Mark
2483 2484 Russell <mrussell-AT-verio.net>.
2484 2485
2485 2486 2003-08-20 Fernando Perez <fperez@colorado.edu>
2486 2487
2487 2488 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2488 2489 printing so that it would print multi-line string forms starting
2489 2490 with a new line. This way the formatting is better respected for
2490 2491 objects which work hard to make nice string forms.
2491 2492
2492 2493 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2493 2494 autocall would overtake data access for objects with both
2494 2495 __getitem__ and __call__.
2495 2496
2496 2497 2003-08-19 *** Released version 0.5.0-rc1
2497 2498
2498 2499 2003-08-19 Fernando Perez <fperez@colorado.edu>
2499 2500
2500 2501 * IPython/deep_reload.py (load_tail): single tiny change here
2501 2502 seems to fix the long-standing bug of dreload() failing to work
2502 2503 for dotted names. But this module is pretty tricky, so I may have
2503 2504 missed some subtlety. Needs more testing!.
2504 2505
2505 2506 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2506 2507 exceptions which have badly implemented __str__ methods.
2507 2508 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2508 2509 which I've been getting reports about from Python 2.3 users. I
2509 2510 wish I had a simple test case to reproduce the problem, so I could
2510 2511 either write a cleaner workaround or file a bug report if
2511 2512 necessary.
2512 2513
2513 2514 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2514 2515 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2515 2516 a bug report by Tjabo Kloppenburg.
2516 2517
2517 2518 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2518 2519 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2519 2520 seems rather unstable. Thanks to a bug report by Tjabo
2520 2521 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2521 2522
2522 2523 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2523 2524 this out soon because of the critical fixes in the inner loop for
2524 2525 generators.
2525 2526
2526 2527 * IPython/Magic.py (Magic.getargspec): removed. This (and
2527 2528 _get_def) have been obsoleted by OInspect for a long time, I
2528 2529 hadn't noticed that they were dead code.
2529 2530 (Magic._ofind): restored _ofind functionality for a few literals
2530 2531 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2531 2532 for things like "hello".capitalize?, since that would require a
2532 2533 potentially dangerous eval() again.
2533 2534
2534 2535 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2535 2536 logic a bit more to clean up the escapes handling and minimize the
2536 2537 use of _ofind to only necessary cases. The interactive 'feel' of
2537 2538 IPython should have improved quite a bit with the changes in
2538 2539 _prefilter and _ofind (besides being far safer than before).
2539 2540
2540 2541 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2541 2542 obscure, never reported). Edit would fail to find the object to
2542 2543 edit under some circumstances.
2543 2544 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2544 2545 which were causing double-calling of generators. Those eval calls
2545 2546 were _very_ dangerous, since code with side effects could be
2546 2547 triggered. As they say, 'eval is evil'... These were the
2547 2548 nastiest evals in IPython. Besides, _ofind is now far simpler,
2548 2549 and it should also be quite a bit faster. Its use of inspect is
2549 2550 also safer, so perhaps some of the inspect-related crashes I've
2550 2551 seen lately with Python 2.3 might be taken care of. That will
2551 2552 need more testing.
2552 2553
2553 2554 2003-08-17 Fernando Perez <fperez@colorado.edu>
2554 2555
2555 2556 * IPython/iplib.py (InteractiveShell._prefilter): significant
2556 2557 simplifications to the logic for handling user escapes. Faster
2557 2558 and simpler code.
2558 2559
2559 2560 2003-08-14 Fernando Perez <fperez@colorado.edu>
2560 2561
2561 2562 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2562 2563 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2563 2564 but it should be quite a bit faster. And the recursive version
2564 2565 generated O(log N) intermediate storage for all rank>1 arrays,
2565 2566 even if they were contiguous.
2566 2567 (l1norm): Added this function.
2567 2568 (norm): Added this function for arbitrary norms (including
2568 2569 l-infinity). l1 and l2 are still special cases for convenience
2569 2570 and speed.
2570 2571
2571 2572 2003-08-03 Fernando Perez <fperez@colorado.edu>
2572 2573
2573 2574 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2574 2575 exceptions, which now raise PendingDeprecationWarnings in Python
2575 2576 2.3. There were some in Magic and some in Gnuplot2.
2576 2577
2577 2578 2003-06-30 Fernando Perez <fperez@colorado.edu>
2578 2579
2579 2580 * IPython/genutils.py (page): modified to call curses only for
2580 2581 terminals where TERM=='xterm'. After problems under many other
2581 2582 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2582 2583
2583 2584 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2584 2585 would be triggered when readline was absent. This was just an old
2585 2586 debugging statement I'd forgotten to take out.
2586 2587
2587 2588 2003-06-20 Fernando Perez <fperez@colorado.edu>
2588 2589
2589 2590 * IPython/genutils.py (clock): modified to return only user time
2590 2591 (not counting system time), after a discussion on scipy. While
2591 2592 system time may be a useful quantity occasionally, it may much
2592 2593 more easily be skewed by occasional swapping or other similar
2593 2594 activity.
2594 2595
2595 2596 2003-06-05 Fernando Perez <fperez@colorado.edu>
2596 2597
2597 2598 * IPython/numutils.py (identity): new function, for building
2598 2599 arbitrary rank Kronecker deltas (mostly backwards compatible with
2599 2600 Numeric.identity)
2600 2601
2601 2602 2003-06-03 Fernando Perez <fperez@colorado.edu>
2602 2603
2603 2604 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2604 2605 arguments passed to magics with spaces, to allow trailing '\' to
2605 2606 work normally (mainly for Windows users).
2606 2607
2607 2608 2003-05-29 Fernando Perez <fperez@colorado.edu>
2608 2609
2609 2610 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2610 2611 instead of pydoc.help. This fixes a bizarre behavior where
2611 2612 printing '%s' % locals() would trigger the help system. Now
2612 2613 ipython behaves like normal python does.
2613 2614
2614 2615 Note that if one does 'from pydoc import help', the bizarre
2615 2616 behavior returns, but this will also happen in normal python, so
2616 2617 it's not an ipython bug anymore (it has to do with how pydoc.help
2617 2618 is implemented).
2618 2619
2619 2620 2003-05-22 Fernando Perez <fperez@colorado.edu>
2620 2621
2621 2622 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2622 2623 return [] instead of None when nothing matches, also match to end
2623 2624 of line. Patch by Gary Bishop.
2624 2625
2625 2626 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2626 2627 protection as before, for files passed on the command line. This
2627 2628 prevents the CrashHandler from kicking in if user files call into
2628 2629 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2629 2630 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2630 2631
2631 2632 2003-05-20 *** Released version 0.4.0
2632 2633
2633 2634 2003-05-20 Fernando Perez <fperez@colorado.edu>
2634 2635
2635 2636 * setup.py: added support for manpages. It's a bit hackish b/c of
2636 2637 a bug in the way the bdist_rpm distutils target handles gzipped
2637 2638 manpages, but it works. After a patch by Jack.
2638 2639
2639 2640 2003-05-19 Fernando Perez <fperez@colorado.edu>
2640 2641
2641 2642 * IPython/numutils.py: added a mockup of the kinds module, since
2642 2643 it was recently removed from Numeric. This way, numutils will
2643 2644 work for all users even if they are missing kinds.
2644 2645
2645 2646 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2646 2647 failure, which can occur with SWIG-wrapped extensions. After a
2647 2648 crash report from Prabhu.
2648 2649
2649 2650 2003-05-16 Fernando Perez <fperez@colorado.edu>
2650 2651
2651 2652 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2652 2653 protect ipython from user code which may call directly
2653 2654 sys.excepthook (this looks like an ipython crash to the user, even
2654 2655 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2655 2656 This is especially important to help users of WxWindows, but may
2656 2657 also be useful in other cases.
2657 2658
2658 2659 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2659 2660 an optional tb_offset to be specified, and to preserve exception
2660 2661 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2661 2662
2662 2663 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2663 2664
2664 2665 2003-05-15 Fernando Perez <fperez@colorado.edu>
2665 2666
2666 2667 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2667 2668 installing for a new user under Windows.
2668 2669
2669 2670 2003-05-12 Fernando Perez <fperez@colorado.edu>
2670 2671
2671 2672 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2672 2673 handler for Emacs comint-based lines. Currently it doesn't do
2673 2674 much (but importantly, it doesn't update the history cache). In
2674 2675 the future it may be expanded if Alex needs more functionality
2675 2676 there.
2676 2677
2677 2678 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2678 2679 info to crash reports.
2679 2680
2680 2681 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2681 2682 just like Python's -c. Also fixed crash with invalid -color
2682 2683 option value at startup. Thanks to Will French
2683 2684 <wfrench-AT-bestweb.net> for the bug report.
2684 2685
2685 2686 2003-05-09 Fernando Perez <fperez@colorado.edu>
2686 2687
2687 2688 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2688 2689 to EvalDict (it's a mapping, after all) and simplified its code
2689 2690 quite a bit, after a nice discussion on c.l.py where Gustavo
2690 2691 Córdova <gcordova-AT-sismex.com> suggested the new version.
2691 2692
2692 2693 2003-04-30 Fernando Perez <fperez@colorado.edu>
2693 2694
2694 2695 * IPython/genutils.py (timings_out): modified it to reduce its
2695 2696 overhead in the common reps==1 case.
2696 2697
2697 2698 2003-04-29 Fernando Perez <fperez@colorado.edu>
2698 2699
2699 2700 * IPython/genutils.py (timings_out): Modified to use the resource
2700 2701 module, which avoids the wraparound problems of time.clock().
2701 2702
2702 2703 2003-04-17 *** Released version 0.2.15pre4
2703 2704
2704 2705 2003-04-17 Fernando Perez <fperez@colorado.edu>
2705 2706
2706 2707 * setup.py (scriptfiles): Split windows-specific stuff over to a
2707 2708 separate file, in an attempt to have a Windows GUI installer.
2708 2709 That didn't work, but part of the groundwork is done.
2709 2710
2710 2711 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2711 2712 indent/unindent with 4 spaces. Particularly useful in combination
2712 2713 with the new auto-indent option.
2713 2714
2714 2715 2003-04-16 Fernando Perez <fperez@colorado.edu>
2715 2716
2716 2717 * IPython/Magic.py: various replacements of self.rc for
2717 2718 self.shell.rc. A lot more remains to be done to fully disentangle
2718 2719 this class from the main Shell class.
2719 2720
2720 2721 * IPython/GnuplotRuntime.py: added checks for mouse support so
2721 2722 that we don't try to enable it if the current gnuplot doesn't
2722 2723 really support it. Also added checks so that we don't try to
2723 2724 enable persist under Windows (where Gnuplot doesn't recognize the
2724 2725 option).
2725 2726
2726 2727 * IPython/iplib.py (InteractiveShell.interact): Added optional
2727 2728 auto-indenting code, after a patch by King C. Shu
2728 2729 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2729 2730 get along well with pasting indented code. If I ever figure out
2730 2731 how to make that part go well, it will become on by default.
2731 2732
2732 2733 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2733 2734 crash ipython if there was an unmatched '%' in the user's prompt
2734 2735 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2735 2736
2736 2737 * IPython/iplib.py (InteractiveShell.interact): removed the
2737 2738 ability to ask the user whether he wants to crash or not at the
2738 2739 'last line' exception handler. Calling functions at that point
2739 2740 changes the stack, and the error reports would have incorrect
2740 2741 tracebacks.
2741 2742
2742 2743 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2743 2744 pass through a peger a pretty-printed form of any object. After a
2744 2745 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2745 2746
2746 2747 2003-04-14 Fernando Perez <fperez@colorado.edu>
2747 2748
2748 2749 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2749 2750 all files in ~ would be modified at first install (instead of
2750 2751 ~/.ipython). This could be potentially disastrous, as the
2751 2752 modification (make line-endings native) could damage binary files.
2752 2753
2753 2754 2003-04-10 Fernando Perez <fperez@colorado.edu>
2754 2755
2755 2756 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2756 2757 handle only lines which are invalid python. This now means that
2757 2758 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2758 2759 for the bug report.
2759 2760
2760 2761 2003-04-01 Fernando Perez <fperez@colorado.edu>
2761 2762
2762 2763 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2763 2764 where failing to set sys.last_traceback would crash pdb.pm().
2764 2765 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2765 2766 report.
2766 2767
2767 2768 2003-03-25 Fernando Perez <fperez@colorado.edu>
2768 2769
2769 2770 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2770 2771 before printing it (it had a lot of spurious blank lines at the
2771 2772 end).
2772 2773
2773 2774 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2774 2775 output would be sent 21 times! Obviously people don't use this
2775 2776 too often, or I would have heard about it.
2776 2777
2777 2778 2003-03-24 Fernando Perez <fperez@colorado.edu>
2778 2779
2779 2780 * setup.py (scriptfiles): renamed the data_files parameter from
2780 2781 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2781 2782 for the patch.
2782 2783
2783 2784 2003-03-20 Fernando Perez <fperez@colorado.edu>
2784 2785
2785 2786 * IPython/genutils.py (error): added error() and fatal()
2786 2787 functions.
2787 2788
2788 2789 2003-03-18 *** Released version 0.2.15pre3
2789 2790
2790 2791 2003-03-18 Fernando Perez <fperez@colorado.edu>
2791 2792
2792 2793 * setupext/install_data_ext.py
2793 2794 (install_data_ext.initialize_options): Class contributed by Jack
2794 2795 Moffit for fixing the old distutils hack. He is sending this to
2795 2796 the distutils folks so in the future we may not need it as a
2796 2797 private fix.
2797 2798
2798 2799 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2799 2800 changes for Debian packaging. See his patch for full details.
2800 2801 The old distutils hack of making the ipythonrc* files carry a
2801 2802 bogus .py extension is gone, at last. Examples were moved to a
2802 2803 separate subdir under doc/, and the separate executable scripts
2803 2804 now live in their own directory. Overall a great cleanup. The
2804 2805 manual was updated to use the new files, and setup.py has been
2805 2806 fixed for this setup.
2806 2807
2807 2808 * IPython/PyColorize.py (Parser.usage): made non-executable and
2808 2809 created a pycolor wrapper around it to be included as a script.
2809 2810
2810 2811 2003-03-12 *** Released version 0.2.15pre2
2811 2812
2812 2813 2003-03-12 Fernando Perez <fperez@colorado.edu>
2813 2814
2814 2815 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2815 2816 long-standing problem with garbage characters in some terminals.
2816 2817 The issue was really that the \001 and \002 escapes must _only_ be
2817 2818 passed to input prompts (which call readline), but _never_ to
2818 2819 normal text to be printed on screen. I changed ColorANSI to have
2819 2820 two classes: TermColors and InputTermColors, each with the
2820 2821 appropriate escapes for input prompts or normal text. The code in
2821 2822 Prompts.py got slightly more complicated, but this very old and
2822 2823 annoying bug is finally fixed.
2823 2824
2824 2825 All the credit for nailing down the real origin of this problem
2825 2826 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2826 2827 *Many* thanks to him for spending quite a bit of effort on this.
2827 2828
2828 2829 2003-03-05 *** Released version 0.2.15pre1
2829 2830
2830 2831 2003-03-03 Fernando Perez <fperez@colorado.edu>
2831 2832
2832 2833 * IPython/FakeModule.py: Moved the former _FakeModule to a
2833 2834 separate file, because it's also needed by Magic (to fix a similar
2834 2835 pickle-related issue in @run).
2835 2836
2836 2837 2003-03-02 Fernando Perez <fperez@colorado.edu>
2837 2838
2838 2839 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2839 2840 the autocall option at runtime.
2840 2841 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2841 2842 across Magic.py to start separating Magic from InteractiveShell.
2842 2843 (Magic._ofind): Fixed to return proper namespace for dotted
2843 2844 names. Before, a dotted name would always return 'not currently
2844 2845 defined', because it would find the 'parent'. s.x would be found,
2845 2846 but since 'x' isn't defined by itself, it would get confused.
2846 2847 (Magic.magic_run): Fixed pickling problems reported by Ralf
2847 2848 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2848 2849 that I'd used when Mike Heeter reported similar issues at the
2849 2850 top-level, but now for @run. It boils down to injecting the
2850 2851 namespace where code is being executed with something that looks
2851 2852 enough like a module to fool pickle.dump(). Since a pickle stores
2852 2853 a named reference to the importing module, we need this for
2853 2854 pickles to save something sensible.
2854 2855
2855 2856 * IPython/ipmaker.py (make_IPython): added an autocall option.
2856 2857
2857 2858 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2858 2859 the auto-eval code. Now autocalling is an option, and the code is
2859 2860 also vastly safer. There is no more eval() involved at all.
2860 2861
2861 2862 2003-03-01 Fernando Perez <fperez@colorado.edu>
2862 2863
2863 2864 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2864 2865 dict with named keys instead of a tuple.
2865 2866
2866 2867 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2867 2868
2868 2869 * setup.py (make_shortcut): Fixed message about directories
2869 2870 created during Windows installation (the directories were ok, just
2870 2871 the printed message was misleading). Thanks to Chris Liechti
2871 2872 <cliechti-AT-gmx.net> for the heads up.
2872 2873
2873 2874 2003-02-21 Fernando Perez <fperez@colorado.edu>
2874 2875
2875 2876 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2876 2877 of ValueError exception when checking for auto-execution. This
2877 2878 one is raised by things like Numeric arrays arr.flat when the
2878 2879 array is non-contiguous.
2879 2880
2880 2881 2003-01-31 Fernando Perez <fperez@colorado.edu>
2881 2882
2882 2883 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2883 2884 not return any value at all (even though the command would get
2884 2885 executed).
2885 2886 (xsys): Flush stdout right after printing the command to ensure
2886 2887 proper ordering of commands and command output in the total
2887 2888 output.
2888 2889 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2889 2890 system/getoutput as defaults. The old ones are kept for
2890 2891 compatibility reasons, so no code which uses this library needs
2891 2892 changing.
2892 2893
2893 2894 2003-01-27 *** Released version 0.2.14
2894 2895
2895 2896 2003-01-25 Fernando Perez <fperez@colorado.edu>
2896 2897
2897 2898 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2898 2899 functions defined in previous edit sessions could not be re-edited
2899 2900 (because the temp files were immediately removed). Now temp files
2900 2901 are removed only at IPython's exit.
2901 2902 (Magic.magic_run): Improved @run to perform shell-like expansions
2902 2903 on its arguments (~users and $VARS). With this, @run becomes more
2903 2904 like a normal command-line.
2904 2905
2905 2906 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2906 2907 bugs related to embedding and cleaned up that code. A fairly
2907 2908 important one was the impossibility to access the global namespace
2908 2909 through the embedded IPython (only local variables were visible).
2909 2910
2910 2911 2003-01-14 Fernando Perez <fperez@colorado.edu>
2911 2912
2912 2913 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2913 2914 auto-calling to be a bit more conservative. Now it doesn't get
2914 2915 triggered if any of '!=()<>' are in the rest of the input line, to
2915 2916 allow comparing callables. Thanks to Alex for the heads up.
2916 2917
2917 2918 2003-01-07 Fernando Perez <fperez@colorado.edu>
2918 2919
2919 2920 * IPython/genutils.py (page): fixed estimation of the number of
2920 2921 lines in a string to be paged to simply count newlines. This
2921 2922 prevents over-guessing due to embedded escape sequences. A better
2922 2923 long-term solution would involve stripping out the control chars
2923 2924 for the count, but it's potentially so expensive I just don't
2924 2925 think it's worth doing.
2925 2926
2926 2927 2002-12-19 *** Released version 0.2.14pre50
2927 2928
2928 2929 2002-12-19 Fernando Perez <fperez@colorado.edu>
2929 2930
2930 2931 * tools/release (version): Changed release scripts to inform
2931 2932 Andrea and build a NEWS file with a list of recent changes.
2932 2933
2933 2934 * IPython/ColorANSI.py (__all__): changed terminal detection
2934 2935 code. Seems to work better for xterms without breaking
2935 2936 konsole. Will need more testing to determine if WinXP and Mac OSX
2936 2937 also work ok.
2937 2938
2938 2939 2002-12-18 *** Released version 0.2.14pre49
2939 2940
2940 2941 2002-12-18 Fernando Perez <fperez@colorado.edu>
2941 2942
2942 2943 * Docs: added new info about Mac OSX, from Andrea.
2943 2944
2944 2945 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2945 2946 allow direct plotting of python strings whose format is the same
2946 2947 of gnuplot data files.
2947 2948
2948 2949 2002-12-16 Fernando Perez <fperez@colorado.edu>
2949 2950
2950 2951 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2951 2952 value of exit question to be acknowledged.
2952 2953
2953 2954 2002-12-03 Fernando Perez <fperez@colorado.edu>
2954 2955
2955 2956 * IPython/ipmaker.py: removed generators, which had been added
2956 2957 by mistake in an earlier debugging run. This was causing trouble
2957 2958 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2958 2959 for pointing this out.
2959 2960
2960 2961 2002-11-17 Fernando Perez <fperez@colorado.edu>
2961 2962
2962 2963 * Manual: updated the Gnuplot section.
2963 2964
2964 2965 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2965 2966 a much better split of what goes in Runtime and what goes in
2966 2967 Interactive.
2967 2968
2968 2969 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2969 2970 being imported from iplib.
2970 2971
2971 2972 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2972 2973 for command-passing. Now the global Gnuplot instance is called
2973 2974 'gp' instead of 'g', which was really a far too fragile and
2974 2975 common name.
2975 2976
2976 2977 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2977 2978 bounding boxes generated by Gnuplot for square plots.
2978 2979
2979 2980 * IPython/genutils.py (popkey): new function added. I should
2980 2981 suggest this on c.l.py as a dict method, it seems useful.
2981 2982
2982 2983 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2983 2984 to transparently handle PostScript generation. MUCH better than
2984 2985 the previous plot_eps/replot_eps (which I removed now). The code
2985 2986 is also fairly clean and well documented now (including
2986 2987 docstrings).
2987 2988
2988 2989 2002-11-13 Fernando Perez <fperez@colorado.edu>
2989 2990
2990 2991 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2991 2992 (inconsistent with options).
2992 2993
2993 2994 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2994 2995 manually disabled, I don't know why. Fixed it.
2995 2996 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2996 2997 eps output.
2997 2998
2998 2999 2002-11-12 Fernando Perez <fperez@colorado.edu>
2999 3000
3000 3001 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3001 3002 don't propagate up to caller. Fixes crash reported by François
3002 3003 Pinard.
3003 3004
3004 3005 2002-11-09 Fernando Perez <fperez@colorado.edu>
3005 3006
3006 3007 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3007 3008 history file for new users.
3008 3009 (make_IPython): fixed bug where initial install would leave the
3009 3010 user running in the .ipython dir.
3010 3011 (make_IPython): fixed bug where config dir .ipython would be
3011 3012 created regardless of the given -ipythondir option. Thanks to Cory
3012 3013 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3013 3014
3014 3015 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3015 3016 type confirmations. Will need to use it in all of IPython's code
3016 3017 consistently.
3017 3018
3018 3019 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3019 3020 context to print 31 lines instead of the default 5. This will make
3020 3021 the crash reports extremely detailed in case the problem is in
3021 3022 libraries I don't have access to.
3022 3023
3023 3024 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3024 3025 line of defense' code to still crash, but giving users fair
3025 3026 warning. I don't want internal errors to go unreported: if there's
3026 3027 an internal problem, IPython should crash and generate a full
3027 3028 report.
3028 3029
3029 3030 2002-11-08 Fernando Perez <fperez@colorado.edu>
3030 3031
3031 3032 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3032 3033 otherwise uncaught exceptions which can appear if people set
3033 3034 sys.stdout to something badly broken. Thanks to a crash report
3034 3035 from henni-AT-mail.brainbot.com.
3035 3036
3036 3037 2002-11-04 Fernando Perez <fperez@colorado.edu>
3037 3038
3038 3039 * IPython/iplib.py (InteractiveShell.interact): added
3039 3040 __IPYTHON__active to the builtins. It's a flag which goes on when
3040 3041 the interaction starts and goes off again when it stops. This
3041 3042 allows embedding code to detect being inside IPython. Before this
3042 3043 was done via __IPYTHON__, but that only shows that an IPython
3043 3044 instance has been created.
3044 3045
3045 3046 * IPython/Magic.py (Magic.magic_env): I realized that in a
3046 3047 UserDict, instance.data holds the data as a normal dict. So I
3047 3048 modified @env to return os.environ.data instead of rebuilding a
3048 3049 dict by hand.
3049 3050
3050 3051 2002-11-02 Fernando Perez <fperez@colorado.edu>
3051 3052
3052 3053 * IPython/genutils.py (warn): changed so that level 1 prints no
3053 3054 header. Level 2 is now the default (with 'WARNING' header, as
3054 3055 before). I think I tracked all places where changes were needed in
3055 3056 IPython, but outside code using the old level numbering may have
3056 3057 broken.
3057 3058
3058 3059 * IPython/iplib.py (InteractiveShell.runcode): added this to
3059 3060 handle the tracebacks in SystemExit traps correctly. The previous
3060 3061 code (through interact) was printing more of the stack than
3061 3062 necessary, showing IPython internal code to the user.
3062 3063
3063 3064 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3064 3065 default. Now that the default at the confirmation prompt is yes,
3065 3066 it's not so intrusive. François' argument that ipython sessions
3066 3067 tend to be complex enough not to lose them from an accidental C-d,
3067 3068 is a valid one.
3068 3069
3069 3070 * IPython/iplib.py (InteractiveShell.interact): added a
3070 3071 showtraceback() call to the SystemExit trap, and modified the exit
3071 3072 confirmation to have yes as the default.
3072 3073
3073 3074 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3074 3075 this file. It's been gone from the code for a long time, this was
3075 3076 simply leftover junk.
3076 3077
3077 3078 2002-11-01 Fernando Perez <fperez@colorado.edu>
3078 3079
3079 3080 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3080 3081 added. If set, IPython now traps EOF and asks for
3081 3082 confirmation. After a request by François Pinard.
3082 3083
3083 3084 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3084 3085 of @abort, and with a new (better) mechanism for handling the
3085 3086 exceptions.
3086 3087
3087 3088 2002-10-27 Fernando Perez <fperez@colorado.edu>
3088 3089
3089 3090 * IPython/usage.py (__doc__): updated the --help information and
3090 3091 the ipythonrc file to indicate that -log generates
3091 3092 ./ipython.log. Also fixed the corresponding info in @logstart.
3092 3093 This and several other fixes in the manuals thanks to reports by
3093 3094 François Pinard <pinard-AT-iro.umontreal.ca>.
3094 3095
3095 3096 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3096 3097 refer to @logstart (instead of @log, which doesn't exist).
3097 3098
3098 3099 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3099 3100 AttributeError crash. Thanks to Christopher Armstrong
3100 3101 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3101 3102 introduced recently (in 0.2.14pre37) with the fix to the eval
3102 3103 problem mentioned below.
3103 3104
3104 3105 2002-10-17 Fernando Perez <fperez@colorado.edu>
3105 3106
3106 3107 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3107 3108 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3108 3109
3109 3110 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3110 3111 this function to fix a problem reported by Alex Schmolck. He saw
3111 3112 it with list comprehensions and generators, which were getting
3112 3113 called twice. The real problem was an 'eval' call in testing for
3113 3114 automagic which was evaluating the input line silently.
3114 3115
3115 3116 This is a potentially very nasty bug, if the input has side
3116 3117 effects which must not be repeated. The code is much cleaner now,
3117 3118 without any blanket 'except' left and with a regexp test for
3118 3119 actual function names.
3119 3120
3120 3121 But an eval remains, which I'm not fully comfortable with. I just
3121 3122 don't know how to find out if an expression could be a callable in
3122 3123 the user's namespace without doing an eval on the string. However
3123 3124 that string is now much more strictly checked so that no code
3124 3125 slips by, so the eval should only happen for things that can
3125 3126 really be only function/method names.
3126 3127
3127 3128 2002-10-15 Fernando Perez <fperez@colorado.edu>
3128 3129
3129 3130 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3130 3131 OSX information to main manual, removed README_Mac_OSX file from
3131 3132 distribution. Also updated credits for recent additions.
3132 3133
3133 3134 2002-10-10 Fernando Perez <fperez@colorado.edu>
3134 3135
3135 3136 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3136 3137 terminal-related issues. Many thanks to Andrea Riciputi
3137 3138 <andrea.riciputi-AT-libero.it> for writing it.
3138 3139
3139 3140 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3140 3141 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3141 3142
3142 3143 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3143 3144 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3144 3145 <syver-en-AT-online.no> who both submitted patches for this problem.
3145 3146
3146 3147 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3147 3148 global embedding to make sure that things don't overwrite user
3148 3149 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3149 3150
3150 3151 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3151 3152 compatibility. Thanks to Hayden Callow
3152 3153 <h.callow-AT-elec.canterbury.ac.nz>
3153 3154
3154 3155 2002-10-04 Fernando Perez <fperez@colorado.edu>
3155 3156
3156 3157 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3157 3158 Gnuplot.File objects.
3158 3159
3159 3160 2002-07-23 Fernando Perez <fperez@colorado.edu>
3160 3161
3161 3162 * IPython/genutils.py (timing): Added timings() and timing() for
3162 3163 quick access to the most commonly needed data, the execution
3163 3164 times. Old timing() renamed to timings_out().
3164 3165
3165 3166 2002-07-18 Fernando Perez <fperez@colorado.edu>
3166 3167
3167 3168 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3168 3169 bug with nested instances disrupting the parent's tab completion.
3169 3170
3170 3171 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3171 3172 all_completions code to begin the emacs integration.
3172 3173
3173 3174 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3174 3175 argument to allow titling individual arrays when plotting.
3175 3176
3176 3177 2002-07-15 Fernando Perez <fperez@colorado.edu>
3177 3178
3178 3179 * setup.py (make_shortcut): changed to retrieve the value of
3179 3180 'Program Files' directory from the registry (this value changes in
3180 3181 non-english versions of Windows). Thanks to Thomas Fanslau
3181 3182 <tfanslau-AT-gmx.de> for the report.
3182 3183
3183 3184 2002-07-10 Fernando Perez <fperez@colorado.edu>
3184 3185
3185 3186 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3186 3187 a bug in pdb, which crashes if a line with only whitespace is
3187 3188 entered. Bug report submitted to sourceforge.
3188 3189
3189 3190 2002-07-09 Fernando Perez <fperez@colorado.edu>
3190 3191
3191 3192 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3192 3193 reporting exceptions (it's a bug in inspect.py, I just set a
3193 3194 workaround).
3194 3195
3195 3196 2002-07-08 Fernando Perez <fperez@colorado.edu>
3196 3197
3197 3198 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3198 3199 __IPYTHON__ in __builtins__ to show up in user_ns.
3199 3200
3200 3201 2002-07-03 Fernando Perez <fperez@colorado.edu>
3201 3202
3202 3203 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3203 3204 name from @gp_set_instance to @gp_set_default.
3204 3205
3205 3206 * IPython/ipmaker.py (make_IPython): default editor value set to
3206 3207 '0' (a string), to match the rc file. Otherwise will crash when
3207 3208 .strip() is called on it.
3208 3209
3209 3210
3210 3211 2002-06-28 Fernando Perez <fperez@colorado.edu>
3211 3212
3212 3213 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3213 3214 of files in current directory when a file is executed via
3214 3215 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3215 3216
3216 3217 * setup.py (manfiles): fix for rpm builds, submitted by RA
3217 3218 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3218 3219
3219 3220 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3220 3221 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3221 3222 string!). A. Schmolck caught this one.
3222 3223
3223 3224 2002-06-27 Fernando Perez <fperez@colorado.edu>
3224 3225
3225 3226 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3226 3227 defined files at the cmd line. __name__ wasn't being set to
3227 3228 __main__.
3228 3229
3229 3230 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3230 3231 regular lists and tuples besides Numeric arrays.
3231 3232
3232 3233 * IPython/Prompts.py (CachedOutput.__call__): Added output
3233 3234 supression for input ending with ';'. Similar to Mathematica and
3234 3235 Matlab. The _* vars and Out[] list are still updated, just like
3235 3236 Mathematica behaves.
3236 3237
3237 3238 2002-06-25 Fernando Perez <fperez@colorado.edu>
3238 3239
3239 3240 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3240 3241 .ini extensions for profiels under Windows.
3241 3242
3242 3243 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3243 3244 string form. Fix contributed by Alexander Schmolck
3244 3245 <a.schmolck-AT-gmx.net>
3245 3246
3246 3247 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3247 3248 pre-configured Gnuplot instance.
3248 3249
3249 3250 2002-06-21 Fernando Perez <fperez@colorado.edu>
3250 3251
3251 3252 * IPython/numutils.py (exp_safe): new function, works around the
3252 3253 underflow problems in Numeric.
3253 3254 (log2): New fn. Safe log in base 2: returns exact integer answer
3254 3255 for exact integer powers of 2.
3255 3256
3256 3257 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3257 3258 properly.
3258 3259
3259 3260 2002-06-20 Fernando Perez <fperez@colorado.edu>
3260 3261
3261 3262 * IPython/genutils.py (timing): new function like
3262 3263 Mathematica's. Similar to time_test, but returns more info.
3263 3264
3264 3265 2002-06-18 Fernando Perez <fperez@colorado.edu>
3265 3266
3266 3267 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3267 3268 according to Mike Heeter's suggestions.
3268 3269
3269 3270 2002-06-16 Fernando Perez <fperez@colorado.edu>
3270 3271
3271 3272 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3272 3273 system. GnuplotMagic is gone as a user-directory option. New files
3273 3274 make it easier to use all the gnuplot stuff both from external
3274 3275 programs as well as from IPython. Had to rewrite part of
3275 3276 hardcopy() b/c of a strange bug: often the ps files simply don't
3276 3277 get created, and require a repeat of the command (often several
3277 3278 times).
3278 3279
3279 3280 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3280 3281 resolve output channel at call time, so that if sys.stderr has
3281 3282 been redirected by user this gets honored.
3282 3283
3283 3284 2002-06-13 Fernando Perez <fperez@colorado.edu>
3284 3285
3285 3286 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3286 3287 IPShell. Kept a copy with the old names to avoid breaking people's
3287 3288 embedded code.
3288 3289
3289 3290 * IPython/ipython: simplified it to the bare minimum after
3290 3291 Holger's suggestions. Added info about how to use it in
3291 3292 PYTHONSTARTUP.
3292 3293
3293 3294 * IPython/Shell.py (IPythonShell): changed the options passing
3294 3295 from a string with funky %s replacements to a straight list. Maybe
3295 3296 a bit more typing, but it follows sys.argv conventions, so there's
3296 3297 less special-casing to remember.
3297 3298
3298 3299 2002-06-12 Fernando Perez <fperez@colorado.edu>
3299 3300
3300 3301 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3301 3302 command. Thanks to a suggestion by Mike Heeter.
3302 3303 (Magic.magic_pfile): added behavior to look at filenames if given
3303 3304 arg is not a defined object.
3304 3305 (Magic.magic_save): New @save function to save code snippets. Also
3305 3306 a Mike Heeter idea.
3306 3307
3307 3308 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3308 3309 plot() and replot(). Much more convenient now, especially for
3309 3310 interactive use.
3310 3311
3311 3312 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3312 3313 filenames.
3313 3314
3314 3315 2002-06-02 Fernando Perez <fperez@colorado.edu>
3315 3316
3316 3317 * IPython/Struct.py (Struct.__init__): modified to admit
3317 3318 initialization via another struct.
3318 3319
3319 3320 * IPython/genutils.py (SystemExec.__init__): New stateful
3320 3321 interface to xsys and bq. Useful for writing system scripts.
3321 3322
3322 3323 2002-05-30 Fernando Perez <fperez@colorado.edu>
3323 3324
3324 3325 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3325 3326 documents. This will make the user download smaller (it's getting
3326 3327 too big).
3327 3328
3328 3329 2002-05-29 Fernando Perez <fperez@colorado.edu>
3329 3330
3330 3331 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3331 3332 fix problems with shelve and pickle. Seems to work, but I don't
3332 3333 know if corner cases break it. Thanks to Mike Heeter
3333 3334 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3334 3335
3335 3336 2002-05-24 Fernando Perez <fperez@colorado.edu>
3336 3337
3337 3338 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3338 3339 macros having broken.
3339 3340
3340 3341 2002-05-21 Fernando Perez <fperez@colorado.edu>
3341 3342
3342 3343 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3343 3344 introduced logging bug: all history before logging started was
3344 3345 being written one character per line! This came from the redesign
3345 3346 of the input history as a special list which slices to strings,
3346 3347 not to lists.
3347 3348
3348 3349 2002-05-20 Fernando Perez <fperez@colorado.edu>
3349 3350
3350 3351 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3351 3352 be an attribute of all classes in this module. The design of these
3352 3353 classes needs some serious overhauling.
3353 3354
3354 3355 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3355 3356 which was ignoring '_' in option names.
3356 3357
3357 3358 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3358 3359 'Verbose_novars' to 'Context' and made it the new default. It's a
3359 3360 bit more readable and also safer than verbose.
3360 3361
3361 3362 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3362 3363 triple-quoted strings.
3363 3364
3364 3365 * IPython/OInspect.py (__all__): new module exposing the object
3365 3366 introspection facilities. Now the corresponding magics are dummy
3366 3367 wrappers around this. Having this module will make it much easier
3367 3368 to put these functions into our modified pdb.
3368 3369 This new object inspector system uses the new colorizing module,
3369 3370 so source code and other things are nicely syntax highlighted.
3370 3371
3371 3372 2002-05-18 Fernando Perez <fperez@colorado.edu>
3372 3373
3373 3374 * IPython/ColorANSI.py: Split the coloring tools into a separate
3374 3375 module so I can use them in other code easier (they were part of
3375 3376 ultraTB).
3376 3377
3377 3378 2002-05-17 Fernando Perez <fperez@colorado.edu>
3378 3379
3379 3380 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3380 3381 fixed it to set the global 'g' also to the called instance, as
3381 3382 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3382 3383 user's 'g' variables).
3383 3384
3384 3385 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3385 3386 global variables (aliases to _ih,_oh) so that users which expect
3386 3387 In[5] or Out[7] to work aren't unpleasantly surprised.
3387 3388 (InputList.__getslice__): new class to allow executing slices of
3388 3389 input history directly. Very simple class, complements the use of
3389 3390 macros.
3390 3391
3391 3392 2002-05-16 Fernando Perez <fperez@colorado.edu>
3392 3393
3393 3394 * setup.py (docdirbase): make doc directory be just doc/IPython
3394 3395 without version numbers, it will reduce clutter for users.
3395 3396
3396 3397 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3397 3398 execfile call to prevent possible memory leak. See for details:
3398 3399 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3399 3400
3400 3401 2002-05-15 Fernando Perez <fperez@colorado.edu>
3401 3402
3402 3403 * IPython/Magic.py (Magic.magic_psource): made the object
3403 3404 introspection names be more standard: pdoc, pdef, pfile and
3404 3405 psource. They all print/page their output, and it makes
3405 3406 remembering them easier. Kept old names for compatibility as
3406 3407 aliases.
3407 3408
3408 3409 2002-05-14 Fernando Perez <fperez@colorado.edu>
3409 3410
3410 3411 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3411 3412 what the mouse problem was. The trick is to use gnuplot with temp
3412 3413 files and NOT with pipes (for data communication), because having
3413 3414 both pipes and the mouse on is bad news.
3414 3415
3415 3416 2002-05-13 Fernando Perez <fperez@colorado.edu>
3416 3417
3417 3418 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3418 3419 bug. Information would be reported about builtins even when
3419 3420 user-defined functions overrode them.
3420 3421
3421 3422 2002-05-11 Fernando Perez <fperez@colorado.edu>
3422 3423
3423 3424 * IPython/__init__.py (__all__): removed FlexCompleter from
3424 3425 __all__ so that things don't fail in platforms without readline.
3425 3426
3426 3427 2002-05-10 Fernando Perez <fperez@colorado.edu>
3427 3428
3428 3429 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3429 3430 it requires Numeric, effectively making Numeric a dependency for
3430 3431 IPython.
3431 3432
3432 3433 * Released 0.2.13
3433 3434
3434 3435 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3435 3436 profiler interface. Now all the major options from the profiler
3436 3437 module are directly supported in IPython, both for single
3437 3438 expressions (@prun) and for full programs (@run -p).
3438 3439
3439 3440 2002-05-09 Fernando Perez <fperez@colorado.edu>
3440 3441
3441 3442 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3442 3443 magic properly formatted for screen.
3443 3444
3444 3445 * setup.py (make_shortcut): Changed things to put pdf version in
3445 3446 doc/ instead of doc/manual (had to change lyxport a bit).
3446 3447
3447 3448 * IPython/Magic.py (Profile.string_stats): made profile runs go
3448 3449 through pager (they are long and a pager allows searching, saving,
3449 3450 etc.)
3450 3451
3451 3452 2002-05-08 Fernando Perez <fperez@colorado.edu>
3452 3453
3453 3454 * Released 0.2.12
3454 3455
3455 3456 2002-05-06 Fernando Perez <fperez@colorado.edu>
3456 3457
3457 3458 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3458 3459 introduced); 'hist n1 n2' was broken.
3459 3460 (Magic.magic_pdb): added optional on/off arguments to @pdb
3460 3461 (Magic.magic_run): added option -i to @run, which executes code in
3461 3462 the IPython namespace instead of a clean one. Also added @irun as
3462 3463 an alias to @run -i.
3463 3464
3464 3465 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3465 3466 fixed (it didn't really do anything, the namespaces were wrong).
3466 3467
3467 3468 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3468 3469
3469 3470 * IPython/__init__.py (__all__): Fixed package namespace, now
3470 3471 'import IPython' does give access to IPython.<all> as
3471 3472 expected. Also renamed __release__ to Release.
3472 3473
3473 3474 * IPython/Debugger.py (__license__): created new Pdb class which
3474 3475 functions like a drop-in for the normal pdb.Pdb but does NOT
3475 3476 import readline by default. This way it doesn't muck up IPython's
3476 3477 readline handling, and now tab-completion finally works in the
3477 3478 debugger -- sort of. It completes things globally visible, but the
3478 3479 completer doesn't track the stack as pdb walks it. That's a bit
3479 3480 tricky, and I'll have to implement it later.
3480 3481
3481 3482 2002-05-05 Fernando Perez <fperez@colorado.edu>
3482 3483
3483 3484 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3484 3485 magic docstrings when printed via ? (explicit \'s were being
3485 3486 printed).
3486 3487
3487 3488 * IPython/ipmaker.py (make_IPython): fixed namespace
3488 3489 identification bug. Now variables loaded via logs or command-line
3489 3490 files are recognized in the interactive namespace by @who.
3490 3491
3491 3492 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3492 3493 log replay system stemming from the string form of Structs.
3493 3494
3494 3495 * IPython/Magic.py (Macro.__init__): improved macros to properly
3495 3496 handle magic commands in them.
3496 3497 (Magic.magic_logstart): usernames are now expanded so 'logstart
3497 3498 ~/mylog' now works.
3498 3499
3499 3500 * IPython/iplib.py (complete): fixed bug where paths starting with
3500 3501 '/' would be completed as magic names.
3501 3502
3502 3503 2002-05-04 Fernando Perez <fperez@colorado.edu>
3503 3504
3504 3505 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3505 3506 allow running full programs under the profiler's control.
3506 3507
3507 3508 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3508 3509 mode to report exceptions verbosely but without formatting
3509 3510 variables. This addresses the issue of ipython 'freezing' (it's
3510 3511 not frozen, but caught in an expensive formatting loop) when huge
3511 3512 variables are in the context of an exception.
3512 3513 (VerboseTB.text): Added '--->' markers at line where exception was
3513 3514 triggered. Much clearer to read, especially in NoColor modes.
3514 3515
3515 3516 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3516 3517 implemented in reverse when changing to the new parse_options().
3517 3518
3518 3519 2002-05-03 Fernando Perez <fperez@colorado.edu>
3519 3520
3520 3521 * IPython/Magic.py (Magic.parse_options): new function so that
3521 3522 magics can parse options easier.
3522 3523 (Magic.magic_prun): new function similar to profile.run(),
3523 3524 suggested by Chris Hart.
3524 3525 (Magic.magic_cd): fixed behavior so that it only changes if
3525 3526 directory actually is in history.
3526 3527
3527 3528 * IPython/usage.py (__doc__): added information about potential
3528 3529 slowness of Verbose exception mode when there are huge data
3529 3530 structures to be formatted (thanks to Archie Paulson).
3530 3531
3531 3532 * IPython/ipmaker.py (make_IPython): Changed default logging
3532 3533 (when simply called with -log) to use curr_dir/ipython.log in
3533 3534 rotate mode. Fixed crash which was occuring with -log before
3534 3535 (thanks to Jim Boyle).
3535 3536
3536 3537 2002-05-01 Fernando Perez <fperez@colorado.edu>
3537 3538
3538 3539 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3539 3540 was nasty -- though somewhat of a corner case).
3540 3541
3541 3542 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3542 3543 text (was a bug).
3543 3544
3544 3545 2002-04-30 Fernando Perez <fperez@colorado.edu>
3545 3546
3546 3547 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3547 3548 a print after ^D or ^C from the user so that the In[] prompt
3548 3549 doesn't over-run the gnuplot one.
3549 3550
3550 3551 2002-04-29 Fernando Perez <fperez@colorado.edu>
3551 3552
3552 3553 * Released 0.2.10
3553 3554
3554 3555 * IPython/__release__.py (version): get date dynamically.
3555 3556
3556 3557 * Misc. documentation updates thanks to Arnd's comments. Also ran
3557 3558 a full spellcheck on the manual (hadn't been done in a while).
3558 3559
3559 3560 2002-04-27 Fernando Perez <fperez@colorado.edu>
3560 3561
3561 3562 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3562 3563 starting a log in mid-session would reset the input history list.
3563 3564
3564 3565 2002-04-26 Fernando Perez <fperez@colorado.edu>
3565 3566
3566 3567 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3567 3568 all files were being included in an update. Now anything in
3568 3569 UserConfig that matches [A-Za-z]*.py will go (this excludes
3569 3570 __init__.py)
3570 3571
3571 3572 2002-04-25 Fernando Perez <fperez@colorado.edu>
3572 3573
3573 3574 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3574 3575 to __builtins__ so that any form of embedded or imported code can
3575 3576 test for being inside IPython.
3576 3577
3577 3578 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3578 3579 changed to GnuplotMagic because it's now an importable module,
3579 3580 this makes the name follow that of the standard Gnuplot module.
3580 3581 GnuplotMagic can now be loaded at any time in mid-session.
3581 3582
3582 3583 2002-04-24 Fernando Perez <fperez@colorado.edu>
3583 3584
3584 3585 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3585 3586 the globals (IPython has its own namespace) and the
3586 3587 PhysicalQuantity stuff is much better anyway.
3587 3588
3588 3589 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3589 3590 embedding example to standard user directory for
3590 3591 distribution. Also put it in the manual.
3591 3592
3592 3593 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3593 3594 instance as first argument (so it doesn't rely on some obscure
3594 3595 hidden global).
3595 3596
3596 3597 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3597 3598 delimiters. While it prevents ().TAB from working, it allows
3598 3599 completions in open (... expressions. This is by far a more common
3599 3600 case.
3600 3601
3601 3602 2002-04-23 Fernando Perez <fperez@colorado.edu>
3602 3603
3603 3604 * IPython/Extensions/InterpreterPasteInput.py: new
3604 3605 syntax-processing module for pasting lines with >>> or ... at the
3605 3606 start.
3606 3607
3607 3608 * IPython/Extensions/PhysicalQ_Interactive.py
3608 3609 (PhysicalQuantityInteractive.__int__): fixed to work with either
3609 3610 Numeric or math.
3610 3611
3611 3612 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3612 3613 provided profiles. Now we have:
3613 3614 -math -> math module as * and cmath with its own namespace.
3614 3615 -numeric -> Numeric as *, plus gnuplot & grace
3615 3616 -physics -> same as before
3616 3617
3617 3618 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3618 3619 user-defined magics wouldn't be found by @magic if they were
3619 3620 defined as class methods. Also cleaned up the namespace search
3620 3621 logic and the string building (to use %s instead of many repeated
3621 3622 string adds).
3622 3623
3623 3624 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3624 3625 of user-defined magics to operate with class methods (cleaner, in
3625 3626 line with the gnuplot code).
3626 3627
3627 3628 2002-04-22 Fernando Perez <fperez@colorado.edu>
3628 3629
3629 3630 * setup.py: updated dependency list so that manual is updated when
3630 3631 all included files change.
3631 3632
3632 3633 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3633 3634 the delimiter removal option (the fix is ugly right now).
3634 3635
3635 3636 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3636 3637 all of the math profile (quicker loading, no conflict between
3637 3638 g-9.8 and g-gnuplot).
3638 3639
3639 3640 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3640 3641 name of post-mortem files to IPython_crash_report.txt.
3641 3642
3642 3643 * Cleanup/update of the docs. Added all the new readline info and
3643 3644 formatted all lists as 'real lists'.
3644 3645
3645 3646 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3646 3647 tab-completion options, since the full readline parse_and_bind is
3647 3648 now accessible.
3648 3649
3649 3650 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3650 3651 handling of readline options. Now users can specify any string to
3651 3652 be passed to parse_and_bind(), as well as the delimiters to be
3652 3653 removed.
3653 3654 (InteractiveShell.__init__): Added __name__ to the global
3654 3655 namespace so that things like Itpl which rely on its existence
3655 3656 don't crash.
3656 3657 (InteractiveShell._prefilter): Defined the default with a _ so
3657 3658 that prefilter() is easier to override, while the default one
3658 3659 remains available.
3659 3660
3660 3661 2002-04-18 Fernando Perez <fperez@colorado.edu>
3661 3662
3662 3663 * Added information about pdb in the docs.
3663 3664
3664 3665 2002-04-17 Fernando Perez <fperez@colorado.edu>
3665 3666
3666 3667 * IPython/ipmaker.py (make_IPython): added rc_override option to
3667 3668 allow passing config options at creation time which may override
3668 3669 anything set in the config files or command line. This is
3669 3670 particularly useful for configuring embedded instances.
3670 3671
3671 3672 2002-04-15 Fernando Perez <fperez@colorado.edu>
3672 3673
3673 3674 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3674 3675 crash embedded instances because of the input cache falling out of
3675 3676 sync with the output counter.
3676 3677
3677 3678 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3678 3679 mode which calls pdb after an uncaught exception in IPython itself.
3679 3680
3680 3681 2002-04-14 Fernando Perez <fperez@colorado.edu>
3681 3682
3682 3683 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3683 3684 readline, fix it back after each call.
3684 3685
3685 3686 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3686 3687 method to force all access via __call__(), which guarantees that
3687 3688 traceback references are properly deleted.
3688 3689
3689 3690 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3690 3691 improve printing when pprint is in use.
3691 3692
3692 3693 2002-04-13 Fernando Perez <fperez@colorado.edu>
3693 3694
3694 3695 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3695 3696 exceptions aren't caught anymore. If the user triggers one, he
3696 3697 should know why he's doing it and it should go all the way up,
3697 3698 just like any other exception. So now @abort will fully kill the
3698 3699 embedded interpreter and the embedding code (unless that happens
3699 3700 to catch SystemExit).
3700 3701
3701 3702 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3702 3703 and a debugger() method to invoke the interactive pdb debugger
3703 3704 after printing exception information. Also added the corresponding
3704 3705 -pdb option and @pdb magic to control this feature, and updated
3705 3706 the docs. After a suggestion from Christopher Hart
3706 3707 (hart-AT-caltech.edu).
3707 3708
3708 3709 2002-04-12 Fernando Perez <fperez@colorado.edu>
3709 3710
3710 3711 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3711 3712 the exception handlers defined by the user (not the CrashHandler)
3712 3713 so that user exceptions don't trigger an ipython bug report.
3713 3714
3714 3715 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3715 3716 configurable (it should have always been so).
3716 3717
3717 3718 2002-03-26 Fernando Perez <fperez@colorado.edu>
3718 3719
3719 3720 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3720 3721 and there to fix embedding namespace issues. This should all be
3721 3722 done in a more elegant way.
3722 3723
3723 3724 2002-03-25 Fernando Perez <fperez@colorado.edu>
3724 3725
3725 3726 * IPython/genutils.py (get_home_dir): Try to make it work under
3726 3727 win9x also.
3727 3728
3728 3729 2002-03-20 Fernando Perez <fperez@colorado.edu>
3729 3730
3730 3731 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3731 3732 sys.displayhook untouched upon __init__.
3732 3733
3733 3734 2002-03-19 Fernando Perez <fperez@colorado.edu>
3734 3735
3735 3736 * Released 0.2.9 (for embedding bug, basically).
3736 3737
3737 3738 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3738 3739 exceptions so that enclosing shell's state can be restored.
3739 3740
3740 3741 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3741 3742 naming conventions in the .ipython/ dir.
3742 3743
3743 3744 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3744 3745 from delimiters list so filenames with - in them get expanded.
3745 3746
3746 3747 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3747 3748 sys.displayhook not being properly restored after an embedded call.
3748 3749
3749 3750 2002-03-18 Fernando Perez <fperez@colorado.edu>
3750 3751
3751 3752 * Released 0.2.8
3752 3753
3753 3754 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3754 3755 some files weren't being included in a -upgrade.
3755 3756 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3756 3757 on' so that the first tab completes.
3757 3758 (InteractiveShell.handle_magic): fixed bug with spaces around
3758 3759 quotes breaking many magic commands.
3759 3760
3760 3761 * setup.py: added note about ignoring the syntax error messages at
3761 3762 installation.
3762 3763
3763 3764 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3764 3765 streamlining the gnuplot interface, now there's only one magic @gp.
3765 3766
3766 3767 2002-03-17 Fernando Perez <fperez@colorado.edu>
3767 3768
3768 3769 * IPython/UserConfig/magic_gnuplot.py: new name for the
3769 3770 example-magic_pm.py file. Much enhanced system, now with a shell
3770 3771 for communicating directly with gnuplot, one command at a time.
3771 3772
3772 3773 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3773 3774 setting __name__=='__main__'.
3774 3775
3775 3776 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3776 3777 mini-shell for accessing gnuplot from inside ipython. Should
3777 3778 extend it later for grace access too. Inspired by Arnd's
3778 3779 suggestion.
3779 3780
3780 3781 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3781 3782 calling magic functions with () in their arguments. Thanks to Arnd
3782 3783 Baecker for pointing this to me.
3783 3784
3784 3785 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3785 3786 infinitely for integer or complex arrays (only worked with floats).
3786 3787
3787 3788 2002-03-16 Fernando Perez <fperez@colorado.edu>
3788 3789
3789 3790 * setup.py: Merged setup and setup_windows into a single script
3790 3791 which properly handles things for windows users.
3791 3792
3792 3793 2002-03-15 Fernando Perez <fperez@colorado.edu>
3793 3794
3794 3795 * Big change to the manual: now the magics are all automatically
3795 3796 documented. This information is generated from their docstrings
3796 3797 and put in a latex file included by the manual lyx file. This way
3797 3798 we get always up to date information for the magics. The manual
3798 3799 now also has proper version information, also auto-synced.
3799 3800
3800 3801 For this to work, an undocumented --magic_docstrings option was added.
3801 3802
3802 3803 2002-03-13 Fernando Perez <fperez@colorado.edu>
3803 3804
3804 3805 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3805 3806 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3806 3807
3807 3808 2002-03-12 Fernando Perez <fperez@colorado.edu>
3808 3809
3809 3810 * IPython/ultraTB.py (TermColors): changed color escapes again to
3810 3811 fix the (old, reintroduced) line-wrapping bug. Basically, if
3811 3812 \001..\002 aren't given in the color escapes, lines get wrapped
3812 3813 weirdly. But giving those screws up old xterms and emacs terms. So
3813 3814 I added some logic for emacs terms to be ok, but I can't identify old
3814 3815 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3815 3816
3816 3817 2002-03-10 Fernando Perez <fperez@colorado.edu>
3817 3818
3818 3819 * IPython/usage.py (__doc__): Various documentation cleanups and
3819 3820 updates, both in usage docstrings and in the manual.
3820 3821
3821 3822 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3822 3823 handling of caching. Set minimum acceptabe value for having a
3823 3824 cache at 20 values.
3824 3825
3825 3826 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3826 3827 install_first_time function to a method, renamed it and added an
3827 3828 'upgrade' mode. Now people can update their config directory with
3828 3829 a simple command line switch (-upgrade, also new).
3829 3830
3830 3831 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3831 3832 @file (convenient for automagic users under Python >= 2.2).
3832 3833 Removed @files (it seemed more like a plural than an abbrev. of
3833 3834 'file show').
3834 3835
3835 3836 * IPython/iplib.py (install_first_time): Fixed crash if there were
3836 3837 backup files ('~') in .ipython/ install directory.
3837 3838
3838 3839 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3839 3840 system. Things look fine, but these changes are fairly
3840 3841 intrusive. Test them for a few days.
3841 3842
3842 3843 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3843 3844 the prompts system. Now all in/out prompt strings are user
3844 3845 controllable. This is particularly useful for embedding, as one
3845 3846 can tag embedded instances with particular prompts.
3846 3847
3847 3848 Also removed global use of sys.ps1/2, which now allows nested
3848 3849 embeddings without any problems. Added command-line options for
3849 3850 the prompt strings.
3850 3851
3851 3852 2002-03-08 Fernando Perez <fperez@colorado.edu>
3852 3853
3853 3854 * IPython/UserConfig/example-embed-short.py (ipshell): added
3854 3855 example file with the bare minimum code for embedding.
3855 3856
3856 3857 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3857 3858 functionality for the embeddable shell to be activated/deactivated
3858 3859 either globally or at each call.
3859 3860
3860 3861 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3861 3862 rewriting the prompt with '--->' for auto-inputs with proper
3862 3863 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3863 3864 this is handled by the prompts class itself, as it should.
3864 3865
3865 3866 2002-03-05 Fernando Perez <fperez@colorado.edu>
3866 3867
3867 3868 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3868 3869 @logstart to avoid name clashes with the math log function.
3869 3870
3870 3871 * Big updates to X/Emacs section of the manual.
3871 3872
3872 3873 * Removed ipython_emacs. Milan explained to me how to pass
3873 3874 arguments to ipython through Emacs. Some day I'm going to end up
3874 3875 learning some lisp...
3875 3876
3876 3877 2002-03-04 Fernando Perez <fperez@colorado.edu>
3877 3878
3878 3879 * IPython/ipython_emacs: Created script to be used as the
3879 3880 py-python-command Emacs variable so we can pass IPython
3880 3881 parameters. I can't figure out how to tell Emacs directly to pass
3881 3882 parameters to IPython, so a dummy shell script will do it.
3882 3883
3883 3884 Other enhancements made for things to work better under Emacs'
3884 3885 various types of terminals. Many thanks to Milan Zamazal
3885 3886 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3886 3887
3887 3888 2002-03-01 Fernando Perez <fperez@colorado.edu>
3888 3889
3889 3890 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3890 3891 that loading of readline is now optional. This gives better
3891 3892 control to emacs users.
3892 3893
3893 3894 * IPython/ultraTB.py (__date__): Modified color escape sequences
3894 3895 and now things work fine under xterm and in Emacs' term buffers
3895 3896 (though not shell ones). Well, in emacs you get colors, but all
3896 3897 seem to be 'light' colors (no difference between dark and light
3897 3898 ones). But the garbage chars are gone, and also in xterms. It
3898 3899 seems that now I'm using 'cleaner' ansi sequences.
3899 3900
3900 3901 2002-02-21 Fernando Perez <fperez@colorado.edu>
3901 3902
3902 3903 * Released 0.2.7 (mainly to publish the scoping fix).
3903 3904
3904 3905 * IPython/Logger.py (Logger.logstate): added. A corresponding
3905 3906 @logstate magic was created.
3906 3907
3907 3908 * IPython/Magic.py: fixed nested scoping problem under Python
3908 3909 2.1.x (automagic wasn't working).
3909 3910
3910 3911 2002-02-20 Fernando Perez <fperez@colorado.edu>
3911 3912
3912 3913 * Released 0.2.6.
3913 3914
3914 3915 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3915 3916 option so that logs can come out without any headers at all.
3916 3917
3917 3918 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3918 3919 SciPy.
3919 3920
3920 3921 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3921 3922 that embedded IPython calls don't require vars() to be explicitly
3922 3923 passed. Now they are extracted from the caller's frame (code
3923 3924 snatched from Eric Jones' weave). Added better documentation to
3924 3925 the section on embedding and the example file.
3925 3926
3926 3927 * IPython/genutils.py (page): Changed so that under emacs, it just
3927 3928 prints the string. You can then page up and down in the emacs
3928 3929 buffer itself. This is how the builtin help() works.
3929 3930
3930 3931 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3931 3932 macro scoping: macros need to be executed in the user's namespace
3932 3933 to work as if they had been typed by the user.
3933 3934
3934 3935 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3935 3936 execute automatically (no need to type 'exec...'). They then
3936 3937 behave like 'true macros'. The printing system was also modified
3937 3938 for this to work.
3938 3939
3939 3940 2002-02-19 Fernando Perez <fperez@colorado.edu>
3940 3941
3941 3942 * IPython/genutils.py (page_file): new function for paging files
3942 3943 in an OS-independent way. Also necessary for file viewing to work
3943 3944 well inside Emacs buffers.
3944 3945 (page): Added checks for being in an emacs buffer.
3945 3946 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3946 3947 same bug in iplib.
3947 3948
3948 3949 2002-02-18 Fernando Perez <fperez@colorado.edu>
3949 3950
3950 3951 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3951 3952 of readline so that IPython can work inside an Emacs buffer.
3952 3953
3953 3954 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3954 3955 method signatures (they weren't really bugs, but it looks cleaner
3955 3956 and keeps PyChecker happy).
3956 3957
3957 3958 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3958 3959 for implementing various user-defined hooks. Currently only
3959 3960 display is done.
3960 3961
3961 3962 * IPython/Prompts.py (CachedOutput._display): changed display
3962 3963 functions so that they can be dynamically changed by users easily.
3963 3964
3964 3965 * IPython/Extensions/numeric_formats.py (num_display): added an
3965 3966 extension for printing NumPy arrays in flexible manners. It
3966 3967 doesn't do anything yet, but all the structure is in
3967 3968 place. Ultimately the plan is to implement output format control
3968 3969 like in Octave.
3969 3970
3970 3971 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3971 3972 methods are found at run-time by all the automatic machinery.
3972 3973
3973 3974 2002-02-17 Fernando Perez <fperez@colorado.edu>
3974 3975
3975 3976 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3976 3977 whole file a little.
3977 3978
3978 3979 * ToDo: closed this document. Now there's a new_design.lyx
3979 3980 document for all new ideas. Added making a pdf of it for the
3980 3981 end-user distro.
3981 3982
3982 3983 * IPython/Logger.py (Logger.switch_log): Created this to replace
3983 3984 logon() and logoff(). It also fixes a nasty crash reported by
3984 3985 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3985 3986
3986 3987 * IPython/iplib.py (complete): got auto-completion to work with
3987 3988 automagic (I had wanted this for a long time).
3988 3989
3989 3990 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3990 3991 to @file, since file() is now a builtin and clashes with automagic
3991 3992 for @file.
3992 3993
3993 3994 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3994 3995 of this was previously in iplib, which had grown to more than 2000
3995 3996 lines, way too long. No new functionality, but it makes managing
3996 3997 the code a bit easier.
3997 3998
3998 3999 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3999 4000 information to crash reports.
4000 4001
4001 4002 2002-02-12 Fernando Perez <fperez@colorado.edu>
4002 4003
4003 4004 * Released 0.2.5.
4004 4005
4005 4006 2002-02-11 Fernando Perez <fperez@colorado.edu>
4006 4007
4007 4008 * Wrote a relatively complete Windows installer. It puts
4008 4009 everything in place, creates Start Menu entries and fixes the
4009 4010 color issues. Nothing fancy, but it works.
4010 4011
4011 4012 2002-02-10 Fernando Perez <fperez@colorado.edu>
4012 4013
4013 4014 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4014 4015 os.path.expanduser() call so that we can type @run ~/myfile.py and
4015 4016 have thigs work as expected.
4016 4017
4017 4018 * IPython/genutils.py (page): fixed exception handling so things
4018 4019 work both in Unix and Windows correctly. Quitting a pager triggers
4019 4020 an IOError/broken pipe in Unix, and in windows not finding a pager
4020 4021 is also an IOError, so I had to actually look at the return value
4021 4022 of the exception, not just the exception itself. Should be ok now.
4022 4023
4023 4024 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4024 4025 modified to allow case-insensitive color scheme changes.
4025 4026
4026 4027 2002-02-09 Fernando Perez <fperez@colorado.edu>
4027 4028
4028 4029 * IPython/genutils.py (native_line_ends): new function to leave
4029 4030 user config files with os-native line-endings.
4030 4031
4031 4032 * README and manual updates.
4032 4033
4033 4034 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4034 4035 instead of StringType to catch Unicode strings.
4035 4036
4036 4037 * IPython/genutils.py (filefind): fixed bug for paths with
4037 4038 embedded spaces (very common in Windows).
4038 4039
4039 4040 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4040 4041 files under Windows, so that they get automatically associated
4041 4042 with a text editor. Windows makes it a pain to handle
4042 4043 extension-less files.
4043 4044
4044 4045 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4045 4046 warning about readline only occur for Posix. In Windows there's no
4046 4047 way to get readline, so why bother with the warning.
4047 4048
4048 4049 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4049 4050 for __str__ instead of dir(self), since dir() changed in 2.2.
4050 4051
4051 4052 * Ported to Windows! Tested on XP, I suspect it should work fine
4052 4053 on NT/2000, but I don't think it will work on 98 et al. That
4053 4054 series of Windows is such a piece of junk anyway that I won't try
4054 4055 porting it there. The XP port was straightforward, showed a few
4055 4056 bugs here and there (fixed all), in particular some string
4056 4057 handling stuff which required considering Unicode strings (which
4057 4058 Windows uses). This is good, but hasn't been too tested :) No
4058 4059 fancy installer yet, I'll put a note in the manual so people at
4059 4060 least make manually a shortcut.
4060 4061
4061 4062 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4062 4063 into a single one, "colors". This now controls both prompt and
4063 4064 exception color schemes, and can be changed both at startup
4064 4065 (either via command-line switches or via ipythonrc files) and at
4065 4066 runtime, with @colors.
4066 4067 (Magic.magic_run): renamed @prun to @run and removed the old
4067 4068 @run. The two were too similar to warrant keeping both.
4068 4069
4069 4070 2002-02-03 Fernando Perez <fperez@colorado.edu>
4070 4071
4071 4072 * IPython/iplib.py (install_first_time): Added comment on how to
4072 4073 configure the color options for first-time users. Put a <return>
4073 4074 request at the end so that small-terminal users get a chance to
4074 4075 read the startup info.
4075 4076
4076 4077 2002-01-23 Fernando Perez <fperez@colorado.edu>
4077 4078
4078 4079 * IPython/iplib.py (CachedOutput.update): Changed output memory
4079 4080 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4080 4081 input history we still use _i. Did this b/c these variable are
4081 4082 very commonly used in interactive work, so the less we need to
4082 4083 type the better off we are.
4083 4084 (Magic.magic_prun): updated @prun to better handle the namespaces
4084 4085 the file will run in, including a fix for __name__ not being set
4085 4086 before.
4086 4087
4087 4088 2002-01-20 Fernando Perez <fperez@colorado.edu>
4088 4089
4089 4090 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4090 4091 extra garbage for Python 2.2. Need to look more carefully into
4091 4092 this later.
4092 4093
4093 4094 2002-01-19 Fernando Perez <fperez@colorado.edu>
4094 4095
4095 4096 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4096 4097 display SyntaxError exceptions properly formatted when they occur
4097 4098 (they can be triggered by imported code).
4098 4099
4099 4100 2002-01-18 Fernando Perez <fperez@colorado.edu>
4100 4101
4101 4102 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4102 4103 SyntaxError exceptions are reported nicely formatted, instead of
4103 4104 spitting out only offset information as before.
4104 4105 (Magic.magic_prun): Added the @prun function for executing
4105 4106 programs with command line args inside IPython.
4106 4107
4107 4108 2002-01-16 Fernando Perez <fperez@colorado.edu>
4108 4109
4109 4110 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4110 4111 to *not* include the last item given in a range. This brings their
4111 4112 behavior in line with Python's slicing:
4112 4113 a[n1:n2] -> a[n1]...a[n2-1]
4113 4114 It may be a bit less convenient, but I prefer to stick to Python's
4114 4115 conventions *everywhere*, so users never have to wonder.
4115 4116 (Magic.magic_macro): Added @macro function to ease the creation of
4116 4117 macros.
4117 4118
4118 4119 2002-01-05 Fernando Perez <fperez@colorado.edu>
4119 4120
4120 4121 * Released 0.2.4.
4121 4122
4122 4123 * IPython/iplib.py (Magic.magic_pdef):
4123 4124 (InteractiveShell.safe_execfile): report magic lines and error
4124 4125 lines without line numbers so one can easily copy/paste them for
4125 4126 re-execution.
4126 4127
4127 4128 * Updated manual with recent changes.
4128 4129
4129 4130 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4130 4131 docstring printing when class? is called. Very handy for knowing
4131 4132 how to create class instances (as long as __init__ is well
4132 4133 documented, of course :)
4133 4134 (Magic.magic_doc): print both class and constructor docstrings.
4134 4135 (Magic.magic_pdef): give constructor info if passed a class and
4135 4136 __call__ info for callable object instances.
4136 4137
4137 4138 2002-01-04 Fernando Perez <fperez@colorado.edu>
4138 4139
4139 4140 * Made deep_reload() off by default. It doesn't always work
4140 4141 exactly as intended, so it's probably safer to have it off. It's
4141 4142 still available as dreload() anyway, so nothing is lost.
4142 4143
4143 4144 2002-01-02 Fernando Perez <fperez@colorado.edu>
4144 4145
4145 4146 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4146 4147 so I wanted an updated release).
4147 4148
4148 4149 2001-12-27 Fernando Perez <fperez@colorado.edu>
4149 4150
4150 4151 * IPython/iplib.py (InteractiveShell.interact): Added the original
4151 4152 code from 'code.py' for this module in order to change the
4152 4153 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4153 4154 the history cache would break when the user hit Ctrl-C, and
4154 4155 interact() offers no way to add any hooks to it.
4155 4156
4156 4157 2001-12-23 Fernando Perez <fperez@colorado.edu>
4157 4158
4158 4159 * setup.py: added check for 'MANIFEST' before trying to remove
4159 4160 it. Thanks to Sean Reifschneider.
4160 4161
4161 4162 2001-12-22 Fernando Perez <fperez@colorado.edu>
4162 4163
4163 4164 * Released 0.2.2.
4164 4165
4165 4166 * Finished (reasonably) writing the manual. Later will add the
4166 4167 python-standard navigation stylesheets, but for the time being
4167 4168 it's fairly complete. Distribution will include html and pdf
4168 4169 versions.
4169 4170
4170 4171 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4171 4172 (MayaVi author).
4172 4173
4173 4174 2001-12-21 Fernando Perez <fperez@colorado.edu>
4174 4175
4175 4176 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4176 4177 good public release, I think (with the manual and the distutils
4177 4178 installer). The manual can use some work, but that can go
4178 4179 slowly. Otherwise I think it's quite nice for end users. Next
4179 4180 summer, rewrite the guts of it...
4180 4181
4181 4182 * Changed format of ipythonrc files to use whitespace as the
4182 4183 separator instead of an explicit '='. Cleaner.
4183 4184
4184 4185 2001-12-20 Fernando Perez <fperez@colorado.edu>
4185 4186
4186 4187 * Started a manual in LyX. For now it's just a quick merge of the
4187 4188 various internal docstrings and READMEs. Later it may grow into a
4188 4189 nice, full-blown manual.
4189 4190
4190 4191 * Set up a distutils based installer. Installation should now be
4191 4192 trivially simple for end-users.
4192 4193
4193 4194 2001-12-11 Fernando Perez <fperez@colorado.edu>
4194 4195
4195 4196 * Released 0.2.0. First public release, announced it at
4196 4197 comp.lang.python. From now on, just bugfixes...
4197 4198
4198 4199 * Went through all the files, set copyright/license notices and
4199 4200 cleaned up things. Ready for release.
4200 4201
4201 4202 2001-12-10 Fernando Perez <fperez@colorado.edu>
4202 4203
4203 4204 * Changed the first-time installer not to use tarfiles. It's more
4204 4205 robust now and less unix-dependent. Also makes it easier for
4205 4206 people to later upgrade versions.
4206 4207
4207 4208 * Changed @exit to @abort to reflect the fact that it's pretty
4208 4209 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4209 4210 becomes significant only when IPyhton is embedded: in that case,
4210 4211 C-D closes IPython only, but @abort kills the enclosing program
4211 4212 too (unless it had called IPython inside a try catching
4212 4213 SystemExit).
4213 4214
4214 4215 * Created Shell module which exposes the actuall IPython Shell
4215 4216 classes, currently the normal and the embeddable one. This at
4216 4217 least offers a stable interface we won't need to change when
4217 4218 (later) the internals are rewritten. That rewrite will be confined
4218 4219 to iplib and ipmaker, but the Shell interface should remain as is.
4219 4220
4220 4221 * Added embed module which offers an embeddable IPShell object,
4221 4222 useful to fire up IPython *inside* a running program. Great for
4222 4223 debugging or dynamical data analysis.
4223 4224
4224 4225 2001-12-08 Fernando Perez <fperez@colorado.edu>
4225 4226
4226 4227 * Fixed small bug preventing seeing info from methods of defined
4227 4228 objects (incorrect namespace in _ofind()).
4228 4229
4229 4230 * Documentation cleanup. Moved the main usage docstrings to a
4230 4231 separate file, usage.py (cleaner to maintain, and hopefully in the
4231 4232 future some perlpod-like way of producing interactive, man and
4232 4233 html docs out of it will be found).
4233 4234
4234 4235 * Added @profile to see your profile at any time.
4235 4236
4236 4237 * Added @p as an alias for 'print'. It's especially convenient if
4237 4238 using automagic ('p x' prints x).
4238 4239
4239 4240 * Small cleanups and fixes after a pychecker run.
4240 4241
4241 4242 * Changed the @cd command to handle @cd - and @cd -<n> for
4242 4243 visiting any directory in _dh.
4243 4244
4244 4245 * Introduced _dh, a history of visited directories. @dhist prints
4245 4246 it out with numbers.
4246 4247
4247 4248 2001-12-07 Fernando Perez <fperez@colorado.edu>
4248 4249
4249 4250 * Released 0.1.22
4250 4251
4251 4252 * Made initialization a bit more robust against invalid color
4252 4253 options in user input (exit, not traceback-crash).
4253 4254
4254 4255 * Changed the bug crash reporter to write the report only in the
4255 4256 user's .ipython directory. That way IPython won't litter people's
4256 4257 hard disks with crash files all over the place. Also print on
4257 4258 screen the necessary mail command.
4258 4259
4259 4260 * With the new ultraTB, implemented LightBG color scheme for light
4260 4261 background terminals. A lot of people like white backgrounds, so I
4261 4262 guess we should at least give them something readable.
4262 4263
4263 4264 2001-12-06 Fernando Perez <fperez@colorado.edu>
4264 4265
4265 4266 * Modified the structure of ultraTB. Now there's a proper class
4266 4267 for tables of color schemes which allow adding schemes easily and
4267 4268 switching the active scheme without creating a new instance every
4268 4269 time (which was ridiculous). The syntax for creating new schemes
4269 4270 is also cleaner. I think ultraTB is finally done, with a clean
4270 4271 class structure. Names are also much cleaner (now there's proper
4271 4272 color tables, no need for every variable to also have 'color' in
4272 4273 its name).
4273 4274
4274 4275 * Broke down genutils into separate files. Now genutils only
4275 4276 contains utility functions, and classes have been moved to their
4276 4277 own files (they had enough independent functionality to warrant
4277 4278 it): ConfigLoader, OutputTrap, Struct.
4278 4279
4279 4280 2001-12-05 Fernando Perez <fperez@colorado.edu>
4280 4281
4281 4282 * IPython turns 21! Released version 0.1.21, as a candidate for
4282 4283 public consumption. If all goes well, release in a few days.
4283 4284
4284 4285 * Fixed path bug (files in Extensions/ directory wouldn't be found
4285 4286 unless IPython/ was explicitly in sys.path).
4286 4287
4287 4288 * Extended the FlexCompleter class as MagicCompleter to allow
4288 4289 completion of @-starting lines.
4289 4290
4290 4291 * Created __release__.py file as a central repository for release
4291 4292 info that other files can read from.
4292 4293
4293 4294 * Fixed small bug in logging: when logging was turned on in
4294 4295 mid-session, old lines with special meanings (!@?) were being
4295 4296 logged without the prepended comment, which is necessary since
4296 4297 they are not truly valid python syntax. This should make session
4297 4298 restores produce less errors.
4298 4299
4299 4300 * The namespace cleanup forced me to make a FlexCompleter class
4300 4301 which is nothing but a ripoff of rlcompleter, but with selectable
4301 4302 namespace (rlcompleter only works in __main__.__dict__). I'll try
4302 4303 to submit a note to the authors to see if this change can be
4303 4304 incorporated in future rlcompleter releases (Dec.6: done)
4304 4305
4305 4306 * More fixes to namespace handling. It was a mess! Now all
4306 4307 explicit references to __main__.__dict__ are gone (except when
4307 4308 really needed) and everything is handled through the namespace
4308 4309 dicts in the IPython instance. We seem to be getting somewhere
4309 4310 with this, finally...
4310 4311
4311 4312 * Small documentation updates.
4312 4313
4313 4314 * Created the Extensions directory under IPython (with an
4314 4315 __init__.py). Put the PhysicalQ stuff there. This directory should
4315 4316 be used for all special-purpose extensions.
4316 4317
4317 4318 * File renaming:
4318 4319 ipythonlib --> ipmaker
4319 4320 ipplib --> iplib
4320 4321 This makes a bit more sense in terms of what these files actually do.
4321 4322
4322 4323 * Moved all the classes and functions in ipythonlib to ipplib, so
4323 4324 now ipythonlib only has make_IPython(). This will ease up its
4324 4325 splitting in smaller functional chunks later.
4325 4326
4326 4327 * Cleaned up (done, I think) output of @whos. Better column
4327 4328 formatting, and now shows str(var) for as much as it can, which is
4328 4329 typically what one gets with a 'print var'.
4329 4330
4330 4331 2001-12-04 Fernando Perez <fperez@colorado.edu>
4331 4332
4332 4333 * Fixed namespace problems. Now builtin/IPyhton/user names get
4333 4334 properly reported in their namespace. Internal namespace handling
4334 4335 is finally getting decent (not perfect yet, but much better than
4335 4336 the ad-hoc mess we had).
4336 4337
4337 4338 * Removed -exit option. If people just want to run a python
4338 4339 script, that's what the normal interpreter is for. Less
4339 4340 unnecessary options, less chances for bugs.
4340 4341
4341 4342 * Added a crash handler which generates a complete post-mortem if
4342 4343 IPython crashes. This will help a lot in tracking bugs down the
4343 4344 road.
4344 4345
4345 4346 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4346 4347 which were boud to functions being reassigned would bypass the
4347 4348 logger, breaking the sync of _il with the prompt counter. This
4348 4349 would then crash IPython later when a new line was logged.
4349 4350
4350 4351 2001-12-02 Fernando Perez <fperez@colorado.edu>
4351 4352
4352 4353 * Made IPython a package. This means people don't have to clutter
4353 4354 their sys.path with yet another directory. Changed the INSTALL
4354 4355 file accordingly.
4355 4356
4356 4357 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4357 4358 sorts its output (so @who shows it sorted) and @whos formats the
4358 4359 table according to the width of the first column. Nicer, easier to
4359 4360 read. Todo: write a generic table_format() which takes a list of
4360 4361 lists and prints it nicely formatted, with optional row/column
4361 4362 separators and proper padding and justification.
4362 4363
4363 4364 * Released 0.1.20
4364 4365
4365 4366 * Fixed bug in @log which would reverse the inputcache list (a
4366 4367 copy operation was missing).
4367 4368
4368 4369 * Code cleanup. @config was changed to use page(). Better, since
4369 4370 its output is always quite long.
4370 4371
4371 4372 * Itpl is back as a dependency. I was having too many problems
4372 4373 getting the parametric aliases to work reliably, and it's just
4373 4374 easier to code weird string operations with it than playing %()s
4374 4375 games. It's only ~6k, so I don't think it's too big a deal.
4375 4376
4376 4377 * Found (and fixed) a very nasty bug with history. !lines weren't
4377 4378 getting cached, and the out of sync caches would crash
4378 4379 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4379 4380 division of labor a bit better. Bug fixed, cleaner structure.
4380 4381
4381 4382 2001-12-01 Fernando Perez <fperez@colorado.edu>
4382 4383
4383 4384 * Released 0.1.19
4384 4385
4385 4386 * Added option -n to @hist to prevent line number printing. Much
4386 4387 easier to copy/paste code this way.
4387 4388
4388 4389 * Created global _il to hold the input list. Allows easy
4389 4390 re-execution of blocks of code by slicing it (inspired by Janko's
4390 4391 comment on 'macros').
4391 4392
4392 4393 * Small fixes and doc updates.
4393 4394
4394 4395 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4395 4396 much too fragile with automagic. Handles properly multi-line
4396 4397 statements and takes parameters.
4397 4398
4398 4399 2001-11-30 Fernando Perez <fperez@colorado.edu>
4399 4400
4400 4401 * Version 0.1.18 released.
4401 4402
4402 4403 * Fixed nasty namespace bug in initial module imports.
4403 4404
4404 4405 * Added copyright/license notes to all code files (except
4405 4406 DPyGetOpt). For the time being, LGPL. That could change.
4406 4407
4407 4408 * Rewrote a much nicer README, updated INSTALL, cleaned up
4408 4409 ipythonrc-* samples.
4409 4410
4410 4411 * Overall code/documentation cleanup. Basically ready for
4411 4412 release. Only remaining thing: licence decision (LGPL?).
4412 4413
4413 4414 * Converted load_config to a class, ConfigLoader. Now recursion
4414 4415 control is better organized. Doesn't include the same file twice.
4415 4416
4416 4417 2001-11-29 Fernando Perez <fperez@colorado.edu>
4417 4418
4418 4419 * Got input history working. Changed output history variables from
4419 4420 _p to _o so that _i is for input and _o for output. Just cleaner
4420 4421 convention.
4421 4422
4422 4423 * Implemented parametric aliases. This pretty much allows the
4423 4424 alias system to offer full-blown shell convenience, I think.
4424 4425
4425 4426 * Version 0.1.17 released, 0.1.18 opened.
4426 4427
4427 4428 * dot_ipython/ipythonrc (alias): added documentation.
4428 4429 (xcolor): Fixed small bug (xcolors -> xcolor)
4429 4430
4430 4431 * Changed the alias system. Now alias is a magic command to define
4431 4432 aliases just like the shell. Rationale: the builtin magics should
4432 4433 be there for things deeply connected to IPython's
4433 4434 architecture. And this is a much lighter system for what I think
4434 4435 is the really important feature: allowing users to define quickly
4435 4436 magics that will do shell things for them, so they can customize
4436 4437 IPython easily to match their work habits. If someone is really
4437 4438 desperate to have another name for a builtin alias, they can
4438 4439 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4439 4440 works.
4440 4441
4441 4442 2001-11-28 Fernando Perez <fperez@colorado.edu>
4442 4443
4443 4444 * Changed @file so that it opens the source file at the proper
4444 4445 line. Since it uses less, if your EDITOR environment is
4445 4446 configured, typing v will immediately open your editor of choice
4446 4447 right at the line where the object is defined. Not as quick as
4447 4448 having a direct @edit command, but for all intents and purposes it
4448 4449 works. And I don't have to worry about writing @edit to deal with
4449 4450 all the editors, less does that.
4450 4451
4451 4452 * Version 0.1.16 released, 0.1.17 opened.
4452 4453
4453 4454 * Fixed some nasty bugs in the page/page_dumb combo that could
4454 4455 crash IPython.
4455 4456
4456 4457 2001-11-27 Fernando Perez <fperez@colorado.edu>
4457 4458
4458 4459 * Version 0.1.15 released, 0.1.16 opened.
4459 4460
4460 4461 * Finally got ? and ?? to work for undefined things: now it's
4461 4462 possible to type {}.get? and get information about the get method
4462 4463 of dicts, or os.path? even if only os is defined (so technically
4463 4464 os.path isn't). Works at any level. For example, after import os,
4464 4465 os?, os.path?, os.path.abspath? all work. This is great, took some
4465 4466 work in _ofind.
4466 4467
4467 4468 * Fixed more bugs with logging. The sanest way to do it was to add
4468 4469 to @log a 'mode' parameter. Killed two in one shot (this mode
4469 4470 option was a request of Janko's). I think it's finally clean
4470 4471 (famous last words).
4471 4472
4472 4473 * Added a page_dumb() pager which does a decent job of paging on
4473 4474 screen, if better things (like less) aren't available. One less
4474 4475 unix dependency (someday maybe somebody will port this to
4475 4476 windows).
4476 4477
4477 4478 * Fixed problem in magic_log: would lock of logging out if log
4478 4479 creation failed (because it would still think it had succeeded).
4479 4480
4480 4481 * Improved the page() function using curses to auto-detect screen
4481 4482 size. Now it can make a much better decision on whether to print
4482 4483 or page a string. Option screen_length was modified: a value 0
4483 4484 means auto-detect, and that's the default now.
4484 4485
4485 4486 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4486 4487 go out. I'll test it for a few days, then talk to Janko about
4487 4488 licences and announce it.
4488 4489
4489 4490 * Fixed the length of the auto-generated ---> prompt which appears
4490 4491 for auto-parens and auto-quotes. Getting this right isn't trivial,
4491 4492 with all the color escapes, different prompt types and optional
4492 4493 separators. But it seems to be working in all the combinations.
4493 4494
4494 4495 2001-11-26 Fernando Perez <fperez@colorado.edu>
4495 4496
4496 4497 * Wrote a regexp filter to get option types from the option names
4497 4498 string. This eliminates the need to manually keep two duplicate
4498 4499 lists.
4499 4500
4500 4501 * Removed the unneeded check_option_names. Now options are handled
4501 4502 in a much saner manner and it's easy to visually check that things
4502 4503 are ok.
4503 4504
4504 4505 * Updated version numbers on all files I modified to carry a
4505 4506 notice so Janko and Nathan have clear version markers.
4506 4507
4507 4508 * Updated docstring for ultraTB with my changes. I should send
4508 4509 this to Nathan.
4509 4510
4510 4511 * Lots of small fixes. Ran everything through pychecker again.
4511 4512
4512 4513 * Made loading of deep_reload an cmd line option. If it's not too
4513 4514 kosher, now people can just disable it. With -nodeep_reload it's
4514 4515 still available as dreload(), it just won't overwrite reload().
4515 4516
4516 4517 * Moved many options to the no| form (-opt and -noopt
4517 4518 accepted). Cleaner.
4518 4519
4519 4520 * Changed magic_log so that if called with no parameters, it uses
4520 4521 'rotate' mode. That way auto-generated logs aren't automatically
4521 4522 over-written. For normal logs, now a backup is made if it exists
4522 4523 (only 1 level of backups). A new 'backup' mode was added to the
4523 4524 Logger class to support this. This was a request by Janko.
4524 4525
4525 4526 * Added @logoff/@logon to stop/restart an active log.
4526 4527
4527 4528 * Fixed a lot of bugs in log saving/replay. It was pretty
4528 4529 broken. Now special lines (!@,/) appear properly in the command
4529 4530 history after a log replay.
4530 4531
4531 4532 * Tried and failed to implement full session saving via pickle. My
4532 4533 idea was to pickle __main__.__dict__, but modules can't be
4533 4534 pickled. This would be a better alternative to replaying logs, but
4534 4535 seems quite tricky to get to work. Changed -session to be called
4535 4536 -logplay, which more accurately reflects what it does. And if we
4536 4537 ever get real session saving working, -session is now available.
4537 4538
4538 4539 * Implemented color schemes for prompts also. As for tracebacks,
4539 4540 currently only NoColor and Linux are supported. But now the
4540 4541 infrastructure is in place, based on a generic ColorScheme
4541 4542 class. So writing and activating new schemes both for the prompts
4542 4543 and the tracebacks should be straightforward.
4543 4544
4544 4545 * Version 0.1.13 released, 0.1.14 opened.
4545 4546
4546 4547 * Changed handling of options for output cache. Now counter is
4547 4548 hardwired starting at 1 and one specifies the maximum number of
4548 4549 entries *in the outcache* (not the max prompt counter). This is
4549 4550 much better, since many statements won't increase the cache
4550 4551 count. It also eliminated some confusing options, now there's only
4551 4552 one: cache_size.
4552 4553
4553 4554 * Added 'alias' magic function and magic_alias option in the
4554 4555 ipythonrc file. Now the user can easily define whatever names he
4555 4556 wants for the magic functions without having to play weird
4556 4557 namespace games. This gives IPython a real shell-like feel.
4557 4558
4558 4559 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4559 4560 @ or not).
4560 4561
4561 4562 This was one of the last remaining 'visible' bugs (that I know
4562 4563 of). I think if I can clean up the session loading so it works
4563 4564 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4564 4565 about licensing).
4565 4566
4566 4567 2001-11-25 Fernando Perez <fperez@colorado.edu>
4567 4568
4568 4569 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4569 4570 there's a cleaner distinction between what ? and ?? show.
4570 4571
4571 4572 * Added screen_length option. Now the user can define his own
4572 4573 screen size for page() operations.
4573 4574
4574 4575 * Implemented magic shell-like functions with automatic code
4575 4576 generation. Now adding another function is just a matter of adding
4576 4577 an entry to a dict, and the function is dynamically generated at
4577 4578 run-time. Python has some really cool features!
4578 4579
4579 4580 * Renamed many options to cleanup conventions a little. Now all
4580 4581 are lowercase, and only underscores where needed. Also in the code
4581 4582 option name tables are clearer.
4582 4583
4583 4584 * Changed prompts a little. Now input is 'In [n]:' instead of
4584 4585 'In[n]:='. This allows it the numbers to be aligned with the
4585 4586 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4586 4587 Python (it was a Mathematica thing). The '...' continuation prompt
4587 4588 was also changed a little to align better.
4588 4589
4589 4590 * Fixed bug when flushing output cache. Not all _p<n> variables
4590 4591 exist, so their deletion needs to be wrapped in a try:
4591 4592
4592 4593 * Figured out how to properly use inspect.formatargspec() (it
4593 4594 requires the args preceded by *). So I removed all the code from
4594 4595 _get_pdef in Magic, which was just replicating that.
4595 4596
4596 4597 * Added test to prefilter to allow redefining magic function names
4597 4598 as variables. This is ok, since the @ form is always available,
4598 4599 but whe should allow the user to define a variable called 'ls' if
4599 4600 he needs it.
4600 4601
4601 4602 * Moved the ToDo information from README into a separate ToDo.
4602 4603
4603 4604 * General code cleanup and small bugfixes. I think it's close to a
4604 4605 state where it can be released, obviously with a big 'beta'
4605 4606 warning on it.
4606 4607
4607 4608 * Got the magic function split to work. Now all magics are defined
4608 4609 in a separate class. It just organizes things a bit, and now
4609 4610 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4610 4611 was too long).
4611 4612
4612 4613 * Changed @clear to @reset to avoid potential confusions with
4613 4614 the shell command clear. Also renamed @cl to @clear, which does
4614 4615 exactly what people expect it to from their shell experience.
4615 4616
4616 4617 Added a check to the @reset command (since it's so
4617 4618 destructive, it's probably a good idea to ask for confirmation).
4618 4619 But now reset only works for full namespace resetting. Since the
4619 4620 del keyword is already there for deleting a few specific
4620 4621 variables, I don't see the point of having a redundant magic
4621 4622 function for the same task.
4622 4623
4623 4624 2001-11-24 Fernando Perez <fperez@colorado.edu>
4624 4625
4625 4626 * Updated the builtin docs (esp. the ? ones).
4626 4627
4627 4628 * Ran all the code through pychecker. Not terribly impressed with
4628 4629 it: lots of spurious warnings and didn't really find anything of
4629 4630 substance (just a few modules being imported and not used).
4630 4631
4631 4632 * Implemented the new ultraTB functionality into IPython. New
4632 4633 option: xcolors. This chooses color scheme. xmode now only selects
4633 4634 between Plain and Verbose. Better orthogonality.
4634 4635
4635 4636 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4636 4637 mode and color scheme for the exception handlers. Now it's
4637 4638 possible to have the verbose traceback with no coloring.
4638 4639
4639 4640 2001-11-23 Fernando Perez <fperez@colorado.edu>
4640 4641
4641 4642 * Version 0.1.12 released, 0.1.13 opened.
4642 4643
4643 4644 * Removed option to set auto-quote and auto-paren escapes by
4644 4645 user. The chances of breaking valid syntax are just too high. If
4645 4646 someone *really* wants, they can always dig into the code.
4646 4647
4647 4648 * Made prompt separators configurable.
4648 4649
4649 4650 2001-11-22 Fernando Perez <fperez@colorado.edu>
4650 4651
4651 4652 * Small bugfixes in many places.
4652 4653
4653 4654 * Removed the MyCompleter class from ipplib. It seemed redundant
4654 4655 with the C-p,C-n history search functionality. Less code to
4655 4656 maintain.
4656 4657
4657 4658 * Moved all the original ipython.py code into ipythonlib.py. Right
4658 4659 now it's just one big dump into a function called make_IPython, so
4659 4660 no real modularity has been gained. But at least it makes the
4660 4661 wrapper script tiny, and since ipythonlib is a module, it gets
4661 4662 compiled and startup is much faster.
4662 4663
4663 4664 This is a reasobably 'deep' change, so we should test it for a
4664 4665 while without messing too much more with the code.
4665 4666
4666 4667 2001-11-21 Fernando Perez <fperez@colorado.edu>
4667 4668
4668 4669 * Version 0.1.11 released, 0.1.12 opened for further work.
4669 4670
4670 4671 * Removed dependency on Itpl. It was only needed in one place. It
4671 4672 would be nice if this became part of python, though. It makes life
4672 4673 *a lot* easier in some cases.
4673 4674
4674 4675 * Simplified the prefilter code a bit. Now all handlers are
4675 4676 expected to explicitly return a value (at least a blank string).
4676 4677
4677 4678 * Heavy edits in ipplib. Removed the help system altogether. Now
4678 4679 obj?/?? is used for inspecting objects, a magic @doc prints
4679 4680 docstrings, and full-blown Python help is accessed via the 'help'
4680 4681 keyword. This cleans up a lot of code (less to maintain) and does
4681 4682 the job. Since 'help' is now a standard Python component, might as
4682 4683 well use it and remove duplicate functionality.
4683 4684
4684 4685 Also removed the option to use ipplib as a standalone program. By
4685 4686 now it's too dependent on other parts of IPython to function alone.
4686 4687
4687 4688 * Fixed bug in genutils.pager. It would crash if the pager was
4688 4689 exited immediately after opening (broken pipe).
4689 4690
4690 4691 * Trimmed down the VerboseTB reporting a little. The header is
4691 4692 much shorter now and the repeated exception arguments at the end
4692 4693 have been removed. For interactive use the old header seemed a bit
4693 4694 excessive.
4694 4695
4695 4696 * Fixed small bug in output of @whos for variables with multi-word
4696 4697 types (only first word was displayed).
4697 4698
4698 4699 2001-11-17 Fernando Perez <fperez@colorado.edu>
4699 4700
4700 4701 * Version 0.1.10 released, 0.1.11 opened for further work.
4701 4702
4702 4703 * Modified dirs and friends. dirs now *returns* the stack (not
4703 4704 prints), so one can manipulate it as a variable. Convenient to
4704 4705 travel along many directories.
4705 4706
4706 4707 * Fixed bug in magic_pdef: would only work with functions with
4707 4708 arguments with default values.
4708 4709
4709 4710 2001-11-14 Fernando Perez <fperez@colorado.edu>
4710 4711
4711 4712 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4712 4713 example with IPython. Various other minor fixes and cleanups.
4713 4714
4714 4715 * Version 0.1.9 released, 0.1.10 opened for further work.
4715 4716
4716 4717 * Added sys.path to the list of directories searched in the
4717 4718 execfile= option. It used to be the current directory and the
4718 4719 user's IPYTHONDIR only.
4719 4720
4720 4721 2001-11-13 Fernando Perez <fperez@colorado.edu>
4721 4722
4722 4723 * Reinstated the raw_input/prefilter separation that Janko had
4723 4724 initially. This gives a more convenient setup for extending the
4724 4725 pre-processor from the outside: raw_input always gets a string,
4725 4726 and prefilter has to process it. We can then redefine prefilter
4726 4727 from the outside and implement extensions for special
4727 4728 purposes.
4728 4729
4729 4730 Today I got one for inputting PhysicalQuantity objects
4730 4731 (from Scientific) without needing any function calls at
4731 4732 all. Extremely convenient, and it's all done as a user-level
4732 4733 extension (no IPython code was touched). Now instead of:
4733 4734 a = PhysicalQuantity(4.2,'m/s**2')
4734 4735 one can simply say
4735 4736 a = 4.2 m/s**2
4736 4737 or even
4737 4738 a = 4.2 m/s^2
4738 4739
4739 4740 I use this, but it's also a proof of concept: IPython really is
4740 4741 fully user-extensible, even at the level of the parsing of the
4741 4742 command line. It's not trivial, but it's perfectly doable.
4742 4743
4743 4744 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4744 4745 the problem of modules being loaded in the inverse order in which
4745 4746 they were defined in
4746 4747
4747 4748 * Version 0.1.8 released, 0.1.9 opened for further work.
4748 4749
4749 4750 * Added magics pdef, source and file. They respectively show the
4750 4751 definition line ('prototype' in C), source code and full python
4751 4752 file for any callable object. The object inspector oinfo uses
4752 4753 these to show the same information.
4753 4754
4754 4755 * Version 0.1.7 released, 0.1.8 opened for further work.
4755 4756
4756 4757 * Separated all the magic functions into a class called Magic. The
4757 4758 InteractiveShell class was becoming too big for Xemacs to handle
4758 4759 (de-indenting a line would lock it up for 10 seconds while it
4759 4760 backtracked on the whole class!)
4760 4761
4761 4762 FIXME: didn't work. It can be done, but right now namespaces are
4762 4763 all messed up. Do it later (reverted it for now, so at least
4763 4764 everything works as before).
4764 4765
4765 4766 * Got the object introspection system (magic_oinfo) working! I
4766 4767 think this is pretty much ready for release to Janko, so he can
4767 4768 test it for a while and then announce it. Pretty much 100% of what
4768 4769 I wanted for the 'phase 1' release is ready. Happy, tired.
4769 4770
4770 4771 2001-11-12 Fernando Perez <fperez@colorado.edu>
4771 4772
4772 4773 * Version 0.1.6 released, 0.1.7 opened for further work.
4773 4774
4774 4775 * Fixed bug in printing: it used to test for truth before
4775 4776 printing, so 0 wouldn't print. Now checks for None.
4776 4777
4777 4778 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4778 4779 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4779 4780 reaches by hand into the outputcache. Think of a better way to do
4780 4781 this later.
4781 4782
4782 4783 * Various small fixes thanks to Nathan's comments.
4783 4784
4784 4785 * Changed magic_pprint to magic_Pprint. This way it doesn't
4785 4786 collide with pprint() and the name is consistent with the command
4786 4787 line option.
4787 4788
4788 4789 * Changed prompt counter behavior to be fully like
4789 4790 Mathematica's. That is, even input that doesn't return a result
4790 4791 raises the prompt counter. The old behavior was kind of confusing
4791 4792 (getting the same prompt number several times if the operation
4792 4793 didn't return a result).
4793 4794
4794 4795 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4795 4796
4796 4797 * Fixed -Classic mode (wasn't working anymore).
4797 4798
4798 4799 * Added colored prompts using Nathan's new code. Colors are
4799 4800 currently hardwired, they can be user-configurable. For
4800 4801 developers, they can be chosen in file ipythonlib.py, at the
4801 4802 beginning of the CachedOutput class def.
4802 4803
4803 4804 2001-11-11 Fernando Perez <fperez@colorado.edu>
4804 4805
4805 4806 * Version 0.1.5 released, 0.1.6 opened for further work.
4806 4807
4807 4808 * Changed magic_env to *return* the environment as a dict (not to
4808 4809 print it). This way it prints, but it can also be processed.
4809 4810
4810 4811 * Added Verbose exception reporting to interactive
4811 4812 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4812 4813 traceback. Had to make some changes to the ultraTB file. This is
4813 4814 probably the last 'big' thing in my mental todo list. This ties
4814 4815 in with the next entry:
4815 4816
4816 4817 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4817 4818 has to specify is Plain, Color or Verbose for all exception
4818 4819 handling.
4819 4820
4820 4821 * Removed ShellServices option. All this can really be done via
4821 4822 the magic system. It's easier to extend, cleaner and has automatic
4822 4823 namespace protection and documentation.
4823 4824
4824 4825 2001-11-09 Fernando Perez <fperez@colorado.edu>
4825 4826
4826 4827 * Fixed bug in output cache flushing (missing parameter to
4827 4828 __init__). Other small bugs fixed (found using pychecker).
4828 4829
4829 4830 * Version 0.1.4 opened for bugfixing.
4830 4831
4831 4832 2001-11-07 Fernando Perez <fperez@colorado.edu>
4832 4833
4833 4834 * Version 0.1.3 released, mainly because of the raw_input bug.
4834 4835
4835 4836 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4836 4837 and when testing for whether things were callable, a call could
4837 4838 actually be made to certain functions. They would get called again
4838 4839 once 'really' executed, with a resulting double call. A disaster
4839 4840 in many cases (list.reverse() would never work!).
4840 4841
4841 4842 * Removed prefilter() function, moved its code to raw_input (which
4842 4843 after all was just a near-empty caller for prefilter). This saves
4843 4844 a function call on every prompt, and simplifies the class a tiny bit.
4844 4845
4845 4846 * Fix _ip to __ip name in magic example file.
4846 4847
4847 4848 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4848 4849 work with non-gnu versions of tar.
4849 4850
4850 4851 2001-11-06 Fernando Perez <fperez@colorado.edu>
4851 4852
4852 4853 * Version 0.1.2. Just to keep track of the recent changes.
4853 4854
4854 4855 * Fixed nasty bug in output prompt routine. It used to check 'if
4855 4856 arg != None...'. Problem is, this fails if arg implements a
4856 4857 special comparison (__cmp__) which disallows comparing to
4857 4858 None. Found it when trying to use the PhysicalQuantity module from
4858 4859 ScientificPython.
4859 4860
4860 4861 2001-11-05 Fernando Perez <fperez@colorado.edu>
4861 4862
4862 4863 * Also added dirs. Now the pushd/popd/dirs family functions
4863 4864 basically like the shell, with the added convenience of going home
4864 4865 when called with no args.
4865 4866
4866 4867 * pushd/popd slightly modified to mimic shell behavior more
4867 4868 closely.
4868 4869
4869 4870 * Added env,pushd,popd from ShellServices as magic functions. I
4870 4871 think the cleanest will be to port all desired functions from
4871 4872 ShellServices as magics and remove ShellServices altogether. This
4872 4873 will provide a single, clean way of adding functionality
4873 4874 (shell-type or otherwise) to IP.
4874 4875
4875 4876 2001-11-04 Fernando Perez <fperez@colorado.edu>
4876 4877
4877 4878 * Added .ipython/ directory to sys.path. This way users can keep
4878 4879 customizations there and access them via import.
4879 4880
4880 4881 2001-11-03 Fernando Perez <fperez@colorado.edu>
4881 4882
4882 4883 * Opened version 0.1.1 for new changes.
4883 4884
4884 4885 * Changed version number to 0.1.0: first 'public' release, sent to
4885 4886 Nathan and Janko.
4886 4887
4887 4888 * Lots of small fixes and tweaks.
4888 4889
4889 4890 * Minor changes to whos format. Now strings are shown, snipped if
4890 4891 too long.
4891 4892
4892 4893 * Changed ShellServices to work on __main__ so they show up in @who
4893 4894
4894 4895 * Help also works with ? at the end of a line:
4895 4896 ?sin and sin?
4896 4897 both produce the same effect. This is nice, as often I use the
4897 4898 tab-complete to find the name of a method, but I used to then have
4898 4899 to go to the beginning of the line to put a ? if I wanted more
4899 4900 info. Now I can just add the ? and hit return. Convenient.
4900 4901
4901 4902 2001-11-02 Fernando Perez <fperez@colorado.edu>
4902 4903
4903 4904 * Python version check (>=2.1) added.
4904 4905
4905 4906 * Added LazyPython documentation. At this point the docs are quite
4906 4907 a mess. A cleanup is in order.
4907 4908
4908 4909 * Auto-installer created. For some bizarre reason, the zipfiles
4909 4910 module isn't working on my system. So I made a tar version
4910 4911 (hopefully the command line options in various systems won't kill
4911 4912 me).
4912 4913
4913 4914 * Fixes to Struct in genutils. Now all dictionary-like methods are
4914 4915 protected (reasonably).
4915 4916
4916 4917 * Added pager function to genutils and changed ? to print usage
4917 4918 note through it (it was too long).
4918 4919
4919 4920 * Added the LazyPython functionality. Works great! I changed the
4920 4921 auto-quote escape to ';', it's on home row and next to '. But
4921 4922 both auto-quote and auto-paren (still /) escapes are command-line
4922 4923 parameters.
4923 4924
4924 4925
4925 4926 2001-11-01 Fernando Perez <fperez@colorado.edu>
4926 4927
4927 4928 * Version changed to 0.0.7. Fairly large change: configuration now
4928 4929 is all stored in a directory, by default .ipython. There, all
4929 4930 config files have normal looking names (not .names)
4930 4931
4931 4932 * Version 0.0.6 Released first to Lucas and Archie as a test
4932 4933 run. Since it's the first 'semi-public' release, change version to
4933 4934 > 0.0.6 for any changes now.
4934 4935
4935 4936 * Stuff I had put in the ipplib.py changelog:
4936 4937
4937 4938 Changes to InteractiveShell:
4938 4939
4939 4940 - Made the usage message a parameter.
4940 4941
4941 4942 - Require the name of the shell variable to be given. It's a bit
4942 4943 of a hack, but allows the name 'shell' not to be hardwire in the
4943 4944 magic (@) handler, which is problematic b/c it requires
4944 4945 polluting the global namespace with 'shell'. This in turn is
4945 4946 fragile: if a user redefines a variable called shell, things
4946 4947 break.
4947 4948
4948 4949 - magic @: all functions available through @ need to be defined
4949 4950 as magic_<name>, even though they can be called simply as
4950 4951 @<name>. This allows the special command @magic to gather
4951 4952 information automatically about all existing magic functions,
4952 4953 even if they are run-time user extensions, by parsing the shell
4953 4954 instance __dict__ looking for special magic_ names.
4954 4955
4955 4956 - mainloop: added *two* local namespace parameters. This allows
4956 4957 the class to differentiate between parameters which were there
4957 4958 before and after command line initialization was processed. This
4958 4959 way, later @who can show things loaded at startup by the
4959 4960 user. This trick was necessary to make session saving/reloading
4960 4961 really work: ideally after saving/exiting/reloading a session,
4961 4962 *everythin* should look the same, including the output of @who. I
4962 4963 was only able to make this work with this double namespace
4963 4964 trick.
4964 4965
4965 4966 - added a header to the logfile which allows (almost) full
4966 4967 session restoring.
4967 4968
4968 4969 - prepend lines beginning with @ or !, with a and log
4969 4970 them. Why? !lines: may be useful to know what you did @lines:
4970 4971 they may affect session state. So when restoring a session, at
4971 4972 least inform the user of their presence. I couldn't quite get
4972 4973 them to properly re-execute, but at least the user is warned.
4973 4974
4974 4975 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now