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