##// END OF EJS Templates
Release 0.8.3 branch
vivainio2 -
Show More
@@ -1,89 +1,89 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Release data for the IPython project.
3 3
4 4 $Id: Release.py 3002 2008-02-01 07:17:00Z fperez $"""
5 5
6 6 #*****************************************************************************
7 7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 8 #
9 9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
10 10 # <n8gray@caltech.edu>
11 11 #
12 12 # Distributed under the terms of the BSD License. The full license is in
13 13 # the file COPYING, distributed as part of this software.
14 14 #*****************************************************************************
15 15
16 16 # Name of the package for release purposes. This is the name which labels
17 17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
18 18 name = 'ipython'
19 19
20 20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
21 21 # the new substring. We have to avoid using either dashes or underscores,
22 22 # because bdist_rpm does not accept dashes (an RPM) convention, and
23 23 # bdist_deb does not accept underscores (a Debian convention).
24 24
25 revision = '114'
25 revision = '117'
26 26 branch = 'ipython'
27 27
28 28 if branch == 'ipython':
29 29 version = '0.8.3.bzr.r' + revision
30 30 else:
31 31 version = '0.8.3.bzr.r%s.%s' % (revision,branch)
32 32
33 version = '0.8.3.rc1'
33 version = '0.8.3'
34 34
35 35 description = "An enhanced interactive Python shell."
36 36
37 37 long_description = \
38 38 """
39 39 IPython provides a replacement for the interactive Python interpreter with
40 40 extra functionality.
41 41
42 42 Main features:
43 43
44 44 * Comprehensive object introspection.
45 45
46 46 * Input history, persistent across sessions.
47 47
48 48 * Caching of output results during a session with automatically generated
49 49 references.
50 50
51 51 * Readline based name completion.
52 52
53 53 * Extensible system of 'magic' commands for controlling the environment and
54 54 performing many tasks related either to IPython or the operating system.
55 55
56 56 * Configuration system with easy switching between different setups (simpler
57 57 than changing $PYTHONSTARTUP environment variables every time).
58 58
59 59 * Session logging and reloading.
60 60
61 61 * Extensible syntax processing for special purpose situations.
62 62
63 63 * Access to the system shell with user-extensible alias system.
64 64
65 65 * Easily embeddable in other Python programs.
66 66
67 67 * Integrated access to the pdb debugger and the Python profiler.
68 68
69 69 The latest development version is always available at the IPython subversion
70 70 repository_.
71 71
72 72 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
73 73 """
74 74
75 75 license = 'BSD'
76 76
77 77 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
78 78 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
79 79 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
80 80 'Ville' : ('Ville Vainio','vivainio@gmail.com')
81 81 }
82 82
83 83 url = 'http://ipython.scipy.org'
84 84
85 85 download_url = 'http://ipython.scipy.org/dist'
86 86
87 87 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
88 88
89 89 keywords = ['Interactive','Interpreter','Shell']
@@ -1,7605 +1,7607 b''
1 1 2008-05-27 Ville Vainio <vivainio@gmail.com>
2 2
3 3 * iplib.py, ipmaker.py: survive lack of doctest and site._Helper
4 4 for minimal environments (e.g. Maemo sdk python)
5 5
6 * Branch for 0.8.3
7
6 8 2008-05-14 Ville Vainio <vivainio@gmail.com>
7 9
8 10 * Extensions/ipy_greedycompleter.py:
9 11 New extension that enables a bit more "relaxed" tab
10 12 completer that evaluates code without safety checks
11 13 (i.e. there can be side effects like function calls)
12 14
13 15 2008-04-20 Ville Vainio <vivainio@gmail.com>
14 16
15 17 * Extensions/ipy_lookfor.py: add %lookfor magic command
16 18 (search docstrings for words) by Pauli Virtanen. Close #245.
17 19
18 20 * Extension/ipy_jot.py: %jot and %read magics, analogous
19 21 to %store but you can specify some notes. Not read
20 22 in automatically on startup, you need %read.
21 23 Contributed by Yichun Wei.
22 24
23 25 2008-04-18 Fernando Perez <Fernando.Perez@berkeley.edu>
24 26
25 27 * IPython/genutils.py (page): apply workaround to curses bug that
26 28 can leave terminal corrupted after a call to initscr().
27 29
28 30 2008-04-15 Ville Vainio <vivainio@gmail.com>
29 31
30 32 * genutils.py: SList.grep supports 'field' argument
31 33
32 34 * ipy_completers.py: module completer looks inside
33 35 .egg zip files (patch by mc). Close #196.
34 36
35 37 2008-04-09 Ville Vainio <vivainio@gmail.com>
36 38
37 39 * deep_reload.py: do not crash on from __future__ import
38 40 absolute_import. Close #244.
39 41
40 42 2008-04-02 Ville Vainio <vivainio@gmail.com>
41 43
42 44 * ipy_winpdb.py: New extension for winpdb integration. %wdb
43 45 test.py is winpdb equivalent of %run -d test.py. winpdb is a
44 46 crossplatform remote GUI debugger based on wxpython.
45 47
46 48 2008-03-29 Ville Vainio <vivainio@gmail.com>
47 49
48 50 * ipython.rst, do_sphinx.py: New documentation base, based on
49 51 reStucturedText and Sphinx (html/pdf generation). The old Lyx
50 52 based documentation will not be updated anymore.
51 53
52 54 * jobctrl.py: Use shell in Popen for 'start' command (in windows).
53 55
54 56 2008-03-24 Ville Vainio <vivainio@gmail.com>
55 57
56 58 * ipython.rst, do_sphinx.py: New documentation base, based on
57 59 reStucturedText and Sphinx (html/pdf generation). The old Lyx
58 60 based documentation will not be updated anymore.
59 61
60 62 ipython.rst has up to date documentation on matters that were not
61 63 documented at all, and it also removes various
62 64 misdocumented/deprecated features.
63 65
64 66 2008-03-22 Ville Vainio <vivainio@gmail.com>
65 67
66 68 * Shell.py: Merge mtexp branch:
67 69 https://code.launchpad.net/~ipython/ipython/mtexp
68 70
69 71 Privides simpler and more robust MTInteractiveShell that won't
70 72 deadlock, even when the worker thread (GUI) stops doing runcode()
71 73 regularly. r71.
72 74
73 75 2008-03-20 Ville Vainio <vivainio@gmail.com>
74 76
75 77 * twshell.py: New shell that runs IPython code in Twisted reactor.
76 78 Launch by doing ipython -twisted. r67.
77 79
78 80 2008-03-19 Ville Vainio <vivainio@gmail.com>
79 81
80 82 * Magic.py: %rehashx works correctly when shadowed system commands
81 83 have upper case characters (e.g. Print.exe). r64.
82 84
83 85 * ipy_bzr.py, ipy_app_completers.py: new bzr completer that also
84 86 knows options to commands, based on bzrtools. Uses bzrlib
85 87 directly. r66.
86 88
87 89 2008-03-16 Ville Vainio <vivainio@gmail.com>
88 90
89 91 * make_tarball.py: Fixed for bzr.
90 92
91 93 * ipapi.py: Better _ip.runlines() script cleanup. r56,r79.
92 94
93 95 * ipy_vimserver.py, ipy.vim: New extension for vim server mode,
94 96 by Erich Heine.
95 97
96 98 2008-03-12 Ville Vainio <vivainio@gmail.com>
97 99
98 100 * ipmaker.py: Force (reload?) import of ipy_user_conf and
99 101 ipy_profile_foo, so that embedded instances can be relaunched and
100 102 configuration is still done. r50
101 103
102 104 * ipapi.py, test_embed.py: Allow specifying shell class in
103 105 launch_new_instance & make_new instance. Use this in
104 106 test_embed.py. r51.
105 107
106 108 test_embed.py is also a good and simple demo of embedding IPython.
107 109
108 110
109 111 2008-03-10 Ville Vainio <vivainio@gmail.com>
110 112
111 113 * tool/update_revnum.py: Change to bzr revisioning scheme in
112 114 revision numbers.
113 115
114 116 * Shell.py: Threading improvements:
115 117
116 118 In multithreaded shells, do not hang on macros and o.autoexec
117 119 commands (or anything executed with _ip.runlines()) anymore. Allow
118 120 recursive execution of IPython code in
119 121 MTInteractiveShell.runsource by checking if we are already in
120 122 worker thread, and execute code directly if we are. r48.
121 123
122 124 MTInteractiveShell.runsource: execute code directly if worker
123 125 thread is not running yet (this is the case in config files). r49.
124 126
125 127 2008-03-09 Ville Vainio <vivainio@gmail.com>
126 128
127 129 * ipy_profile_sh.py: You can now use $LA or LA() to refer to last
128 130 argument of previous command in sh profile. Similar to bash '!$'.
129 131 LA(3) or $LA(3) stands for last argument of input history command
130 132 3.
131 133
132 134 * Shell.py: -pylab names don't clutter %whos listing.
133 135
134 136 2008-03-07 Ville Vainio <vivainio@gmail.com>
135 137
136 138 * ipy_autoreload.py: new extension (by Pauli Virtanen) for
137 139 autoreloading modules; try %autoreload and %aimport. Close #154.
138 140 Uses the new pre_runcode_hook.
139 141
140 142 2008-02-24 Ville Vainio <vivainio@gmail.com>
141 143
142 144 * platutils_posix.py: freeze_term_title works
143 145
144 146 2008-02-21 Ville Vainio <vivainio@gmail.com>
145 147
146 148 * Magic.py: %quickref does not crash with empty docstring
147 149
148 150 2008-02-20 Ville Vainio <vivainio@gmail.com>
149 151
150 152 * completer.py: do not treat [](){} as protectable chars anymore,
151 153 close #233.
152 154
153 155 * completer.py: do not treat [](){} as protectable chars anymore
154 156
155 157 * magic.py, test_cpaste.py: Allow different prefix for pasting
156 158 from email
157 159
158 160 2008-02-17 Ville Vainio <vivainio@gmail.com>
159 161
160 162 * Switched over to Launchpad/bzr as primary VCS.
161 163
162 164 2008-02-14 Ville Vainio <vivainio@gmail.com>
163 165
164 166 * ipapi.py: _ip.runlines() is now much more liberal about
165 167 indentation - it cleans up the scripts it gets
166 168
167 169 2008-02-14 Ville Vainio <vivainio@gmail.com>
168 170
169 171 * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
170 172 Changes to it (later on) are too numerous to list in ChangeLog
171 173 until it stabilizes
172 174
173 175 2008-02-07 Darren Dale <darren.dale@cornell.edu>
174 176
175 177 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
176 178 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
177 179 interaction in the interpreter (like Tkinter does), but it seems to
178 180 partially interfere with the IPython implementation and exec_()
179 181 still seems to block. So we disable the PyQt implementation and
180 182 stick with the IPython one for now.
181 183
182 184 2008-02-02 Walter Doerwald <walter@livinglogic.de>
183 185
184 186 * ipipe.py: A new ipipe table has been added: ialias produces all
185 187 entries from IPython's alias table.
186 188
187 189 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
188 190
189 191 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
190 192 of KBINT in threaded shells. After code provided by Marc in #212.
191 193
192 194 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
193 195
194 196 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
195 197 that could occur due to a race condition in threaded shells.
196 198 Thanks to code provided by Marc, as #210.
197 199
198 200 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
199 201
200 202 * IPython/Magic.py (magic_doctest_mode): respect the user's
201 203 settings for input separators rather than overriding them. After
202 204 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
203 205
204 206 * IPython/history.py (magic_history): Add support for declaring an
205 207 output file directly from the history command.
206 208
207 209 2008-01-21 Walter Doerwald <walter@livinglogic.de>
208 210
209 211 * ipipe.py: Register ipipe's displayhooks via the generic function
210 212 generics.result_display() instead of using ipapi.set_hook().
211 213
212 214 2008-01-19 Walter Doerwald <walter@livinglogic.de>
213 215
214 216 * ibrowse.py, igrid.py, ipipe.py:
215 217 The input object can now be passed to the constructor of the display classes.
216 218 This makes it possible to use them with objects that implement __or__.
217 219 Use this constructor in the displayhook instead of piping.
218 220
219 221 * ipipe.py: Importing astyle.py is done as late as possible to
220 222 avoid problems with circular imports.
221 223
222 224 2008-01-19 Ville Vainio <vivainio@gmail.com>
223 225
224 226 * hooks.py, iplib.py: Added 'shell_hook' to customize how
225 227 IPython calls shell.
226 228
227 229 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
228 230 how IPython pages text (%page, %pycat, %pdoc etc.)
229 231
230 232 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
231 233 and '%kill' to kill hanging processes that won't obey ctrl+C.
232 234
233 235 2008-01-16 Ville Vainio <vivainio@gmail.com>
234 236
235 237 * ipy_completers.py: pyw extension support for %run completer.
236 238
237 239 2008-01-11 Ville Vainio <vivainio@gmail.com>
238 240
239 241 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
240 242 of ipython commands to be run when IPython has started up
241 243 (just before running the scripts and -c arg on command line).
242 244
243 245 * ipy_user_conf.py: Added an example on how to change term
244 246 colors in config file (through using autoexec).
245 247
246 248 * completer.py, test_completer.py: Ability to specify custom
247 249 get_endidx to replace readline.get_endidx. For emacs users.
248 250
249 251 2008-01-10 Ville Vainio <vivainio@gmail.com>
250 252
251 253 * Prompts.py (set_p_str): do not crash on illegal prompt strings
252 254
253 255 2008-01-08 Ville Vainio <vivainio@gmail.com>
254 256
255 257 * '%macro -r' (raw mode) is now default in sh profile.
256 258
257 259 2007-12-31 Ville Vainio <vivainio@gmail.com>
258 260
259 261 * completer.py: custom completer matching is now case sensitive
260 262 (#207).
261 263
262 264 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
263 265 an attempt to prevent occasional crashes.
264 266
265 267 * CrashHandler.py: Crash log dump now asks user to press enter
266 268 before exiting.
267 269
268 270 * Store _ip in user_ns instead of __builtin__, enabling safer
269 271 coexistence of multiple IPython instances in the same python
270 272 interpreter (#197).
271 273
272 274 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
273 275 switch to enable pydb in post-mortem debugging and %run -d.
274 276
275 277 2007-12-28 Ville Vainio <vivainio@gmail.com>
276 278
277 279 * ipy_server.py: TCP socket server for "remote control" of an IPython
278 280 instance.
279 281
280 282 * Debugger.py: Change to PSF license
281 283
282 284 * simplegeneric.py: Add license & author notes.
283 285
284 286 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
285 287 to navigate file system with a custom completer. Run
286 288 ipy_fsops.test_pathobj() to play with it.
287 289
288 290 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
289 291
290 292 * IPython/dtutils.py: Add utilities for interactively running
291 293 doctests. Still needs work to more easily handle the namespace of
292 294 the package one may be working on, but the basics are in place.
293 295
294 296 2007-12-27 Ville Vainio <vivainio@gmail.com>
295 297
296 298 * ipy_completers.py: Applied arno's patch to get proper list of
297 299 packages in import completer. Closes #196.
298 300
299 301 2007-12-20 Ville Vainio <vivainio@gmail.com>
300 302
301 303 * completer.py, generics.py(complete_object): Allow
302 304 custom complers based on python objects via simplegeneric.
303 305 See generics.py / my_demo_complete_object
304 306
305 307 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
306 308
307 309 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
308 310 behavior to prompt objects, useful for display hooks to adjust
309 311 themselves depending on whether prompts will be there or not.
310 312
311 313 2007-12-13 Ville Vainio <vivainio@gmail.com>
312 314
313 315 * iplib.py(raw_input): unix readline does not allow unicode in
314 316 history, encode to normal string. After patch by Tiago.
315 317 Close #201
316 318
317 319 2007-12-12 Ville Vainio <vivainio@gmail.com>
318 320
319 321 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
320 322 current directory.
321 323
322 324 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
323 325
324 326 * IPython/Shell.py (_select_shell): add support for controlling
325 327 the pylab threading mode directly at the command line, without
326 328 having to modify MPL config files. Added unit tests for this
327 329 feature, though manual/docs update is still pending, will do later.
328 330
329 331 2007-12-11 Ville Vainio <vivainio@gmail.com>
330 332
331 333 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
332 334 use in scripts)
333 335
334 336 2007-12-07 Ville Vainio <vivainio@gmail.com>
335 337
336 338 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
337 339 anymore (to \#) - even if it is a comment char that is implicitly
338 340 escaped in some unix shells in interactive mode, it is ok to leave
339 341 it in IPython as such.
340 342
341 343
342 344 2007-12-01 Robert Kern <robert.kern@gmail.com>
343 345
344 346 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
345 347 inspect.findsource(). It can now find source lines inside zipped
346 348 packages.
347 349
348 350 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
349 351 in the frame's namespace before trusting the filename in the code object
350 352 which created the frame.
351 353
352 354 2007-11-29 *** Released version 0.8.2
353 355
354 356 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
355 357
356 358 * IPython/Logger.py (Logger.logstop): add a proper logstop()
357 359 method to fully stop the logger, along with a corresponding
358 360 %logstop magic for interactive use.
359 361
360 362 * IPython/Extensions/ipy_host_completers.py: added new host
361 363 completers functionality, contributed by Gael Pasgrimaud
362 364 <gawel-AT-afpy.org>.
363 365
364 366 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
365 367
366 368 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
367 369 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
368 370 options handling. Unicode fix in %whos (committed a while ago)
369 371 was also contributed by Paul.
370 372
371 373 2007-11-23 Darren Dale <darren.dale@cornell.edu>
372 374 * ipy_traits_completer.py: let traits_completer respect the user's
373 375 readline_omit__names setting.
374 376
375 377 2007-11-08 Ville Vainio <vivainio@gmail.com>
376 378
377 379 * ipy_completers.py (import completer): assume 'xml' module exists.
378 380 Do not add every module twice anymore. Closes #196.
379 381
380 382 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
381 383 completer that uses apt-cache to search for existing packages.
382 384
383 385 2007-11-06 Ville Vainio <vivainio@gmail.com>
384 386
385 387 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
386 388 true. Closes #194.
387 389
388 390 2007-11-01 Brian Granger <ellisonbg@gmail.com>
389 391
390 392 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
391 393 working with OS X 10.5 libedit implementation of readline.
392 394
393 395 2007-10-24 Ville Vainio <vivainio@gmail.com>
394 396
395 397 * iplib.py(user_setup): To route around buggy installations where
396 398 UserConfig is not available, create a minimal _ipython.
397 399
398 400 * iplib.py: Unicode fixes from Jorgen.
399 401
400 402 * genutils.py: Slist now has new method 'fields()' for extraction of
401 403 whitespace-separated fields from line-oriented data.
402 404
403 405 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
404 406
405 407 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
406 408 when querying objects with no __class__ attribute (such as
407 409 f2py-generated modules).
408 410
409 411 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
410 412
411 413 * IPython/Magic.py (magic_time): track compilation time and report
412 414 it if longer than 0.1s (fix done to %time and %timeit). After a
413 415 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
414 416
415 417 2007-09-18 Ville Vainio <vivainio@gmail.com>
416 418
417 419 * genutils.py(make_quoted_expr): Do not use Itpl, it does
418 420 not support unicode at the moment. Fixes (many) magic calls with
419 421 special characters.
420 422
421 423 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
422 424
423 425 * IPython/genutils.py (doctest_reload): expose the doctest
424 426 reloader to the user so that people can easily reset doctest while
425 427 using it interactively. Fixes a problem reported by Jorgen.
426 428
427 429 * IPython/iplib.py (InteractiveShell.__init__): protect the
428 430 FakeModule instances used for __main__ in %run calls from
429 431 deletion, so that user code defined in them isn't left with
430 432 dangling references due to the Python module deletion machinery.
431 433 This should fix the problems reported by Darren.
432 434
433 435 2007-09-10 Darren Dale <dd55@cornell.edu>
434 436
435 437 * Cleanup of IPShellQt and IPShellQt4
436 438
437 439 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
438 440
439 441 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
440 442 doctest support.
441 443
442 444 * IPython/iplib.py (safe_execfile): minor docstring improvements.
443 445
444 446 2007-09-08 Ville Vainio <vivainio@gmail.com>
445 447
446 448 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
447 449 directory, not the target directory.
448 450
449 451 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
450 452 exception that won't print the tracebacks. Switched many magics to
451 453 raise them on error situations, also GetoptError is not printed
452 454 anymore.
453 455
454 456 2007-09-07 Ville Vainio <vivainio@gmail.com>
455 457
456 458 * iplib.py: do not auto-alias "dir", it screws up other dir auto
457 459 aliases.
458 460
459 461 * genutils.py: SList.grep() implemented.
460 462
461 463 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
462 464 for easy "out of the box" setup of several common editors, so that
463 465 e.g. '%edit os.path.isfile' will jump to the correct line
464 466 automatically. Contributions for command lines of your favourite
465 467 editors welcome.
466 468
467 469 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
468 470
469 471 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
470 472 preventing source display in certain cases. In reality I think
471 473 the problem is with Ubuntu's Python build, but this change works
472 474 around the issue in some cases (not in all, unfortunately). I'd
473 475 filed a Python bug on this with more details, but in the change of
474 476 bug trackers it seems to have been lost.
475 477
476 478 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
477 479 not the same, it's not self-documenting, doesn't allow range
478 480 selection, and sorts alphabetically instead of numerically.
479 481 (magic_r): restore %r. No, "up + enter. One char magic" is not
480 482 the same thing, since %r takes parameters to allow fast retrieval
481 483 of old commands. I've received emails from users who use this a
482 484 LOT, so it stays.
483 485 (magic_automagic): restore %automagic. "use _ip.option.automagic"
484 486 is not a valid replacement b/c it doesn't provide an complete
485 487 explanation (which the automagic docstring does).
486 488 (magic_autocall): restore %autocall, with improved docstring.
487 489 Same argument as for others, "use _ip.options.autocall" is not a
488 490 valid replacement.
489 491 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
490 492 tutorials and online docs.
491 493
492 494 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
493 495
494 496 * IPython/usage.py (quick_reference): mention magics in quickref,
495 497 modified main banner to mention %quickref.
496 498
497 499 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
498 500
499 501 2007-09-06 Ville Vainio <vivainio@gmail.com>
500 502
501 503 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
502 504 Callable aliases now pass the _ip as first arg. This breaks
503 505 compatibility with earlier 0.8.2.svn series! (though they should
504 506 not have been in use yet outside these few extensions)
505 507
506 508 2007-09-05 Ville Vainio <vivainio@gmail.com>
507 509
508 510 * external/mglob.py: expand('dirname') => ['dirname'], instead
509 511 of ['dirname/foo','dirname/bar', ...].
510 512
511 513 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
512 514 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
513 515 is useful for others as well).
514 516
515 517 * iplib.py: on callable aliases (as opposed to old style aliases),
516 518 do var_expand() immediately, and use make_quoted_expr instead
517 519 of hardcoded r"""
518 520
519 521 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
520 522 if not available load ipy_fsops.py for cp, mv, etc. replacements
521 523
522 524 * OInspect.py, ipy_which.py: improve %which and obj? for callable
523 525 aliases
524 526
525 527 2007-09-04 Ville Vainio <vivainio@gmail.com>
526 528
527 529 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
528 530 Relicensed under BSD with the authors approval.
529 531
530 532 * ipmaker.py, usage.py: Remove %magic from default banner, improve
531 533 %quickref
532 534
533 535 2007-09-03 Ville Vainio <vivainio@gmail.com>
534 536
535 537 * Magic.py: %time now passes expression through prefilter,
536 538 allowing IPython syntax.
537 539
538 540 2007-09-01 Ville Vainio <vivainio@gmail.com>
539 541
540 542 * ipmaker.py: Always show full traceback when newstyle config fails
541 543
542 544 2007-08-27 Ville Vainio <vivainio@gmail.com>
543 545
544 546 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
545 547
546 548 2007-08-26 Ville Vainio <vivainio@gmail.com>
547 549
548 550 * ipmaker.py: Command line args have the highest priority again
549 551
550 552 * iplib.py, ipmaker.py: -i command line argument now behaves as in
551 553 normal python, i.e. leaves the IPython session running after -c
552 554 command or running a batch file from command line.
553 555
554 556 2007-08-22 Ville Vainio <vivainio@gmail.com>
555 557
556 558 * iplib.py: no extra empty (last) line in raw hist w/ multiline
557 559 statements
558 560
559 561 * logger.py: Fix bug where blank lines in history were not
560 562 added until AFTER adding the current line; translated and raw
561 563 history should finally be in sync with prompt now.
562 564
563 565 * ipy_completers.py: quick_completer now makes it easy to create
564 566 trivial custom completers
565 567
566 568 * clearcmd.py: shadow history compression & erasing, fixed input hist
567 569 clearing.
568 570
569 571 * envpersist.py, history.py: %env (sh profile only), %hist completers
570 572
571 573 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
572 574 term title now include the drive letter, and always use / instead of
573 575 os.sep (as per recommended approach for win32 ipython in general).
574 576
575 577 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
576 578 plain python scripts from ipykit command line by running
577 579 "py myscript.py", even w/o installed python.
578 580
579 581 2007-08-21 Ville Vainio <vivainio@gmail.com>
580 582
581 583 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
582 584 (for backwards compatibility)
583 585
584 586 * history.py: switch back to %hist -t from %hist -r as default.
585 587 At least until raw history is fixed for good.
586 588
587 589 2007-08-20 Ville Vainio <vivainio@gmail.com>
588 590
589 591 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
590 592 locate alias redeclarations etc. Also, avoid handling
591 593 _ip.IP.alias_table directly, prefer using _ip.defalias.
592 594
593 595
594 596 2007-08-15 Ville Vainio <vivainio@gmail.com>
595 597
596 598 * prefilter.py: ! is now always served first
597 599
598 600 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
599 601
600 602 * IPython/iplib.py (safe_execfile): fix the SystemExit
601 603 auto-suppression code to work in Python2.4 (the internal structure
602 604 of that exception changed and I'd only tested the code with 2.5).
603 605 Bug reported by a SciPy attendee.
604 606
605 607 2007-08-13 Ville Vainio <vivainio@gmail.com>
606 608
607 609 * prefilter.py: reverted !c:/bin/foo fix, made % in
608 610 multiline specials work again
609 611
610 612 2007-08-13 Ville Vainio <vivainio@gmail.com>
611 613
612 614 * prefilter.py: Take more care to special-case !, so that
613 615 !c:/bin/foo.exe works.
614 616
615 617 * setup.py: if we are building eggs, strip all docs and
616 618 examples (it doesn't make sense to bytecompile examples,
617 619 and docs would be in an awkward place anyway).
618 620
619 621 * Ryan Krauss' patch fixes start menu shortcuts when IPython
620 622 is installed into a directory that has spaces in the name.
621 623
622 624 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
623 625
624 626 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
625 627 doctest profile and %doctest_mode, so they actually generate the
626 628 blank lines needed by doctest to separate individual tests.
627 629
628 630 * IPython/iplib.py (safe_execfile): modify so that running code
629 631 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
630 632 doesn't get a printed traceback. Any other value in sys.exit(),
631 633 including the empty call, still generates a traceback. This
632 634 enables use of %run without having to pass '-e' for codes that
633 635 correctly set the exit status flag.
634 636
635 637 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
636 638
637 639 * IPython/iplib.py (InteractiveShell.post_config_initialization):
638 640 fix problems with doctests failing when run inside IPython due to
639 641 IPython's modifications of sys.displayhook.
640 642
641 643 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
642 644
643 645 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
644 646 a string with names.
645 647
646 648 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
647 649
648 650 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
649 651 magic to toggle on/off the doctest pasting support without having
650 652 to leave a session to switch to a separate profile.
651 653
652 654 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
653 655
654 656 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
655 657 introduce a blank line between inputs, to conform to doctest
656 658 requirements.
657 659
658 660 * IPython/OInspect.py (Inspector.pinfo): fix another part where
659 661 auto-generated docstrings for new-style classes were showing up.
660 662
661 663 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
662 664
663 665 * api_changes: Add new file to track backward-incompatible
664 666 user-visible changes.
665 667
666 668 2007-08-06 Ville Vainio <vivainio@gmail.com>
667 669
668 670 * ipmaker.py: fix bug where user_config_ns didn't exist at all
669 671 before all the config files were handled.
670 672
671 673 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
672 674
673 675 * IPython/irunner.py (RunnerFactory): Add new factory class for
674 676 creating reusable runners based on filenames.
675 677
676 678 * IPython/Extensions/ipy_profile_doctest.py: New profile for
677 679 doctest support. It sets prompts/exceptions as similar to
678 680 standard Python as possible, so that ipython sessions in this
679 681 profile can be easily pasted as doctests with minimal
680 682 modifications. It also enables pasting of doctests from external
681 683 sources (even if they have leading whitespace), so that you can
682 684 rerun doctests from existing sources.
683 685
684 686 * IPython/iplib.py (_prefilter): fix a buglet where after entering
685 687 some whitespace, the prompt would become a continuation prompt
686 688 with no way of exiting it other than Ctrl-C. This fix brings us
687 689 into conformity with how the default python prompt works.
688 690
689 691 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
690 692 Add support for pasting not only lines that start with '>>>', but
691 693 also with ' >>>'. That is, arbitrary whitespace can now precede
692 694 the prompts. This makes the system useful for pasting doctests
693 695 from docstrings back into a normal session.
694 696
695 697 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
696 698
697 699 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
698 700 r1357, which had killed multiple invocations of an embedded
699 701 ipython (this means that example-embed has been broken for over 1
700 702 year!!!). Rather than possibly breaking the batch stuff for which
701 703 the code in iplib.py/interact was introduced, I worked around the
702 704 problem in the embedding class in Shell.py. We really need a
703 705 bloody test suite for this code, I'm sick of finding stuff that
704 706 used to work breaking left and right every time I use an old
705 707 feature I hadn't touched in a few months.
706 708 (kill_embedded): Add a new magic that only shows up in embedded
707 709 mode, to allow users to permanently deactivate an embedded instance.
708 710
709 711 2007-08-01 Ville Vainio <vivainio@gmail.com>
710 712
711 713 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
712 714 history gets out of sync on runlines (e.g. when running macros).
713 715
714 716 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
715 717
716 718 * IPython/Magic.py (magic_colors): fix win32-related error message
717 719 that could appear under *nix when readline was missing. Patch by
718 720 Scott Jackson, closes #175.
719 721
720 722 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
721 723
722 724 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
723 725 completer that it traits-aware, so that traits objects don't show
724 726 all of their internal attributes all the time.
725 727
726 728 * IPython/genutils.py (dir2): moved this code from inside
727 729 completer.py to expose it publicly, so I could use it in the
728 730 wildcards bugfix.
729 731
730 732 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
731 733 Stefan with Traits.
732 734
733 735 * IPython/completer.py (Completer.attr_matches): change internal
734 736 var name from 'object' to 'obj', since 'object' is now a builtin
735 737 and this can lead to weird bugs if reusing this code elsewhere.
736 738
737 739 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
738 740
739 741 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
740 742 'foo?' and update the code to prevent printing of default
741 743 docstrings that started appearing after I added support for
742 744 new-style classes. The approach I'm using isn't ideal (I just
743 745 special-case those strings) but I'm not sure how to more robustly
744 746 differentiate between truly user-written strings and Python's
745 747 automatic ones.
746 748
747 749 2007-07-09 Ville Vainio <vivainio@gmail.com>
748 750
749 751 * completer.py: Applied Matthew Neeley's patch:
750 752 Dynamic attributes from trait_names and _getAttributeNames are added
751 753 to the list of tab completions, but when this happens, the attribute
752 754 list is turned into a set, so the attributes are unordered when
753 755 printed, which makes it hard to find the right completion. This patch
754 756 turns this set back into a list and sort it.
755 757
756 758 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
757 759
758 760 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
759 761 classes in various inspector functions.
760 762
761 763 2007-06-28 Ville Vainio <vivainio@gmail.com>
762 764
763 765 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
764 766 Implement "shadow" namespace, and callable aliases that reside there.
765 767 Use them by:
766 768
767 769 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
768 770
769 771 foo hello world
770 772 (gets translated to:)
771 773 _sh.foo(r"""hello world""")
772 774
773 775 In practice, this kind of alias can take the role of a magic function
774 776
775 777 * New generic inspect_object, called on obj? and obj??
776 778
777 779 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
778 780
779 781 * IPython/ultraTB.py (findsource): fix a problem with
780 782 inspect.getfile that can cause crashes during traceback construction.
781 783
782 784 2007-06-14 Ville Vainio <vivainio@gmail.com>
783 785
784 786 * iplib.py (handle_auto): Try to use ascii for printing "--->"
785 787 autocall rewrite indication, becausesometimes unicode fails to print
786 788 properly (and you get ' - - - '). Use plain uncoloured ---> for
787 789 unicode.
788 790
789 791 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
790 792
791 793 . pickleshare 'hash' commands (hget, hset, hcompress,
792 794 hdict) for efficient shadow history storage.
793 795
794 796 2007-06-13 Ville Vainio <vivainio@gmail.com>
795 797
796 798 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
797 799 Added kw arg 'interactive', tell whether vars should be visible
798 800 with %whos.
799 801
800 802 2007-06-11 Ville Vainio <vivainio@gmail.com>
801 803
802 804 * pspersistence.py, Magic.py, iplib.py: directory history now saved
803 805 to db
804 806
805 807 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
806 808 Also, it exits IPython immediately after evaluating the command (just like
807 809 std python)
808 810
809 811 2007-06-05 Walter Doerwald <walter@livinglogic.de>
810 812
811 813 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
812 814 Python string and captures the output. (Idea and original patch by
813 815 Stefan van der Walt)
814 816
815 817 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
816 818
817 819 * IPython/ultraTB.py (VerboseTB.text): update printing of
818 820 exception types for Python 2.5 (now all exceptions in the stdlib
819 821 are new-style classes).
820 822
821 823 2007-05-31 Walter Doerwald <walter@livinglogic.de>
822 824
823 825 * IPython/Extensions/igrid.py: Add new commands refresh and
824 826 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
825 827 the iterator once (refresh) or after every x seconds (refresh_timer).
826 828 Add a working implementation of "searchexpression", where the text
827 829 entered is not the text to search for, but an expression that must
828 830 be true. Added display of shortcuts to the menu. Added commands "pickinput"
829 831 and "pickinputattr" that put the object or attribute under the cursor
830 832 in the input line. Split the statusbar to be able to display the currently
831 833 active refresh interval. (Patch by Nik Tautenhahn)
832 834
833 835 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
834 836
835 837 * fixing set_term_title to use ctypes as default
836 838
837 839 * fixing set_term_title fallback to work when curent dir
838 840 is on a windows network share
839 841
840 842 2007-05-28 Ville Vainio <vivainio@gmail.com>
841 843
842 844 * %cpaste: strip + with > from left (diffs).
843 845
844 846 * iplib.py: Fix crash when readline not installed
845 847
846 848 2007-05-26 Ville Vainio <vivainio@gmail.com>
847 849
848 850 * generics.py: introduce easy to extend result_display generic
849 851 function (using simplegeneric.py).
850 852
851 853 * Fixed the append functionality of %set.
852 854
853 855 2007-05-25 Ville Vainio <vivainio@gmail.com>
854 856
855 857 * New magic: %rep (fetch / run old commands from history)
856 858
857 859 * New extension: mglob (%mglob magic), for powerful glob / find /filter
858 860 like functionality
859 861
860 862 % maghistory.py: %hist -g PATTERM greps the history for pattern
861 863
862 864 2007-05-24 Walter Doerwald <walter@livinglogic.de>
863 865
864 866 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
865 867 browse the IPython input history
866 868
867 869 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
868 870 (mapped to "i") can be used to put the object under the curser in the input
869 871 line. pickinputattr (mapped to "I") does the same for the attribute under
870 872 the cursor.
871 873
872 874 2007-05-24 Ville Vainio <vivainio@gmail.com>
873 875
874 876 * Grand magic cleansing (changeset [2380]):
875 877
876 878 * Introduce ipy_legacy.py where the following magics were
877 879 moved:
878 880
879 881 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
880 882
881 883 If you need them, either use default profile or "import ipy_legacy"
882 884 in your ipy_user_conf.py
883 885
884 886 * Move sh and scipy profile to Extensions from UserConfig. this implies
885 887 you should not edit them, but you don't need to run %upgrade when
886 888 upgrading IPython anymore.
887 889
888 890 * %hist/%history now operates in "raw" mode by default. To get the old
889 891 behaviour, run '%hist -n' (native mode).
890 892
891 893 * split ipy_stock_completers.py to ipy_stock_completers.py and
892 894 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
893 895 installed as default.
894 896
895 897 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
896 898 handling.
897 899
898 900 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
899 901 input if readline is available.
900 902
901 903 2007-05-23 Ville Vainio <vivainio@gmail.com>
902 904
903 905 * macro.py: %store uses __getstate__ properly
904 906
905 907 * exesetup.py: added new setup script for creating
906 908 standalone IPython executables with py2exe (i.e.
907 909 no python installation required).
908 910
909 911 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
910 912 its place.
911 913
912 914 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
913 915
914 916 2007-05-21 Ville Vainio <vivainio@gmail.com>
915 917
916 918 * platutil_win32.py (set_term_title): handle
917 919 failure of 'title' system call properly.
918 920
919 921 2007-05-17 Walter Doerwald <walter@livinglogic.de>
920 922
921 923 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
922 924 (Bug detected by Paul Mueller).
923 925
924 926 2007-05-16 Ville Vainio <vivainio@gmail.com>
925 927
926 928 * ipy_profile_sci.py, ipython_win_post_install.py: Create
927 929 new "sci" profile, effectively a modern version of the old
928 930 "scipy" profile (which is now slated for deprecation).
929 931
930 932 2007-05-15 Ville Vainio <vivainio@gmail.com>
931 933
932 934 * pycolorize.py, pycolor.1: Paul Mueller's patches that
933 935 make pycolorize read input from stdin when run without arguments.
934 936
935 937 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
936 938
937 939 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
938 940 it in sh profile (instead of ipy_system_conf.py).
939 941
940 942 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
941 943 aliases are now lower case on windows (MyCommand.exe => mycommand).
942 944
943 945 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
944 946 Macros are now callable objects that inherit from ipapi.IPyAutocall,
945 947 i.e. get autocalled regardless of system autocall setting.
946 948
947 949 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
948 950
949 951 * IPython/rlineimpl.py: check for clear_history in readline and
950 952 make it a dummy no-op if not available. This function isn't
951 953 guaranteed to be in the API and appeared in Python 2.4, so we need
952 954 to check it ourselves. Also, clean up this file quite a bit.
953 955
954 956 * ipython.1: update man page and full manual with information
955 957 about threads (remove outdated warning). Closes #151.
956 958
957 959 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
958 960
959 961 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
960 962 in trunk (note that this made it into the 0.8.1 release already,
961 963 but the changelogs didn't get coordinated). Many thanks to Gael
962 964 Varoquaux <gael.varoquaux-AT-normalesup.org>
963 965
964 966 2007-05-09 *** Released version 0.8.1
965 967
966 968 2007-05-10 Walter Doerwald <walter@livinglogic.de>
967 969
968 970 * IPython/Extensions/igrid.py: Incorporate html help into
969 971 the module, so we don't have to search for the file.
970 972
971 973 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
972 974
973 975 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
974 976
975 977 2007-04-30 Ville Vainio <vivainio@gmail.com>
976 978
977 979 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
978 980 user has illegal (non-ascii) home directory name
979 981
980 982 2007-04-27 Ville Vainio <vivainio@gmail.com>
981 983
982 984 * platutils_win32.py: implement set_term_title for windows
983 985
984 986 * Update version number
985 987
986 988 * ipy_profile_sh.py: more informative prompt (2 dir levels)
987 989
988 990 2007-04-26 Walter Doerwald <walter@livinglogic.de>
989 991
990 992 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
991 993 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
992 994 bug discovered by Ville).
993 995
994 996 2007-04-26 Ville Vainio <vivainio@gmail.com>
995 997
996 998 * Extensions/ipy_completers.py: Olivier's module completer now
997 999 saves the list of root modules if it takes > 4 secs on the first run.
998 1000
999 1001 * Magic.py (%rehashx): %rehashx now clears the completer cache
1000 1002
1001 1003
1002 1004 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
1003 1005
1004 1006 * ipython.el: fix incorrect color scheme, reported by Stefan.
1005 1007 Closes #149.
1006 1008
1007 1009 * IPython/PyColorize.py (Parser.format2): fix state-handling
1008 1010 logic. I still don't like how that code handles state, but at
1009 1011 least now it should be correct, if inelegant. Closes #146.
1010 1012
1011 1013 2007-04-25 Ville Vainio <vivainio@gmail.com>
1012 1014
1013 1015 * Extensions/ipy_which.py: added extension for %which magic, works
1014 1016 a lot like unix 'which' but also finds and expands aliases, and
1015 1017 allows wildcards.
1016 1018
1017 1019 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
1018 1020 as opposed to returning nothing.
1019 1021
1020 1022 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
1021 1023 ipy_stock_completers on default profile, do import on sh profile.
1022 1024
1023 1025 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1024 1026
1025 1027 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
1026 1028 like ipython.py foo.py which raised a IndexError.
1027 1029
1028 1030 2007-04-21 Ville Vainio <vivainio@gmail.com>
1029 1031
1030 1032 * Extensions/ipy_extutil.py: added extension to manage other ipython
1031 1033 extensions. Now only supports 'ls' == list extensions.
1032 1034
1033 1035 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
1034 1036
1035 1037 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
1036 1038 would prevent use of the exception system outside of a running
1037 1039 IPython instance.
1038 1040
1039 1041 2007-04-20 Ville Vainio <vivainio@gmail.com>
1040 1042
1041 1043 * Extensions/ipy_render.py: added extension for easy
1042 1044 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
1043 1045 'Iptl' template notation,
1044 1046
1045 1047 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
1046 1048 safer & faster 'import' completer.
1047 1049
1048 1050 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
1049 1051 and _ip.defalias(name, command).
1050 1052
1051 1053 * Extensions/ipy_exportdb.py: New extension for exporting all the
1052 1054 %store'd data in a portable format (normal ipapi calls like
1053 1055 defmacro() etc.)
1054 1056
1055 1057 2007-04-19 Ville Vainio <vivainio@gmail.com>
1056 1058
1057 1059 * upgrade_dir.py: skip junk files like *.pyc
1058 1060
1059 1061 * Release.py: version number to 0.8.1
1060 1062
1061 1063 2007-04-18 Ville Vainio <vivainio@gmail.com>
1062 1064
1063 1065 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
1064 1066 and later on win32.
1065 1067
1066 1068 2007-04-16 Ville Vainio <vivainio@gmail.com>
1067 1069
1068 1070 * iplib.py (showtraceback): Do not crash when running w/o readline.
1069 1071
1070 1072 2007-04-12 Walter Doerwald <walter@livinglogic.de>
1071 1073
1072 1074 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
1073 1075 sorted (case sensitive with files and dirs mixed).
1074 1076
1075 1077 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
1076 1078
1077 1079 * IPython/Release.py (version): Open trunk for 0.8.1 development.
1078 1080
1079 1081 2007-04-10 *** Released version 0.8.0
1080 1082
1081 1083 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
1082 1084
1083 1085 * Tag 0.8.0 for release.
1084 1086
1085 1087 * IPython/iplib.py (reloadhist): add API function to cleanly
1086 1088 reload the readline history, which was growing inappropriately on
1087 1089 every %run call.
1088 1090
1089 1091 * win32_manual_post_install.py (run): apply last part of Nicolas
1090 1092 Pernetty's patch (I'd accidentally applied it in a different
1091 1093 directory and this particular file didn't get patched).
1092 1094
1093 1095 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
1094 1096
1095 1097 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
1096 1098 find the main thread id and use the proper API call. Thanks to
1097 1099 Stefan for the fix.
1098 1100
1099 1101 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
1100 1102 unit tests to reflect fixed ticket #52, and add more tests sent by
1101 1103 him.
1102 1104
1103 1105 * IPython/iplib.py (raw_input): restore the readline completer
1104 1106 state on every input, in case third-party code messed it up.
1105 1107 (_prefilter): revert recent addition of early-escape checks which
1106 1108 prevent many valid alias calls from working.
1107 1109
1108 1110 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
1109 1111 flag for sigint handler so we don't run a full signal() call on
1110 1112 each runcode access.
1111 1113
1112 1114 * IPython/Magic.py (magic_whos): small improvement to diagnostic
1113 1115 message.
1114 1116
1115 1117 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1116 1118
1117 1119 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
1118 1120 asynchronous exceptions working, i.e., Ctrl-C can actually
1119 1121 interrupt long-running code in the multithreaded shells.
1120 1122
1121 1123 This is using Tomer Filiba's great ctypes-based trick:
1122 1124 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
1123 1125 this in the past, but hadn't been able to make it work before. So
1124 1126 far it looks like it's actually running, but this needs more
1125 1127 testing. If it really works, I'll be *very* happy, and we'll owe
1126 1128 a huge thank you to Tomer. My current implementation is ugly,
1127 1129 hackish and uses nasty globals, but I don't want to try and clean
1128 1130 anything up until we know if it actually works.
1129 1131
1130 1132 NOTE: this feature needs ctypes to work. ctypes is included in
1131 1133 Python2.5, but 2.4 users will need to manually install it. This
1132 1134 feature makes multi-threaded shells so much more usable that it's
1133 1135 a minor price to pay (ctypes is very easy to install, already a
1134 1136 requirement for win32 and available in major linux distros).
1135 1137
1136 1138 2007-04-04 Ville Vainio <vivainio@gmail.com>
1137 1139
1138 1140 * Extensions/ipy_completers.py, ipy_stock_completers.py:
1139 1141 Moved implementations of 'bundled' completers to ipy_completers.py,
1140 1142 they are only enabled in ipy_stock_completers.py.
1141 1143
1142 1144 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1143 1145
1144 1146 * IPython/PyColorize.py (Parser.format2): Fix identation of
1145 1147 colorzied output and return early if color scheme is NoColor, to
1146 1148 avoid unnecessary and expensive tokenization. Closes #131.
1147 1149
1148 1150 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
1149 1151
1150 1152 * IPython/Debugger.py: disable the use of pydb version 1.17. It
1151 1153 has a critical bug (a missing import that makes post-mortem not
1152 1154 work at all). Unfortunately as of this time, this is the version
1153 1155 shipped with Ubuntu Edgy, so quite a few people have this one. I
1154 1156 hope Edgy will update to a more recent package.
1155 1157
1156 1158 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1157 1159
1158 1160 * IPython/iplib.py (_prefilter): close #52, second part of a patch
1159 1161 set by Stefan (only the first part had been applied before).
1160 1162
1161 1163 * IPython/Extensions/ipy_stock_completers.py (module_completer):
1162 1164 remove usage of the dangerous pkgutil.walk_packages(). See
1163 1165 details in comments left in the code.
1164 1166
1165 1167 * IPython/Magic.py (magic_whos): add support for numpy arrays
1166 1168 similar to what we had for Numeric.
1167 1169
1168 1170 * IPython/completer.py (IPCompleter.complete): extend the
1169 1171 complete() call API to support completions by other mechanisms
1170 1172 than readline. Closes #109.
1171 1173
1172 1174 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1173 1175 protect against a bug in Python's execfile(). Closes #123.
1174 1176
1175 1177 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1176 1178
1177 1179 * IPython/iplib.py (split_user_input): ensure that when splitting
1178 1180 user input, the part that can be treated as a python name is pure
1179 1181 ascii (Python identifiers MUST be pure ascii). Part of the
1180 1182 ongoing Unicode support work.
1181 1183
1182 1184 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1183 1185 actual prompt number, without any coloring. This allows users to
1184 1186 produce numbered prompts with their own colors. Added after a
1185 1187 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1186 1188
1187 1189 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1188 1190
1189 1191 * IPython/Extensions/igrid.py: Map the return key
1190 1192 to enter() and shift-return to enterattr().
1191 1193
1192 1194 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1193 1195
1194 1196 * IPython/Magic.py (magic_psearch): add unicode support by
1195 1197 encoding to ascii the input, since this routine also only deals
1196 1198 with valid Python names. Fixes a bug reported by Stefan.
1197 1199
1198 1200 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1199 1201
1200 1202 * IPython/Magic.py (_inspect): convert unicode input into ascii
1201 1203 before trying to evaluate it as a Python identifier. This fixes a
1202 1204 problem that the new unicode support had introduced when analyzing
1203 1205 long definition lines for functions.
1204 1206
1205 1207 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1206 1208
1207 1209 * IPython/Extensions/igrid.py: Fix picking. Using
1208 1210 igrid with wxPython 2.6 and -wthread should work now.
1209 1211 igrid.display() simply tries to create a frame without
1210 1212 an application. Only if this fails an application is created.
1211 1213
1212 1214 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1213 1215
1214 1216 * IPython/Extensions/path.py: Updated to version 2.2.
1215 1217
1216 1218 2007-03-23 Ville Vainio <vivainio@gmail.com>
1217 1219
1218 1220 * iplib.py: recursive alias expansion now works better, so that
1219 1221 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1220 1222 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1221 1223
1222 1224 * Extensions/ipy_gnuglobal.py added, provides %global magic
1223 1225 for users of http://www.gnu.org/software/global
1224 1226
1225 1227 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1226 1228 Closes #52. Patch by Stefan van der Walt.
1227 1229
1228 1230 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1229 1231
1230 1232 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1231 1233 respect the __file__ attribute when using %run. Thanks to a bug
1232 1234 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1233 1235
1234 1236 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1235 1237
1236 1238 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1237 1239 input. Patch sent by Stefan.
1238 1240
1239 1241 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1240 1242 * IPython/Extensions/ipy_stock_completer.py
1241 1243 shlex_split, fix bug in shlex_split. len function
1242 1244 call was missing an if statement. Caused shlex_split to
1243 1245 sometimes return "" as last element.
1244 1246
1245 1247 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1246 1248
1247 1249 * IPython/completer.py
1248 1250 (IPCompleter.file_matches.single_dir_expand): fix a problem
1249 1251 reported by Stefan, where directories containign a single subdir
1250 1252 would be completed too early.
1251 1253
1252 1254 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1253 1255 pylab import *' when -pylab is given be optional. A new flag,
1254 1256 pylab_import_all controls this behavior, the default is True for
1255 1257 backwards compatibility.
1256 1258
1257 1259 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1258 1260 modified) R. Bernstein's patch for fully syntax highlighted
1259 1261 tracebacks. The functionality is also available under ultraTB for
1260 1262 non-ipython users (someone using ultraTB but outside an ipython
1261 1263 session). They can select the color scheme by setting the
1262 1264 module-level global DEFAULT_SCHEME. The highlight functionality
1263 1265 also works when debugging.
1264 1266
1265 1267 * IPython/genutils.py (IOStream.close): small patch by
1266 1268 R. Bernstein for improved pydb support.
1267 1269
1268 1270 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1269 1271 DaveS <davls@telus.net> to improve support of debugging under
1270 1272 NTEmacs, including improved pydb behavior.
1271 1273
1272 1274 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1273 1275 Python 2.5, where the stats object API changed a little. Thanks
1274 1276 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1275 1277
1276 1278 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1277 1279 Pernetty's patch to improve support for (X)Emacs under Win32.
1278 1280
1279 1281 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1280 1282
1281 1283 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1282 1284 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1283 1285 a report by Nik Tautenhahn.
1284 1286
1285 1287 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1286 1288
1287 1289 * setup.py: Add the igrid help files to the list of data files
1288 1290 to be installed alongside igrid.
1289 1291 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1290 1292 Show the input object of the igrid browser as the window tile.
1291 1293 Show the object the cursor is on in the statusbar.
1292 1294
1293 1295 2007-03-15 Ville Vainio <vivainio@gmail.com>
1294 1296
1295 1297 * Extensions/ipy_stock_completers.py: Fixed exception
1296 1298 on mismatching quotes in %run completer. Patch by
1297 1299 Jorgen Stenarson. Closes #127.
1298 1300
1299 1301 2007-03-14 Ville Vainio <vivainio@gmail.com>
1300 1302
1301 1303 * Extensions/ext_rehashdir.py: Do not do auto_alias
1302 1304 in %rehashdir, it clobbers %store'd aliases.
1303 1305
1304 1306 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1305 1307 (beefed up %env) imported for sh profile.
1306 1308
1307 1309 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1308 1310
1309 1311 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1310 1312 as the default browser.
1311 1313 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1312 1314 As igrid displays all attributes it ever encounters, fetch() (which has
1313 1315 been renamed to _fetch()) doesn't have to recalculate the display attributes
1314 1316 every time a new item is fetched. This should speed up scrolling.
1315 1317
1316 1318 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1317 1319
1318 1320 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1319 1321 Schmolck's recently reported tab-completion bug (my previous one
1320 1322 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1321 1323
1322 1324 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1323 1325
1324 1326 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1325 1327 Close help window if exiting igrid.
1326 1328
1327 1329 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1328 1330
1329 1331 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1330 1332 before calling functions from readline.
1331 1333
1332 1334 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1333 1335
1334 1336 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1335 1337 igrid is a wxPython-based display object for ipipe. If your system has
1336 1338 wx installed igrid will be the default display. Without wx ipipe falls
1337 1339 back to ibrowse (which needs curses). If no curses is installed ipipe
1338 1340 falls back to idump.
1339 1341
1340 1342 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1341 1343
1342 1344 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1343 1345 my changes from yesterday, they introduced bugs. Will reactivate
1344 1346 once I get a correct solution, which will be much easier thanks to
1345 1347 Dan Milstein's new prefilter test suite.
1346 1348
1347 1349 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1348 1350
1349 1351 * IPython/iplib.py (split_user_input): fix input splitting so we
1350 1352 don't attempt attribute accesses on things that can't possibly be
1351 1353 valid Python attributes. After a bug report by Alex Schmolck.
1352 1354 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1353 1355 %magic with explicit % prefix.
1354 1356
1355 1357 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1356 1358
1357 1359 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1358 1360 avoid a DeprecationWarning from GTK.
1359 1361
1360 1362 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1361 1363
1362 1364 * IPython/genutils.py (clock): I modified clock() to return total
1363 1365 time, user+system. This is a more commonly needed metric. I also
1364 1366 introduced the new clocku/clocks to get only user/system time if
1365 1367 one wants those instead.
1366 1368
1367 1369 ***WARNING: API CHANGE*** clock() used to return only user time,
1368 1370 so if you want exactly the same results as before, use clocku
1369 1371 instead.
1370 1372
1371 1373 2007-02-22 Ville Vainio <vivainio@gmail.com>
1372 1374
1373 1375 * IPython/Extensions/ipy_p4.py: Extension for improved
1374 1376 p4 (perforce version control system) experience.
1375 1377 Adds %p4 magic with p4 command completion and
1376 1378 automatic -G argument (marshall output as python dict)
1377 1379
1378 1380 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1379 1381
1380 1382 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1381 1383 stop marks.
1382 1384 (ClearingMixin): a simple mixin to easily make a Demo class clear
1383 1385 the screen in between blocks and have empty marquees. The
1384 1386 ClearDemo and ClearIPDemo classes that use it are included.
1385 1387
1386 1388 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1387 1389
1388 1390 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1389 1391 protect against exceptions at Python shutdown time. Patch
1390 1392 sumbmitted to upstream.
1391 1393
1392 1394 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1393 1395
1394 1396 * IPython/Extensions/ibrowse.py: If entering the first object level
1395 1397 (i.e. the object for which the browser has been started) fails,
1396 1398 now the error is raised directly (aborting the browser) instead of
1397 1399 running into an empty levels list later.
1398 1400
1399 1401 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1400 1402
1401 1403 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1402 1404 for the noitem object.
1403 1405
1404 1406 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1405 1407
1406 1408 * IPython/completer.py (Completer.attr_matches): Fix small
1407 1409 tab-completion bug with Enthought Traits objects with units.
1408 1410 Thanks to a bug report by Tom Denniston
1409 1411 <tom.denniston-AT-alum.dartmouth.org>.
1410 1412
1411 1413 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1412 1414
1413 1415 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1414 1416 bug where only .ipy or .py would be completed. Once the first
1415 1417 argument to %run has been given, all completions are valid because
1416 1418 they are the arguments to the script, which may well be non-python
1417 1419 filenames.
1418 1420
1419 1421 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1420 1422 to irunner to allow it to correctly support real doctesting of
1421 1423 out-of-process ipython code.
1422 1424
1423 1425 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1424 1426 title an option (-noterm_title) because it completely breaks
1425 1427 doctesting.
1426 1428
1427 1429 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1428 1430
1429 1431 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1430 1432
1431 1433 * IPython/irunner.py (main): fix small bug where extensions were
1432 1434 not being correctly recognized.
1433 1435
1434 1436 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1435 1437
1436 1438 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1437 1439 a string containing a single line yields the string itself as the
1438 1440 only item.
1439 1441
1440 1442 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1441 1443 object if it's the same as the one on the last level (This avoids
1442 1444 infinite recursion for one line strings).
1443 1445
1444 1446 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1445 1447
1446 1448 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1447 1449 all output streams before printing tracebacks. This ensures that
1448 1450 user output doesn't end up interleaved with traceback output.
1449 1451
1450 1452 2007-01-10 Ville Vainio <vivainio@gmail.com>
1451 1453
1452 1454 * Extensions/envpersist.py: Turbocharged %env that remembers
1453 1455 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1454 1456 "%env VISUAL=jed".
1455 1457
1456 1458 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1457 1459
1458 1460 * IPython/iplib.py (showtraceback): ensure that we correctly call
1459 1461 custom handlers in all cases (some with pdb were slipping through,
1460 1462 but I'm not exactly sure why).
1461 1463
1462 1464 * IPython/Debugger.py (Tracer.__init__): added new class to
1463 1465 support set_trace-like usage of IPython's enhanced debugger.
1464 1466
1465 1467 2006-12-24 Ville Vainio <vivainio@gmail.com>
1466 1468
1467 1469 * ipmaker.py: more informative message when ipy_user_conf
1468 1470 import fails (suggest running %upgrade).
1469 1471
1470 1472 * tools/run_ipy_in_profiler.py: Utility to see where
1471 1473 the time during IPython startup is spent.
1472 1474
1473 1475 2006-12-20 Ville Vainio <vivainio@gmail.com>
1474 1476
1475 1477 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1476 1478
1477 1479 * ipapi.py: Add new ipapi method, expand_alias.
1478 1480
1479 1481 * Release.py: Bump up version to 0.7.4.svn
1480 1482
1481 1483 2006-12-17 Ville Vainio <vivainio@gmail.com>
1482 1484
1483 1485 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1484 1486 to work properly on posix too
1485 1487
1486 1488 * Release.py: Update revnum (version is still just 0.7.3).
1487 1489
1488 1490 2006-12-15 Ville Vainio <vivainio@gmail.com>
1489 1491
1490 1492 * scripts/ipython_win_post_install: create ipython.py in
1491 1493 prefix + "/scripts".
1492 1494
1493 1495 * Release.py: Update version to 0.7.3.
1494 1496
1495 1497 2006-12-14 Ville Vainio <vivainio@gmail.com>
1496 1498
1497 1499 * scripts/ipython_win_post_install: Overwrite old shortcuts
1498 1500 if they already exist
1499 1501
1500 1502 * Release.py: release 0.7.3rc2
1501 1503
1502 1504 2006-12-13 Ville Vainio <vivainio@gmail.com>
1503 1505
1504 1506 * Branch and update Release.py for 0.7.3rc1
1505 1507
1506 1508 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1507 1509
1508 1510 * IPython/Shell.py (IPShellWX): update for current WX naming
1509 1511 conventions, to avoid a deprecation warning with current WX
1510 1512 versions. Thanks to a report by Danny Shevitz.
1511 1513
1512 1514 2006-12-12 Ville Vainio <vivainio@gmail.com>
1513 1515
1514 1516 * ipmaker.py: apply david cournapeau's patch to make
1515 1517 import_some work properly even when ipythonrc does
1516 1518 import_some on empty list (it was an old bug!).
1517 1519
1518 1520 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1519 1521 Add deprecation note to ipythonrc and a url to wiki
1520 1522 in ipy_user_conf.py
1521 1523
1522 1524
1523 1525 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1524 1526 as if it was typed on IPython command prompt, i.e.
1525 1527 as IPython script.
1526 1528
1527 1529 * example-magic.py, magic_grepl.py: remove outdated examples
1528 1530
1529 1531 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1530 1532
1531 1533 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1532 1534 is called before any exception has occurred.
1533 1535
1534 1536 2006-12-08 Ville Vainio <vivainio@gmail.com>
1535 1537
1536 1538 * Extensions/ipy_stock_completers.py: fix cd completer
1537 1539 to translate /'s to \'s again.
1538 1540
1539 1541 * completer.py: prevent traceback on file completions w/
1540 1542 backslash.
1541 1543
1542 1544 * Release.py: Update release number to 0.7.3b3 for release
1543 1545
1544 1546 2006-12-07 Ville Vainio <vivainio@gmail.com>
1545 1547
1546 1548 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1547 1549 while executing external code. Provides more shell-like behaviour
1548 1550 and overall better response to ctrl + C / ctrl + break.
1549 1551
1550 1552 * tools/make_tarball.py: new script to create tarball straight from svn
1551 1553 (setup.py sdist doesn't work on win32).
1552 1554
1553 1555 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1554 1556 on dirnames with spaces and use the default completer instead.
1555 1557
1556 1558 * Revision.py: Change version to 0.7.3b2 for release.
1557 1559
1558 1560 2006-12-05 Ville Vainio <vivainio@gmail.com>
1559 1561
1560 1562 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1561 1563 pydb patch 4 (rm debug printing, py 2.5 checking)
1562 1564
1563 1565 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1564 1566 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1565 1567 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1566 1568 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1567 1569 object the cursor was on before the refresh. The command "markrange" is
1568 1570 mapped to "%" now.
1569 1571 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1570 1572
1571 1573 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1572 1574
1573 1575 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1574 1576 interactive debugger on the last traceback, without having to call
1575 1577 %pdb and rerun your code. Made minor changes in various modules,
1576 1578 should automatically recognize pydb if available.
1577 1579
1578 1580 2006-11-28 Ville Vainio <vivainio@gmail.com>
1579 1581
1580 1582 * completer.py: If the text start with !, show file completions
1581 1583 properly. This helps when trying to complete command name
1582 1584 for shell escapes.
1583 1585
1584 1586 2006-11-27 Ville Vainio <vivainio@gmail.com>
1585 1587
1586 1588 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1587 1589 der Walt. Clean up svn and hg completers by using a common
1588 1590 vcs_completer.
1589 1591
1590 1592 2006-11-26 Ville Vainio <vivainio@gmail.com>
1591 1593
1592 1594 * Remove ipconfig and %config; you should use _ip.options structure
1593 1595 directly instead!
1594 1596
1595 1597 * genutils.py: add wrap_deprecated function for deprecating callables
1596 1598
1597 1599 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1598 1600 _ip.system instead. ipalias is redundant.
1599 1601
1600 1602 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1601 1603 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1602 1604 explicit.
1603 1605
1604 1606 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1605 1607 completer. Try it by entering 'hg ' and pressing tab.
1606 1608
1607 1609 * macro.py: Give Macro a useful __repr__ method
1608 1610
1609 1611 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1610 1612
1611 1613 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1612 1614 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1613 1615 we don't get a duplicate ipipe module, where registration of the xrepr
1614 1616 implementation for Text is useless.
1615 1617
1616 1618 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1617 1619
1618 1620 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1619 1621
1620 1622 2006-11-24 Ville Vainio <vivainio@gmail.com>
1621 1623
1622 1624 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1623 1625 try to use "cProfile" instead of the slower pure python
1624 1626 "profile"
1625 1627
1626 1628 2006-11-23 Ville Vainio <vivainio@gmail.com>
1627 1629
1628 1630 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1629 1631 Qt+IPython+Designer link in documentation.
1630 1632
1631 1633 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1632 1634 correct Pdb object to %pydb.
1633 1635
1634 1636
1635 1637 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1636 1638 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1637 1639 generic xrepr(), otherwise the list implementation would kick in.
1638 1640
1639 1641 2006-11-21 Ville Vainio <vivainio@gmail.com>
1640 1642
1641 1643 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1642 1644 with one from UserConfig.
1643 1645
1644 1646 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1645 1647 it was missing which broke the sh profile.
1646 1648
1647 1649 * completer.py: file completer now uses explicit '/' instead
1648 1650 of os.path.join, expansion of 'foo' was broken on win32
1649 1651 if there was one directory with name 'foobar'.
1650 1652
1651 1653 * A bunch of patches from Kirill Smelkov:
1652 1654
1653 1655 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1654 1656
1655 1657 * [patch 7/9] Implement %page -r (page in raw mode) -
1656 1658
1657 1659 * [patch 5/9] ScientificPython webpage has moved
1658 1660
1659 1661 * [patch 4/9] The manual mentions %ds, should be %dhist
1660 1662
1661 1663 * [patch 3/9] Kill old bits from %prun doc.
1662 1664
1663 1665 * [patch 1/9] Fix typos here and there.
1664 1666
1665 1667 2006-11-08 Ville Vainio <vivainio@gmail.com>
1666 1668
1667 1669 * completer.py (attr_matches): catch all exceptions raised
1668 1670 by eval of expr with dots.
1669 1671
1670 1672 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1671 1673
1672 1674 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1673 1675 input if it starts with whitespace. This allows you to paste
1674 1676 indented input from any editor without manually having to type in
1675 1677 the 'if 1:', which is convenient when working interactively.
1676 1678 Slightly modifed version of a patch by Bo Peng
1677 1679 <bpeng-AT-rice.edu>.
1678 1680
1679 1681 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1680 1682
1681 1683 * IPython/irunner.py (main): modified irunner so it automatically
1682 1684 recognizes the right runner to use based on the extension (.py for
1683 1685 python, .ipy for ipython and .sage for sage).
1684 1686
1685 1687 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1686 1688 visible in ipapi as ip.config(), to programatically control the
1687 1689 internal rc object. There's an accompanying %config magic for
1688 1690 interactive use, which has been enhanced to match the
1689 1691 funtionality in ipconfig.
1690 1692
1691 1693 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1692 1694 so it's not just a toggle, it now takes an argument. Add support
1693 1695 for a customizable header when making system calls, as the new
1694 1696 system_header variable in the ipythonrc file.
1695 1697
1696 1698 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1697 1699
1698 1700 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1699 1701 generic functions (using Philip J. Eby's simplegeneric package).
1700 1702 This makes it possible to customize the display of third-party classes
1701 1703 without having to monkeypatch them. xiter() no longer supports a mode
1702 1704 argument and the XMode class has been removed. The same functionality can
1703 1705 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1704 1706 One consequence of the switch to generic functions is that xrepr() and
1705 1707 xattrs() implementation must define the default value for the mode
1706 1708 argument themselves and xattrs() implementations must return real
1707 1709 descriptors.
1708 1710
1709 1711 * IPython/external: This new subpackage will contain all third-party
1710 1712 packages that are bundled with IPython. (The first one is simplegeneric).
1711 1713
1712 1714 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1713 1715 directory which as been dropped in r1703.
1714 1716
1715 1717 * IPython/Extensions/ipipe.py (iless): Fixed.
1716 1718
1717 1719 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1718 1720
1719 1721 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1720 1722
1721 1723 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1722 1724 handling in variable expansion so that shells and magics recognize
1723 1725 function local scopes correctly. Bug reported by Brian.
1724 1726
1725 1727 * scripts/ipython: remove the very first entry in sys.path which
1726 1728 Python auto-inserts for scripts, so that sys.path under IPython is
1727 1729 as similar as possible to that under plain Python.
1728 1730
1729 1731 * IPython/completer.py (IPCompleter.file_matches): Fix
1730 1732 tab-completion so that quotes are not closed unless the completion
1731 1733 is unambiguous. After a request by Stefan. Minor cleanups in
1732 1734 ipy_stock_completers.
1733 1735
1734 1736 2006-11-02 Ville Vainio <vivainio@gmail.com>
1735 1737
1736 1738 * ipy_stock_completers.py: Add %run and %cd completers.
1737 1739
1738 1740 * completer.py: Try running custom completer for both
1739 1741 "foo" and "%foo" if the command is just "foo". Ignore case
1740 1742 when filtering possible completions.
1741 1743
1742 1744 * UserConfig/ipy_user_conf.py: install stock completers as default
1743 1745
1744 1746 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1745 1747 simplified readline history save / restore through a wrapper
1746 1748 function
1747 1749
1748 1750
1749 1751 2006-10-31 Ville Vainio <vivainio@gmail.com>
1750 1752
1751 1753 * strdispatch.py, completer.py, ipy_stock_completers.py:
1752 1754 Allow str_key ("command") in completer hooks. Implement
1753 1755 trivial completer for 'import' (stdlib modules only). Rename
1754 1756 ipy_linux_package_managers.py to ipy_stock_completers.py.
1755 1757 SVN completer.
1756 1758
1757 1759 * Extensions/ledit.py: %magic line editor for easily and
1758 1760 incrementally manipulating lists of strings. The magic command
1759 1761 name is %led.
1760 1762
1761 1763 2006-10-30 Ville Vainio <vivainio@gmail.com>
1762 1764
1763 1765 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1764 1766 Bernsteins's patches for pydb integration.
1765 1767 http://bashdb.sourceforge.net/pydb/
1766 1768
1767 1769 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1768 1770 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1769 1771 custom completer hook to allow the users to implement their own
1770 1772 completers. See ipy_linux_package_managers.py for example. The
1771 1773 hook name is 'complete_command'.
1772 1774
1773 1775 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1774 1776
1775 1777 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1776 1778 Numeric leftovers.
1777 1779
1778 1780 * ipython.el (py-execute-region): apply Stefan's patch to fix
1779 1781 garbled results if the python shell hasn't been previously started.
1780 1782
1781 1783 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1782 1784 pretty generic function and useful for other things.
1783 1785
1784 1786 * IPython/OInspect.py (getsource): Add customizable source
1785 1787 extractor. After a request/patch form W. Stein (SAGE).
1786 1788
1787 1789 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1788 1790 window size to a more reasonable value from what pexpect does,
1789 1791 since their choice causes wrapping bugs with long input lines.
1790 1792
1791 1793 2006-10-28 Ville Vainio <vivainio@gmail.com>
1792 1794
1793 1795 * Magic.py (%run): Save and restore the readline history from
1794 1796 file around %run commands to prevent side effects from
1795 1797 %runned programs that might use readline (e.g. pydb).
1796 1798
1797 1799 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1798 1800 invoking the pydb enhanced debugger.
1799 1801
1800 1802 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1801 1803
1802 1804 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1803 1805 call the base class method and propagate the return value to
1804 1806 ifile. This is now done by path itself.
1805 1807
1806 1808 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1807 1809
1808 1810 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1809 1811 api: set_crash_handler(), to expose the ability to change the
1810 1812 internal crash handler.
1811 1813
1812 1814 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1813 1815 the various parameters of the crash handler so that apps using
1814 1816 IPython as their engine can customize crash handling. Ipmlemented
1815 1817 at the request of SAGE.
1816 1818
1817 1819 2006-10-14 Ville Vainio <vivainio@gmail.com>
1818 1820
1819 1821 * Magic.py, ipython.el: applied first "safe" part of Rocky
1820 1822 Bernstein's patch set for pydb integration.
1821 1823
1822 1824 * Magic.py (%unalias, %alias): %store'd aliases can now be
1823 1825 removed with '%unalias'. %alias w/o args now shows most
1824 1826 interesting (stored / manually defined) aliases last
1825 1827 where they catch the eye w/o scrolling.
1826 1828
1827 1829 * Magic.py (%rehashx), ext_rehashdir.py: files with
1828 1830 'py' extension are always considered executable, even
1829 1831 when not in PATHEXT environment variable.
1830 1832
1831 1833 2006-10-12 Ville Vainio <vivainio@gmail.com>
1832 1834
1833 1835 * jobctrl.py: Add new "jobctrl" extension for spawning background
1834 1836 processes with "&find /". 'import jobctrl' to try it out. Requires
1835 1837 'subprocess' module, standard in python 2.4+.
1836 1838
1837 1839 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1838 1840 so if foo -> bar and bar -> baz, then foo -> baz.
1839 1841
1840 1842 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1841 1843
1842 1844 * IPython/Magic.py (Magic.parse_options): add a new posix option
1843 1845 to allow parsing of input args in magics that doesn't strip quotes
1844 1846 (if posix=False). This also closes %timeit bug reported by
1845 1847 Stefan.
1846 1848
1847 1849 2006-10-03 Ville Vainio <vivainio@gmail.com>
1848 1850
1849 1851 * iplib.py (raw_input, interact): Return ValueError catching for
1850 1852 raw_input. Fixes infinite loop for sys.stdin.close() or
1851 1853 sys.stdout.close().
1852 1854
1853 1855 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1854 1856
1855 1857 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1856 1858 to help in handling doctests. irunner is now pretty useful for
1857 1859 running standalone scripts and simulate a full interactive session
1858 1860 in a format that can be then pasted as a doctest.
1859 1861
1860 1862 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1861 1863 on top of the default (useless) ones. This also fixes the nasty
1862 1864 way in which 2.5's Quitter() exits (reverted [1785]).
1863 1865
1864 1866 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1865 1867 2.5.
1866 1868
1867 1869 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1868 1870 color scheme is updated as well when color scheme is changed
1869 1871 interactively.
1870 1872
1871 1873 2006-09-27 Ville Vainio <vivainio@gmail.com>
1872 1874
1873 1875 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1874 1876 infinite loop and just exit. It's a hack, but will do for a while.
1875 1877
1876 1878 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1877 1879
1878 1880 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1879 1881 the constructor, this makes it possible to get a list of only directories
1880 1882 or only files.
1881 1883
1882 1884 2006-08-12 Ville Vainio <vivainio@gmail.com>
1883 1885
1884 1886 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1885 1887 they broke unittest
1886 1888
1887 1889 2006-08-11 Ville Vainio <vivainio@gmail.com>
1888 1890
1889 1891 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1890 1892 by resolving issue properly, i.e. by inheriting FakeModule
1891 1893 from types.ModuleType. Pickling ipython interactive data
1892 1894 should still work as usual (testing appreciated).
1893 1895
1894 1896 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1895 1897
1896 1898 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1897 1899 running under python 2.3 with code from 2.4 to fix a bug with
1898 1900 help(). Reported by the Debian maintainers, Norbert Tretkowski
1899 1901 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1900 1902 <afayolle-AT-debian.org>.
1901 1903
1902 1904 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1903 1905
1904 1906 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1905 1907 (which was displaying "quit" twice).
1906 1908
1907 1909 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1908 1910
1909 1911 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1910 1912 the mode argument).
1911 1913
1912 1914 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1913 1915
1914 1916 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1915 1917 not running under IPython.
1916 1918
1917 1919 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1918 1920 and make it iterable (iterating over the attribute itself). Add two new
1919 1921 magic strings for __xattrs__(): If the string starts with "-", the attribute
1920 1922 will not be displayed in ibrowse's detail view (but it can still be
1921 1923 iterated over). This makes it possible to add attributes that are large
1922 1924 lists or generator methods to the detail view. Replace magic attribute names
1923 1925 and _attrname() and _getattr() with "descriptors": For each type of magic
1924 1926 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1925 1927 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1926 1928 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1927 1929 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1928 1930 are still supported.
1929 1931
1930 1932 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1931 1933 fails in ibrowse.fetch(), the exception object is added as the last item
1932 1934 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1933 1935 a generator throws an exception midway through execution.
1934 1936
1935 1937 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1936 1938 encoding into methods.
1937 1939
1938 1940 2006-07-26 Ville Vainio <vivainio@gmail.com>
1939 1941
1940 1942 * iplib.py: history now stores multiline input as single
1941 1943 history entries. Patch by Jorgen Cederlof.
1942 1944
1943 1945 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1944 1946
1945 1947 * IPython/Extensions/ibrowse.py: Make cursor visible over
1946 1948 non existing attributes.
1947 1949
1948 1950 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1949 1951
1950 1952 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1951 1953 error output of the running command doesn't mess up the screen.
1952 1954
1953 1955 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1954 1956
1955 1957 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1956 1958 argument. This sorts the items themselves.
1957 1959
1958 1960 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1959 1961
1960 1962 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1961 1963 Compile expression strings into code objects. This should speed
1962 1964 up ifilter and friends somewhat.
1963 1965
1964 1966 2006-07-08 Ville Vainio <vivainio@gmail.com>
1965 1967
1966 1968 * Magic.py: %cpaste now strips > from the beginning of lines
1967 1969 to ease pasting quoted code from emails. Contributed by
1968 1970 Stefan van der Walt.
1969 1971
1970 1972 2006-06-29 Ville Vainio <vivainio@gmail.com>
1971 1973
1972 1974 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1973 1975 mode, patch contributed by Darren Dale. NEEDS TESTING!
1974 1976
1975 1977 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1976 1978
1977 1979 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1978 1980 a blue background. Fix fetching new display rows when the browser
1979 1981 scrolls more than a screenful (e.g. by using the goto command).
1980 1982
1981 1983 2006-06-27 Ville Vainio <vivainio@gmail.com>
1982 1984
1983 1985 * Magic.py (_inspect, _ofind) Apply David Huard's
1984 1986 patch for displaying the correct docstring for 'property'
1985 1987 attributes.
1986 1988
1987 1989 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1988 1990
1989 1991 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1990 1992 commands into the methods implementing them.
1991 1993
1992 1994 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1993 1995
1994 1996 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1995 1997 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1996 1998 autoindent support was authored by Jin Liu.
1997 1999
1998 2000 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1999 2001
2000 2002 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
2001 2003 for keymaps with a custom class that simplifies handling.
2002 2004
2003 2005 2006-06-19 Walter Doerwald <walter@livinglogic.de>
2004 2006
2005 2007 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
2006 2008 resizing. This requires Python 2.5 to work.
2007 2009
2008 2010 2006-06-16 Walter Doerwald <walter@livinglogic.de>
2009 2011
2010 2012 * IPython/Extensions/ibrowse.py: Add two new commands to
2011 2013 ibrowse: "hideattr" (mapped to "h") hides the attribute under
2012 2014 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
2013 2015 attributes again. Remapped the help command to "?". Display
2014 2016 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
2015 2017 as keys for the "home" and "end" commands. Add three new commands
2016 2018 to the input mode for "find" and friends: "delend" (CTRL-K)
2017 2019 deletes to the end of line. "incsearchup" searches upwards in the
2018 2020 command history for an input that starts with the text before the cursor.
2019 2021 "incsearchdown" does the same downwards. Removed a bogus mapping of
2020 2022 the x key to "delete".
2021 2023
2022 2024 2006-06-15 Ville Vainio <vivainio@gmail.com>
2023 2025
2024 2026 * iplib.py, hooks.py: Added new generate_prompt hook that can be
2025 2027 used to create prompts dynamically, instead of the "old" way of
2026 2028 assigning "magic" strings to prompt_in1 and prompt_in2. The old
2027 2029 way still works (it's invoked by the default hook), of course.
2028 2030
2029 2031 * Prompts.py: added generate_output_prompt hook for altering output
2030 2032 prompt
2031 2033
2032 2034 * Release.py: Changed version string to 0.7.3.svn.
2033 2035
2034 2036 2006-06-15 Walter Doerwald <walter@livinglogic.de>
2035 2037
2036 2038 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
2037 2039 the call to fetch() always tries to fetch enough data for at least one
2038 2040 full screen. This makes it possible to simply call moveto(0,0,True) in
2039 2041 the constructor. Fix typos and removed the obsolete goto attribute.
2040 2042
2041 2043 2006-06-12 Ville Vainio <vivainio@gmail.com>
2042 2044
2043 2045 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
2044 2046 allowing $variable interpolation within multiline statements,
2045 2047 though so far only with "sh" profile for a testing period.
2046 2048 The patch also enables splitting long commands with \ but it
2047 2049 doesn't work properly yet.
2048 2050
2049 2051 2006-06-12 Walter Doerwald <walter@livinglogic.de>
2050 2052
2051 2053 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
2052 2054 input history and the position of the cursor in the input history for
2053 2055 the find, findbackwards and goto command.
2054 2056
2055 2057 2006-06-10 Walter Doerwald <walter@livinglogic.de>
2056 2058
2057 2059 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
2058 2060 implements the basic functionality of browser commands that require
2059 2061 input. Reimplement the goto, find and findbackwards commands as
2060 2062 subclasses of _CommandInput. Add an input history and keymaps to those
2061 2063 commands. Add "\r" as a keyboard shortcut for the enterdefault and
2062 2064 execute commands.
2063 2065
2064 2066 2006-06-07 Ville Vainio <vivainio@gmail.com>
2065 2067
2066 2068 * iplib.py: ipython mybatch.ipy exits ipython immediately after
2067 2069 running the batch files instead of leaving the session open.
2068 2070
2069 2071 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
2070 2072
2071 2073 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
2072 2074 the original fix was incomplete. Patch submitted by W. Maier.
2073 2075
2074 2076 2006-06-07 Ville Vainio <vivainio@gmail.com>
2075 2077
2076 2078 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
2077 2079 Confirmation prompts can be supressed by 'quiet' option.
2078 2080 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
2079 2081
2080 2082 2006-06-06 *** Released version 0.7.2
2081 2083
2082 2084 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
2083 2085
2084 2086 * IPython/Release.py (version): Made 0.7.2 final for release.
2085 2087 Repo tagged and release cut.
2086 2088
2087 2089 2006-06-05 Ville Vainio <vivainio@gmail.com>
2088 2090
2089 2091 * Magic.py (magic_rehashx): Honor no_alias list earlier in
2090 2092 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
2091 2093
2092 2094 * upgrade_dir.py: try import 'path' module a bit harder
2093 2095 (for %upgrade)
2094 2096
2095 2097 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
2096 2098
2097 2099 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
2098 2100 instead of looping 20 times.
2099 2101
2100 2102 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
2101 2103 correctly at initialization time. Bug reported by Krishna Mohan
2102 2104 Gundu <gkmohan-AT-gmail.com> on the user list.
2103 2105
2104 2106 * IPython/Release.py (version): Mark 0.7.2 version to start
2105 2107 testing for release on 06/06.
2106 2108
2107 2109 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
2108 2110
2109 2111 * scripts/irunner: thin script interface so users don't have to
2110 2112 find the module and call it as an executable, since modules rarely
2111 2113 live in people's PATH.
2112 2114
2113 2115 * IPython/irunner.py (InteractiveRunner.__init__): added
2114 2116 delaybeforesend attribute to control delays with newer versions of
2115 2117 pexpect. Thanks to detailed help from pexpect's author, Noah
2116 2118 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
2117 2119 correctly (it works in NoColor mode).
2118 2120
2119 2121 * IPython/iplib.py (handle_normal): fix nasty crash reported on
2120 2122 SAGE list, from improper log() calls.
2121 2123
2122 2124 2006-05-31 Ville Vainio <vivainio@gmail.com>
2123 2125
2124 2126 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
2125 2127 with args in parens to work correctly with dirs that have spaces.
2126 2128
2127 2129 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
2128 2130
2129 2131 * IPython/Logger.py (Logger.logstart): add option to log raw input
2130 2132 instead of the processed one. A -r flag was added to the
2131 2133 %logstart magic used for controlling logging.
2132 2134
2133 2135 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
2134 2136
2135 2137 * IPython/iplib.py (InteractiveShell.__init__): add check for the
2136 2138 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
2137 2139 recognize the option. After a bug report by Will Maier. This
2138 2140 closes #64 (will do it after confirmation from W. Maier).
2139 2141
2140 2142 * IPython/irunner.py: New module to run scripts as if manually
2141 2143 typed into an interactive environment, based on pexpect. After a
2142 2144 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
2143 2145 ipython-user list. Simple unittests in the tests/ directory.
2144 2146
2145 2147 * tools/release: add Will Maier, OpenBSD port maintainer, to
2146 2148 recepients list. We are now officially part of the OpenBSD ports:
2147 2149 http://www.openbsd.org/ports.html ! Many thanks to Will for the
2148 2150 work.
2149 2151
2150 2152 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
2151 2153
2152 2154 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
2153 2155 so that it doesn't break tkinter apps.
2154 2156
2155 2157 * IPython/iplib.py (_prefilter): fix bug where aliases would
2156 2158 shadow variables when autocall was fully off. Reported by SAGE
2157 2159 author William Stein.
2158 2160
2159 2161 * IPython/OInspect.py (Inspector.__init__): add a flag to control
2160 2162 at what detail level strings are computed when foo? is requested.
2161 2163 This allows users to ask for example that the string form of an
2162 2164 object is only computed when foo?? is called, or even never, by
2163 2165 setting the object_info_string_level >= 2 in the configuration
2164 2166 file. This new option has been added and documented. After a
2165 2167 request by SAGE to be able to control the printing of very large
2166 2168 objects more easily.
2167 2169
2168 2170 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2169 2171
2170 2172 * IPython/ipmaker.py (make_IPython): remove the ipython call path
2171 2173 from sys.argv, to be 100% consistent with how Python itself works
2172 2174 (as seen for example with python -i file.py). After a bug report
2173 2175 by Jeffrey Collins.
2174 2176
2175 2177 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2176 2178 nasty bug which was preventing custom namespaces with -pylab,
2177 2179 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2178 2180 compatibility (long gone from mpl).
2179 2181
2180 2182 * IPython/ipapi.py (make_session): name change: create->make. We
2181 2183 use make in other places (ipmaker,...), it's shorter and easier to
2182 2184 type and say, etc. I'm trying to clean things before 0.7.2 so
2183 2185 that I can keep things stable wrt to ipapi in the chainsaw branch.
2184 2186
2185 2187 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2186 2188 python-mode recognizes our debugger mode. Add support for
2187 2189 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2188 2190 <m.liu.jin-AT-gmail.com> originally written by
2189 2191 doxgen-AT-newsmth.net (with minor modifications for xemacs
2190 2192 compatibility)
2191 2193
2192 2194 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2193 2195 tracebacks when walking the stack so that the stack tracking system
2194 2196 in emacs' python-mode can identify the frames correctly.
2195 2197
2196 2198 * IPython/ipmaker.py (make_IPython): make the internal (and
2197 2199 default config) autoedit_syntax value false by default. Too many
2198 2200 users have complained to me (both on and off-list) about problems
2199 2201 with this option being on by default, so I'm making it default to
2200 2202 off. It can still be enabled by anyone via the usual mechanisms.
2201 2203
2202 2204 * IPython/completer.py (Completer.attr_matches): add support for
2203 2205 PyCrust-style _getAttributeNames magic method. Patch contributed
2204 2206 by <mscott-AT-goldenspud.com>. Closes #50.
2205 2207
2206 2208 * IPython/iplib.py (InteractiveShell.__init__): remove the
2207 2209 deletion of exit/quit from __builtin__, which can break
2208 2210 third-party tools like the Zope debugging console. The
2209 2211 %exit/%quit magics remain. In general, it's probably a good idea
2210 2212 not to delete anything from __builtin__, since we never know what
2211 2213 that will break. In any case, python now (for 2.5) will support
2212 2214 'real' exit/quit, so this issue is moot. Closes #55.
2213 2215
2214 2216 * IPython/genutils.py (with_obj): rename the 'with' function to
2215 2217 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2216 2218 becomes a language keyword. Closes #53.
2217 2219
2218 2220 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2219 2221 __file__ attribute to this so it fools more things into thinking
2220 2222 it is a real module. Closes #59.
2221 2223
2222 2224 * IPython/Magic.py (magic_edit): add -n option to open the editor
2223 2225 at a specific line number. After a patch by Stefan van der Walt.
2224 2226
2225 2227 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2226 2228
2227 2229 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2228 2230 reason the file could not be opened. After automatic crash
2229 2231 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2230 2232 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2231 2233 (_should_recompile): Don't fire editor if using %bg, since there
2232 2234 is no file in the first place. From the same report as above.
2233 2235 (raw_input): protect against faulty third-party prefilters. After
2234 2236 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2235 2237 while running under SAGE.
2236 2238
2237 2239 2006-05-23 Ville Vainio <vivainio@gmail.com>
2238 2240
2239 2241 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2240 2242 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2241 2243 now returns None (again), unless dummy is specifically allowed by
2242 2244 ipapi.get(allow_dummy=True).
2243 2245
2244 2246 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2245 2247
2246 2248 * IPython: remove all 2.2-compatibility objects and hacks from
2247 2249 everywhere, since we only support 2.3 at this point. Docs
2248 2250 updated.
2249 2251
2250 2252 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2251 2253 Anything requiring extra validation can be turned into a Python
2252 2254 property in the future. I used a property for the db one b/c
2253 2255 there was a nasty circularity problem with the initialization
2254 2256 order, which right now I don't have time to clean up.
2255 2257
2256 2258 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2257 2259 another locking bug reported by Jorgen. I'm not 100% sure though,
2258 2260 so more testing is needed...
2259 2261
2260 2262 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2261 2263
2262 2264 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2263 2265 local variables from any routine in user code (typically executed
2264 2266 with %run) directly into the interactive namespace. Very useful
2265 2267 when doing complex debugging.
2266 2268 (IPythonNotRunning): Changed the default None object to a dummy
2267 2269 whose attributes can be queried as well as called without
2268 2270 exploding, to ease writing code which works transparently both in
2269 2271 and out of ipython and uses some of this API.
2270 2272
2271 2273 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2272 2274
2273 2275 * IPython/hooks.py (result_display): Fix the fact that our display
2274 2276 hook was using str() instead of repr(), as the default python
2275 2277 console does. This had gone unnoticed b/c it only happened if
2276 2278 %Pprint was off, but the inconsistency was there.
2277 2279
2278 2280 2006-05-15 Ville Vainio <vivainio@gmail.com>
2279 2281
2280 2282 * Oinspect.py: Only show docstring for nonexisting/binary files
2281 2283 when doing object??, closing ticket #62
2282 2284
2283 2285 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2284 2286
2285 2287 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2286 2288 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2287 2289 was being released in a routine which hadn't checked if it had
2288 2290 been the one to acquire it.
2289 2291
2290 2292 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2291 2293
2292 2294 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2293 2295
2294 2296 2006-04-11 Ville Vainio <vivainio@gmail.com>
2295 2297
2296 2298 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2297 2299 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2298 2300 prefilters, allowing stuff like magics and aliases in the file.
2299 2301
2300 2302 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2301 2303 added. Supported now are "%clear in" and "%clear out" (clear input and
2302 2304 output history, respectively). Also fixed CachedOutput.flush to
2303 2305 properly flush the output cache.
2304 2306
2305 2307 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2306 2308 half-success (and fail explicitly).
2307 2309
2308 2310 2006-03-28 Ville Vainio <vivainio@gmail.com>
2309 2311
2310 2312 * iplib.py: Fix quoting of aliases so that only argless ones
2311 2313 are quoted
2312 2314
2313 2315 2006-03-28 Ville Vainio <vivainio@gmail.com>
2314 2316
2315 2317 * iplib.py: Quote aliases with spaces in the name.
2316 2318 "c:\program files\blah\bin" is now legal alias target.
2317 2319
2318 2320 * ext_rehashdir.py: Space no longer allowed as arg
2319 2321 separator, since space is legal in path names.
2320 2322
2321 2323 2006-03-16 Ville Vainio <vivainio@gmail.com>
2322 2324
2323 2325 * upgrade_dir.py: Take path.py from Extensions, correcting
2324 2326 %upgrade magic
2325 2327
2326 2328 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2327 2329
2328 2330 * hooks.py: Only enclose editor binary in quotes if legal and
2329 2331 necessary (space in the name, and is an existing file). Fixes a bug
2330 2332 reported by Zachary Pincus.
2331 2333
2332 2334 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2333 2335
2334 2336 * Manual: thanks to a tip on proper color handling for Emacs, by
2335 2337 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2336 2338
2337 2339 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2338 2340 by applying the provided patch. Thanks to Liu Jin
2339 2341 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2340 2342 XEmacs/Linux, I'm trusting the submitter that it actually helps
2341 2343 under win32/GNU Emacs. Will revisit if any problems are reported.
2342 2344
2343 2345 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2344 2346
2345 2347 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2346 2348 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2347 2349
2348 2350 2006-03-12 Ville Vainio <vivainio@gmail.com>
2349 2351
2350 2352 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2351 2353 Torsten Marek.
2352 2354
2353 2355 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2354 2356
2355 2357 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2356 2358 line ranges works again.
2357 2359
2358 2360 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2359 2361
2360 2362 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2361 2363 and friends, after a discussion with Zach Pincus on ipython-user.
2362 2364 I'm not 100% sure, but after thinking about it quite a bit, it may
2363 2365 be OK. Testing with the multithreaded shells didn't reveal any
2364 2366 problems, but let's keep an eye out.
2365 2367
2366 2368 In the process, I fixed a few things which were calling
2367 2369 self.InteractiveTB() directly (like safe_execfile), which is a
2368 2370 mistake: ALL exception reporting should be done by calling
2369 2371 self.showtraceback(), which handles state and tab-completion and
2370 2372 more.
2371 2373
2372 2374 2006-03-01 Ville Vainio <vivainio@gmail.com>
2373 2375
2374 2376 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2375 2377 To use, do "from ipipe import *".
2376 2378
2377 2379 2006-02-24 Ville Vainio <vivainio@gmail.com>
2378 2380
2379 2381 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2380 2382 "cleanly" and safely than the older upgrade mechanism.
2381 2383
2382 2384 2006-02-21 Ville Vainio <vivainio@gmail.com>
2383 2385
2384 2386 * Magic.py: %save works again.
2385 2387
2386 2388 2006-02-15 Ville Vainio <vivainio@gmail.com>
2387 2389
2388 2390 * Magic.py: %Pprint works again
2389 2391
2390 2392 * Extensions/ipy_sane_defaults.py: Provide everything provided
2391 2393 in default ipythonrc, to make it possible to have a completely empty
2392 2394 ipythonrc (and thus completely rc-file free configuration)
2393 2395
2394 2396 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2395 2397
2396 2398 * IPython/hooks.py (editor): quote the call to the editor command,
2397 2399 to allow commands with spaces in them. Problem noted by watching
2398 2400 Ian Oswald's video about textpad under win32 at
2399 2401 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2400 2402
2401 2403 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2402 2404 describing magics (we haven't used @ for a loong time).
2403 2405
2404 2406 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2405 2407 contributed by marienz to close
2406 2408 http://www.scipy.net/roundup/ipython/issue53.
2407 2409
2408 2410 2006-02-10 Ville Vainio <vivainio@gmail.com>
2409 2411
2410 2412 * genutils.py: getoutput now works in win32 too
2411 2413
2412 2414 * completer.py: alias and magic completion only invoked
2413 2415 at the first "item" in the line, to avoid "cd %store"
2414 2416 nonsense.
2415 2417
2416 2418 2006-02-09 Ville Vainio <vivainio@gmail.com>
2417 2419
2418 2420 * test/*: Added a unit testing framework (finally).
2419 2421 '%run runtests.py' to run test_*.
2420 2422
2421 2423 * ipapi.py: Exposed runlines and set_custom_exc
2422 2424
2423 2425 2006-02-07 Ville Vainio <vivainio@gmail.com>
2424 2426
2425 2427 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2426 2428 instead use "f(1 2)" as before.
2427 2429
2428 2430 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2429 2431
2430 2432 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2431 2433 facilities, for demos processed by the IPython input filter
2432 2434 (IPythonDemo), and for running a script one-line-at-a-time as a
2433 2435 demo, both for pure Python (LineDemo) and for IPython-processed
2434 2436 input (IPythonLineDemo). After a request by Dave Kohel, from the
2435 2437 SAGE team.
2436 2438 (Demo.edit): added an edit() method to the demo objects, to edit
2437 2439 the in-memory copy of the last executed block.
2438 2440
2439 2441 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2440 2442 processing to %edit, %macro and %save. These commands can now be
2441 2443 invoked on the unprocessed input as it was typed by the user
2442 2444 (without any prefilters applied). After requests by the SAGE team
2443 2445 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2444 2446
2445 2447 2006-02-01 Ville Vainio <vivainio@gmail.com>
2446 2448
2447 2449 * setup.py, eggsetup.py: easy_install ipython==dev works
2448 2450 correctly now (on Linux)
2449 2451
2450 2452 * ipy_user_conf,ipmaker: user config changes, removed spurious
2451 2453 warnings
2452 2454
2453 2455 * iplib: if rc.banner is string, use it as is.
2454 2456
2455 2457 * Magic: %pycat accepts a string argument and pages it's contents.
2456 2458
2457 2459
2458 2460 2006-01-30 Ville Vainio <vivainio@gmail.com>
2459 2461
2460 2462 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2461 2463 Now %store and bookmarks work through PickleShare, meaning that
2462 2464 concurrent access is possible and all ipython sessions see the
2463 2465 same database situation all the time, instead of snapshot of
2464 2466 the situation when the session was started. Hence, %bookmark
2465 2467 results are immediately accessible from othes sessions. The database
2466 2468 is also available for use by user extensions. See:
2467 2469 http://www.python.org/pypi/pickleshare
2468 2470
2469 2471 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2470 2472
2471 2473 * aliases can now be %store'd
2472 2474
2473 2475 * path.py moved to Extensions so that pickleshare does not need
2474 2476 IPython-specific import. Extensions added to pythonpath right
2475 2477 at __init__.
2476 2478
2477 2479 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2478 2480 called with _ip.system and the pre-transformed command string.
2479 2481
2480 2482 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2481 2483
2482 2484 * IPython/iplib.py (interact): Fix that we were not catching
2483 2485 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2484 2486 logic here had to change, but it's fixed now.
2485 2487
2486 2488 2006-01-29 Ville Vainio <vivainio@gmail.com>
2487 2489
2488 2490 * iplib.py: Try to import pyreadline on Windows.
2489 2491
2490 2492 2006-01-27 Ville Vainio <vivainio@gmail.com>
2491 2493
2492 2494 * iplib.py: Expose ipapi as _ip in builtin namespace.
2493 2495 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2494 2496 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2495 2497 syntax now produce _ip.* variant of the commands.
2496 2498
2497 2499 * "_ip.options().autoedit_syntax = 2" automatically throws
2498 2500 user to editor for syntax error correction without prompting.
2499 2501
2500 2502 2006-01-27 Ville Vainio <vivainio@gmail.com>
2501 2503
2502 2504 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2503 2505 'ipython' at argv[0]) executed through command line.
2504 2506 NOTE: this DEPRECATES calling ipython with multiple scripts
2505 2507 ("ipython a.py b.py c.py")
2506 2508
2507 2509 * iplib.py, hooks.py: Added configurable input prefilter,
2508 2510 named 'input_prefilter'. See ext_rescapture.py for example
2509 2511 usage.
2510 2512
2511 2513 * ext_rescapture.py, Magic.py: Better system command output capture
2512 2514 through 'var = !ls' (deprecates user-visible %sc). Same notation
2513 2515 applies for magics, 'var = %alias' assigns alias list to var.
2514 2516
2515 2517 * ipapi.py: added meta() for accessing extension-usable data store.
2516 2518
2517 2519 * iplib.py: added InteractiveShell.getapi(). New magics should be
2518 2520 written doing self.getapi() instead of using the shell directly.
2519 2521
2520 2522 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2521 2523 %store foo >> ~/myfoo.txt to store variables to files (in clean
2522 2524 textual form, not a restorable pickle).
2523 2525
2524 2526 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2525 2527
2526 2528 * usage.py, Magic.py: added %quickref
2527 2529
2528 2530 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2529 2531
2530 2532 * GetoptErrors when invoking magics etc. with wrong args
2531 2533 are now more helpful:
2532 2534 GetoptError: option -l not recognized (allowed: "qb" )
2533 2535
2534 2536 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2535 2537
2536 2538 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2537 2539 computationally intensive blocks don't appear to stall the demo.
2538 2540
2539 2541 2006-01-24 Ville Vainio <vivainio@gmail.com>
2540 2542
2541 2543 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2542 2544 value to manipulate resulting history entry.
2543 2545
2544 2546 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2545 2547 to instance methods of IPApi class, to make extending an embedded
2546 2548 IPython feasible. See ext_rehashdir.py for example usage.
2547 2549
2548 2550 * Merged 1071-1076 from branches/0.7.1
2549 2551
2550 2552
2551 2553 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2552 2554
2553 2555 * tools/release (daystamp): Fix build tools to use the new
2554 2556 eggsetup.py script to build lightweight eggs.
2555 2557
2556 2558 * Applied changesets 1062 and 1064 before 0.7.1 release.
2557 2559
2558 2560 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2559 2561 see the raw input history (without conversions like %ls ->
2560 2562 ipmagic("ls")). After a request from W. Stein, SAGE
2561 2563 (http://modular.ucsd.edu/sage) developer. This information is
2562 2564 stored in the input_hist_raw attribute of the IPython instance, so
2563 2565 developers can access it if needed (it's an InputList instance).
2564 2566
2565 2567 * Versionstring = 0.7.2.svn
2566 2568
2567 2569 * eggsetup.py: A separate script for constructing eggs, creates
2568 2570 proper launch scripts even on Windows (an .exe file in
2569 2571 \python24\scripts).
2570 2572
2571 2573 * ipapi.py: launch_new_instance, launch entry point needed for the
2572 2574 egg.
2573 2575
2574 2576 2006-01-23 Ville Vainio <vivainio@gmail.com>
2575 2577
2576 2578 * Added %cpaste magic for pasting python code
2577 2579
2578 2580 2006-01-22 Ville Vainio <vivainio@gmail.com>
2579 2581
2580 2582 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2581 2583
2582 2584 * Versionstring = 0.7.2.svn
2583 2585
2584 2586 * eggsetup.py: A separate script for constructing eggs, creates
2585 2587 proper launch scripts even on Windows (an .exe file in
2586 2588 \python24\scripts).
2587 2589
2588 2590 * ipapi.py: launch_new_instance, launch entry point needed for the
2589 2591 egg.
2590 2592
2591 2593 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2592 2594
2593 2595 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2594 2596 %pfile foo would print the file for foo even if it was a binary.
2595 2597 Now, extensions '.so' and '.dll' are skipped.
2596 2598
2597 2599 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2598 2600 bug, where macros would fail in all threaded modes. I'm not 100%
2599 2601 sure, so I'm going to put out an rc instead of making a release
2600 2602 today, and wait for feedback for at least a few days.
2601 2603
2602 2604 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2603 2605 it...) the handling of pasting external code with autoindent on.
2604 2606 To get out of a multiline input, the rule will appear for most
2605 2607 users unchanged: two blank lines or change the indent level
2606 2608 proposed by IPython. But there is a twist now: you can
2607 2609 add/subtract only *one or two spaces*. If you add/subtract three
2608 2610 or more (unless you completely delete the line), IPython will
2609 2611 accept that line, and you'll need to enter a second one of pure
2610 2612 whitespace. I know it sounds complicated, but I can't find a
2611 2613 different solution that covers all the cases, with the right
2612 2614 heuristics. Hopefully in actual use, nobody will really notice
2613 2615 all these strange rules and things will 'just work'.
2614 2616
2615 2617 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2616 2618
2617 2619 * IPython/iplib.py (interact): catch exceptions which can be
2618 2620 triggered asynchronously by signal handlers. Thanks to an
2619 2621 automatic crash report, submitted by Colin Kingsley
2620 2622 <tercel-AT-gentoo.org>.
2621 2623
2622 2624 2006-01-20 Ville Vainio <vivainio@gmail.com>
2623 2625
2624 2626 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2625 2627 (%rehashdir, very useful, try it out) of how to extend ipython
2626 2628 with new magics. Also added Extensions dir to pythonpath to make
2627 2629 importing extensions easy.
2628 2630
2629 2631 * %store now complains when trying to store interactively declared
2630 2632 classes / instances of those classes.
2631 2633
2632 2634 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2633 2635 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2634 2636 if they exist, and ipy_user_conf.py with some defaults is created for
2635 2637 the user.
2636 2638
2637 2639 * Startup rehashing done by the config file, not InterpreterExec.
2638 2640 This means system commands are available even without selecting the
2639 2641 pysh profile. It's the sensible default after all.
2640 2642
2641 2643 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2642 2644
2643 2645 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2644 2646 multiline code with autoindent on working. But I am really not
2645 2647 sure, so this needs more testing. Will commit a debug-enabled
2646 2648 version for now, while I test it some more, so that Ville and
2647 2649 others may also catch any problems. Also made
2648 2650 self.indent_current_str() a method, to ensure that there's no
2649 2651 chance of the indent space count and the corresponding string
2650 2652 falling out of sync. All code needing the string should just call
2651 2653 the method.
2652 2654
2653 2655 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2654 2656
2655 2657 * IPython/Magic.py (magic_edit): fix check for when users don't
2656 2658 save their output files, the try/except was in the wrong section.
2657 2659
2658 2660 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2659 2661
2660 2662 * IPython/Magic.py (magic_run): fix __file__ global missing from
2661 2663 script's namespace when executed via %run. After a report by
2662 2664 Vivian.
2663 2665
2664 2666 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2665 2667 when using python 2.4. The parent constructor changed in 2.4, and
2666 2668 we need to track it directly (we can't call it, as it messes up
2667 2669 readline and tab-completion inside our pdb would stop working).
2668 2670 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2669 2671
2670 2672 2006-01-16 Ville Vainio <vivainio@gmail.com>
2671 2673
2672 2674 * Ipython/magic.py: Reverted back to old %edit functionality
2673 2675 that returns file contents on exit.
2674 2676
2675 2677 * IPython/path.py: Added Jason Orendorff's "path" module to
2676 2678 IPython tree, http://www.jorendorff.com/articles/python/path/.
2677 2679 You can get path objects conveniently through %sc, and !!, e.g.:
2678 2680 sc files=ls
2679 2681 for p in files.paths: # or files.p
2680 2682 print p,p.mtime
2681 2683
2682 2684 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2683 2685 now work again without considering the exclusion regexp -
2684 2686 hence, things like ',foo my/path' turn to 'foo("my/path")'
2685 2687 instead of syntax error.
2686 2688
2687 2689
2688 2690 2006-01-14 Ville Vainio <vivainio@gmail.com>
2689 2691
2690 2692 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2691 2693 ipapi decorators for python 2.4 users, options() provides access to rc
2692 2694 data.
2693 2695
2694 2696 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2695 2697 as path separators (even on Linux ;-). Space character after
2696 2698 backslash (as yielded by tab completer) is still space;
2697 2699 "%cd long\ name" works as expected.
2698 2700
2699 2701 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2700 2702 as "chain of command", with priority. API stays the same,
2701 2703 TryNext exception raised by a hook function signals that
2702 2704 current hook failed and next hook should try handling it, as
2703 2705 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2704 2706 requested configurable display hook, which is now implemented.
2705 2707
2706 2708 2006-01-13 Ville Vainio <vivainio@gmail.com>
2707 2709
2708 2710 * IPython/platutils*.py: platform specific utility functions,
2709 2711 so far only set_term_title is implemented (change terminal
2710 2712 label in windowing systems). %cd now changes the title to
2711 2713 current dir.
2712 2714
2713 2715 * IPython/Release.py: Added myself to "authors" list,
2714 2716 had to create new files.
2715 2717
2716 2718 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2717 2719 shell escape; not a known bug but had potential to be one in the
2718 2720 future.
2719 2721
2720 2722 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2721 2723 extension API for IPython! See the module for usage example. Fix
2722 2724 OInspect for docstring-less magic functions.
2723 2725
2724 2726
2725 2727 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2726 2728
2727 2729 * IPython/iplib.py (raw_input): temporarily deactivate all
2728 2730 attempts at allowing pasting of code with autoindent on. It
2729 2731 introduced bugs (reported by Prabhu) and I can't seem to find a
2730 2732 robust combination which works in all cases. Will have to revisit
2731 2733 later.
2732 2734
2733 2735 * IPython/genutils.py: remove isspace() function. We've dropped
2734 2736 2.2 compatibility, so it's OK to use the string method.
2735 2737
2736 2738 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2737 2739
2738 2740 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2739 2741 matching what NOT to autocall on, to include all python binary
2740 2742 operators (including things like 'and', 'or', 'is' and 'in').
2741 2743 Prompted by a bug report on 'foo & bar', but I realized we had
2742 2744 many more potential bug cases with other operators. The regexp is
2743 2745 self.re_exclude_auto, it's fairly commented.
2744 2746
2745 2747 2006-01-12 Ville Vainio <vivainio@gmail.com>
2746 2748
2747 2749 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2748 2750 Prettified and hardened string/backslash quoting with ipsystem(),
2749 2751 ipalias() and ipmagic(). Now even \ characters are passed to
2750 2752 %magics, !shell escapes and aliases exactly as they are in the
2751 2753 ipython command line. Should improve backslash experience,
2752 2754 particularly in Windows (path delimiter for some commands that
2753 2755 won't understand '/'), but Unix benefits as well (regexps). %cd
2754 2756 magic still doesn't support backslash path delimiters, though. Also
2755 2757 deleted all pretense of supporting multiline command strings in
2756 2758 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2757 2759
2758 2760 * doc/build_doc_instructions.txt added. Documentation on how to
2759 2761 use doc/update_manual.py, added yesterday. Both files contributed
2760 2762 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2761 2763 doc/*.sh for deprecation at a later date.
2762 2764
2763 2765 * /ipython.py Added ipython.py to root directory for
2764 2766 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2765 2767 ipython.py) and development convenience (no need to keep doing
2766 2768 "setup.py install" between changes).
2767 2769
2768 2770 * Made ! and !! shell escapes work (again) in multiline expressions:
2769 2771 if 1:
2770 2772 !ls
2771 2773 !!ls
2772 2774
2773 2775 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2774 2776
2775 2777 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2776 2778 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2777 2779 module in case-insensitive installation. Was causing crashes
2778 2780 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2779 2781
2780 2782 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2781 2783 <marienz-AT-gentoo.org>, closes
2782 2784 http://www.scipy.net/roundup/ipython/issue51.
2783 2785
2784 2786 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2785 2787
2786 2788 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2787 2789 problem of excessive CPU usage under *nix and keyboard lag under
2788 2790 win32.
2789 2791
2790 2792 2006-01-10 *** Released version 0.7.0
2791 2793
2792 2794 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2793 2795
2794 2796 * IPython/Release.py (revision): tag version number to 0.7.0,
2795 2797 ready for release.
2796 2798
2797 2799 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2798 2800 it informs the user of the name of the temp. file used. This can
2799 2801 help if you decide later to reuse that same file, so you know
2800 2802 where to copy the info from.
2801 2803
2802 2804 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2803 2805
2804 2806 * setup_bdist_egg.py: little script to build an egg. Added
2805 2807 support in the release tools as well.
2806 2808
2807 2809 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2808 2810
2809 2811 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2810 2812 version selection (new -wxversion command line and ipythonrc
2811 2813 parameter). Patch contributed by Arnd Baecker
2812 2814 <arnd.baecker-AT-web.de>.
2813 2815
2814 2816 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2815 2817 embedded instances, for variables defined at the interactive
2816 2818 prompt of the embedded ipython. Reported by Arnd.
2817 2819
2818 2820 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2819 2821 it can be used as a (stateful) toggle, or with a direct parameter.
2820 2822
2821 2823 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2822 2824 could be triggered in certain cases and cause the traceback
2823 2825 printer not to work.
2824 2826
2825 2827 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2826 2828
2827 2829 * IPython/iplib.py (_should_recompile): Small fix, closes
2828 2830 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2829 2831
2830 2832 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2831 2833
2832 2834 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2833 2835 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2834 2836 Moad for help with tracking it down.
2835 2837
2836 2838 * IPython/iplib.py (handle_auto): fix autocall handling for
2837 2839 objects which support BOTH __getitem__ and __call__ (so that f [x]
2838 2840 is left alone, instead of becoming f([x]) automatically).
2839 2841
2840 2842 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2841 2843 Ville's patch.
2842 2844
2843 2845 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2844 2846
2845 2847 * IPython/iplib.py (handle_auto): changed autocall semantics to
2846 2848 include 'smart' mode, where the autocall transformation is NOT
2847 2849 applied if there are no arguments on the line. This allows you to
2848 2850 just type 'foo' if foo is a callable to see its internal form,
2849 2851 instead of having it called with no arguments (typically a
2850 2852 mistake). The old 'full' autocall still exists: for that, you
2851 2853 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2852 2854
2853 2855 * IPython/completer.py (Completer.attr_matches): add
2854 2856 tab-completion support for Enthoughts' traits. After a report by
2855 2857 Arnd and a patch by Prabhu.
2856 2858
2857 2859 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2858 2860
2859 2861 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2860 2862 Schmolck's patch to fix inspect.getinnerframes().
2861 2863
2862 2864 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2863 2865 for embedded instances, regarding handling of namespaces and items
2864 2866 added to the __builtin__ one. Multiple embedded instances and
2865 2867 recursive embeddings should work better now (though I'm not sure
2866 2868 I've got all the corner cases fixed, that code is a bit of a brain
2867 2869 twister).
2868 2870
2869 2871 * IPython/Magic.py (magic_edit): added support to edit in-memory
2870 2872 macros (automatically creates the necessary temp files). %edit
2871 2873 also doesn't return the file contents anymore, it's just noise.
2872 2874
2873 2875 * IPython/completer.py (Completer.attr_matches): revert change to
2874 2876 complete only on attributes listed in __all__. I realized it
2875 2877 cripples the tab-completion system as a tool for exploring the
2876 2878 internals of unknown libraries (it renders any non-__all__
2877 2879 attribute off-limits). I got bit by this when trying to see
2878 2880 something inside the dis module.
2879 2881
2880 2882 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2881 2883
2882 2884 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2883 2885 namespace for users and extension writers to hold data in. This
2884 2886 follows the discussion in
2885 2887 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2886 2888
2887 2889 * IPython/completer.py (IPCompleter.complete): small patch to help
2888 2890 tab-completion under Emacs, after a suggestion by John Barnard
2889 2891 <barnarj-AT-ccf.org>.
2890 2892
2891 2893 * IPython/Magic.py (Magic.extract_input_slices): added support for
2892 2894 the slice notation in magics to use N-M to represent numbers N...M
2893 2895 (closed endpoints). This is used by %macro and %save.
2894 2896
2895 2897 * IPython/completer.py (Completer.attr_matches): for modules which
2896 2898 define __all__, complete only on those. After a patch by Jeffrey
2897 2899 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2898 2900 speed up this routine.
2899 2901
2900 2902 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2901 2903 don't know if this is the end of it, but the behavior now is
2902 2904 certainly much more correct. Note that coupled with macros,
2903 2905 slightly surprising (at first) behavior may occur: a macro will in
2904 2906 general expand to multiple lines of input, so upon exiting, the
2905 2907 in/out counters will both be bumped by the corresponding amount
2906 2908 (as if the macro's contents had been typed interactively). Typing
2907 2909 %hist will reveal the intermediate (silently processed) lines.
2908 2910
2909 2911 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2910 2912 pickle to fail (%run was overwriting __main__ and not restoring
2911 2913 it, but pickle relies on __main__ to operate).
2912 2914
2913 2915 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2914 2916 using properties, but forgot to make the main InteractiveShell
2915 2917 class a new-style class. Properties fail silently, and
2916 2918 mysteriously, with old-style class (getters work, but
2917 2919 setters don't do anything).
2918 2920
2919 2921 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2920 2922
2921 2923 * IPython/Magic.py (magic_history): fix history reporting bug (I
2922 2924 know some nasties are still there, I just can't seem to find a
2923 2925 reproducible test case to track them down; the input history is
2924 2926 falling out of sync...)
2925 2927
2926 2928 * IPython/iplib.py (handle_shell_escape): fix bug where both
2927 2929 aliases and system accesses where broken for indented code (such
2928 2930 as loops).
2929 2931
2930 2932 * IPython/genutils.py (shell): fix small but critical bug for
2931 2933 win32 system access.
2932 2934
2933 2935 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2934 2936
2935 2937 * IPython/iplib.py (showtraceback): remove use of the
2936 2938 sys.last_{type/value/traceback} structures, which are non
2937 2939 thread-safe.
2938 2940 (_prefilter): change control flow to ensure that we NEVER
2939 2941 introspect objects when autocall is off. This will guarantee that
2940 2942 having an input line of the form 'x.y', where access to attribute
2941 2943 'y' has side effects, doesn't trigger the side effect TWICE. It
2942 2944 is important to note that, with autocall on, these side effects
2943 2945 can still happen.
2944 2946 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2945 2947 trio. IPython offers these three kinds of special calls which are
2946 2948 not python code, and it's a good thing to have their call method
2947 2949 be accessible as pure python functions (not just special syntax at
2948 2950 the command line). It gives us a better internal implementation
2949 2951 structure, as well as exposing these for user scripting more
2950 2952 cleanly.
2951 2953
2952 2954 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2953 2955 file. Now that they'll be more likely to be used with the
2954 2956 persistance system (%store), I want to make sure their module path
2955 2957 doesn't change in the future, so that we don't break things for
2956 2958 users' persisted data.
2957 2959
2958 2960 * IPython/iplib.py (autoindent_update): move indentation
2959 2961 management into the _text_ processing loop, not the keyboard
2960 2962 interactive one. This is necessary to correctly process non-typed
2961 2963 multiline input (such as macros).
2962 2964
2963 2965 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2964 2966 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2965 2967 which was producing problems in the resulting manual.
2966 2968 (magic_whos): improve reporting of instances (show their class,
2967 2969 instead of simply printing 'instance' which isn't terribly
2968 2970 informative).
2969 2971
2970 2972 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2971 2973 (minor mods) to support network shares under win32.
2972 2974
2973 2975 * IPython/winconsole.py (get_console_size): add new winconsole
2974 2976 module and fixes to page_dumb() to improve its behavior under
2975 2977 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2976 2978
2977 2979 * IPython/Magic.py (Macro): simplified Macro class to just
2978 2980 subclass list. We've had only 2.2 compatibility for a very long
2979 2981 time, yet I was still avoiding subclassing the builtin types. No
2980 2982 more (I'm also starting to use properties, though I won't shift to
2981 2983 2.3-specific features quite yet).
2982 2984 (magic_store): added Ville's patch for lightweight variable
2983 2985 persistence, after a request on the user list by Matt Wilkie
2984 2986 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2985 2987 details.
2986 2988
2987 2989 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2988 2990 changed the default logfile name from 'ipython.log' to
2989 2991 'ipython_log.py'. These logs are real python files, and now that
2990 2992 we have much better multiline support, people are more likely to
2991 2993 want to use them as such. Might as well name them correctly.
2992 2994
2993 2995 * IPython/Magic.py: substantial cleanup. While we can't stop
2994 2996 using magics as mixins, due to the existing customizations 'out
2995 2997 there' which rely on the mixin naming conventions, at least I
2996 2998 cleaned out all cross-class name usage. So once we are OK with
2997 2999 breaking compatibility, the two systems can be separated.
2998 3000
2999 3001 * IPython/Logger.py: major cleanup. This one is NOT a mixin
3000 3002 anymore, and the class is a fair bit less hideous as well. New
3001 3003 features were also introduced: timestamping of input, and logging
3002 3004 of output results. These are user-visible with the -t and -o
3003 3005 options to %logstart. Closes
3004 3006 http://www.scipy.net/roundup/ipython/issue11 and a request by
3005 3007 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
3006 3008
3007 3009 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
3008 3010
3009 3011 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
3010 3012 better handle backslashes in paths. See the thread 'More Windows
3011 3013 questions part 2 - \/ characters revisited' on the iypthon user
3012 3014 list:
3013 3015 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
3014 3016
3015 3017 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
3016 3018
3017 3019 (InteractiveShell.__init__): change threaded shells to not use the
3018 3020 ipython crash handler. This was causing more problems than not,
3019 3021 as exceptions in the main thread (GUI code, typically) would
3020 3022 always show up as a 'crash', when they really weren't.
3021 3023
3022 3024 The colors and exception mode commands (%colors/%xmode) have been
3023 3025 synchronized to also take this into account, so users can get
3024 3026 verbose exceptions for their threaded code as well. I also added
3025 3027 support for activating pdb inside this exception handler as well,
3026 3028 so now GUI authors can use IPython's enhanced pdb at runtime.
3027 3029
3028 3030 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
3029 3031 true by default, and add it to the shipped ipythonrc file. Since
3030 3032 this asks the user before proceeding, I think it's OK to make it
3031 3033 true by default.
3032 3034
3033 3035 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
3034 3036 of the previous special-casing of input in the eval loop. I think
3035 3037 this is cleaner, as they really are commands and shouldn't have
3036 3038 a special role in the middle of the core code.
3037 3039
3038 3040 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
3039 3041
3040 3042 * IPython/iplib.py (edit_syntax_error): added support for
3041 3043 automatically reopening the editor if the file had a syntax error
3042 3044 in it. Thanks to scottt who provided the patch at:
3043 3045 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
3044 3046 version committed).
3045 3047
3046 3048 * IPython/iplib.py (handle_normal): add suport for multi-line
3047 3049 input with emtpy lines. This fixes
3048 3050 http://www.scipy.net/roundup/ipython/issue43 and a similar
3049 3051 discussion on the user list.
3050 3052
3051 3053 WARNING: a behavior change is necessarily introduced to support
3052 3054 blank lines: now a single blank line with whitespace does NOT
3053 3055 break the input loop, which means that when autoindent is on, by
3054 3056 default hitting return on the next (indented) line does NOT exit.
3055 3057
3056 3058 Instead, to exit a multiline input you can either have:
3057 3059
3058 3060 - TWO whitespace lines (just hit return again), or
3059 3061 - a single whitespace line of a different length than provided
3060 3062 by the autoindent (add or remove a space).
3061 3063
3062 3064 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
3063 3065 module to better organize all readline-related functionality.
3064 3066 I've deleted FlexCompleter and put all completion clases here.
3065 3067
3066 3068 * IPython/iplib.py (raw_input): improve indentation management.
3067 3069 It is now possible to paste indented code with autoindent on, and
3068 3070 the code is interpreted correctly (though it still looks bad on
3069 3071 screen, due to the line-oriented nature of ipython).
3070 3072 (MagicCompleter.complete): change behavior so that a TAB key on an
3071 3073 otherwise empty line actually inserts a tab, instead of completing
3072 3074 on the entire global namespace. This makes it easier to use the
3073 3075 TAB key for indentation. After a request by Hans Meine
3074 3076 <hans_meine-AT-gmx.net>
3075 3077 (_prefilter): add support so that typing plain 'exit' or 'quit'
3076 3078 does a sensible thing. Originally I tried to deviate as little as
3077 3079 possible from the default python behavior, but even that one may
3078 3080 change in this direction (thread on python-dev to that effect).
3079 3081 Regardless, ipython should do the right thing even if CPython's
3080 3082 '>>>' prompt doesn't.
3081 3083 (InteractiveShell): removed subclassing code.InteractiveConsole
3082 3084 class. By now we'd overridden just about all of its methods: I've
3083 3085 copied the remaining two over, and now ipython is a standalone
3084 3086 class. This will provide a clearer picture for the chainsaw
3085 3087 branch refactoring.
3086 3088
3087 3089 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
3088 3090
3089 3091 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
3090 3092 failures for objects which break when dir() is called on them.
3091 3093
3092 3094 * IPython/FlexCompleter.py (Completer.__init__): Added support for
3093 3095 distinct local and global namespaces in the completer API. This
3094 3096 change allows us to properly handle completion with distinct
3095 3097 scopes, including in embedded instances (this had never really
3096 3098 worked correctly).
3097 3099
3098 3100 Note: this introduces a change in the constructor for
3099 3101 MagicCompleter, as a new global_namespace parameter is now the
3100 3102 second argument (the others were bumped one position).
3101 3103
3102 3104 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
3103 3105
3104 3106 * IPython/iplib.py (embed_mainloop): fix tab-completion in
3105 3107 embedded instances (which can be done now thanks to Vivian's
3106 3108 frame-handling fixes for pdb).
3107 3109 (InteractiveShell.__init__): Fix namespace handling problem in
3108 3110 embedded instances. We were overwriting __main__ unconditionally,
3109 3111 and this should only be done for 'full' (non-embedded) IPython;
3110 3112 embedded instances must respect the caller's __main__. Thanks to
3111 3113 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
3112 3114
3113 3115 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
3114 3116
3115 3117 * setup.py: added download_url to setup(). This registers the
3116 3118 download address at PyPI, which is not only useful to humans
3117 3119 browsing the site, but is also picked up by setuptools (the Eggs
3118 3120 machinery). Thanks to Ville and R. Kern for the info/discussion
3119 3121 on this.
3120 3122
3121 3123 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
3122 3124
3123 3125 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
3124 3126 This brings a lot of nice functionality to the pdb mode, which now
3125 3127 has tab-completion, syntax highlighting, and better stack handling
3126 3128 than before. Many thanks to Vivian De Smedt
3127 3129 <vivian-AT-vdesmedt.com> for the original patches.
3128 3130
3129 3131 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
3130 3132
3131 3133 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
3132 3134 sequence to consistently accept the banner argument. The
3133 3135 inconsistency was tripping SAGE, thanks to Gary Zablackis
3134 3136 <gzabl-AT-yahoo.com> for the report.
3135 3137
3136 3138 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3137 3139
3138 3140 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3139 3141 Fix bug where a naked 'alias' call in the ipythonrc file would
3140 3142 cause a crash. Bug reported by Jorgen Stenarson.
3141 3143
3142 3144 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3143 3145
3144 3146 * IPython/ipmaker.py (make_IPython): cleanups which should improve
3145 3147 startup time.
3146 3148
3147 3149 * IPython/iplib.py (runcode): my globals 'fix' for embedded
3148 3150 instances had introduced a bug with globals in normal code. Now
3149 3151 it's working in all cases.
3150 3152
3151 3153 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
3152 3154 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
3153 3155 has been introduced to set the default case sensitivity of the
3154 3156 searches. Users can still select either mode at runtime on a
3155 3157 per-search basis.
3156 3158
3157 3159 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
3158 3160
3159 3161 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
3160 3162 attributes in wildcard searches for subclasses. Modified version
3161 3163 of a patch by Jorgen.
3162 3164
3163 3165 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
3164 3166
3165 3167 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
3166 3168 embedded instances. I added a user_global_ns attribute to the
3167 3169 InteractiveShell class to handle this.
3168 3170
3169 3171 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
3170 3172
3171 3173 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3172 3174 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3173 3175 (reported under win32, but may happen also in other platforms).
3174 3176 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3175 3177
3176 3178 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3177 3179
3178 3180 * IPython/Magic.py (magic_psearch): new support for wildcard
3179 3181 patterns. Now, typing ?a*b will list all names which begin with a
3180 3182 and end in b, for example. The %psearch magic has full
3181 3183 docstrings. Many thanks to JΓΆrgen Stenarson
3182 3184 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3183 3185 implementing this functionality.
3184 3186
3185 3187 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3186 3188
3187 3189 * Manual: fixed long-standing annoyance of double-dashes (as in
3188 3190 --prefix=~, for example) being stripped in the HTML version. This
3189 3191 is a latex2html bug, but a workaround was provided. Many thanks
3190 3192 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3191 3193 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3192 3194 rolling. This seemingly small issue had tripped a number of users
3193 3195 when first installing, so I'm glad to see it gone.
3194 3196
3195 3197 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3196 3198
3197 3199 * IPython/Extensions/numeric_formats.py: fix missing import,
3198 3200 reported by Stephen Walton.
3199 3201
3200 3202 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3201 3203
3202 3204 * IPython/demo.py: finish demo module, fully documented now.
3203 3205
3204 3206 * IPython/genutils.py (file_read): simple little utility to read a
3205 3207 file and ensure it's closed afterwards.
3206 3208
3207 3209 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3208 3210
3209 3211 * IPython/demo.py (Demo.__init__): added support for individually
3210 3212 tagging blocks for automatic execution.
3211 3213
3212 3214 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3213 3215 syntax-highlighted python sources, requested by John.
3214 3216
3215 3217 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3216 3218
3217 3219 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3218 3220 finishing.
3219 3221
3220 3222 * IPython/genutils.py (shlex_split): moved from Magic to here,
3221 3223 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3222 3224
3223 3225 * IPython/demo.py (Demo.__init__): added support for silent
3224 3226 blocks, improved marks as regexps, docstrings written.
3225 3227 (Demo.__init__): better docstring, added support for sys.argv.
3226 3228
3227 3229 * IPython/genutils.py (marquee): little utility used by the demo
3228 3230 code, handy in general.
3229 3231
3230 3232 * IPython/demo.py (Demo.__init__): new class for interactive
3231 3233 demos. Not documented yet, I just wrote it in a hurry for
3232 3234 scipy'05. Will docstring later.
3233 3235
3234 3236 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3235 3237
3236 3238 * IPython/Shell.py (sigint_handler): Drastic simplification which
3237 3239 also seems to make Ctrl-C work correctly across threads! This is
3238 3240 so simple, that I can't beleive I'd missed it before. Needs more
3239 3241 testing, though.
3240 3242 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3241 3243 like this before...
3242 3244
3243 3245 * IPython/genutils.py (get_home_dir): add protection against
3244 3246 non-dirs in win32 registry.
3245 3247
3246 3248 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3247 3249 bug where dict was mutated while iterating (pysh crash).
3248 3250
3249 3251 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3250 3252
3251 3253 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3252 3254 spurious newlines added by this routine. After a report by
3253 3255 F. Mantegazza.
3254 3256
3255 3257 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3256 3258
3257 3259 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3258 3260 calls. These were a leftover from the GTK 1.x days, and can cause
3259 3261 problems in certain cases (after a report by John Hunter).
3260 3262
3261 3263 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3262 3264 os.getcwd() fails at init time. Thanks to patch from David Remahl
3263 3265 <chmod007-AT-mac.com>.
3264 3266 (InteractiveShell.__init__): prevent certain special magics from
3265 3267 being shadowed by aliases. Closes
3266 3268 http://www.scipy.net/roundup/ipython/issue41.
3267 3269
3268 3270 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3269 3271
3270 3272 * IPython/iplib.py (InteractiveShell.complete): Added new
3271 3273 top-level completion method to expose the completion mechanism
3272 3274 beyond readline-based environments.
3273 3275
3274 3276 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3275 3277
3276 3278 * tools/ipsvnc (svnversion): fix svnversion capture.
3277 3279
3278 3280 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3279 3281 attribute to self, which was missing. Before, it was set by a
3280 3282 routine which in certain cases wasn't being called, so the
3281 3283 instance could end up missing the attribute. This caused a crash.
3282 3284 Closes http://www.scipy.net/roundup/ipython/issue40.
3283 3285
3284 3286 2005-08-16 Fernando Perez <fperez@colorado.edu>
3285 3287
3286 3288 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3287 3289 contains non-string attribute. Closes
3288 3290 http://www.scipy.net/roundup/ipython/issue38.
3289 3291
3290 3292 2005-08-14 Fernando Perez <fperez@colorado.edu>
3291 3293
3292 3294 * tools/ipsvnc: Minor improvements, to add changeset info.
3293 3295
3294 3296 2005-08-12 Fernando Perez <fperez@colorado.edu>
3295 3297
3296 3298 * IPython/iplib.py (runsource): remove self.code_to_run_src
3297 3299 attribute. I realized this is nothing more than
3298 3300 '\n'.join(self.buffer), and having the same data in two different
3299 3301 places is just asking for synchronization bugs. This may impact
3300 3302 people who have custom exception handlers, so I need to warn
3301 3303 ipython-dev about it (F. Mantegazza may use them).
3302 3304
3303 3305 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3304 3306
3305 3307 * IPython/genutils.py: fix 2.2 compatibility (generators)
3306 3308
3307 3309 2005-07-18 Fernando Perez <fperez@colorado.edu>
3308 3310
3309 3311 * IPython/genutils.py (get_home_dir): fix to help users with
3310 3312 invalid $HOME under win32.
3311 3313
3312 3314 2005-07-17 Fernando Perez <fperez@colorado.edu>
3313 3315
3314 3316 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3315 3317 some old hacks and clean up a bit other routines; code should be
3316 3318 simpler and a bit faster.
3317 3319
3318 3320 * IPython/iplib.py (interact): removed some last-resort attempts
3319 3321 to survive broken stdout/stderr. That code was only making it
3320 3322 harder to abstract out the i/o (necessary for gui integration),
3321 3323 and the crashes it could prevent were extremely rare in practice
3322 3324 (besides being fully user-induced in a pretty violent manner).
3323 3325
3324 3326 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3325 3327 Nothing major yet, but the code is simpler to read; this should
3326 3328 make it easier to do more serious modifications in the future.
3327 3329
3328 3330 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3329 3331 which broke in .15 (thanks to a report by Ville).
3330 3332
3331 3333 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3332 3334 be quite correct, I know next to nothing about unicode). This
3333 3335 will allow unicode strings to be used in prompts, amongst other
3334 3336 cases. It also will prevent ipython from crashing when unicode
3335 3337 shows up unexpectedly in many places. If ascii encoding fails, we
3336 3338 assume utf_8. Currently the encoding is not a user-visible
3337 3339 setting, though it could be made so if there is demand for it.
3338 3340
3339 3341 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3340 3342
3341 3343 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3342 3344
3343 3345 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3344 3346
3345 3347 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3346 3348 code can work transparently for 2.2/2.3.
3347 3349
3348 3350 2005-07-16 Fernando Perez <fperez@colorado.edu>
3349 3351
3350 3352 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3351 3353 out of the color scheme table used for coloring exception
3352 3354 tracebacks. This allows user code to add new schemes at runtime.
3353 3355 This is a minimally modified version of the patch at
3354 3356 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3355 3357 for the contribution.
3356 3358
3357 3359 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3358 3360 slightly modified version of the patch in
3359 3361 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3360 3362 to remove the previous try/except solution (which was costlier).
3361 3363 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3362 3364
3363 3365 2005-06-08 Fernando Perez <fperez@colorado.edu>
3364 3366
3365 3367 * IPython/iplib.py (write/write_err): Add methods to abstract all
3366 3368 I/O a bit more.
3367 3369
3368 3370 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3369 3371 warning, reported by Aric Hagberg, fix by JD Hunter.
3370 3372
3371 3373 2005-06-02 *** Released version 0.6.15
3372 3374
3373 3375 2005-06-01 Fernando Perez <fperez@colorado.edu>
3374 3376
3375 3377 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3376 3378 tab-completion of filenames within open-quoted strings. Note that
3377 3379 this requires that in ~/.ipython/ipythonrc, users change the
3378 3380 readline delimiters configuration to read:
3379 3381
3380 3382 readline_remove_delims -/~
3381 3383
3382 3384
3383 3385 2005-05-31 *** Released version 0.6.14
3384 3386
3385 3387 2005-05-29 Fernando Perez <fperez@colorado.edu>
3386 3388
3387 3389 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3388 3390 with files not on the filesystem. Reported by Eliyahu Sandler
3389 3391 <eli@gondolin.net>
3390 3392
3391 3393 2005-05-22 Fernando Perez <fperez@colorado.edu>
3392 3394
3393 3395 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3394 3396 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3395 3397
3396 3398 2005-05-19 Fernando Perez <fperez@colorado.edu>
3397 3399
3398 3400 * IPython/iplib.py (safe_execfile): close a file which could be
3399 3401 left open (causing problems in win32, which locks open files).
3400 3402 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3401 3403
3402 3404 2005-05-18 Fernando Perez <fperez@colorado.edu>
3403 3405
3404 3406 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3405 3407 keyword arguments correctly to safe_execfile().
3406 3408
3407 3409 2005-05-13 Fernando Perez <fperez@colorado.edu>
3408 3410
3409 3411 * ipython.1: Added info about Qt to manpage, and threads warning
3410 3412 to usage page (invoked with --help).
3411 3413
3412 3414 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3413 3415 new matcher (it goes at the end of the priority list) to do
3414 3416 tab-completion on named function arguments. Submitted by George
3415 3417 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3416 3418 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3417 3419 for more details.
3418 3420
3419 3421 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3420 3422 SystemExit exceptions in the script being run. Thanks to a report
3421 3423 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3422 3424 producing very annoying behavior when running unit tests.
3423 3425
3424 3426 2005-05-12 Fernando Perez <fperez@colorado.edu>
3425 3427
3426 3428 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3427 3429 which I'd broken (again) due to a changed regexp. In the process,
3428 3430 added ';' as an escape to auto-quote the whole line without
3429 3431 splitting its arguments. Thanks to a report by Jerry McRae
3430 3432 <qrs0xyc02-AT-sneakemail.com>.
3431 3433
3432 3434 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3433 3435 possible crashes caused by a TokenError. Reported by Ed Schofield
3434 3436 <schofield-AT-ftw.at>.
3435 3437
3436 3438 2005-05-06 Fernando Perez <fperez@colorado.edu>
3437 3439
3438 3440 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3439 3441
3440 3442 2005-04-29 Fernando Perez <fperez@colorado.edu>
3441 3443
3442 3444 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3443 3445 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3444 3446 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3445 3447 which provides support for Qt interactive usage (similar to the
3446 3448 existing one for WX and GTK). This had been often requested.
3447 3449
3448 3450 2005-04-14 *** Released version 0.6.13
3449 3451
3450 3452 2005-04-08 Fernando Perez <fperez@colorado.edu>
3451 3453
3452 3454 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3453 3455 from _ofind, which gets called on almost every input line. Now,
3454 3456 we only try to get docstrings if they are actually going to be
3455 3457 used (the overhead of fetching unnecessary docstrings can be
3456 3458 noticeable for certain objects, such as Pyro proxies).
3457 3459
3458 3460 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3459 3461 for completers. For some reason I had been passing them the state
3460 3462 variable, which completers never actually need, and was in
3461 3463 conflict with the rlcompleter API. Custom completers ONLY need to
3462 3464 take the text parameter.
3463 3465
3464 3466 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3465 3467 work correctly in pysh. I've also moved all the logic which used
3466 3468 to be in pysh.py here, which will prevent problems with future
3467 3469 upgrades. However, this time I must warn users to update their
3468 3470 pysh profile to include the line
3469 3471
3470 3472 import_all IPython.Extensions.InterpreterExec
3471 3473
3472 3474 because otherwise things won't work for them. They MUST also
3473 3475 delete pysh.py and the line
3474 3476
3475 3477 execfile pysh.py
3476 3478
3477 3479 from their ipythonrc-pysh.
3478 3480
3479 3481 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3480 3482 robust in the face of objects whose dir() returns non-strings
3481 3483 (which it shouldn't, but some broken libs like ITK do). Thanks to
3482 3484 a patch by John Hunter (implemented differently, though). Also
3483 3485 minor improvements by using .extend instead of + on lists.
3484 3486
3485 3487 * pysh.py:
3486 3488
3487 3489 2005-04-06 Fernando Perez <fperez@colorado.edu>
3488 3490
3489 3491 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3490 3492 by default, so that all users benefit from it. Those who don't
3491 3493 want it can still turn it off.
3492 3494
3493 3495 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3494 3496 config file, I'd forgotten about this, so users were getting it
3495 3497 off by default.
3496 3498
3497 3499 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3498 3500 consistency. Now magics can be called in multiline statements,
3499 3501 and python variables can be expanded in magic calls via $var.
3500 3502 This makes the magic system behave just like aliases or !system
3501 3503 calls.
3502 3504
3503 3505 2005-03-28 Fernando Perez <fperez@colorado.edu>
3504 3506
3505 3507 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3506 3508 expensive string additions for building command. Add support for
3507 3509 trailing ';' when autocall is used.
3508 3510
3509 3511 2005-03-26 Fernando Perez <fperez@colorado.edu>
3510 3512
3511 3513 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3512 3514 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3513 3515 ipython.el robust against prompts with any number of spaces
3514 3516 (including 0) after the ':' character.
3515 3517
3516 3518 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3517 3519 continuation prompt, which misled users to think the line was
3518 3520 already indented. Closes debian Bug#300847, reported to me by
3519 3521 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3520 3522
3521 3523 2005-03-23 Fernando Perez <fperez@colorado.edu>
3522 3524
3523 3525 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3524 3526 properly aligned if they have embedded newlines.
3525 3527
3526 3528 * IPython/iplib.py (runlines): Add a public method to expose
3527 3529 IPython's code execution machinery, so that users can run strings
3528 3530 as if they had been typed at the prompt interactively.
3529 3531 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3530 3532 methods which can call the system shell, but with python variable
3531 3533 expansion. The three such methods are: __IPYTHON__.system,
3532 3534 .getoutput and .getoutputerror. These need to be documented in a
3533 3535 'public API' section (to be written) of the manual.
3534 3536
3535 3537 2005-03-20 Fernando Perez <fperez@colorado.edu>
3536 3538
3537 3539 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3538 3540 for custom exception handling. This is quite powerful, and it
3539 3541 allows for user-installable exception handlers which can trap
3540 3542 custom exceptions at runtime and treat them separately from
3541 3543 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3542 3544 Mantegazza <mantegazza-AT-ill.fr>.
3543 3545 (InteractiveShell.set_custom_completer): public API function to
3544 3546 add new completers at runtime.
3545 3547
3546 3548 2005-03-19 Fernando Perez <fperez@colorado.edu>
3547 3549
3548 3550 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3549 3551 allow objects which provide their docstrings via non-standard
3550 3552 mechanisms (like Pyro proxies) to still be inspected by ipython's
3551 3553 ? system.
3552 3554
3553 3555 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3554 3556 automatic capture system. I tried quite hard to make it work
3555 3557 reliably, and simply failed. I tried many combinations with the
3556 3558 subprocess module, but eventually nothing worked in all needed
3557 3559 cases (not blocking stdin for the child, duplicating stdout
3558 3560 without blocking, etc). The new %sc/%sx still do capture to these
3559 3561 magical list/string objects which make shell use much more
3560 3562 conveninent, so not all is lost.
3561 3563
3562 3564 XXX - FIX MANUAL for the change above!
3563 3565
3564 3566 (runsource): I copied code.py's runsource() into ipython to modify
3565 3567 it a bit. Now the code object and source to be executed are
3566 3568 stored in ipython. This makes this info accessible to third-party
3567 3569 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3568 3570 Mantegazza <mantegazza-AT-ill.fr>.
3569 3571
3570 3572 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3571 3573 history-search via readline (like C-p/C-n). I'd wanted this for a
3572 3574 long time, but only recently found out how to do it. For users
3573 3575 who already have their ipythonrc files made and want this, just
3574 3576 add:
3575 3577
3576 3578 readline_parse_and_bind "\e[A": history-search-backward
3577 3579 readline_parse_and_bind "\e[B": history-search-forward
3578 3580
3579 3581 2005-03-18 Fernando Perez <fperez@colorado.edu>
3580 3582
3581 3583 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3582 3584 LSString and SList classes which allow transparent conversions
3583 3585 between list mode and whitespace-separated string.
3584 3586 (magic_r): Fix recursion problem in %r.
3585 3587
3586 3588 * IPython/genutils.py (LSString): New class to be used for
3587 3589 automatic storage of the results of all alias/system calls in _o
3588 3590 and _e (stdout/err). These provide a .l/.list attribute which
3589 3591 does automatic splitting on newlines. This means that for most
3590 3592 uses, you'll never need to do capturing of output with %sc/%sx
3591 3593 anymore, since ipython keeps this always done for you. Note that
3592 3594 only the LAST results are stored, the _o/e variables are
3593 3595 overwritten on each call. If you need to save their contents
3594 3596 further, simply bind them to any other name.
3595 3597
3596 3598 2005-03-17 Fernando Perez <fperez@colorado.edu>
3597 3599
3598 3600 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3599 3601 prompt namespace handling.
3600 3602
3601 3603 2005-03-16 Fernando Perez <fperez@colorado.edu>
3602 3604
3603 3605 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3604 3606 classic prompts to be '>>> ' (final space was missing, and it
3605 3607 trips the emacs python mode).
3606 3608 (BasePrompt.__str__): Added safe support for dynamic prompt
3607 3609 strings. Now you can set your prompt string to be '$x', and the
3608 3610 value of x will be printed from your interactive namespace. The
3609 3611 interpolation syntax includes the full Itpl support, so
3610 3612 ${foo()+x+bar()} is a valid prompt string now, and the function
3611 3613 calls will be made at runtime.
3612 3614
3613 3615 2005-03-15 Fernando Perez <fperez@colorado.edu>
3614 3616
3615 3617 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3616 3618 avoid name clashes in pylab. %hist still works, it just forwards
3617 3619 the call to %history.
3618 3620
3619 3621 2005-03-02 *** Released version 0.6.12
3620 3622
3621 3623 2005-03-02 Fernando Perez <fperez@colorado.edu>
3622 3624
3623 3625 * IPython/iplib.py (handle_magic): log magic calls properly as
3624 3626 ipmagic() function calls.
3625 3627
3626 3628 * IPython/Magic.py (magic_time): Improved %time to support
3627 3629 statements and provide wall-clock as well as CPU time.
3628 3630
3629 3631 2005-02-27 Fernando Perez <fperez@colorado.edu>
3630 3632
3631 3633 * IPython/hooks.py: New hooks module, to expose user-modifiable
3632 3634 IPython functionality in a clean manner. For now only the editor
3633 3635 hook is actually written, and other thigns which I intend to turn
3634 3636 into proper hooks aren't yet there. The display and prefilter
3635 3637 stuff, for example, should be hooks. But at least now the
3636 3638 framework is in place, and the rest can be moved here with more
3637 3639 time later. IPython had had a .hooks variable for a long time for
3638 3640 this purpose, but I'd never actually used it for anything.
3639 3641
3640 3642 2005-02-26 Fernando Perez <fperez@colorado.edu>
3641 3643
3642 3644 * IPython/ipmaker.py (make_IPython): make the default ipython
3643 3645 directory be called _ipython under win32, to follow more the
3644 3646 naming peculiarities of that platform (where buggy software like
3645 3647 Visual Sourcesafe breaks with .named directories). Reported by
3646 3648 Ville Vainio.
3647 3649
3648 3650 2005-02-23 Fernando Perez <fperez@colorado.edu>
3649 3651
3650 3652 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3651 3653 auto_aliases for win32 which were causing problems. Users can
3652 3654 define the ones they personally like.
3653 3655
3654 3656 2005-02-21 Fernando Perez <fperez@colorado.edu>
3655 3657
3656 3658 * IPython/Magic.py (magic_time): new magic to time execution of
3657 3659 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3658 3660
3659 3661 2005-02-19 Fernando Perez <fperez@colorado.edu>
3660 3662
3661 3663 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3662 3664 into keys (for prompts, for example).
3663 3665
3664 3666 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3665 3667 prompts in case users want them. This introduces a small behavior
3666 3668 change: ipython does not automatically add a space to all prompts
3667 3669 anymore. To get the old prompts with a space, users should add it
3668 3670 manually to their ipythonrc file, so for example prompt_in1 should
3669 3671 now read 'In [\#]: ' instead of 'In [\#]:'.
3670 3672 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3671 3673 file) to control left-padding of secondary prompts.
3672 3674
3673 3675 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3674 3676 the profiler can't be imported. Fix for Debian, which removed
3675 3677 profile.py because of License issues. I applied a slightly
3676 3678 modified version of the original Debian patch at
3677 3679 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3678 3680
3679 3681 2005-02-17 Fernando Perez <fperez@colorado.edu>
3680 3682
3681 3683 * IPython/genutils.py (native_line_ends): Fix bug which would
3682 3684 cause improper line-ends under win32 b/c I was not opening files
3683 3685 in binary mode. Bug report and fix thanks to Ville.
3684 3686
3685 3687 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3686 3688 trying to catch spurious foo[1] autocalls. My fix actually broke
3687 3689 ',/' autoquote/call with explicit escape (bad regexp).
3688 3690
3689 3691 2005-02-15 *** Released version 0.6.11
3690 3692
3691 3693 2005-02-14 Fernando Perez <fperez@colorado.edu>
3692 3694
3693 3695 * IPython/background_jobs.py: New background job management
3694 3696 subsystem. This is implemented via a new set of classes, and
3695 3697 IPython now provides a builtin 'jobs' object for background job
3696 3698 execution. A convenience %bg magic serves as a lightweight
3697 3699 frontend for starting the more common type of calls. This was
3698 3700 inspired by discussions with B. Granger and the BackgroundCommand
3699 3701 class described in the book Python Scripting for Computational
3700 3702 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3701 3703 (although ultimately no code from this text was used, as IPython's
3702 3704 system is a separate implementation).
3703 3705
3704 3706 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3705 3707 to control the completion of single/double underscore names
3706 3708 separately. As documented in the example ipytonrc file, the
3707 3709 readline_omit__names variable can now be set to 2, to omit even
3708 3710 single underscore names. Thanks to a patch by Brian Wong
3709 3711 <BrianWong-AT-AirgoNetworks.Com>.
3710 3712 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3711 3713 be autocalled as foo([1]) if foo were callable. A problem for
3712 3714 things which are both callable and implement __getitem__.
3713 3715 (init_readline): Fix autoindentation for win32. Thanks to a patch
3714 3716 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3715 3717
3716 3718 2005-02-12 Fernando Perez <fperez@colorado.edu>
3717 3719
3718 3720 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3719 3721 which I had written long ago to sort out user error messages which
3720 3722 may occur during startup. This seemed like a good idea initially,
3721 3723 but it has proven a disaster in retrospect. I don't want to
3722 3724 change much code for now, so my fix is to set the internal 'debug'
3723 3725 flag to true everywhere, whose only job was precisely to control
3724 3726 this subsystem. This closes issue 28 (as well as avoiding all
3725 3727 sorts of strange hangups which occur from time to time).
3726 3728
3727 3729 2005-02-07 Fernando Perez <fperez@colorado.edu>
3728 3730
3729 3731 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3730 3732 previous call produced a syntax error.
3731 3733
3732 3734 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3733 3735 classes without constructor.
3734 3736
3735 3737 2005-02-06 Fernando Perez <fperez@colorado.edu>
3736 3738
3737 3739 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3738 3740 completions with the results of each matcher, so we return results
3739 3741 to the user from all namespaces. This breaks with ipython
3740 3742 tradition, but I think it's a nicer behavior. Now you get all
3741 3743 possible completions listed, from all possible namespaces (python,
3742 3744 filesystem, magics...) After a request by John Hunter
3743 3745 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3744 3746
3745 3747 2005-02-05 Fernando Perez <fperez@colorado.edu>
3746 3748
3747 3749 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3748 3750 the call had quote characters in it (the quotes were stripped).
3749 3751
3750 3752 2005-01-31 Fernando Perez <fperez@colorado.edu>
3751 3753
3752 3754 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3753 3755 Itpl.itpl() to make the code more robust against psyco
3754 3756 optimizations.
3755 3757
3756 3758 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3757 3759 of causing an exception. Quicker, cleaner.
3758 3760
3759 3761 2005-01-28 Fernando Perez <fperez@colorado.edu>
3760 3762
3761 3763 * scripts/ipython_win_post_install.py (install): hardcode
3762 3764 sys.prefix+'python.exe' as the executable path. It turns out that
3763 3765 during the post-installation run, sys.executable resolves to the
3764 3766 name of the binary installer! I should report this as a distutils
3765 3767 bug, I think. I updated the .10 release with this tiny fix, to
3766 3768 avoid annoying the lists further.
3767 3769
3768 3770 2005-01-27 *** Released version 0.6.10
3769 3771
3770 3772 2005-01-27 Fernando Perez <fperez@colorado.edu>
3771 3773
3772 3774 * IPython/numutils.py (norm): Added 'inf' as optional name for
3773 3775 L-infinity norm, included references to mathworld.com for vector
3774 3776 norm definitions.
3775 3777 (amin/amax): added amin/amax for array min/max. Similar to what
3776 3778 pylab ships with after the recent reorganization of names.
3777 3779 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3778 3780
3779 3781 * ipython.el: committed Alex's recent fixes and improvements.
3780 3782 Tested with python-mode from CVS, and it looks excellent. Since
3781 3783 python-mode hasn't released anything in a while, I'm temporarily
3782 3784 putting a copy of today's CVS (v 4.70) of python-mode in:
3783 3785 http://ipython.scipy.org/tmp/python-mode.el
3784 3786
3785 3787 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3786 3788 sys.executable for the executable name, instead of assuming it's
3787 3789 called 'python.exe' (the post-installer would have produced broken
3788 3790 setups on systems with a differently named python binary).
3789 3791
3790 3792 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3791 3793 references to os.linesep, to make the code more
3792 3794 platform-independent. This is also part of the win32 coloring
3793 3795 fixes.
3794 3796
3795 3797 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3796 3798 lines, which actually cause coloring bugs because the length of
3797 3799 the line is very difficult to correctly compute with embedded
3798 3800 escapes. This was the source of all the coloring problems under
3799 3801 Win32. I think that _finally_, Win32 users have a properly
3800 3802 working ipython in all respects. This would never have happened
3801 3803 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3802 3804
3803 3805 2005-01-26 *** Released version 0.6.9
3804 3806
3805 3807 2005-01-25 Fernando Perez <fperez@colorado.edu>
3806 3808
3807 3809 * setup.py: finally, we have a true Windows installer, thanks to
3808 3810 the excellent work of Viktor Ransmayr
3809 3811 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3810 3812 Windows users. The setup routine is quite a bit cleaner thanks to
3811 3813 this, and the post-install script uses the proper functions to
3812 3814 allow a clean de-installation using the standard Windows Control
3813 3815 Panel.
3814 3816
3815 3817 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3816 3818 environment variable under all OSes (including win32) if
3817 3819 available. This will give consistency to win32 users who have set
3818 3820 this variable for any reason. If os.environ['HOME'] fails, the
3819 3821 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3820 3822
3821 3823 2005-01-24 Fernando Perez <fperez@colorado.edu>
3822 3824
3823 3825 * IPython/numutils.py (empty_like): add empty_like(), similar to
3824 3826 zeros_like() but taking advantage of the new empty() Numeric routine.
3825 3827
3826 3828 2005-01-23 *** Released version 0.6.8
3827 3829
3828 3830 2005-01-22 Fernando Perez <fperez@colorado.edu>
3829 3831
3830 3832 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3831 3833 automatic show() calls. After discussing things with JDH, it
3832 3834 turns out there are too many corner cases where this can go wrong.
3833 3835 It's best not to try to be 'too smart', and simply have ipython
3834 3836 reproduce as much as possible the default behavior of a normal
3835 3837 python shell.
3836 3838
3837 3839 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3838 3840 line-splitting regexp and _prefilter() to avoid calling getattr()
3839 3841 on assignments. This closes
3840 3842 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3841 3843 readline uses getattr(), so a simple <TAB> keypress is still
3842 3844 enough to trigger getattr() calls on an object.
3843 3845
3844 3846 2005-01-21 Fernando Perez <fperez@colorado.edu>
3845 3847
3846 3848 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3847 3849 docstring under pylab so it doesn't mask the original.
3848 3850
3849 3851 2005-01-21 *** Released version 0.6.7
3850 3852
3851 3853 2005-01-21 Fernando Perez <fperez@colorado.edu>
3852 3854
3853 3855 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3854 3856 signal handling for win32 users in multithreaded mode.
3855 3857
3856 3858 2005-01-17 Fernando Perez <fperez@colorado.edu>
3857 3859
3858 3860 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3859 3861 instances with no __init__. After a crash report by Norbert Nemec
3860 3862 <Norbert-AT-nemec-online.de>.
3861 3863
3862 3864 2005-01-14 Fernando Perez <fperez@colorado.edu>
3863 3865
3864 3866 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3865 3867 names for verbose exceptions, when multiple dotted names and the
3866 3868 'parent' object were present on the same line.
3867 3869
3868 3870 2005-01-11 Fernando Perez <fperez@colorado.edu>
3869 3871
3870 3872 * IPython/genutils.py (flag_calls): new utility to trap and flag
3871 3873 calls in functions. I need it to clean up matplotlib support.
3872 3874 Also removed some deprecated code in genutils.
3873 3875
3874 3876 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3875 3877 that matplotlib scripts called with %run, which don't call show()
3876 3878 themselves, still have their plotting windows open.
3877 3879
3878 3880 2005-01-05 Fernando Perez <fperez@colorado.edu>
3879 3881
3880 3882 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3881 3883 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3882 3884
3883 3885 2004-12-19 Fernando Perez <fperez@colorado.edu>
3884 3886
3885 3887 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3886 3888 parent_runcode, which was an eyesore. The same result can be
3887 3889 obtained with Python's regular superclass mechanisms.
3888 3890
3889 3891 2004-12-17 Fernando Perez <fperez@colorado.edu>
3890 3892
3891 3893 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3892 3894 reported by Prabhu.
3893 3895 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3894 3896 sys.stderr) instead of explicitly calling sys.stderr. This helps
3895 3897 maintain our I/O abstractions clean, for future GUI embeddings.
3896 3898
3897 3899 * IPython/genutils.py (info): added new utility for sys.stderr
3898 3900 unified info message handling (thin wrapper around warn()).
3899 3901
3900 3902 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3901 3903 composite (dotted) names on verbose exceptions.
3902 3904 (VerboseTB.nullrepr): harden against another kind of errors which
3903 3905 Python's inspect module can trigger, and which were crashing
3904 3906 IPython. Thanks to a report by Marco Lombardi
3905 3907 <mlombard-AT-ma010192.hq.eso.org>.
3906 3908
3907 3909 2004-12-13 *** Released version 0.6.6
3908 3910
3909 3911 2004-12-12 Fernando Perez <fperez@colorado.edu>
3910 3912
3911 3913 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3912 3914 generated by pygtk upon initialization if it was built without
3913 3915 threads (for matplotlib users). After a crash reported by
3914 3916 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3915 3917
3916 3918 * IPython/ipmaker.py (make_IPython): fix small bug in the
3917 3919 import_some parameter for multiple imports.
3918 3920
3919 3921 * IPython/iplib.py (ipmagic): simplified the interface of
3920 3922 ipmagic() to take a single string argument, just as it would be
3921 3923 typed at the IPython cmd line.
3922 3924 (ipalias): Added new ipalias() with an interface identical to
3923 3925 ipmagic(). This completes exposing a pure python interface to the
3924 3926 alias and magic system, which can be used in loops or more complex
3925 3927 code where IPython's automatic line mangling is not active.
3926 3928
3927 3929 * IPython/genutils.py (timing): changed interface of timing to
3928 3930 simply run code once, which is the most common case. timings()
3929 3931 remains unchanged, for the cases where you want multiple runs.
3930 3932
3931 3933 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3932 3934 bug where Python2.2 crashes with exec'ing code which does not end
3933 3935 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3934 3936 before.
3935 3937
3936 3938 2004-12-10 Fernando Perez <fperez@colorado.edu>
3937 3939
3938 3940 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3939 3941 -t to -T, to accomodate the new -t flag in %run (the %run and
3940 3942 %prun options are kind of intermixed, and it's not easy to change
3941 3943 this with the limitations of python's getopt).
3942 3944
3943 3945 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3944 3946 the execution of scripts. It's not as fine-tuned as timeit.py,
3945 3947 but it works from inside ipython (and under 2.2, which lacks
3946 3948 timeit.py). Optionally a number of runs > 1 can be given for
3947 3949 timing very short-running code.
3948 3950
3949 3951 * IPython/genutils.py (uniq_stable): new routine which returns a
3950 3952 list of unique elements in any iterable, but in stable order of
3951 3953 appearance. I needed this for the ultraTB fixes, and it's a handy
3952 3954 utility.
3953 3955
3954 3956 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3955 3957 dotted names in Verbose exceptions. This had been broken since
3956 3958 the very start, now x.y will properly be printed in a Verbose
3957 3959 traceback, instead of x being shown and y appearing always as an
3958 3960 'undefined global'. Getting this to work was a bit tricky,
3959 3961 because by default python tokenizers are stateless. Saved by
3960 3962 python's ability to easily add a bit of state to an arbitrary
3961 3963 function (without needing to build a full-blown callable object).
3962 3964
3963 3965 Also big cleanup of this code, which had horrendous runtime
3964 3966 lookups of zillions of attributes for colorization. Moved all
3965 3967 this code into a few templates, which make it cleaner and quicker.
3966 3968
3967 3969 Printout quality was also improved for Verbose exceptions: one
3968 3970 variable per line, and memory addresses are printed (this can be
3969 3971 quite handy in nasty debugging situations, which is what Verbose
3970 3972 is for).
3971 3973
3972 3974 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3973 3975 the command line as scripts to be loaded by embedded instances.
3974 3976 Doing so has the potential for an infinite recursion if there are
3975 3977 exceptions thrown in the process. This fixes a strange crash
3976 3978 reported by Philippe MULLER <muller-AT-irit.fr>.
3977 3979
3978 3980 2004-12-09 Fernando Perez <fperez@colorado.edu>
3979 3981
3980 3982 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3981 3983 to reflect new names in matplotlib, which now expose the
3982 3984 matlab-compatible interface via a pylab module instead of the
3983 3985 'matlab' name. The new code is backwards compatible, so users of
3984 3986 all matplotlib versions are OK. Patch by J. Hunter.
3985 3987
3986 3988 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3987 3989 of __init__ docstrings for instances (class docstrings are already
3988 3990 automatically printed). Instances with customized docstrings
3989 3991 (indep. of the class) are also recognized and all 3 separate
3990 3992 docstrings are printed (instance, class, constructor). After some
3991 3993 comments/suggestions by J. Hunter.
3992 3994
3993 3995 2004-12-05 Fernando Perez <fperez@colorado.edu>
3994 3996
3995 3997 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3996 3998 warnings when tab-completion fails and triggers an exception.
3997 3999
3998 4000 2004-12-03 Fernando Perez <fperez@colorado.edu>
3999 4001
4000 4002 * IPython/Magic.py (magic_prun): Fix bug where an exception would
4001 4003 be triggered when using 'run -p'. An incorrect option flag was
4002 4004 being set ('d' instead of 'D').
4003 4005 (manpage): fix missing escaped \- sign.
4004 4006
4005 4007 2004-11-30 *** Released version 0.6.5
4006 4008
4007 4009 2004-11-30 Fernando Perez <fperez@colorado.edu>
4008 4010
4009 4011 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
4010 4012 setting with -d option.
4011 4013
4012 4014 * setup.py (docfiles): Fix problem where the doc glob I was using
4013 4015 was COMPLETELY BROKEN. It was giving the right files by pure
4014 4016 accident, but failed once I tried to include ipython.el. Note:
4015 4017 glob() does NOT allow you to do exclusion on multiple endings!
4016 4018
4017 4019 2004-11-29 Fernando Perez <fperez@colorado.edu>
4018 4020
4019 4021 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
4020 4022 the manpage as the source. Better formatting & consistency.
4021 4023
4022 4024 * IPython/Magic.py (magic_run): Added new -d option, to run
4023 4025 scripts under the control of the python pdb debugger. Note that
4024 4026 this required changing the %prun option -d to -D, to avoid a clash
4025 4027 (since %run must pass options to %prun, and getopt is too dumb to
4026 4028 handle options with string values with embedded spaces). Thanks
4027 4029 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
4028 4030 (magic_who_ls): added type matching to %who and %whos, so that one
4029 4031 can filter their output to only include variables of certain
4030 4032 types. Another suggestion by Matthew.
4031 4033 (magic_whos): Added memory summaries in kb and Mb for arrays.
4032 4034 (magic_who): Improve formatting (break lines every 9 vars).
4033 4035
4034 4036 2004-11-28 Fernando Perez <fperez@colorado.edu>
4035 4037
4036 4038 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
4037 4039 cache when empty lines were present.
4038 4040
4039 4041 2004-11-24 Fernando Perez <fperez@colorado.edu>
4040 4042
4041 4043 * IPython/usage.py (__doc__): document the re-activated threading
4042 4044 options for WX and GTK.
4043 4045
4044 4046 2004-11-23 Fernando Perez <fperez@colorado.edu>
4045 4047
4046 4048 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
4047 4049 the -wthread and -gthread options, along with a new -tk one to try
4048 4050 and coordinate Tk threading with wx/gtk. The tk support is very
4049 4051 platform dependent, since it seems to require Tcl and Tk to be
4050 4052 built with threads (Fedora1/2 appears NOT to have it, but in
4051 4053 Prabhu's Debian boxes it works OK). But even with some Tk
4052 4054 limitations, this is a great improvement.
4053 4055
4054 4056 * IPython/Prompts.py (prompt_specials_color): Added \t for time
4055 4057 info in user prompts. Patch by Prabhu.
4056 4058
4057 4059 2004-11-18 Fernando Perez <fperez@colorado.edu>
4058 4060
4059 4061 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
4060 4062 EOFErrors and bail, to avoid infinite loops if a non-terminating
4061 4063 file is fed into ipython. Patch submitted in issue 19 by user,
4062 4064 many thanks.
4063 4065
4064 4066 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
4065 4067 autoquote/parens in continuation prompts, which can cause lots of
4066 4068 problems. Closes roundup issue 20.
4067 4069
4068 4070 2004-11-17 Fernando Perez <fperez@colorado.edu>
4069 4071
4070 4072 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
4071 4073 reported as debian bug #280505. I'm not sure my local changelog
4072 4074 entry has the proper debian format (Jack?).
4073 4075
4074 4076 2004-11-08 *** Released version 0.6.4
4075 4077
4076 4078 2004-11-08 Fernando Perez <fperez@colorado.edu>
4077 4079
4078 4080 * IPython/iplib.py (init_readline): Fix exit message for Windows
4079 4081 when readline is active. Thanks to a report by Eric Jones
4080 4082 <eric-AT-enthought.com>.
4081 4083
4082 4084 2004-11-07 Fernando Perez <fperez@colorado.edu>
4083 4085
4084 4086 * IPython/genutils.py (page): Add a trap for OSError exceptions,
4085 4087 sometimes seen by win2k/cygwin users.
4086 4088
4087 4089 2004-11-06 Fernando Perez <fperez@colorado.edu>
4088 4090
4089 4091 * IPython/iplib.py (interact): Change the handling of %Exit from
4090 4092 trying to propagate a SystemExit to an internal ipython flag.
4091 4093 This is less elegant than using Python's exception mechanism, but
4092 4094 I can't get that to work reliably with threads, so under -pylab
4093 4095 %Exit was hanging IPython. Cross-thread exception handling is
4094 4096 really a bitch. Thaks to a bug report by Stephen Walton
4095 4097 <stephen.walton-AT-csun.edu>.
4096 4098
4097 4099 2004-11-04 Fernando Perez <fperez@colorado.edu>
4098 4100
4099 4101 * IPython/iplib.py (raw_input_original): store a pointer to the
4100 4102 true raw_input to harden against code which can modify it
4101 4103 (wx.py.PyShell does this and would otherwise crash ipython).
4102 4104 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
4103 4105
4104 4106 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
4105 4107 Ctrl-C problem, which does not mess up the input line.
4106 4108
4107 4109 2004-11-03 Fernando Perez <fperez@colorado.edu>
4108 4110
4109 4111 * IPython/Release.py: Changed licensing to BSD, in all files.
4110 4112 (name): lowercase name for tarball/RPM release.
4111 4113
4112 4114 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
4113 4115 use throughout ipython.
4114 4116
4115 4117 * IPython/Magic.py (Magic._ofind): Switch to using the new
4116 4118 OInspect.getdoc() function.
4117 4119
4118 4120 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
4119 4121 of the line currently being canceled via Ctrl-C. It's extremely
4120 4122 ugly, but I don't know how to do it better (the problem is one of
4121 4123 handling cross-thread exceptions).
4122 4124
4123 4125 2004-10-28 Fernando Perez <fperez@colorado.edu>
4124 4126
4125 4127 * IPython/Shell.py (signal_handler): add signal handlers to trap
4126 4128 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
4127 4129 report by Francesc Alted.
4128 4130
4129 4131 2004-10-21 Fernando Perez <fperez@colorado.edu>
4130 4132
4131 4133 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
4132 4134 to % for pysh syntax extensions.
4133 4135
4134 4136 2004-10-09 Fernando Perez <fperez@colorado.edu>
4135 4137
4136 4138 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
4137 4139 arrays to print a more useful summary, without calling str(arr).
4138 4140 This avoids the problem of extremely lengthy computations which
4139 4141 occur if arr is large, and appear to the user as a system lockup
4140 4142 with 100% cpu activity. After a suggestion by Kristian Sandberg
4141 4143 <Kristian.Sandberg@colorado.edu>.
4142 4144 (Magic.__init__): fix bug in global magic escapes not being
4143 4145 correctly set.
4144 4146
4145 4147 2004-10-08 Fernando Perez <fperez@colorado.edu>
4146 4148
4147 4149 * IPython/Magic.py (__license__): change to absolute imports of
4148 4150 ipython's own internal packages, to start adapting to the absolute
4149 4151 import requirement of PEP-328.
4150 4152
4151 4153 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
4152 4154 files, and standardize author/license marks through the Release
4153 4155 module instead of having per/file stuff (except for files with
4154 4156 particular licenses, like the MIT/PSF-licensed codes).
4155 4157
4156 4158 * IPython/Debugger.py: remove dead code for python 2.1
4157 4159
4158 4160 2004-10-04 Fernando Perez <fperez@colorado.edu>
4159 4161
4160 4162 * IPython/iplib.py (ipmagic): New function for accessing magics
4161 4163 via a normal python function call.
4162 4164
4163 4165 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
4164 4166 from '@' to '%', to accomodate the new @decorator syntax of python
4165 4167 2.4.
4166 4168
4167 4169 2004-09-29 Fernando Perez <fperez@colorado.edu>
4168 4170
4169 4171 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
4170 4172 matplotlib.use to prevent running scripts which try to switch
4171 4173 interactive backends from within ipython. This will just crash
4172 4174 the python interpreter, so we can't allow it (but a detailed error
4173 4175 is given to the user).
4174 4176
4175 4177 2004-09-28 Fernando Perez <fperez@colorado.edu>
4176 4178
4177 4179 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4178 4180 matplotlib-related fixes so that using @run with non-matplotlib
4179 4181 scripts doesn't pop up spurious plot windows. This requires
4180 4182 matplotlib >= 0.63, where I had to make some changes as well.
4181 4183
4182 4184 * IPython/ipmaker.py (make_IPython): update version requirement to
4183 4185 python 2.2.
4184 4186
4185 4187 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4186 4188 banner arg for embedded customization.
4187 4189
4188 4190 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4189 4191 explicit uses of __IP as the IPython's instance name. Now things
4190 4192 are properly handled via the shell.name value. The actual code
4191 4193 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4192 4194 is much better than before. I'll clean things completely when the
4193 4195 magic stuff gets a real overhaul.
4194 4196
4195 4197 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4196 4198 minor changes to debian dir.
4197 4199
4198 4200 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4199 4201 pointer to the shell itself in the interactive namespace even when
4200 4202 a user-supplied dict is provided. This is needed for embedding
4201 4203 purposes (found by tests with Michel Sanner).
4202 4204
4203 4205 2004-09-27 Fernando Perez <fperez@colorado.edu>
4204 4206
4205 4207 * IPython/UserConfig/ipythonrc: remove []{} from
4206 4208 readline_remove_delims, so that things like [modname.<TAB> do
4207 4209 proper completion. This disables [].TAB, but that's a less common
4208 4210 case than module names in list comprehensions, for example.
4209 4211 Thanks to a report by Andrea Riciputi.
4210 4212
4211 4213 2004-09-09 Fernando Perez <fperez@colorado.edu>
4212 4214
4213 4215 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4214 4216 blocking problems in win32 and osx. Fix by John.
4215 4217
4216 4218 2004-09-08 Fernando Perez <fperez@colorado.edu>
4217 4219
4218 4220 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4219 4221 for Win32 and OSX. Fix by John Hunter.
4220 4222
4221 4223 2004-08-30 *** Released version 0.6.3
4222 4224
4223 4225 2004-08-30 Fernando Perez <fperez@colorado.edu>
4224 4226
4225 4227 * setup.py (isfile): Add manpages to list of dependent files to be
4226 4228 updated.
4227 4229
4228 4230 2004-08-27 Fernando Perez <fperez@colorado.edu>
4229 4231
4230 4232 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4231 4233 for now. They don't really work with standalone WX/GTK code
4232 4234 (though matplotlib IS working fine with both of those backends).
4233 4235 This will neeed much more testing. I disabled most things with
4234 4236 comments, so turning it back on later should be pretty easy.
4235 4237
4236 4238 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4237 4239 autocalling of expressions like r'foo', by modifying the line
4238 4240 split regexp. Closes
4239 4241 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4240 4242 Riley <ipythonbugs-AT-sabi.net>.
4241 4243 (InteractiveShell.mainloop): honor --nobanner with banner
4242 4244 extensions.
4243 4245
4244 4246 * IPython/Shell.py: Significant refactoring of all classes, so
4245 4247 that we can really support ALL matplotlib backends and threading
4246 4248 models (John spotted a bug with Tk which required this). Now we
4247 4249 should support single-threaded, WX-threads and GTK-threads, both
4248 4250 for generic code and for matplotlib.
4249 4251
4250 4252 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4251 4253 -pylab, to simplify things for users. Will also remove the pylab
4252 4254 profile, since now all of matplotlib configuration is directly
4253 4255 handled here. This also reduces startup time.
4254 4256
4255 4257 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4256 4258 shell wasn't being correctly called. Also in IPShellWX.
4257 4259
4258 4260 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4259 4261 fine-tune banner.
4260 4262
4261 4263 * IPython/numutils.py (spike): Deprecate these spike functions,
4262 4264 delete (long deprecated) gnuplot_exec handler.
4263 4265
4264 4266 2004-08-26 Fernando Perez <fperez@colorado.edu>
4265 4267
4266 4268 * ipython.1: Update for threading options, plus some others which
4267 4269 were missing.
4268 4270
4269 4271 * IPython/ipmaker.py (__call__): Added -wthread option for
4270 4272 wxpython thread handling. Make sure threading options are only
4271 4273 valid at the command line.
4272 4274
4273 4275 * scripts/ipython: moved shell selection into a factory function
4274 4276 in Shell.py, to keep the starter script to a minimum.
4275 4277
4276 4278 2004-08-25 Fernando Perez <fperez@colorado.edu>
4277 4279
4278 4280 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4279 4281 John. Along with some recent changes he made to matplotlib, the
4280 4282 next versions of both systems should work very well together.
4281 4283
4282 4284 2004-08-24 Fernando Perez <fperez@colorado.edu>
4283 4285
4284 4286 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4285 4287 tried to switch the profiling to using hotshot, but I'm getting
4286 4288 strange errors from prof.runctx() there. I may be misreading the
4287 4289 docs, but it looks weird. For now the profiling code will
4288 4290 continue to use the standard profiler.
4289 4291
4290 4292 2004-08-23 Fernando Perez <fperez@colorado.edu>
4291 4293
4292 4294 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4293 4295 threaded shell, by John Hunter. It's not quite ready yet, but
4294 4296 close.
4295 4297
4296 4298 2004-08-22 Fernando Perez <fperez@colorado.edu>
4297 4299
4298 4300 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4299 4301 in Magic and ultraTB.
4300 4302
4301 4303 * ipython.1: document threading options in manpage.
4302 4304
4303 4305 * scripts/ipython: Changed name of -thread option to -gthread,
4304 4306 since this is GTK specific. I want to leave the door open for a
4305 4307 -wthread option for WX, which will most likely be necessary. This
4306 4308 change affects usage and ipmaker as well.
4307 4309
4308 4310 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4309 4311 handle the matplotlib shell issues. Code by John Hunter
4310 4312 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4311 4313 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4312 4314 broken (and disabled for end users) for now, but it puts the
4313 4315 infrastructure in place.
4314 4316
4315 4317 2004-08-21 Fernando Perez <fperez@colorado.edu>
4316 4318
4317 4319 * ipythonrc-pylab: Add matplotlib support.
4318 4320
4319 4321 * matplotlib_config.py: new files for matplotlib support, part of
4320 4322 the pylab profile.
4321 4323
4322 4324 * IPython/usage.py (__doc__): documented the threading options.
4323 4325
4324 4326 2004-08-20 Fernando Perez <fperez@colorado.edu>
4325 4327
4326 4328 * ipython: Modified the main calling routine to handle the -thread
4327 4329 and -mpthread options. This needs to be done as a top-level hack,
4328 4330 because it determines which class to instantiate for IPython
4329 4331 itself.
4330 4332
4331 4333 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4332 4334 classes to support multithreaded GTK operation without blocking,
4333 4335 and matplotlib with all backends. This is a lot of still very
4334 4336 experimental code, and threads are tricky. So it may still have a
4335 4337 few rough edges... This code owes a lot to
4336 4338 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4337 4339 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4338 4340 to John Hunter for all the matplotlib work.
4339 4341
4340 4342 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4341 4343 options for gtk thread and matplotlib support.
4342 4344
4343 4345 2004-08-16 Fernando Perez <fperez@colorado.edu>
4344 4346
4345 4347 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4346 4348 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4347 4349 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4348 4350
4349 4351 2004-08-11 Fernando Perez <fperez@colorado.edu>
4350 4352
4351 4353 * setup.py (isfile): Fix build so documentation gets updated for
4352 4354 rpms (it was only done for .tgz builds).
4353 4355
4354 4356 2004-08-10 Fernando Perez <fperez@colorado.edu>
4355 4357
4356 4358 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4357 4359
4358 4360 * iplib.py : Silence syntax error exceptions in tab-completion.
4359 4361
4360 4362 2004-08-05 Fernando Perez <fperez@colorado.edu>
4361 4363
4362 4364 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4363 4365 'color off' mark for continuation prompts. This was causing long
4364 4366 continuation lines to mis-wrap.
4365 4367
4366 4368 2004-08-01 Fernando Perez <fperez@colorado.edu>
4367 4369
4368 4370 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4369 4371 for building ipython to be a parameter. All this is necessary
4370 4372 right now to have a multithreaded version, but this insane
4371 4373 non-design will be cleaned up soon. For now, it's a hack that
4372 4374 works.
4373 4375
4374 4376 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4375 4377 args in various places. No bugs so far, but it's a dangerous
4376 4378 practice.
4377 4379
4378 4380 2004-07-31 Fernando Perez <fperez@colorado.edu>
4379 4381
4380 4382 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4381 4383 fix completion of files with dots in their names under most
4382 4384 profiles (pysh was OK because the completion order is different).
4383 4385
4384 4386 2004-07-27 Fernando Perez <fperez@colorado.edu>
4385 4387
4386 4388 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4387 4389 keywords manually, b/c the one in keyword.py was removed in python
4388 4390 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4389 4391 This is NOT a bug under python 2.3 and earlier.
4390 4392
4391 4393 2004-07-26 Fernando Perez <fperez@colorado.edu>
4392 4394
4393 4395 * IPython/ultraTB.py (VerboseTB.text): Add another
4394 4396 linecache.checkcache() call to try to prevent inspect.py from
4395 4397 crashing under python 2.3. I think this fixes
4396 4398 http://www.scipy.net/roundup/ipython/issue17.
4397 4399
4398 4400 2004-07-26 *** Released version 0.6.2
4399 4401
4400 4402 2004-07-26 Fernando Perez <fperez@colorado.edu>
4401 4403
4402 4404 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4403 4405 fail for any number.
4404 4406 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4405 4407 empty bookmarks.
4406 4408
4407 4409 2004-07-26 *** Released version 0.6.1
4408 4410
4409 4411 2004-07-26 Fernando Perez <fperez@colorado.edu>
4410 4412
4411 4413 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4412 4414
4413 4415 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4414 4416 escaping '()[]{}' in filenames.
4415 4417
4416 4418 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4417 4419 Python 2.2 users who lack a proper shlex.split.
4418 4420
4419 4421 2004-07-19 Fernando Perez <fperez@colorado.edu>
4420 4422
4421 4423 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4422 4424 for reading readline's init file. I follow the normal chain:
4423 4425 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4424 4426 report by Mike Heeter. This closes
4425 4427 http://www.scipy.net/roundup/ipython/issue16.
4426 4428
4427 4429 2004-07-18 Fernando Perez <fperez@colorado.edu>
4428 4430
4429 4431 * IPython/iplib.py (__init__): Add better handling of '\' under
4430 4432 Win32 for filenames. After a patch by Ville.
4431 4433
4432 4434 2004-07-17 Fernando Perez <fperez@colorado.edu>
4433 4435
4434 4436 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4435 4437 autocalling would be triggered for 'foo is bar' if foo is
4436 4438 callable. I also cleaned up the autocall detection code to use a
4437 4439 regexp, which is faster. Bug reported by Alexander Schmolck.
4438 4440
4439 4441 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4440 4442 '?' in them would confuse the help system. Reported by Alex
4441 4443 Schmolck.
4442 4444
4443 4445 2004-07-16 Fernando Perez <fperez@colorado.edu>
4444 4446
4445 4447 * IPython/GnuplotInteractive.py (__all__): added plot2.
4446 4448
4447 4449 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4448 4450 plotting dictionaries, lists or tuples of 1d arrays.
4449 4451
4450 4452 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4451 4453 optimizations.
4452 4454
4453 4455 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4454 4456 the information which was there from Janko's original IPP code:
4455 4457
4456 4458 03.05.99 20:53 porto.ifm.uni-kiel.de
4457 4459 --Started changelog.
4458 4460 --make clear do what it say it does
4459 4461 --added pretty output of lines from inputcache
4460 4462 --Made Logger a mixin class, simplifies handling of switches
4461 4463 --Added own completer class. .string<TAB> expands to last history
4462 4464 line which starts with string. The new expansion is also present
4463 4465 with Ctrl-r from the readline library. But this shows, who this
4464 4466 can be done for other cases.
4465 4467 --Added convention that all shell functions should accept a
4466 4468 parameter_string This opens the door for different behaviour for
4467 4469 each function. @cd is a good example of this.
4468 4470
4469 4471 04.05.99 12:12 porto.ifm.uni-kiel.de
4470 4472 --added logfile rotation
4471 4473 --added new mainloop method which freezes first the namespace
4472 4474
4473 4475 07.05.99 21:24 porto.ifm.uni-kiel.de
4474 4476 --added the docreader classes. Now there is a help system.
4475 4477 -This is only a first try. Currently it's not easy to put new
4476 4478 stuff in the indices. But this is the way to go. Info would be
4477 4479 better, but HTML is every where and not everybody has an info
4478 4480 system installed and it's not so easy to change html-docs to info.
4479 4481 --added global logfile option
4480 4482 --there is now a hook for object inspection method pinfo needs to
4481 4483 be provided for this. Can be reached by two '??'.
4482 4484
4483 4485 08.05.99 20:51 porto.ifm.uni-kiel.de
4484 4486 --added a README
4485 4487 --bug in rc file. Something has changed so functions in the rc
4486 4488 file need to reference the shell and not self. Not clear if it's a
4487 4489 bug or feature.
4488 4490 --changed rc file for new behavior
4489 4491
4490 4492 2004-07-15 Fernando Perez <fperez@colorado.edu>
4491 4493
4492 4494 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4493 4495 cache was falling out of sync in bizarre manners when multi-line
4494 4496 input was present. Minor optimizations and cleanup.
4495 4497
4496 4498 (Logger): Remove old Changelog info for cleanup. This is the
4497 4499 information which was there from Janko's original code:
4498 4500
4499 4501 Changes to Logger: - made the default log filename a parameter
4500 4502
4501 4503 - put a check for lines beginning with !@? in log(). Needed
4502 4504 (even if the handlers properly log their lines) for mid-session
4503 4505 logging activation to work properly. Without this, lines logged
4504 4506 in mid session, which get read from the cache, would end up
4505 4507 'bare' (with !@? in the open) in the log. Now they are caught
4506 4508 and prepended with a #.
4507 4509
4508 4510 * IPython/iplib.py (InteractiveShell.init_readline): added check
4509 4511 in case MagicCompleter fails to be defined, so we don't crash.
4510 4512
4511 4513 2004-07-13 Fernando Perez <fperez@colorado.edu>
4512 4514
4513 4515 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4514 4516 of EPS if the requested filename ends in '.eps'.
4515 4517
4516 4518 2004-07-04 Fernando Perez <fperez@colorado.edu>
4517 4519
4518 4520 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4519 4521 escaping of quotes when calling the shell.
4520 4522
4521 4523 2004-07-02 Fernando Perez <fperez@colorado.edu>
4522 4524
4523 4525 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4524 4526 gettext not working because we were clobbering '_'. Fixes
4525 4527 http://www.scipy.net/roundup/ipython/issue6.
4526 4528
4527 4529 2004-07-01 Fernando Perez <fperez@colorado.edu>
4528 4530
4529 4531 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4530 4532 into @cd. Patch by Ville.
4531 4533
4532 4534 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4533 4535 new function to store things after ipmaker runs. Patch by Ville.
4534 4536 Eventually this will go away once ipmaker is removed and the class
4535 4537 gets cleaned up, but for now it's ok. Key functionality here is
4536 4538 the addition of the persistent storage mechanism, a dict for
4537 4539 keeping data across sessions (for now just bookmarks, but more can
4538 4540 be implemented later).
4539 4541
4540 4542 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4541 4543 persistent across sections. Patch by Ville, I modified it
4542 4544 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4543 4545 added a '-l' option to list all bookmarks.
4544 4546
4545 4547 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4546 4548 center for cleanup. Registered with atexit.register(). I moved
4547 4549 here the old exit_cleanup(). After a patch by Ville.
4548 4550
4549 4551 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4550 4552 characters in the hacked shlex_split for python 2.2.
4551 4553
4552 4554 * IPython/iplib.py (file_matches): more fixes to filenames with
4553 4555 whitespace in them. It's not perfect, but limitations in python's
4554 4556 readline make it impossible to go further.
4555 4557
4556 4558 2004-06-29 Fernando Perez <fperez@colorado.edu>
4557 4559
4558 4560 * IPython/iplib.py (file_matches): escape whitespace correctly in
4559 4561 filename completions. Bug reported by Ville.
4560 4562
4561 4563 2004-06-28 Fernando Perez <fperez@colorado.edu>
4562 4564
4563 4565 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4564 4566 the history file will be called 'history-PROFNAME' (or just
4565 4567 'history' if no profile is loaded). I was getting annoyed at
4566 4568 getting my Numerical work history clobbered by pysh sessions.
4567 4569
4568 4570 * IPython/iplib.py (InteractiveShell.__init__): Internal
4569 4571 getoutputerror() function so that we can honor the system_verbose
4570 4572 flag for _all_ system calls. I also added escaping of #
4571 4573 characters here to avoid confusing Itpl.
4572 4574
4573 4575 * IPython/Magic.py (shlex_split): removed call to shell in
4574 4576 parse_options and replaced it with shlex.split(). The annoying
4575 4577 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4576 4578 to backport it from 2.3, with several frail hacks (the shlex
4577 4579 module is rather limited in 2.2). Thanks to a suggestion by Ville
4578 4580 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4579 4581 problem.
4580 4582
4581 4583 (Magic.magic_system_verbose): new toggle to print the actual
4582 4584 system calls made by ipython. Mainly for debugging purposes.
4583 4585
4584 4586 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4585 4587 doesn't support persistence. Reported (and fix suggested) by
4586 4588 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4587 4589
4588 4590 2004-06-26 Fernando Perez <fperez@colorado.edu>
4589 4591
4590 4592 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4591 4593 continue prompts.
4592 4594
4593 4595 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4594 4596 function (basically a big docstring) and a few more things here to
4595 4597 speedup startup. pysh.py is now very lightweight. We want because
4596 4598 it gets execfile'd, while InterpreterExec gets imported, so
4597 4599 byte-compilation saves time.
4598 4600
4599 4601 2004-06-25 Fernando Perez <fperez@colorado.edu>
4600 4602
4601 4603 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4602 4604 -NUM', which was recently broken.
4603 4605
4604 4606 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4605 4607 in multi-line input (but not !!, which doesn't make sense there).
4606 4608
4607 4609 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4608 4610 It's just too useful, and people can turn it off in the less
4609 4611 common cases where it's a problem.
4610 4612
4611 4613 2004-06-24 Fernando Perez <fperez@colorado.edu>
4612 4614
4613 4615 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4614 4616 special syntaxes (like alias calling) is now allied in multi-line
4615 4617 input. This is still _very_ experimental, but it's necessary for
4616 4618 efficient shell usage combining python looping syntax with system
4617 4619 calls. For now it's restricted to aliases, I don't think it
4618 4620 really even makes sense to have this for magics.
4619 4621
4620 4622 2004-06-23 Fernando Perez <fperez@colorado.edu>
4621 4623
4622 4624 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4623 4625 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4624 4626
4625 4627 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4626 4628 extensions under Windows (after code sent by Gary Bishop). The
4627 4629 extensions considered 'executable' are stored in IPython's rc
4628 4630 structure as win_exec_ext.
4629 4631
4630 4632 * IPython/genutils.py (shell): new function, like system() but
4631 4633 without return value. Very useful for interactive shell work.
4632 4634
4633 4635 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4634 4636 delete aliases.
4635 4637
4636 4638 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4637 4639 sure that the alias table doesn't contain python keywords.
4638 4640
4639 4641 2004-06-21 Fernando Perez <fperez@colorado.edu>
4640 4642
4641 4643 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4642 4644 non-existent items are found in $PATH. Reported by Thorsten.
4643 4645
4644 4646 2004-06-20 Fernando Perez <fperez@colorado.edu>
4645 4647
4646 4648 * IPython/iplib.py (complete): modified the completer so that the
4647 4649 order of priorities can be easily changed at runtime.
4648 4650
4649 4651 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4650 4652 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4651 4653
4652 4654 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4653 4655 expand Python variables prepended with $ in all system calls. The
4654 4656 same was done to InteractiveShell.handle_shell_escape. Now all
4655 4657 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4656 4658 expansion of python variables and expressions according to the
4657 4659 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4658 4660
4659 4661 Though PEP-215 has been rejected, a similar (but simpler) one
4660 4662 seems like it will go into Python 2.4, PEP-292 -
4661 4663 http://www.python.org/peps/pep-0292.html.
4662 4664
4663 4665 I'll keep the full syntax of PEP-215, since IPython has since the
4664 4666 start used Ka-Ping Yee's reference implementation discussed there
4665 4667 (Itpl), and I actually like the powerful semantics it offers.
4666 4668
4667 4669 In order to access normal shell variables, the $ has to be escaped
4668 4670 via an extra $. For example:
4669 4671
4670 4672 In [7]: PATH='a python variable'
4671 4673
4672 4674 In [8]: !echo $PATH
4673 4675 a python variable
4674 4676
4675 4677 In [9]: !echo $$PATH
4676 4678 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4677 4679
4678 4680 (Magic.parse_options): escape $ so the shell doesn't evaluate
4679 4681 things prematurely.
4680 4682
4681 4683 * IPython/iplib.py (InteractiveShell.call_alias): added the
4682 4684 ability for aliases to expand python variables via $.
4683 4685
4684 4686 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4685 4687 system, now there's a @rehash/@rehashx pair of magics. These work
4686 4688 like the csh rehash command, and can be invoked at any time. They
4687 4689 build a table of aliases to everything in the user's $PATH
4688 4690 (@rehash uses everything, @rehashx is slower but only adds
4689 4691 executable files). With this, the pysh.py-based shell profile can
4690 4692 now simply call rehash upon startup, and full access to all
4691 4693 programs in the user's path is obtained.
4692 4694
4693 4695 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4694 4696 functionality is now fully in place. I removed the old dynamic
4695 4697 code generation based approach, in favor of a much lighter one
4696 4698 based on a simple dict. The advantage is that this allows me to
4697 4699 now have thousands of aliases with negligible cost (unthinkable
4698 4700 with the old system).
4699 4701
4700 4702 2004-06-19 Fernando Perez <fperez@colorado.edu>
4701 4703
4702 4704 * IPython/iplib.py (__init__): extended MagicCompleter class to
4703 4705 also complete (last in priority) on user aliases.
4704 4706
4705 4707 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4706 4708 call to eval.
4707 4709 (ItplNS.__init__): Added a new class which functions like Itpl,
4708 4710 but allows configuring the namespace for the evaluation to occur
4709 4711 in.
4710 4712
4711 4713 2004-06-18 Fernando Perez <fperez@colorado.edu>
4712 4714
4713 4715 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4714 4716 better message when 'exit' or 'quit' are typed (a common newbie
4715 4717 confusion).
4716 4718
4717 4719 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4718 4720 check for Windows users.
4719 4721
4720 4722 * IPython/iplib.py (InteractiveShell.user_setup): removed
4721 4723 disabling of colors for Windows. I'll test at runtime and issue a
4722 4724 warning if Gary's readline isn't found, as to nudge users to
4723 4725 download it.
4724 4726
4725 4727 2004-06-16 Fernando Perez <fperez@colorado.edu>
4726 4728
4727 4729 * IPython/genutils.py (Stream.__init__): changed to print errors
4728 4730 to sys.stderr. I had a circular dependency here. Now it's
4729 4731 possible to run ipython as IDLE's shell (consider this pre-alpha,
4730 4732 since true stdout things end up in the starting terminal instead
4731 4733 of IDLE's out).
4732 4734
4733 4735 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4734 4736 users who haven't # updated their prompt_in2 definitions. Remove
4735 4737 eventually.
4736 4738 (multiple_replace): added credit to original ASPN recipe.
4737 4739
4738 4740 2004-06-15 Fernando Perez <fperez@colorado.edu>
4739 4741
4740 4742 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4741 4743 list of auto-defined aliases.
4742 4744
4743 4745 2004-06-13 Fernando Perez <fperez@colorado.edu>
4744 4746
4745 4747 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4746 4748 install was really requested (so setup.py can be used for other
4747 4749 things under Windows).
4748 4750
4749 4751 2004-06-10 Fernando Perez <fperez@colorado.edu>
4750 4752
4751 4753 * IPython/Logger.py (Logger.create_log): Manually remove any old
4752 4754 backup, since os.remove may fail under Windows. Fixes bug
4753 4755 reported by Thorsten.
4754 4756
4755 4757 2004-06-09 Fernando Perez <fperez@colorado.edu>
4756 4758
4757 4759 * examples/example-embed.py: fixed all references to %n (replaced
4758 4760 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4759 4761 for all examples and the manual as well.
4760 4762
4761 4763 2004-06-08 Fernando Perez <fperez@colorado.edu>
4762 4764
4763 4765 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4764 4766 alignment and color management. All 3 prompt subsystems now
4765 4767 inherit from BasePrompt.
4766 4768
4767 4769 * tools/release: updates for windows installer build and tag rpms
4768 4770 with python version (since paths are fixed).
4769 4771
4770 4772 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4771 4773 which will become eventually obsolete. Also fixed the default
4772 4774 prompt_in2 to use \D, so at least new users start with the correct
4773 4775 defaults.
4774 4776 WARNING: Users with existing ipythonrc files will need to apply
4775 4777 this fix manually!
4776 4778
4777 4779 * setup.py: make windows installer (.exe). This is finally the
4778 4780 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4779 4781 which I hadn't included because it required Python 2.3 (or recent
4780 4782 distutils).
4781 4783
4782 4784 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4783 4785 usage of new '\D' escape.
4784 4786
4785 4787 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4786 4788 lacks os.getuid())
4787 4789 (CachedOutput.set_colors): Added the ability to turn coloring
4788 4790 on/off with @colors even for manually defined prompt colors. It
4789 4791 uses a nasty global, but it works safely and via the generic color
4790 4792 handling mechanism.
4791 4793 (Prompt2.__init__): Introduced new escape '\D' for continuation
4792 4794 prompts. It represents the counter ('\#') as dots.
4793 4795 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4794 4796 need to update their ipythonrc files and replace '%n' with '\D' in
4795 4797 their prompt_in2 settings everywhere. Sorry, but there's
4796 4798 otherwise no clean way to get all prompts to properly align. The
4797 4799 ipythonrc shipped with IPython has been updated.
4798 4800
4799 4801 2004-06-07 Fernando Perez <fperez@colorado.edu>
4800 4802
4801 4803 * setup.py (isfile): Pass local_icons option to latex2html, so the
4802 4804 resulting HTML file is self-contained. Thanks to
4803 4805 dryice-AT-liu.com.cn for the tip.
4804 4806
4805 4807 * pysh.py: I created a new profile 'shell', which implements a
4806 4808 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4807 4809 system shell, nor will it become one anytime soon. It's mainly
4808 4810 meant to illustrate the use of the new flexible bash-like prompts.
4809 4811 I guess it could be used by hardy souls for true shell management,
4810 4812 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4811 4813 profile. This uses the InterpreterExec extension provided by
4812 4814 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4813 4815
4814 4816 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4815 4817 auto-align itself with the length of the previous input prompt
4816 4818 (taking into account the invisible color escapes).
4817 4819 (CachedOutput.__init__): Large restructuring of this class. Now
4818 4820 all three prompts (primary1, primary2, output) are proper objects,
4819 4821 managed by the 'parent' CachedOutput class. The code is still a
4820 4822 bit hackish (all prompts share state via a pointer to the cache),
4821 4823 but it's overall far cleaner than before.
4822 4824
4823 4825 * IPython/genutils.py (getoutputerror): modified to add verbose,
4824 4826 debug and header options. This makes the interface of all getout*
4825 4827 functions uniform.
4826 4828 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4827 4829
4828 4830 * IPython/Magic.py (Magic.default_option): added a function to
4829 4831 allow registering default options for any magic command. This
4830 4832 makes it easy to have profiles which customize the magics globally
4831 4833 for a certain use. The values set through this function are
4832 4834 picked up by the parse_options() method, which all magics should
4833 4835 use to parse their options.
4834 4836
4835 4837 * IPython/genutils.py (warn): modified the warnings framework to
4836 4838 use the Term I/O class. I'm trying to slowly unify all of
4837 4839 IPython's I/O operations to pass through Term.
4838 4840
4839 4841 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4840 4842 the secondary prompt to correctly match the length of the primary
4841 4843 one for any prompt. Now multi-line code will properly line up
4842 4844 even for path dependent prompts, such as the new ones available
4843 4845 via the prompt_specials.
4844 4846
4845 4847 2004-06-06 Fernando Perez <fperez@colorado.edu>
4846 4848
4847 4849 * IPython/Prompts.py (prompt_specials): Added the ability to have
4848 4850 bash-like special sequences in the prompts, which get
4849 4851 automatically expanded. Things like hostname, current working
4850 4852 directory and username are implemented already, but it's easy to
4851 4853 add more in the future. Thanks to a patch by W.J. van der Laan
4852 4854 <gnufnork-AT-hetdigitalegat.nl>
4853 4855 (prompt_specials): Added color support for prompt strings, so
4854 4856 users can define arbitrary color setups for their prompts.
4855 4857
4856 4858 2004-06-05 Fernando Perez <fperez@colorado.edu>
4857 4859
4858 4860 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4859 4861 code to load Gary Bishop's readline and configure it
4860 4862 automatically. Thanks to Gary for help on this.
4861 4863
4862 4864 2004-06-01 Fernando Perez <fperez@colorado.edu>
4863 4865
4864 4866 * IPython/Logger.py (Logger.create_log): fix bug for logging
4865 4867 with no filename (previous fix was incomplete).
4866 4868
4867 4869 2004-05-25 Fernando Perez <fperez@colorado.edu>
4868 4870
4869 4871 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4870 4872 parens would get passed to the shell.
4871 4873
4872 4874 2004-05-20 Fernando Perez <fperez@colorado.edu>
4873 4875
4874 4876 * IPython/Magic.py (Magic.magic_prun): changed default profile
4875 4877 sort order to 'time' (the more common profiling need).
4876 4878
4877 4879 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4878 4880 so that source code shown is guaranteed in sync with the file on
4879 4881 disk (also changed in psource). Similar fix to the one for
4880 4882 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4881 4883 <yann.ledu-AT-noos.fr>.
4882 4884
4883 4885 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4884 4886 with a single option would not be correctly parsed. Closes
4885 4887 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4886 4888 introduced in 0.6.0 (on 2004-05-06).
4887 4889
4888 4890 2004-05-13 *** Released version 0.6.0
4889 4891
4890 4892 2004-05-13 Fernando Perez <fperez@colorado.edu>
4891 4893
4892 4894 * debian/: Added debian/ directory to CVS, so that debian support
4893 4895 is publicly accessible. The debian package is maintained by Jack
4894 4896 Moffit <jack-AT-xiph.org>.
4895 4897
4896 4898 * Documentation: included the notes about an ipython-based system
4897 4899 shell (the hypothetical 'pysh') into the new_design.pdf document,
4898 4900 so that these ideas get distributed to users along with the
4899 4901 official documentation.
4900 4902
4901 4903 2004-05-10 Fernando Perez <fperez@colorado.edu>
4902 4904
4903 4905 * IPython/Logger.py (Logger.create_log): fix recently introduced
4904 4906 bug (misindented line) where logstart would fail when not given an
4905 4907 explicit filename.
4906 4908
4907 4909 2004-05-09 Fernando Perez <fperez@colorado.edu>
4908 4910
4909 4911 * IPython/Magic.py (Magic.parse_options): skip system call when
4910 4912 there are no options to look for. Faster, cleaner for the common
4911 4913 case.
4912 4914
4913 4915 * Documentation: many updates to the manual: describing Windows
4914 4916 support better, Gnuplot updates, credits, misc small stuff. Also
4915 4917 updated the new_design doc a bit.
4916 4918
4917 4919 2004-05-06 *** Released version 0.6.0.rc1
4918 4920
4919 4921 2004-05-06 Fernando Perez <fperez@colorado.edu>
4920 4922
4921 4923 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4922 4924 operations to use the vastly more efficient list/''.join() method.
4923 4925 (FormattedTB.text): Fix
4924 4926 http://www.scipy.net/roundup/ipython/issue12 - exception source
4925 4927 extract not updated after reload. Thanks to Mike Salib
4926 4928 <msalib-AT-mit.edu> for pinning the source of the problem.
4927 4929 Fortunately, the solution works inside ipython and doesn't require
4928 4930 any changes to python proper.
4929 4931
4930 4932 * IPython/Magic.py (Magic.parse_options): Improved to process the
4931 4933 argument list as a true shell would (by actually using the
4932 4934 underlying system shell). This way, all @magics automatically get
4933 4935 shell expansion for variables. Thanks to a comment by Alex
4934 4936 Schmolck.
4935 4937
4936 4938 2004-04-04 Fernando Perez <fperez@colorado.edu>
4937 4939
4938 4940 * IPython/iplib.py (InteractiveShell.interact): Added a special
4939 4941 trap for a debugger quit exception, which is basically impossible
4940 4942 to handle by normal mechanisms, given what pdb does to the stack.
4941 4943 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4942 4944
4943 4945 2004-04-03 Fernando Perez <fperez@colorado.edu>
4944 4946
4945 4947 * IPython/genutils.py (Term): Standardized the names of the Term
4946 4948 class streams to cin/cout/cerr, following C++ naming conventions
4947 4949 (I can't use in/out/err because 'in' is not a valid attribute
4948 4950 name).
4949 4951
4950 4952 * IPython/iplib.py (InteractiveShell.interact): don't increment
4951 4953 the prompt if there's no user input. By Daniel 'Dang' Griffith
4952 4954 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4953 4955 Francois Pinard.
4954 4956
4955 4957 2004-04-02 Fernando Perez <fperez@colorado.edu>
4956 4958
4957 4959 * IPython/genutils.py (Stream.__init__): Modified to survive at
4958 4960 least importing in contexts where stdin/out/err aren't true file
4959 4961 objects, such as PyCrust (they lack fileno() and mode). However,
4960 4962 the recovery facilities which rely on these things existing will
4961 4963 not work.
4962 4964
4963 4965 2004-04-01 Fernando Perez <fperez@colorado.edu>
4964 4966
4965 4967 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4966 4968 use the new getoutputerror() function, so it properly
4967 4969 distinguishes stdout/err.
4968 4970
4969 4971 * IPython/genutils.py (getoutputerror): added a function to
4970 4972 capture separately the standard output and error of a command.
4971 4973 After a comment from dang on the mailing lists. This code is
4972 4974 basically a modified version of commands.getstatusoutput(), from
4973 4975 the standard library.
4974 4976
4975 4977 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4976 4978 '!!' as a special syntax (shorthand) to access @sx.
4977 4979
4978 4980 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4979 4981 command and return its output as a list split on '\n'.
4980 4982
4981 4983 2004-03-31 Fernando Perez <fperez@colorado.edu>
4982 4984
4983 4985 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4984 4986 method to dictionaries used as FakeModule instances if they lack
4985 4987 it. At least pydoc in python2.3 breaks for runtime-defined
4986 4988 functions without this hack. At some point I need to _really_
4987 4989 understand what FakeModule is doing, because it's a gross hack.
4988 4990 But it solves Arnd's problem for now...
4989 4991
4990 4992 2004-02-27 Fernando Perez <fperez@colorado.edu>
4991 4993
4992 4994 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4993 4995 mode would behave erratically. Also increased the number of
4994 4996 possible logs in rotate mod to 999. Thanks to Rod Holland
4995 4997 <rhh@StructureLABS.com> for the report and fixes.
4996 4998
4997 4999 2004-02-26 Fernando Perez <fperez@colorado.edu>
4998 5000
4999 5001 * IPython/genutils.py (page): Check that the curses module really
5000 5002 has the initscr attribute before trying to use it. For some
5001 5003 reason, the Solaris curses module is missing this. I think this
5002 5004 should be considered a Solaris python bug, but I'm not sure.
5003 5005
5004 5006 2004-01-17 Fernando Perez <fperez@colorado.edu>
5005 5007
5006 5008 * IPython/genutils.py (Stream.__init__): Changes to try to make
5007 5009 ipython robust against stdin/out/err being closed by the user.
5008 5010 This is 'user error' (and blocks a normal python session, at least
5009 5011 the stdout case). However, Ipython should be able to survive such
5010 5012 instances of abuse as gracefully as possible. To simplify the
5011 5013 coding and maintain compatibility with Gary Bishop's Term
5012 5014 contributions, I've made use of classmethods for this. I think
5013 5015 this introduces a dependency on python 2.2.
5014 5016
5015 5017 2004-01-13 Fernando Perez <fperez@colorado.edu>
5016 5018
5017 5019 * IPython/numutils.py (exp_safe): simplified the code a bit and
5018 5020 removed the need for importing the kinds module altogether.
5019 5021
5020 5022 2004-01-06 Fernando Perez <fperez@colorado.edu>
5021 5023
5022 5024 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
5023 5025 a magic function instead, after some community feedback. No
5024 5026 special syntax will exist for it, but its name is deliberately
5025 5027 very short.
5026 5028
5027 5029 2003-12-20 Fernando Perez <fperez@colorado.edu>
5028 5030
5029 5031 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
5030 5032 new functionality, to automagically assign the result of a shell
5031 5033 command to a variable. I'll solicit some community feedback on
5032 5034 this before making it permanent.
5033 5035
5034 5036 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
5035 5037 requested about callables for which inspect couldn't obtain a
5036 5038 proper argspec. Thanks to a crash report sent by Etienne
5037 5039 Posthumus <etienne-AT-apple01.cs.vu.nl>.
5038 5040
5039 5041 2003-12-09 Fernando Perez <fperez@colorado.edu>
5040 5042
5041 5043 * IPython/genutils.py (page): patch for the pager to work across
5042 5044 various versions of Windows. By Gary Bishop.
5043 5045
5044 5046 2003-12-04 Fernando Perez <fperez@colorado.edu>
5045 5047
5046 5048 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
5047 5049 Gnuplot.py version 1.7, whose internal names changed quite a bit.
5048 5050 While I tested this and it looks ok, there may still be corner
5049 5051 cases I've missed.
5050 5052
5051 5053 2003-12-01 Fernando Perez <fperez@colorado.edu>
5052 5054
5053 5055 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
5054 5056 where a line like 'p,q=1,2' would fail because the automagic
5055 5057 system would be triggered for @p.
5056 5058
5057 5059 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
5058 5060 cleanups, code unmodified.
5059 5061
5060 5062 * IPython/genutils.py (Term): added a class for IPython to handle
5061 5063 output. In most cases it will just be a proxy for stdout/err, but
5062 5064 having this allows modifications to be made for some platforms,
5063 5065 such as handling color escapes under Windows. All of this code
5064 5066 was contributed by Gary Bishop, with minor modifications by me.
5065 5067 The actual changes affect many files.
5066 5068
5067 5069 2003-11-30 Fernando Perez <fperez@colorado.edu>
5068 5070
5069 5071 * IPython/iplib.py (file_matches): new completion code, courtesy
5070 5072 of Jeff Collins. This enables filename completion again under
5071 5073 python 2.3, which disabled it at the C level.
5072 5074
5073 5075 2003-11-11 Fernando Perez <fperez@colorado.edu>
5074 5076
5075 5077 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
5076 5078 for Numeric.array(map(...)), but often convenient.
5077 5079
5078 5080 2003-11-05 Fernando Perez <fperez@colorado.edu>
5079 5081
5080 5082 * IPython/numutils.py (frange): Changed a call from int() to
5081 5083 int(round()) to prevent a problem reported with arange() in the
5082 5084 numpy list.
5083 5085
5084 5086 2003-10-06 Fernando Perez <fperez@colorado.edu>
5085 5087
5086 5088 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
5087 5089 prevent crashes if sys lacks an argv attribute (it happens with
5088 5090 embedded interpreters which build a bare-bones sys module).
5089 5091 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
5090 5092
5091 5093 2003-09-24 Fernando Perez <fperez@colorado.edu>
5092 5094
5093 5095 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
5094 5096 to protect against poorly written user objects where __getattr__
5095 5097 raises exceptions other than AttributeError. Thanks to a bug
5096 5098 report by Oliver Sander <osander-AT-gmx.de>.
5097 5099
5098 5100 * IPython/FakeModule.py (FakeModule.__repr__): this method was
5099 5101 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
5100 5102
5101 5103 2003-09-09 Fernando Perez <fperez@colorado.edu>
5102 5104
5103 5105 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
5104 5106 unpacking a list whith a callable as first element would
5105 5107 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
5106 5108 Collins.
5107 5109
5108 5110 2003-08-25 *** Released version 0.5.0
5109 5111
5110 5112 2003-08-22 Fernando Perez <fperez@colorado.edu>
5111 5113
5112 5114 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
5113 5115 improperly defined user exceptions. Thanks to feedback from Mark
5114 5116 Russell <mrussell-AT-verio.net>.
5115 5117
5116 5118 2003-08-20 Fernando Perez <fperez@colorado.edu>
5117 5119
5118 5120 * IPython/OInspect.py (Inspector.pinfo): changed String Form
5119 5121 printing so that it would print multi-line string forms starting
5120 5122 with a new line. This way the formatting is better respected for
5121 5123 objects which work hard to make nice string forms.
5122 5124
5123 5125 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
5124 5126 autocall would overtake data access for objects with both
5125 5127 __getitem__ and __call__.
5126 5128
5127 5129 2003-08-19 *** Released version 0.5.0-rc1
5128 5130
5129 5131 2003-08-19 Fernando Perez <fperez@colorado.edu>
5130 5132
5131 5133 * IPython/deep_reload.py (load_tail): single tiny change here
5132 5134 seems to fix the long-standing bug of dreload() failing to work
5133 5135 for dotted names. But this module is pretty tricky, so I may have
5134 5136 missed some subtlety. Needs more testing!.
5135 5137
5136 5138 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
5137 5139 exceptions which have badly implemented __str__ methods.
5138 5140 (VerboseTB.text): harden against inspect.getinnerframes crashing,
5139 5141 which I've been getting reports about from Python 2.3 users. I
5140 5142 wish I had a simple test case to reproduce the problem, so I could
5141 5143 either write a cleaner workaround or file a bug report if
5142 5144 necessary.
5143 5145
5144 5146 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
5145 5147 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
5146 5148 a bug report by Tjabo Kloppenburg.
5147 5149
5148 5150 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
5149 5151 crashes. Wrapped the pdb call in a blanket try/except, since pdb
5150 5152 seems rather unstable. Thanks to a bug report by Tjabo
5151 5153 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
5152 5154
5153 5155 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
5154 5156 this out soon because of the critical fixes in the inner loop for
5155 5157 generators.
5156 5158
5157 5159 * IPython/Magic.py (Magic.getargspec): removed. This (and
5158 5160 _get_def) have been obsoleted by OInspect for a long time, I
5159 5161 hadn't noticed that they were dead code.
5160 5162 (Magic._ofind): restored _ofind functionality for a few literals
5161 5163 (those in ["''",'""','[]','{}','()']). But it won't work anymore
5162 5164 for things like "hello".capitalize?, since that would require a
5163 5165 potentially dangerous eval() again.
5164 5166
5165 5167 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
5166 5168 logic a bit more to clean up the escapes handling and minimize the
5167 5169 use of _ofind to only necessary cases. The interactive 'feel' of
5168 5170 IPython should have improved quite a bit with the changes in
5169 5171 _prefilter and _ofind (besides being far safer than before).
5170 5172
5171 5173 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5172 5174 obscure, never reported). Edit would fail to find the object to
5173 5175 edit under some circumstances.
5174 5176 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5175 5177 which were causing double-calling of generators. Those eval calls
5176 5178 were _very_ dangerous, since code with side effects could be
5177 5179 triggered. As they say, 'eval is evil'... These were the
5178 5180 nastiest evals in IPython. Besides, _ofind is now far simpler,
5179 5181 and it should also be quite a bit faster. Its use of inspect is
5180 5182 also safer, so perhaps some of the inspect-related crashes I've
5181 5183 seen lately with Python 2.3 might be taken care of. That will
5182 5184 need more testing.
5183 5185
5184 5186 2003-08-17 Fernando Perez <fperez@colorado.edu>
5185 5187
5186 5188 * IPython/iplib.py (InteractiveShell._prefilter): significant
5187 5189 simplifications to the logic for handling user escapes. Faster
5188 5190 and simpler code.
5189 5191
5190 5192 2003-08-14 Fernando Perez <fperez@colorado.edu>
5191 5193
5192 5194 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5193 5195 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5194 5196 but it should be quite a bit faster. And the recursive version
5195 5197 generated O(log N) intermediate storage for all rank>1 arrays,
5196 5198 even if they were contiguous.
5197 5199 (l1norm): Added this function.
5198 5200 (norm): Added this function for arbitrary norms (including
5199 5201 l-infinity). l1 and l2 are still special cases for convenience
5200 5202 and speed.
5201 5203
5202 5204 2003-08-03 Fernando Perez <fperez@colorado.edu>
5203 5205
5204 5206 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5205 5207 exceptions, which now raise PendingDeprecationWarnings in Python
5206 5208 2.3. There were some in Magic and some in Gnuplot2.
5207 5209
5208 5210 2003-06-30 Fernando Perez <fperez@colorado.edu>
5209 5211
5210 5212 * IPython/genutils.py (page): modified to call curses only for
5211 5213 terminals where TERM=='xterm'. After problems under many other
5212 5214 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5213 5215
5214 5216 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5215 5217 would be triggered when readline was absent. This was just an old
5216 5218 debugging statement I'd forgotten to take out.
5217 5219
5218 5220 2003-06-20 Fernando Perez <fperez@colorado.edu>
5219 5221
5220 5222 * IPython/genutils.py (clock): modified to return only user time
5221 5223 (not counting system time), after a discussion on scipy. While
5222 5224 system time may be a useful quantity occasionally, it may much
5223 5225 more easily be skewed by occasional swapping or other similar
5224 5226 activity.
5225 5227
5226 5228 2003-06-05 Fernando Perez <fperez@colorado.edu>
5227 5229
5228 5230 * IPython/numutils.py (identity): new function, for building
5229 5231 arbitrary rank Kronecker deltas (mostly backwards compatible with
5230 5232 Numeric.identity)
5231 5233
5232 5234 2003-06-03 Fernando Perez <fperez@colorado.edu>
5233 5235
5234 5236 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5235 5237 arguments passed to magics with spaces, to allow trailing '\' to
5236 5238 work normally (mainly for Windows users).
5237 5239
5238 5240 2003-05-29 Fernando Perez <fperez@colorado.edu>
5239 5241
5240 5242 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5241 5243 instead of pydoc.help. This fixes a bizarre behavior where
5242 5244 printing '%s' % locals() would trigger the help system. Now
5243 5245 ipython behaves like normal python does.
5244 5246
5245 5247 Note that if one does 'from pydoc import help', the bizarre
5246 5248 behavior returns, but this will also happen in normal python, so
5247 5249 it's not an ipython bug anymore (it has to do with how pydoc.help
5248 5250 is implemented).
5249 5251
5250 5252 2003-05-22 Fernando Perez <fperez@colorado.edu>
5251 5253
5252 5254 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5253 5255 return [] instead of None when nothing matches, also match to end
5254 5256 of line. Patch by Gary Bishop.
5255 5257
5256 5258 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5257 5259 protection as before, for files passed on the command line. This
5258 5260 prevents the CrashHandler from kicking in if user files call into
5259 5261 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5260 5262 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5261 5263
5262 5264 2003-05-20 *** Released version 0.4.0
5263 5265
5264 5266 2003-05-20 Fernando Perez <fperez@colorado.edu>
5265 5267
5266 5268 * setup.py: added support for manpages. It's a bit hackish b/c of
5267 5269 a bug in the way the bdist_rpm distutils target handles gzipped
5268 5270 manpages, but it works. After a patch by Jack.
5269 5271
5270 5272 2003-05-19 Fernando Perez <fperez@colorado.edu>
5271 5273
5272 5274 * IPython/numutils.py: added a mockup of the kinds module, since
5273 5275 it was recently removed from Numeric. This way, numutils will
5274 5276 work for all users even if they are missing kinds.
5275 5277
5276 5278 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5277 5279 failure, which can occur with SWIG-wrapped extensions. After a
5278 5280 crash report from Prabhu.
5279 5281
5280 5282 2003-05-16 Fernando Perez <fperez@colorado.edu>
5281 5283
5282 5284 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5283 5285 protect ipython from user code which may call directly
5284 5286 sys.excepthook (this looks like an ipython crash to the user, even
5285 5287 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5286 5288 This is especially important to help users of WxWindows, but may
5287 5289 also be useful in other cases.
5288 5290
5289 5291 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5290 5292 an optional tb_offset to be specified, and to preserve exception
5291 5293 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5292 5294
5293 5295 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5294 5296
5295 5297 2003-05-15 Fernando Perez <fperez@colorado.edu>
5296 5298
5297 5299 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5298 5300 installing for a new user under Windows.
5299 5301
5300 5302 2003-05-12 Fernando Perez <fperez@colorado.edu>
5301 5303
5302 5304 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5303 5305 handler for Emacs comint-based lines. Currently it doesn't do
5304 5306 much (but importantly, it doesn't update the history cache). In
5305 5307 the future it may be expanded if Alex needs more functionality
5306 5308 there.
5307 5309
5308 5310 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5309 5311 info to crash reports.
5310 5312
5311 5313 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5312 5314 just like Python's -c. Also fixed crash with invalid -color
5313 5315 option value at startup. Thanks to Will French
5314 5316 <wfrench-AT-bestweb.net> for the bug report.
5315 5317
5316 5318 2003-05-09 Fernando Perez <fperez@colorado.edu>
5317 5319
5318 5320 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5319 5321 to EvalDict (it's a mapping, after all) and simplified its code
5320 5322 quite a bit, after a nice discussion on c.l.py where Gustavo
5321 5323 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5322 5324
5323 5325 2003-04-30 Fernando Perez <fperez@colorado.edu>
5324 5326
5325 5327 * IPython/genutils.py (timings_out): modified it to reduce its
5326 5328 overhead in the common reps==1 case.
5327 5329
5328 5330 2003-04-29 Fernando Perez <fperez@colorado.edu>
5329 5331
5330 5332 * IPython/genutils.py (timings_out): Modified to use the resource
5331 5333 module, which avoids the wraparound problems of time.clock().
5332 5334
5333 5335 2003-04-17 *** Released version 0.2.15pre4
5334 5336
5335 5337 2003-04-17 Fernando Perez <fperez@colorado.edu>
5336 5338
5337 5339 * setup.py (scriptfiles): Split windows-specific stuff over to a
5338 5340 separate file, in an attempt to have a Windows GUI installer.
5339 5341 That didn't work, but part of the groundwork is done.
5340 5342
5341 5343 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5342 5344 indent/unindent with 4 spaces. Particularly useful in combination
5343 5345 with the new auto-indent option.
5344 5346
5345 5347 2003-04-16 Fernando Perez <fperez@colorado.edu>
5346 5348
5347 5349 * IPython/Magic.py: various replacements of self.rc for
5348 5350 self.shell.rc. A lot more remains to be done to fully disentangle
5349 5351 this class from the main Shell class.
5350 5352
5351 5353 * IPython/GnuplotRuntime.py: added checks for mouse support so
5352 5354 that we don't try to enable it if the current gnuplot doesn't
5353 5355 really support it. Also added checks so that we don't try to
5354 5356 enable persist under Windows (where Gnuplot doesn't recognize the
5355 5357 option).
5356 5358
5357 5359 * IPython/iplib.py (InteractiveShell.interact): Added optional
5358 5360 auto-indenting code, after a patch by King C. Shu
5359 5361 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5360 5362 get along well with pasting indented code. If I ever figure out
5361 5363 how to make that part go well, it will become on by default.
5362 5364
5363 5365 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5364 5366 crash ipython if there was an unmatched '%' in the user's prompt
5365 5367 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5366 5368
5367 5369 * IPython/iplib.py (InteractiveShell.interact): removed the
5368 5370 ability to ask the user whether he wants to crash or not at the
5369 5371 'last line' exception handler. Calling functions at that point
5370 5372 changes the stack, and the error reports would have incorrect
5371 5373 tracebacks.
5372 5374
5373 5375 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5374 5376 pass through a peger a pretty-printed form of any object. After a
5375 5377 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5376 5378
5377 5379 2003-04-14 Fernando Perez <fperez@colorado.edu>
5378 5380
5379 5381 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5380 5382 all files in ~ would be modified at first install (instead of
5381 5383 ~/.ipython). This could be potentially disastrous, as the
5382 5384 modification (make line-endings native) could damage binary files.
5383 5385
5384 5386 2003-04-10 Fernando Perez <fperez@colorado.edu>
5385 5387
5386 5388 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5387 5389 handle only lines which are invalid python. This now means that
5388 5390 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5389 5391 for the bug report.
5390 5392
5391 5393 2003-04-01 Fernando Perez <fperez@colorado.edu>
5392 5394
5393 5395 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5394 5396 where failing to set sys.last_traceback would crash pdb.pm().
5395 5397 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5396 5398 report.
5397 5399
5398 5400 2003-03-25 Fernando Perez <fperez@colorado.edu>
5399 5401
5400 5402 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5401 5403 before printing it (it had a lot of spurious blank lines at the
5402 5404 end).
5403 5405
5404 5406 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5405 5407 output would be sent 21 times! Obviously people don't use this
5406 5408 too often, or I would have heard about it.
5407 5409
5408 5410 2003-03-24 Fernando Perez <fperez@colorado.edu>
5409 5411
5410 5412 * setup.py (scriptfiles): renamed the data_files parameter from
5411 5413 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5412 5414 for the patch.
5413 5415
5414 5416 2003-03-20 Fernando Perez <fperez@colorado.edu>
5415 5417
5416 5418 * IPython/genutils.py (error): added error() and fatal()
5417 5419 functions.
5418 5420
5419 5421 2003-03-18 *** Released version 0.2.15pre3
5420 5422
5421 5423 2003-03-18 Fernando Perez <fperez@colorado.edu>
5422 5424
5423 5425 * setupext/install_data_ext.py
5424 5426 (install_data_ext.initialize_options): Class contributed by Jack
5425 5427 Moffit for fixing the old distutils hack. He is sending this to
5426 5428 the distutils folks so in the future we may not need it as a
5427 5429 private fix.
5428 5430
5429 5431 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5430 5432 changes for Debian packaging. See his patch for full details.
5431 5433 The old distutils hack of making the ipythonrc* files carry a
5432 5434 bogus .py extension is gone, at last. Examples were moved to a
5433 5435 separate subdir under doc/, and the separate executable scripts
5434 5436 now live in their own directory. Overall a great cleanup. The
5435 5437 manual was updated to use the new files, and setup.py has been
5436 5438 fixed for this setup.
5437 5439
5438 5440 * IPython/PyColorize.py (Parser.usage): made non-executable and
5439 5441 created a pycolor wrapper around it to be included as a script.
5440 5442
5441 5443 2003-03-12 *** Released version 0.2.15pre2
5442 5444
5443 5445 2003-03-12 Fernando Perez <fperez@colorado.edu>
5444 5446
5445 5447 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5446 5448 long-standing problem with garbage characters in some terminals.
5447 5449 The issue was really that the \001 and \002 escapes must _only_ be
5448 5450 passed to input prompts (which call readline), but _never_ to
5449 5451 normal text to be printed on screen. I changed ColorANSI to have
5450 5452 two classes: TermColors and InputTermColors, each with the
5451 5453 appropriate escapes for input prompts or normal text. The code in
5452 5454 Prompts.py got slightly more complicated, but this very old and
5453 5455 annoying bug is finally fixed.
5454 5456
5455 5457 All the credit for nailing down the real origin of this problem
5456 5458 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5457 5459 *Many* thanks to him for spending quite a bit of effort on this.
5458 5460
5459 5461 2003-03-05 *** Released version 0.2.15pre1
5460 5462
5461 5463 2003-03-03 Fernando Perez <fperez@colorado.edu>
5462 5464
5463 5465 * IPython/FakeModule.py: Moved the former _FakeModule to a
5464 5466 separate file, because it's also needed by Magic (to fix a similar
5465 5467 pickle-related issue in @run).
5466 5468
5467 5469 2003-03-02 Fernando Perez <fperez@colorado.edu>
5468 5470
5469 5471 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5470 5472 the autocall option at runtime.
5471 5473 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5472 5474 across Magic.py to start separating Magic from InteractiveShell.
5473 5475 (Magic._ofind): Fixed to return proper namespace for dotted
5474 5476 names. Before, a dotted name would always return 'not currently
5475 5477 defined', because it would find the 'parent'. s.x would be found,
5476 5478 but since 'x' isn't defined by itself, it would get confused.
5477 5479 (Magic.magic_run): Fixed pickling problems reported by Ralf
5478 5480 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5479 5481 that I'd used when Mike Heeter reported similar issues at the
5480 5482 top-level, but now for @run. It boils down to injecting the
5481 5483 namespace where code is being executed with something that looks
5482 5484 enough like a module to fool pickle.dump(). Since a pickle stores
5483 5485 a named reference to the importing module, we need this for
5484 5486 pickles to save something sensible.
5485 5487
5486 5488 * IPython/ipmaker.py (make_IPython): added an autocall option.
5487 5489
5488 5490 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5489 5491 the auto-eval code. Now autocalling is an option, and the code is
5490 5492 also vastly safer. There is no more eval() involved at all.
5491 5493
5492 5494 2003-03-01 Fernando Perez <fperez@colorado.edu>
5493 5495
5494 5496 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5495 5497 dict with named keys instead of a tuple.
5496 5498
5497 5499 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5498 5500
5499 5501 * setup.py (make_shortcut): Fixed message about directories
5500 5502 created during Windows installation (the directories were ok, just
5501 5503 the printed message was misleading). Thanks to Chris Liechti
5502 5504 <cliechti-AT-gmx.net> for the heads up.
5503 5505
5504 5506 2003-02-21 Fernando Perez <fperez@colorado.edu>
5505 5507
5506 5508 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5507 5509 of ValueError exception when checking for auto-execution. This
5508 5510 one is raised by things like Numeric arrays arr.flat when the
5509 5511 array is non-contiguous.
5510 5512
5511 5513 2003-01-31 Fernando Perez <fperez@colorado.edu>
5512 5514
5513 5515 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5514 5516 not return any value at all (even though the command would get
5515 5517 executed).
5516 5518 (xsys): Flush stdout right after printing the command to ensure
5517 5519 proper ordering of commands and command output in the total
5518 5520 output.
5519 5521 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5520 5522 system/getoutput as defaults. The old ones are kept for
5521 5523 compatibility reasons, so no code which uses this library needs
5522 5524 changing.
5523 5525
5524 5526 2003-01-27 *** Released version 0.2.14
5525 5527
5526 5528 2003-01-25 Fernando Perez <fperez@colorado.edu>
5527 5529
5528 5530 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5529 5531 functions defined in previous edit sessions could not be re-edited
5530 5532 (because the temp files were immediately removed). Now temp files
5531 5533 are removed only at IPython's exit.
5532 5534 (Magic.magic_run): Improved @run to perform shell-like expansions
5533 5535 on its arguments (~users and $VARS). With this, @run becomes more
5534 5536 like a normal command-line.
5535 5537
5536 5538 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5537 5539 bugs related to embedding and cleaned up that code. A fairly
5538 5540 important one was the impossibility to access the global namespace
5539 5541 through the embedded IPython (only local variables were visible).
5540 5542
5541 5543 2003-01-14 Fernando Perez <fperez@colorado.edu>
5542 5544
5543 5545 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5544 5546 auto-calling to be a bit more conservative. Now it doesn't get
5545 5547 triggered if any of '!=()<>' are in the rest of the input line, to
5546 5548 allow comparing callables. Thanks to Alex for the heads up.
5547 5549
5548 5550 2003-01-07 Fernando Perez <fperez@colorado.edu>
5549 5551
5550 5552 * IPython/genutils.py (page): fixed estimation of the number of
5551 5553 lines in a string to be paged to simply count newlines. This
5552 5554 prevents over-guessing due to embedded escape sequences. A better
5553 5555 long-term solution would involve stripping out the control chars
5554 5556 for the count, but it's potentially so expensive I just don't
5555 5557 think it's worth doing.
5556 5558
5557 5559 2002-12-19 *** Released version 0.2.14pre50
5558 5560
5559 5561 2002-12-19 Fernando Perez <fperez@colorado.edu>
5560 5562
5561 5563 * tools/release (version): Changed release scripts to inform
5562 5564 Andrea and build a NEWS file with a list of recent changes.
5563 5565
5564 5566 * IPython/ColorANSI.py (__all__): changed terminal detection
5565 5567 code. Seems to work better for xterms without breaking
5566 5568 konsole. Will need more testing to determine if WinXP and Mac OSX
5567 5569 also work ok.
5568 5570
5569 5571 2002-12-18 *** Released version 0.2.14pre49
5570 5572
5571 5573 2002-12-18 Fernando Perez <fperez@colorado.edu>
5572 5574
5573 5575 * Docs: added new info about Mac OSX, from Andrea.
5574 5576
5575 5577 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5576 5578 allow direct plotting of python strings whose format is the same
5577 5579 of gnuplot data files.
5578 5580
5579 5581 2002-12-16 Fernando Perez <fperez@colorado.edu>
5580 5582
5581 5583 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5582 5584 value of exit question to be acknowledged.
5583 5585
5584 5586 2002-12-03 Fernando Perez <fperez@colorado.edu>
5585 5587
5586 5588 * IPython/ipmaker.py: removed generators, which had been added
5587 5589 by mistake in an earlier debugging run. This was causing trouble
5588 5590 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5589 5591 for pointing this out.
5590 5592
5591 5593 2002-11-17 Fernando Perez <fperez@colorado.edu>
5592 5594
5593 5595 * Manual: updated the Gnuplot section.
5594 5596
5595 5597 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5596 5598 a much better split of what goes in Runtime and what goes in
5597 5599 Interactive.
5598 5600
5599 5601 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5600 5602 being imported from iplib.
5601 5603
5602 5604 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5603 5605 for command-passing. Now the global Gnuplot instance is called
5604 5606 'gp' instead of 'g', which was really a far too fragile and
5605 5607 common name.
5606 5608
5607 5609 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5608 5610 bounding boxes generated by Gnuplot for square plots.
5609 5611
5610 5612 * IPython/genutils.py (popkey): new function added. I should
5611 5613 suggest this on c.l.py as a dict method, it seems useful.
5612 5614
5613 5615 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5614 5616 to transparently handle PostScript generation. MUCH better than
5615 5617 the previous plot_eps/replot_eps (which I removed now). The code
5616 5618 is also fairly clean and well documented now (including
5617 5619 docstrings).
5618 5620
5619 5621 2002-11-13 Fernando Perez <fperez@colorado.edu>
5620 5622
5621 5623 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5622 5624 (inconsistent with options).
5623 5625
5624 5626 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5625 5627 manually disabled, I don't know why. Fixed it.
5626 5628 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5627 5629 eps output.
5628 5630
5629 5631 2002-11-12 Fernando Perez <fperez@colorado.edu>
5630 5632
5631 5633 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5632 5634 don't propagate up to caller. Fixes crash reported by François
5633 5635 Pinard.
5634 5636
5635 5637 2002-11-09 Fernando Perez <fperez@colorado.edu>
5636 5638
5637 5639 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5638 5640 history file for new users.
5639 5641 (make_IPython): fixed bug where initial install would leave the
5640 5642 user running in the .ipython dir.
5641 5643 (make_IPython): fixed bug where config dir .ipython would be
5642 5644 created regardless of the given -ipythondir option. Thanks to Cory
5643 5645 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5644 5646
5645 5647 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5646 5648 type confirmations. Will need to use it in all of IPython's code
5647 5649 consistently.
5648 5650
5649 5651 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5650 5652 context to print 31 lines instead of the default 5. This will make
5651 5653 the crash reports extremely detailed in case the problem is in
5652 5654 libraries I don't have access to.
5653 5655
5654 5656 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5655 5657 line of defense' code to still crash, but giving users fair
5656 5658 warning. I don't want internal errors to go unreported: if there's
5657 5659 an internal problem, IPython should crash and generate a full
5658 5660 report.
5659 5661
5660 5662 2002-11-08 Fernando Perez <fperez@colorado.edu>
5661 5663
5662 5664 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5663 5665 otherwise uncaught exceptions which can appear if people set
5664 5666 sys.stdout to something badly broken. Thanks to a crash report
5665 5667 from henni-AT-mail.brainbot.com.
5666 5668
5667 5669 2002-11-04 Fernando Perez <fperez@colorado.edu>
5668 5670
5669 5671 * IPython/iplib.py (InteractiveShell.interact): added
5670 5672 __IPYTHON__active to the builtins. It's a flag which goes on when
5671 5673 the interaction starts and goes off again when it stops. This
5672 5674 allows embedding code to detect being inside IPython. Before this
5673 5675 was done via __IPYTHON__, but that only shows that an IPython
5674 5676 instance has been created.
5675 5677
5676 5678 * IPython/Magic.py (Magic.magic_env): I realized that in a
5677 5679 UserDict, instance.data holds the data as a normal dict. So I
5678 5680 modified @env to return os.environ.data instead of rebuilding a
5679 5681 dict by hand.
5680 5682
5681 5683 2002-11-02 Fernando Perez <fperez@colorado.edu>
5682 5684
5683 5685 * IPython/genutils.py (warn): changed so that level 1 prints no
5684 5686 header. Level 2 is now the default (with 'WARNING' header, as
5685 5687 before). I think I tracked all places where changes were needed in
5686 5688 IPython, but outside code using the old level numbering may have
5687 5689 broken.
5688 5690
5689 5691 * IPython/iplib.py (InteractiveShell.runcode): added this to
5690 5692 handle the tracebacks in SystemExit traps correctly. The previous
5691 5693 code (through interact) was printing more of the stack than
5692 5694 necessary, showing IPython internal code to the user.
5693 5695
5694 5696 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5695 5697 default. Now that the default at the confirmation prompt is yes,
5696 5698 it's not so intrusive. François' argument that ipython sessions
5697 5699 tend to be complex enough not to lose them from an accidental C-d,
5698 5700 is a valid one.
5699 5701
5700 5702 * IPython/iplib.py (InteractiveShell.interact): added a
5701 5703 showtraceback() call to the SystemExit trap, and modified the exit
5702 5704 confirmation to have yes as the default.
5703 5705
5704 5706 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5705 5707 this file. It's been gone from the code for a long time, this was
5706 5708 simply leftover junk.
5707 5709
5708 5710 2002-11-01 Fernando Perez <fperez@colorado.edu>
5709 5711
5710 5712 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5711 5713 added. If set, IPython now traps EOF and asks for
5712 5714 confirmation. After a request by François Pinard.
5713 5715
5714 5716 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5715 5717 of @abort, and with a new (better) mechanism for handling the
5716 5718 exceptions.
5717 5719
5718 5720 2002-10-27 Fernando Perez <fperez@colorado.edu>
5719 5721
5720 5722 * IPython/usage.py (__doc__): updated the --help information and
5721 5723 the ipythonrc file to indicate that -log generates
5722 5724 ./ipython.log. Also fixed the corresponding info in @logstart.
5723 5725 This and several other fixes in the manuals thanks to reports by
5724 5726 François Pinard <pinard-AT-iro.umontreal.ca>.
5725 5727
5726 5728 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5727 5729 refer to @logstart (instead of @log, which doesn't exist).
5728 5730
5729 5731 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5730 5732 AttributeError crash. Thanks to Christopher Armstrong
5731 5733 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5732 5734 introduced recently (in 0.2.14pre37) with the fix to the eval
5733 5735 problem mentioned below.
5734 5736
5735 5737 2002-10-17 Fernando Perez <fperez@colorado.edu>
5736 5738
5737 5739 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5738 5740 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5739 5741
5740 5742 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5741 5743 this function to fix a problem reported by Alex Schmolck. He saw
5742 5744 it with list comprehensions and generators, which were getting
5743 5745 called twice. The real problem was an 'eval' call in testing for
5744 5746 automagic which was evaluating the input line silently.
5745 5747
5746 5748 This is a potentially very nasty bug, if the input has side
5747 5749 effects which must not be repeated. The code is much cleaner now,
5748 5750 without any blanket 'except' left and with a regexp test for
5749 5751 actual function names.
5750 5752
5751 5753 But an eval remains, which I'm not fully comfortable with. I just
5752 5754 don't know how to find out if an expression could be a callable in
5753 5755 the user's namespace without doing an eval on the string. However
5754 5756 that string is now much more strictly checked so that no code
5755 5757 slips by, so the eval should only happen for things that can
5756 5758 really be only function/method names.
5757 5759
5758 5760 2002-10-15 Fernando Perez <fperez@colorado.edu>
5759 5761
5760 5762 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5761 5763 OSX information to main manual, removed README_Mac_OSX file from
5762 5764 distribution. Also updated credits for recent additions.
5763 5765
5764 5766 2002-10-10 Fernando Perez <fperez@colorado.edu>
5765 5767
5766 5768 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5767 5769 terminal-related issues. Many thanks to Andrea Riciputi
5768 5770 <andrea.riciputi-AT-libero.it> for writing it.
5769 5771
5770 5772 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5771 5773 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5772 5774
5773 5775 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5774 5776 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5775 5777 <syver-en-AT-online.no> who both submitted patches for this problem.
5776 5778
5777 5779 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5778 5780 global embedding to make sure that things don't overwrite user
5779 5781 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5780 5782
5781 5783 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5782 5784 compatibility. Thanks to Hayden Callow
5783 5785 <h.callow-AT-elec.canterbury.ac.nz>
5784 5786
5785 5787 2002-10-04 Fernando Perez <fperez@colorado.edu>
5786 5788
5787 5789 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5788 5790 Gnuplot.File objects.
5789 5791
5790 5792 2002-07-23 Fernando Perez <fperez@colorado.edu>
5791 5793
5792 5794 * IPython/genutils.py (timing): Added timings() and timing() for
5793 5795 quick access to the most commonly needed data, the execution
5794 5796 times. Old timing() renamed to timings_out().
5795 5797
5796 5798 2002-07-18 Fernando Perez <fperez@colorado.edu>
5797 5799
5798 5800 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5799 5801 bug with nested instances disrupting the parent's tab completion.
5800 5802
5801 5803 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5802 5804 all_completions code to begin the emacs integration.
5803 5805
5804 5806 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5805 5807 argument to allow titling individual arrays when plotting.
5806 5808
5807 5809 2002-07-15 Fernando Perez <fperez@colorado.edu>
5808 5810
5809 5811 * setup.py (make_shortcut): changed to retrieve the value of
5810 5812 'Program Files' directory from the registry (this value changes in
5811 5813 non-english versions of Windows). Thanks to Thomas Fanslau
5812 5814 <tfanslau-AT-gmx.de> for the report.
5813 5815
5814 5816 2002-07-10 Fernando Perez <fperez@colorado.edu>
5815 5817
5816 5818 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5817 5819 a bug in pdb, which crashes if a line with only whitespace is
5818 5820 entered. Bug report submitted to sourceforge.
5819 5821
5820 5822 2002-07-09 Fernando Perez <fperez@colorado.edu>
5821 5823
5822 5824 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5823 5825 reporting exceptions (it's a bug in inspect.py, I just set a
5824 5826 workaround).
5825 5827
5826 5828 2002-07-08 Fernando Perez <fperez@colorado.edu>
5827 5829
5828 5830 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5829 5831 __IPYTHON__ in __builtins__ to show up in user_ns.
5830 5832
5831 5833 2002-07-03 Fernando Perez <fperez@colorado.edu>
5832 5834
5833 5835 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5834 5836 name from @gp_set_instance to @gp_set_default.
5835 5837
5836 5838 * IPython/ipmaker.py (make_IPython): default editor value set to
5837 5839 '0' (a string), to match the rc file. Otherwise will crash when
5838 5840 .strip() is called on it.
5839 5841
5840 5842
5841 5843 2002-06-28 Fernando Perez <fperez@colorado.edu>
5842 5844
5843 5845 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5844 5846 of files in current directory when a file is executed via
5845 5847 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5846 5848
5847 5849 * setup.py (manfiles): fix for rpm builds, submitted by RA
5848 5850 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5849 5851
5850 5852 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5851 5853 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5852 5854 string!). A. Schmolck caught this one.
5853 5855
5854 5856 2002-06-27 Fernando Perez <fperez@colorado.edu>
5855 5857
5856 5858 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5857 5859 defined files at the cmd line. __name__ wasn't being set to
5858 5860 __main__.
5859 5861
5860 5862 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5861 5863 regular lists and tuples besides Numeric arrays.
5862 5864
5863 5865 * IPython/Prompts.py (CachedOutput.__call__): Added output
5864 5866 supression for input ending with ';'. Similar to Mathematica and
5865 5867 Matlab. The _* vars and Out[] list are still updated, just like
5866 5868 Mathematica behaves.
5867 5869
5868 5870 2002-06-25 Fernando Perez <fperez@colorado.edu>
5869 5871
5870 5872 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5871 5873 .ini extensions for profiels under Windows.
5872 5874
5873 5875 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5874 5876 string form. Fix contributed by Alexander Schmolck
5875 5877 <a.schmolck-AT-gmx.net>
5876 5878
5877 5879 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5878 5880 pre-configured Gnuplot instance.
5879 5881
5880 5882 2002-06-21 Fernando Perez <fperez@colorado.edu>
5881 5883
5882 5884 * IPython/numutils.py (exp_safe): new function, works around the
5883 5885 underflow problems in Numeric.
5884 5886 (log2): New fn. Safe log in base 2: returns exact integer answer
5885 5887 for exact integer powers of 2.
5886 5888
5887 5889 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5888 5890 properly.
5889 5891
5890 5892 2002-06-20 Fernando Perez <fperez@colorado.edu>
5891 5893
5892 5894 * IPython/genutils.py (timing): new function like
5893 5895 Mathematica's. Similar to time_test, but returns more info.
5894 5896
5895 5897 2002-06-18 Fernando Perez <fperez@colorado.edu>
5896 5898
5897 5899 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5898 5900 according to Mike Heeter's suggestions.
5899 5901
5900 5902 2002-06-16 Fernando Perez <fperez@colorado.edu>
5901 5903
5902 5904 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5903 5905 system. GnuplotMagic is gone as a user-directory option. New files
5904 5906 make it easier to use all the gnuplot stuff both from external
5905 5907 programs as well as from IPython. Had to rewrite part of
5906 5908 hardcopy() b/c of a strange bug: often the ps files simply don't
5907 5909 get created, and require a repeat of the command (often several
5908 5910 times).
5909 5911
5910 5912 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5911 5913 resolve output channel at call time, so that if sys.stderr has
5912 5914 been redirected by user this gets honored.
5913 5915
5914 5916 2002-06-13 Fernando Perez <fperez@colorado.edu>
5915 5917
5916 5918 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5917 5919 IPShell. Kept a copy with the old names to avoid breaking people's
5918 5920 embedded code.
5919 5921
5920 5922 * IPython/ipython: simplified it to the bare minimum after
5921 5923 Holger's suggestions. Added info about how to use it in
5922 5924 PYTHONSTARTUP.
5923 5925
5924 5926 * IPython/Shell.py (IPythonShell): changed the options passing
5925 5927 from a string with funky %s replacements to a straight list. Maybe
5926 5928 a bit more typing, but it follows sys.argv conventions, so there's
5927 5929 less special-casing to remember.
5928 5930
5929 5931 2002-06-12 Fernando Perez <fperez@colorado.edu>
5930 5932
5931 5933 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5932 5934 command. Thanks to a suggestion by Mike Heeter.
5933 5935 (Magic.magic_pfile): added behavior to look at filenames if given
5934 5936 arg is not a defined object.
5935 5937 (Magic.magic_save): New @save function to save code snippets. Also
5936 5938 a Mike Heeter idea.
5937 5939
5938 5940 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5939 5941 plot() and replot(). Much more convenient now, especially for
5940 5942 interactive use.
5941 5943
5942 5944 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5943 5945 filenames.
5944 5946
5945 5947 2002-06-02 Fernando Perez <fperez@colorado.edu>
5946 5948
5947 5949 * IPython/Struct.py (Struct.__init__): modified to admit
5948 5950 initialization via another struct.
5949 5951
5950 5952 * IPython/genutils.py (SystemExec.__init__): New stateful
5951 5953 interface to xsys and bq. Useful for writing system scripts.
5952 5954
5953 5955 2002-05-30 Fernando Perez <fperez@colorado.edu>
5954 5956
5955 5957 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5956 5958 documents. This will make the user download smaller (it's getting
5957 5959 too big).
5958 5960
5959 5961 2002-05-29 Fernando Perez <fperez@colorado.edu>
5960 5962
5961 5963 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5962 5964 fix problems with shelve and pickle. Seems to work, but I don't
5963 5965 know if corner cases break it. Thanks to Mike Heeter
5964 5966 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5965 5967
5966 5968 2002-05-24 Fernando Perez <fperez@colorado.edu>
5967 5969
5968 5970 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5969 5971 macros having broken.
5970 5972
5971 5973 2002-05-21 Fernando Perez <fperez@colorado.edu>
5972 5974
5973 5975 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5974 5976 introduced logging bug: all history before logging started was
5975 5977 being written one character per line! This came from the redesign
5976 5978 of the input history as a special list which slices to strings,
5977 5979 not to lists.
5978 5980
5979 5981 2002-05-20 Fernando Perez <fperez@colorado.edu>
5980 5982
5981 5983 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5982 5984 be an attribute of all classes in this module. The design of these
5983 5985 classes needs some serious overhauling.
5984 5986
5985 5987 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5986 5988 which was ignoring '_' in option names.
5987 5989
5988 5990 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5989 5991 'Verbose_novars' to 'Context' and made it the new default. It's a
5990 5992 bit more readable and also safer than verbose.
5991 5993
5992 5994 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5993 5995 triple-quoted strings.
5994 5996
5995 5997 * IPython/OInspect.py (__all__): new module exposing the object
5996 5998 introspection facilities. Now the corresponding magics are dummy
5997 5999 wrappers around this. Having this module will make it much easier
5998 6000 to put these functions into our modified pdb.
5999 6001 This new object inspector system uses the new colorizing module,
6000 6002 so source code and other things are nicely syntax highlighted.
6001 6003
6002 6004 2002-05-18 Fernando Perez <fperez@colorado.edu>
6003 6005
6004 6006 * IPython/ColorANSI.py: Split the coloring tools into a separate
6005 6007 module so I can use them in other code easier (they were part of
6006 6008 ultraTB).
6007 6009
6008 6010 2002-05-17 Fernando Perez <fperez@colorado.edu>
6009 6011
6010 6012 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6011 6013 fixed it to set the global 'g' also to the called instance, as
6012 6014 long as 'g' was still a gnuplot instance (so it doesn't overwrite
6013 6015 user's 'g' variables).
6014 6016
6015 6017 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
6016 6018 global variables (aliases to _ih,_oh) so that users which expect
6017 6019 In[5] or Out[7] to work aren't unpleasantly surprised.
6018 6020 (InputList.__getslice__): new class to allow executing slices of
6019 6021 input history directly. Very simple class, complements the use of
6020 6022 macros.
6021 6023
6022 6024 2002-05-16 Fernando Perez <fperez@colorado.edu>
6023 6025
6024 6026 * setup.py (docdirbase): make doc directory be just doc/IPython
6025 6027 without version numbers, it will reduce clutter for users.
6026 6028
6027 6029 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
6028 6030 execfile call to prevent possible memory leak. See for details:
6029 6031 http://mail.python.org/pipermail/python-list/2002-February/088476.html
6030 6032
6031 6033 2002-05-15 Fernando Perez <fperez@colorado.edu>
6032 6034
6033 6035 * IPython/Magic.py (Magic.magic_psource): made the object
6034 6036 introspection names be more standard: pdoc, pdef, pfile and
6035 6037 psource. They all print/page their output, and it makes
6036 6038 remembering them easier. Kept old names for compatibility as
6037 6039 aliases.
6038 6040
6039 6041 2002-05-14 Fernando Perez <fperez@colorado.edu>
6040 6042
6041 6043 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
6042 6044 what the mouse problem was. The trick is to use gnuplot with temp
6043 6045 files and NOT with pipes (for data communication), because having
6044 6046 both pipes and the mouse on is bad news.
6045 6047
6046 6048 2002-05-13 Fernando Perez <fperez@colorado.edu>
6047 6049
6048 6050 * IPython/Magic.py (Magic._ofind): fixed namespace order search
6049 6051 bug. Information would be reported about builtins even when
6050 6052 user-defined functions overrode them.
6051 6053
6052 6054 2002-05-11 Fernando Perez <fperez@colorado.edu>
6053 6055
6054 6056 * IPython/__init__.py (__all__): removed FlexCompleter from
6055 6057 __all__ so that things don't fail in platforms without readline.
6056 6058
6057 6059 2002-05-10 Fernando Perez <fperez@colorado.edu>
6058 6060
6059 6061 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
6060 6062 it requires Numeric, effectively making Numeric a dependency for
6061 6063 IPython.
6062 6064
6063 6065 * Released 0.2.13
6064 6066
6065 6067 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
6066 6068 profiler interface. Now all the major options from the profiler
6067 6069 module are directly supported in IPython, both for single
6068 6070 expressions (@prun) and for full programs (@run -p).
6069 6071
6070 6072 2002-05-09 Fernando Perez <fperez@colorado.edu>
6071 6073
6072 6074 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
6073 6075 magic properly formatted for screen.
6074 6076
6075 6077 * setup.py (make_shortcut): Changed things to put pdf version in
6076 6078 doc/ instead of doc/manual (had to change lyxport a bit).
6077 6079
6078 6080 * IPython/Magic.py (Profile.string_stats): made profile runs go
6079 6081 through pager (they are long and a pager allows searching, saving,
6080 6082 etc.)
6081 6083
6082 6084 2002-05-08 Fernando Perez <fperez@colorado.edu>
6083 6085
6084 6086 * Released 0.2.12
6085 6087
6086 6088 2002-05-06 Fernando Perez <fperez@colorado.edu>
6087 6089
6088 6090 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
6089 6091 introduced); 'hist n1 n2' was broken.
6090 6092 (Magic.magic_pdb): added optional on/off arguments to @pdb
6091 6093 (Magic.magic_run): added option -i to @run, which executes code in
6092 6094 the IPython namespace instead of a clean one. Also added @irun as
6093 6095 an alias to @run -i.
6094 6096
6095 6097 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6096 6098 fixed (it didn't really do anything, the namespaces were wrong).
6097 6099
6098 6100 * IPython/Debugger.py (__init__): Added workaround for python 2.1
6099 6101
6100 6102 * IPython/__init__.py (__all__): Fixed package namespace, now
6101 6103 'import IPython' does give access to IPython.<all> as
6102 6104 expected. Also renamed __release__ to Release.
6103 6105
6104 6106 * IPython/Debugger.py (__license__): created new Pdb class which
6105 6107 functions like a drop-in for the normal pdb.Pdb but does NOT
6106 6108 import readline by default. This way it doesn't muck up IPython's
6107 6109 readline handling, and now tab-completion finally works in the
6108 6110 debugger -- sort of. It completes things globally visible, but the
6109 6111 completer doesn't track the stack as pdb walks it. That's a bit
6110 6112 tricky, and I'll have to implement it later.
6111 6113
6112 6114 2002-05-05 Fernando Perez <fperez@colorado.edu>
6113 6115
6114 6116 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
6115 6117 magic docstrings when printed via ? (explicit \'s were being
6116 6118 printed).
6117 6119
6118 6120 * IPython/ipmaker.py (make_IPython): fixed namespace
6119 6121 identification bug. Now variables loaded via logs or command-line
6120 6122 files are recognized in the interactive namespace by @who.
6121 6123
6122 6124 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
6123 6125 log replay system stemming from the string form of Structs.
6124 6126
6125 6127 * IPython/Magic.py (Macro.__init__): improved macros to properly
6126 6128 handle magic commands in them.
6127 6129 (Magic.magic_logstart): usernames are now expanded so 'logstart
6128 6130 ~/mylog' now works.
6129 6131
6130 6132 * IPython/iplib.py (complete): fixed bug where paths starting with
6131 6133 '/' would be completed as magic names.
6132 6134
6133 6135 2002-05-04 Fernando Perez <fperez@colorado.edu>
6134 6136
6135 6137 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
6136 6138 allow running full programs under the profiler's control.
6137 6139
6138 6140 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
6139 6141 mode to report exceptions verbosely but without formatting
6140 6142 variables. This addresses the issue of ipython 'freezing' (it's
6141 6143 not frozen, but caught in an expensive formatting loop) when huge
6142 6144 variables are in the context of an exception.
6143 6145 (VerboseTB.text): Added '--->' markers at line where exception was
6144 6146 triggered. Much clearer to read, especially in NoColor modes.
6145 6147
6146 6148 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
6147 6149 implemented in reverse when changing to the new parse_options().
6148 6150
6149 6151 2002-05-03 Fernando Perez <fperez@colorado.edu>
6150 6152
6151 6153 * IPython/Magic.py (Magic.parse_options): new function so that
6152 6154 magics can parse options easier.
6153 6155 (Magic.magic_prun): new function similar to profile.run(),
6154 6156 suggested by Chris Hart.
6155 6157 (Magic.magic_cd): fixed behavior so that it only changes if
6156 6158 directory actually is in history.
6157 6159
6158 6160 * IPython/usage.py (__doc__): added information about potential
6159 6161 slowness of Verbose exception mode when there are huge data
6160 6162 structures to be formatted (thanks to Archie Paulson).
6161 6163
6162 6164 * IPython/ipmaker.py (make_IPython): Changed default logging
6163 6165 (when simply called with -log) to use curr_dir/ipython.log in
6164 6166 rotate mode. Fixed crash which was occuring with -log before
6165 6167 (thanks to Jim Boyle).
6166 6168
6167 6169 2002-05-01 Fernando Perez <fperez@colorado.edu>
6168 6170
6169 6171 * Released 0.2.11 for these fixes (mainly the ultraTB one which
6170 6172 was nasty -- though somewhat of a corner case).
6171 6173
6172 6174 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6173 6175 text (was a bug).
6174 6176
6175 6177 2002-04-30 Fernando Perez <fperez@colorado.edu>
6176 6178
6177 6179 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6178 6180 a print after ^D or ^C from the user so that the In[] prompt
6179 6181 doesn't over-run the gnuplot one.
6180 6182
6181 6183 2002-04-29 Fernando Perez <fperez@colorado.edu>
6182 6184
6183 6185 * Released 0.2.10
6184 6186
6185 6187 * IPython/__release__.py (version): get date dynamically.
6186 6188
6187 6189 * Misc. documentation updates thanks to Arnd's comments. Also ran
6188 6190 a full spellcheck on the manual (hadn't been done in a while).
6189 6191
6190 6192 2002-04-27 Fernando Perez <fperez@colorado.edu>
6191 6193
6192 6194 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6193 6195 starting a log in mid-session would reset the input history list.
6194 6196
6195 6197 2002-04-26 Fernando Perez <fperez@colorado.edu>
6196 6198
6197 6199 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6198 6200 all files were being included in an update. Now anything in
6199 6201 UserConfig that matches [A-Za-z]*.py will go (this excludes
6200 6202 __init__.py)
6201 6203
6202 6204 2002-04-25 Fernando Perez <fperez@colorado.edu>
6203 6205
6204 6206 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6205 6207 to __builtins__ so that any form of embedded or imported code can
6206 6208 test for being inside IPython.
6207 6209
6208 6210 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6209 6211 changed to GnuplotMagic because it's now an importable module,
6210 6212 this makes the name follow that of the standard Gnuplot module.
6211 6213 GnuplotMagic can now be loaded at any time in mid-session.
6212 6214
6213 6215 2002-04-24 Fernando Perez <fperez@colorado.edu>
6214 6216
6215 6217 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6216 6218 the globals (IPython has its own namespace) and the
6217 6219 PhysicalQuantity stuff is much better anyway.
6218 6220
6219 6221 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6220 6222 embedding example to standard user directory for
6221 6223 distribution. Also put it in the manual.
6222 6224
6223 6225 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6224 6226 instance as first argument (so it doesn't rely on some obscure
6225 6227 hidden global).
6226 6228
6227 6229 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6228 6230 delimiters. While it prevents ().TAB from working, it allows
6229 6231 completions in open (... expressions. This is by far a more common
6230 6232 case.
6231 6233
6232 6234 2002-04-23 Fernando Perez <fperez@colorado.edu>
6233 6235
6234 6236 * IPython/Extensions/InterpreterPasteInput.py: new
6235 6237 syntax-processing module for pasting lines with >>> or ... at the
6236 6238 start.
6237 6239
6238 6240 * IPython/Extensions/PhysicalQ_Interactive.py
6239 6241 (PhysicalQuantityInteractive.__int__): fixed to work with either
6240 6242 Numeric or math.
6241 6243
6242 6244 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6243 6245 provided profiles. Now we have:
6244 6246 -math -> math module as * and cmath with its own namespace.
6245 6247 -numeric -> Numeric as *, plus gnuplot & grace
6246 6248 -physics -> same as before
6247 6249
6248 6250 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6249 6251 user-defined magics wouldn't be found by @magic if they were
6250 6252 defined as class methods. Also cleaned up the namespace search
6251 6253 logic and the string building (to use %s instead of many repeated
6252 6254 string adds).
6253 6255
6254 6256 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6255 6257 of user-defined magics to operate with class methods (cleaner, in
6256 6258 line with the gnuplot code).
6257 6259
6258 6260 2002-04-22 Fernando Perez <fperez@colorado.edu>
6259 6261
6260 6262 * setup.py: updated dependency list so that manual is updated when
6261 6263 all included files change.
6262 6264
6263 6265 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6264 6266 the delimiter removal option (the fix is ugly right now).
6265 6267
6266 6268 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6267 6269 all of the math profile (quicker loading, no conflict between
6268 6270 g-9.8 and g-gnuplot).
6269 6271
6270 6272 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6271 6273 name of post-mortem files to IPython_crash_report.txt.
6272 6274
6273 6275 * Cleanup/update of the docs. Added all the new readline info and
6274 6276 formatted all lists as 'real lists'.
6275 6277
6276 6278 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6277 6279 tab-completion options, since the full readline parse_and_bind is
6278 6280 now accessible.
6279 6281
6280 6282 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6281 6283 handling of readline options. Now users can specify any string to
6282 6284 be passed to parse_and_bind(), as well as the delimiters to be
6283 6285 removed.
6284 6286 (InteractiveShell.__init__): Added __name__ to the global
6285 6287 namespace so that things like Itpl which rely on its existence
6286 6288 don't crash.
6287 6289 (InteractiveShell._prefilter): Defined the default with a _ so
6288 6290 that prefilter() is easier to override, while the default one
6289 6291 remains available.
6290 6292
6291 6293 2002-04-18 Fernando Perez <fperez@colorado.edu>
6292 6294
6293 6295 * Added information about pdb in the docs.
6294 6296
6295 6297 2002-04-17 Fernando Perez <fperez@colorado.edu>
6296 6298
6297 6299 * IPython/ipmaker.py (make_IPython): added rc_override option to
6298 6300 allow passing config options at creation time which may override
6299 6301 anything set in the config files or command line. This is
6300 6302 particularly useful for configuring embedded instances.
6301 6303
6302 6304 2002-04-15 Fernando Perez <fperez@colorado.edu>
6303 6305
6304 6306 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6305 6307 crash embedded instances because of the input cache falling out of
6306 6308 sync with the output counter.
6307 6309
6308 6310 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6309 6311 mode which calls pdb after an uncaught exception in IPython itself.
6310 6312
6311 6313 2002-04-14 Fernando Perez <fperez@colorado.edu>
6312 6314
6313 6315 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6314 6316 readline, fix it back after each call.
6315 6317
6316 6318 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6317 6319 method to force all access via __call__(), which guarantees that
6318 6320 traceback references are properly deleted.
6319 6321
6320 6322 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6321 6323 improve printing when pprint is in use.
6322 6324
6323 6325 2002-04-13 Fernando Perez <fperez@colorado.edu>
6324 6326
6325 6327 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6326 6328 exceptions aren't caught anymore. If the user triggers one, he
6327 6329 should know why he's doing it and it should go all the way up,
6328 6330 just like any other exception. So now @abort will fully kill the
6329 6331 embedded interpreter and the embedding code (unless that happens
6330 6332 to catch SystemExit).
6331 6333
6332 6334 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6333 6335 and a debugger() method to invoke the interactive pdb debugger
6334 6336 after printing exception information. Also added the corresponding
6335 6337 -pdb option and @pdb magic to control this feature, and updated
6336 6338 the docs. After a suggestion from Christopher Hart
6337 6339 (hart-AT-caltech.edu).
6338 6340
6339 6341 2002-04-12 Fernando Perez <fperez@colorado.edu>
6340 6342
6341 6343 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6342 6344 the exception handlers defined by the user (not the CrashHandler)
6343 6345 so that user exceptions don't trigger an ipython bug report.
6344 6346
6345 6347 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6346 6348 configurable (it should have always been so).
6347 6349
6348 6350 2002-03-26 Fernando Perez <fperez@colorado.edu>
6349 6351
6350 6352 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6351 6353 and there to fix embedding namespace issues. This should all be
6352 6354 done in a more elegant way.
6353 6355
6354 6356 2002-03-25 Fernando Perez <fperez@colorado.edu>
6355 6357
6356 6358 * IPython/genutils.py (get_home_dir): Try to make it work under
6357 6359 win9x also.
6358 6360
6359 6361 2002-03-20 Fernando Perez <fperez@colorado.edu>
6360 6362
6361 6363 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6362 6364 sys.displayhook untouched upon __init__.
6363 6365
6364 6366 2002-03-19 Fernando Perez <fperez@colorado.edu>
6365 6367
6366 6368 * Released 0.2.9 (for embedding bug, basically).
6367 6369
6368 6370 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6369 6371 exceptions so that enclosing shell's state can be restored.
6370 6372
6371 6373 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6372 6374 naming conventions in the .ipython/ dir.
6373 6375
6374 6376 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6375 6377 from delimiters list so filenames with - in them get expanded.
6376 6378
6377 6379 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6378 6380 sys.displayhook not being properly restored after an embedded call.
6379 6381
6380 6382 2002-03-18 Fernando Perez <fperez@colorado.edu>
6381 6383
6382 6384 * Released 0.2.8
6383 6385
6384 6386 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6385 6387 some files weren't being included in a -upgrade.
6386 6388 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6387 6389 on' so that the first tab completes.
6388 6390 (InteractiveShell.handle_magic): fixed bug with spaces around
6389 6391 quotes breaking many magic commands.
6390 6392
6391 6393 * setup.py: added note about ignoring the syntax error messages at
6392 6394 installation.
6393 6395
6394 6396 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6395 6397 streamlining the gnuplot interface, now there's only one magic @gp.
6396 6398
6397 6399 2002-03-17 Fernando Perez <fperez@colorado.edu>
6398 6400
6399 6401 * IPython/UserConfig/magic_gnuplot.py: new name for the
6400 6402 example-magic_pm.py file. Much enhanced system, now with a shell
6401 6403 for communicating directly with gnuplot, one command at a time.
6402 6404
6403 6405 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6404 6406 setting __name__=='__main__'.
6405 6407
6406 6408 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6407 6409 mini-shell for accessing gnuplot from inside ipython. Should
6408 6410 extend it later for grace access too. Inspired by Arnd's
6409 6411 suggestion.
6410 6412
6411 6413 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6412 6414 calling magic functions with () in their arguments. Thanks to Arnd
6413 6415 Baecker for pointing this to me.
6414 6416
6415 6417 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6416 6418 infinitely for integer or complex arrays (only worked with floats).
6417 6419
6418 6420 2002-03-16 Fernando Perez <fperez@colorado.edu>
6419 6421
6420 6422 * setup.py: Merged setup and setup_windows into a single script
6421 6423 which properly handles things for windows users.
6422 6424
6423 6425 2002-03-15 Fernando Perez <fperez@colorado.edu>
6424 6426
6425 6427 * Big change to the manual: now the magics are all automatically
6426 6428 documented. This information is generated from their docstrings
6427 6429 and put in a latex file included by the manual lyx file. This way
6428 6430 we get always up to date information for the magics. The manual
6429 6431 now also has proper version information, also auto-synced.
6430 6432
6431 6433 For this to work, an undocumented --magic_docstrings option was added.
6432 6434
6433 6435 2002-03-13 Fernando Perez <fperez@colorado.edu>
6434 6436
6435 6437 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6436 6438 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6437 6439
6438 6440 2002-03-12 Fernando Perez <fperez@colorado.edu>
6439 6441
6440 6442 * IPython/ultraTB.py (TermColors): changed color escapes again to
6441 6443 fix the (old, reintroduced) line-wrapping bug. Basically, if
6442 6444 \001..\002 aren't given in the color escapes, lines get wrapped
6443 6445 weirdly. But giving those screws up old xterms and emacs terms. So
6444 6446 I added some logic for emacs terms to be ok, but I can't identify old
6445 6447 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6446 6448
6447 6449 2002-03-10 Fernando Perez <fperez@colorado.edu>
6448 6450
6449 6451 * IPython/usage.py (__doc__): Various documentation cleanups and
6450 6452 updates, both in usage docstrings and in the manual.
6451 6453
6452 6454 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6453 6455 handling of caching. Set minimum acceptabe value for having a
6454 6456 cache at 20 values.
6455 6457
6456 6458 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6457 6459 install_first_time function to a method, renamed it and added an
6458 6460 'upgrade' mode. Now people can update their config directory with
6459 6461 a simple command line switch (-upgrade, also new).
6460 6462
6461 6463 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6462 6464 @file (convenient for automagic users under Python >= 2.2).
6463 6465 Removed @files (it seemed more like a plural than an abbrev. of
6464 6466 'file show').
6465 6467
6466 6468 * IPython/iplib.py (install_first_time): Fixed crash if there were
6467 6469 backup files ('~') in .ipython/ install directory.
6468 6470
6469 6471 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6470 6472 system. Things look fine, but these changes are fairly
6471 6473 intrusive. Test them for a few days.
6472 6474
6473 6475 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6474 6476 the prompts system. Now all in/out prompt strings are user
6475 6477 controllable. This is particularly useful for embedding, as one
6476 6478 can tag embedded instances with particular prompts.
6477 6479
6478 6480 Also removed global use of sys.ps1/2, which now allows nested
6479 6481 embeddings without any problems. Added command-line options for
6480 6482 the prompt strings.
6481 6483
6482 6484 2002-03-08 Fernando Perez <fperez@colorado.edu>
6483 6485
6484 6486 * IPython/UserConfig/example-embed-short.py (ipshell): added
6485 6487 example file with the bare minimum code for embedding.
6486 6488
6487 6489 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6488 6490 functionality for the embeddable shell to be activated/deactivated
6489 6491 either globally or at each call.
6490 6492
6491 6493 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6492 6494 rewriting the prompt with '--->' for auto-inputs with proper
6493 6495 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6494 6496 this is handled by the prompts class itself, as it should.
6495 6497
6496 6498 2002-03-05 Fernando Perez <fperez@colorado.edu>
6497 6499
6498 6500 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6499 6501 @logstart to avoid name clashes with the math log function.
6500 6502
6501 6503 * Big updates to X/Emacs section of the manual.
6502 6504
6503 6505 * Removed ipython_emacs. Milan explained to me how to pass
6504 6506 arguments to ipython through Emacs. Some day I'm going to end up
6505 6507 learning some lisp...
6506 6508
6507 6509 2002-03-04 Fernando Perez <fperez@colorado.edu>
6508 6510
6509 6511 * IPython/ipython_emacs: Created script to be used as the
6510 6512 py-python-command Emacs variable so we can pass IPython
6511 6513 parameters. I can't figure out how to tell Emacs directly to pass
6512 6514 parameters to IPython, so a dummy shell script will do it.
6513 6515
6514 6516 Other enhancements made for things to work better under Emacs'
6515 6517 various types of terminals. Many thanks to Milan Zamazal
6516 6518 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6517 6519
6518 6520 2002-03-01 Fernando Perez <fperez@colorado.edu>
6519 6521
6520 6522 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6521 6523 that loading of readline is now optional. This gives better
6522 6524 control to emacs users.
6523 6525
6524 6526 * IPython/ultraTB.py (__date__): Modified color escape sequences
6525 6527 and now things work fine under xterm and in Emacs' term buffers
6526 6528 (though not shell ones). Well, in emacs you get colors, but all
6527 6529 seem to be 'light' colors (no difference between dark and light
6528 6530 ones). But the garbage chars are gone, and also in xterms. It
6529 6531 seems that now I'm using 'cleaner' ansi sequences.
6530 6532
6531 6533 2002-02-21 Fernando Perez <fperez@colorado.edu>
6532 6534
6533 6535 * Released 0.2.7 (mainly to publish the scoping fix).
6534 6536
6535 6537 * IPython/Logger.py (Logger.logstate): added. A corresponding
6536 6538 @logstate magic was created.
6537 6539
6538 6540 * IPython/Magic.py: fixed nested scoping problem under Python
6539 6541 2.1.x (automagic wasn't working).
6540 6542
6541 6543 2002-02-20 Fernando Perez <fperez@colorado.edu>
6542 6544
6543 6545 * Released 0.2.6.
6544 6546
6545 6547 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6546 6548 option so that logs can come out without any headers at all.
6547 6549
6548 6550 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6549 6551 SciPy.
6550 6552
6551 6553 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6552 6554 that embedded IPython calls don't require vars() to be explicitly
6553 6555 passed. Now they are extracted from the caller's frame (code
6554 6556 snatched from Eric Jones' weave). Added better documentation to
6555 6557 the section on embedding and the example file.
6556 6558
6557 6559 * IPython/genutils.py (page): Changed so that under emacs, it just
6558 6560 prints the string. You can then page up and down in the emacs
6559 6561 buffer itself. This is how the builtin help() works.
6560 6562
6561 6563 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6562 6564 macro scoping: macros need to be executed in the user's namespace
6563 6565 to work as if they had been typed by the user.
6564 6566
6565 6567 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6566 6568 execute automatically (no need to type 'exec...'). They then
6567 6569 behave like 'true macros'. The printing system was also modified
6568 6570 for this to work.
6569 6571
6570 6572 2002-02-19 Fernando Perez <fperez@colorado.edu>
6571 6573
6572 6574 * IPython/genutils.py (page_file): new function for paging files
6573 6575 in an OS-independent way. Also necessary for file viewing to work
6574 6576 well inside Emacs buffers.
6575 6577 (page): Added checks for being in an emacs buffer.
6576 6578 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6577 6579 same bug in iplib.
6578 6580
6579 6581 2002-02-18 Fernando Perez <fperez@colorado.edu>
6580 6582
6581 6583 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6582 6584 of readline so that IPython can work inside an Emacs buffer.
6583 6585
6584 6586 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6585 6587 method signatures (they weren't really bugs, but it looks cleaner
6586 6588 and keeps PyChecker happy).
6587 6589
6588 6590 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6589 6591 for implementing various user-defined hooks. Currently only
6590 6592 display is done.
6591 6593
6592 6594 * IPython/Prompts.py (CachedOutput._display): changed display
6593 6595 functions so that they can be dynamically changed by users easily.
6594 6596
6595 6597 * IPython/Extensions/numeric_formats.py (num_display): added an
6596 6598 extension for printing NumPy arrays in flexible manners. It
6597 6599 doesn't do anything yet, but all the structure is in
6598 6600 place. Ultimately the plan is to implement output format control
6599 6601 like in Octave.
6600 6602
6601 6603 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6602 6604 methods are found at run-time by all the automatic machinery.
6603 6605
6604 6606 2002-02-17 Fernando Perez <fperez@colorado.edu>
6605 6607
6606 6608 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6607 6609 whole file a little.
6608 6610
6609 6611 * ToDo: closed this document. Now there's a new_design.lyx
6610 6612 document for all new ideas. Added making a pdf of it for the
6611 6613 end-user distro.
6612 6614
6613 6615 * IPython/Logger.py (Logger.switch_log): Created this to replace
6614 6616 logon() and logoff(). It also fixes a nasty crash reported by
6615 6617 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6616 6618
6617 6619 * IPython/iplib.py (complete): got auto-completion to work with
6618 6620 automagic (I had wanted this for a long time).
6619 6621
6620 6622 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6621 6623 to @file, since file() is now a builtin and clashes with automagic
6622 6624 for @file.
6623 6625
6624 6626 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6625 6627 of this was previously in iplib, which had grown to more than 2000
6626 6628 lines, way too long. No new functionality, but it makes managing
6627 6629 the code a bit easier.
6628 6630
6629 6631 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6630 6632 information to crash reports.
6631 6633
6632 6634 2002-02-12 Fernando Perez <fperez@colorado.edu>
6633 6635
6634 6636 * Released 0.2.5.
6635 6637
6636 6638 2002-02-11 Fernando Perez <fperez@colorado.edu>
6637 6639
6638 6640 * Wrote a relatively complete Windows installer. It puts
6639 6641 everything in place, creates Start Menu entries and fixes the
6640 6642 color issues. Nothing fancy, but it works.
6641 6643
6642 6644 2002-02-10 Fernando Perez <fperez@colorado.edu>
6643 6645
6644 6646 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6645 6647 os.path.expanduser() call so that we can type @run ~/myfile.py and
6646 6648 have thigs work as expected.
6647 6649
6648 6650 * IPython/genutils.py (page): fixed exception handling so things
6649 6651 work both in Unix and Windows correctly. Quitting a pager triggers
6650 6652 an IOError/broken pipe in Unix, and in windows not finding a pager
6651 6653 is also an IOError, so I had to actually look at the return value
6652 6654 of the exception, not just the exception itself. Should be ok now.
6653 6655
6654 6656 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6655 6657 modified to allow case-insensitive color scheme changes.
6656 6658
6657 6659 2002-02-09 Fernando Perez <fperez@colorado.edu>
6658 6660
6659 6661 * IPython/genutils.py (native_line_ends): new function to leave
6660 6662 user config files with os-native line-endings.
6661 6663
6662 6664 * README and manual updates.
6663 6665
6664 6666 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6665 6667 instead of StringType to catch Unicode strings.
6666 6668
6667 6669 * IPython/genutils.py (filefind): fixed bug for paths with
6668 6670 embedded spaces (very common in Windows).
6669 6671
6670 6672 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6671 6673 files under Windows, so that they get automatically associated
6672 6674 with a text editor. Windows makes it a pain to handle
6673 6675 extension-less files.
6674 6676
6675 6677 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6676 6678 warning about readline only occur for Posix. In Windows there's no
6677 6679 way to get readline, so why bother with the warning.
6678 6680
6679 6681 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6680 6682 for __str__ instead of dir(self), since dir() changed in 2.2.
6681 6683
6682 6684 * Ported to Windows! Tested on XP, I suspect it should work fine
6683 6685 on NT/2000, but I don't think it will work on 98 et al. That
6684 6686 series of Windows is such a piece of junk anyway that I won't try
6685 6687 porting it there. The XP port was straightforward, showed a few
6686 6688 bugs here and there (fixed all), in particular some string
6687 6689 handling stuff which required considering Unicode strings (which
6688 6690 Windows uses). This is good, but hasn't been too tested :) No
6689 6691 fancy installer yet, I'll put a note in the manual so people at
6690 6692 least make manually a shortcut.
6691 6693
6692 6694 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6693 6695 into a single one, "colors". This now controls both prompt and
6694 6696 exception color schemes, and can be changed both at startup
6695 6697 (either via command-line switches or via ipythonrc files) and at
6696 6698 runtime, with @colors.
6697 6699 (Magic.magic_run): renamed @prun to @run and removed the old
6698 6700 @run. The two were too similar to warrant keeping both.
6699 6701
6700 6702 2002-02-03 Fernando Perez <fperez@colorado.edu>
6701 6703
6702 6704 * IPython/iplib.py (install_first_time): Added comment on how to
6703 6705 configure the color options for first-time users. Put a <return>
6704 6706 request at the end so that small-terminal users get a chance to
6705 6707 read the startup info.
6706 6708
6707 6709 2002-01-23 Fernando Perez <fperez@colorado.edu>
6708 6710
6709 6711 * IPython/iplib.py (CachedOutput.update): Changed output memory
6710 6712 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6711 6713 input history we still use _i. Did this b/c these variable are
6712 6714 very commonly used in interactive work, so the less we need to
6713 6715 type the better off we are.
6714 6716 (Magic.magic_prun): updated @prun to better handle the namespaces
6715 6717 the file will run in, including a fix for __name__ not being set
6716 6718 before.
6717 6719
6718 6720 2002-01-20 Fernando Perez <fperez@colorado.edu>
6719 6721
6720 6722 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6721 6723 extra garbage for Python 2.2. Need to look more carefully into
6722 6724 this later.
6723 6725
6724 6726 2002-01-19 Fernando Perez <fperez@colorado.edu>
6725 6727
6726 6728 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6727 6729 display SyntaxError exceptions properly formatted when they occur
6728 6730 (they can be triggered by imported code).
6729 6731
6730 6732 2002-01-18 Fernando Perez <fperez@colorado.edu>
6731 6733
6732 6734 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6733 6735 SyntaxError exceptions are reported nicely formatted, instead of
6734 6736 spitting out only offset information as before.
6735 6737 (Magic.magic_prun): Added the @prun function for executing
6736 6738 programs with command line args inside IPython.
6737 6739
6738 6740 2002-01-16 Fernando Perez <fperez@colorado.edu>
6739 6741
6740 6742 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6741 6743 to *not* include the last item given in a range. This brings their
6742 6744 behavior in line with Python's slicing:
6743 6745 a[n1:n2] -> a[n1]...a[n2-1]
6744 6746 It may be a bit less convenient, but I prefer to stick to Python's
6745 6747 conventions *everywhere*, so users never have to wonder.
6746 6748 (Magic.magic_macro): Added @macro function to ease the creation of
6747 6749 macros.
6748 6750
6749 6751 2002-01-05 Fernando Perez <fperez@colorado.edu>
6750 6752
6751 6753 * Released 0.2.4.
6752 6754
6753 6755 * IPython/iplib.py (Magic.magic_pdef):
6754 6756 (InteractiveShell.safe_execfile): report magic lines and error
6755 6757 lines without line numbers so one can easily copy/paste them for
6756 6758 re-execution.
6757 6759
6758 6760 * Updated manual with recent changes.
6759 6761
6760 6762 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6761 6763 docstring printing when class? is called. Very handy for knowing
6762 6764 how to create class instances (as long as __init__ is well
6763 6765 documented, of course :)
6764 6766 (Magic.magic_doc): print both class and constructor docstrings.
6765 6767 (Magic.magic_pdef): give constructor info if passed a class and
6766 6768 __call__ info for callable object instances.
6767 6769
6768 6770 2002-01-04 Fernando Perez <fperez@colorado.edu>
6769 6771
6770 6772 * Made deep_reload() off by default. It doesn't always work
6771 6773 exactly as intended, so it's probably safer to have it off. It's
6772 6774 still available as dreload() anyway, so nothing is lost.
6773 6775
6774 6776 2002-01-02 Fernando Perez <fperez@colorado.edu>
6775 6777
6776 6778 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6777 6779 so I wanted an updated release).
6778 6780
6779 6781 2001-12-27 Fernando Perez <fperez@colorado.edu>
6780 6782
6781 6783 * IPython/iplib.py (InteractiveShell.interact): Added the original
6782 6784 code from 'code.py' for this module in order to change the
6783 6785 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6784 6786 the history cache would break when the user hit Ctrl-C, and
6785 6787 interact() offers no way to add any hooks to it.
6786 6788
6787 6789 2001-12-23 Fernando Perez <fperez@colorado.edu>
6788 6790
6789 6791 * setup.py: added check for 'MANIFEST' before trying to remove
6790 6792 it. Thanks to Sean Reifschneider.
6791 6793
6792 6794 2001-12-22 Fernando Perez <fperez@colorado.edu>
6793 6795
6794 6796 * Released 0.2.2.
6795 6797
6796 6798 * Finished (reasonably) writing the manual. Later will add the
6797 6799 python-standard navigation stylesheets, but for the time being
6798 6800 it's fairly complete. Distribution will include html and pdf
6799 6801 versions.
6800 6802
6801 6803 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6802 6804 (MayaVi author).
6803 6805
6804 6806 2001-12-21 Fernando Perez <fperez@colorado.edu>
6805 6807
6806 6808 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6807 6809 good public release, I think (with the manual and the distutils
6808 6810 installer). The manual can use some work, but that can go
6809 6811 slowly. Otherwise I think it's quite nice for end users. Next
6810 6812 summer, rewrite the guts of it...
6811 6813
6812 6814 * Changed format of ipythonrc files to use whitespace as the
6813 6815 separator instead of an explicit '='. Cleaner.
6814 6816
6815 6817 2001-12-20 Fernando Perez <fperez@colorado.edu>
6816 6818
6817 6819 * Started a manual in LyX. For now it's just a quick merge of the
6818 6820 various internal docstrings and READMEs. Later it may grow into a
6819 6821 nice, full-blown manual.
6820 6822
6821 6823 * Set up a distutils based installer. Installation should now be
6822 6824 trivially simple for end-users.
6823 6825
6824 6826 2001-12-11 Fernando Perez <fperez@colorado.edu>
6825 6827
6826 6828 * Released 0.2.0. First public release, announced it at
6827 6829 comp.lang.python. From now on, just bugfixes...
6828 6830
6829 6831 * Went through all the files, set copyright/license notices and
6830 6832 cleaned up things. Ready for release.
6831 6833
6832 6834 2001-12-10 Fernando Perez <fperez@colorado.edu>
6833 6835
6834 6836 * Changed the first-time installer not to use tarfiles. It's more
6835 6837 robust now and less unix-dependent. Also makes it easier for
6836 6838 people to later upgrade versions.
6837 6839
6838 6840 * Changed @exit to @abort to reflect the fact that it's pretty
6839 6841 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6840 6842 becomes significant only when IPyhton is embedded: in that case,
6841 6843 C-D closes IPython only, but @abort kills the enclosing program
6842 6844 too (unless it had called IPython inside a try catching
6843 6845 SystemExit).
6844 6846
6845 6847 * Created Shell module which exposes the actuall IPython Shell
6846 6848 classes, currently the normal and the embeddable one. This at
6847 6849 least offers a stable interface we won't need to change when
6848 6850 (later) the internals are rewritten. That rewrite will be confined
6849 6851 to iplib and ipmaker, but the Shell interface should remain as is.
6850 6852
6851 6853 * Added embed module which offers an embeddable IPShell object,
6852 6854 useful to fire up IPython *inside* a running program. Great for
6853 6855 debugging or dynamical data analysis.
6854 6856
6855 6857 2001-12-08 Fernando Perez <fperez@colorado.edu>
6856 6858
6857 6859 * Fixed small bug preventing seeing info from methods of defined
6858 6860 objects (incorrect namespace in _ofind()).
6859 6861
6860 6862 * Documentation cleanup. Moved the main usage docstrings to a
6861 6863 separate file, usage.py (cleaner to maintain, and hopefully in the
6862 6864 future some perlpod-like way of producing interactive, man and
6863 6865 html docs out of it will be found).
6864 6866
6865 6867 * Added @profile to see your profile at any time.
6866 6868
6867 6869 * Added @p as an alias for 'print'. It's especially convenient if
6868 6870 using automagic ('p x' prints x).
6869 6871
6870 6872 * Small cleanups and fixes after a pychecker run.
6871 6873
6872 6874 * Changed the @cd command to handle @cd - and @cd -<n> for
6873 6875 visiting any directory in _dh.
6874 6876
6875 6877 * Introduced _dh, a history of visited directories. @dhist prints
6876 6878 it out with numbers.
6877 6879
6878 6880 2001-12-07 Fernando Perez <fperez@colorado.edu>
6879 6881
6880 6882 * Released 0.1.22
6881 6883
6882 6884 * Made initialization a bit more robust against invalid color
6883 6885 options in user input (exit, not traceback-crash).
6884 6886
6885 6887 * Changed the bug crash reporter to write the report only in the
6886 6888 user's .ipython directory. That way IPython won't litter people's
6887 6889 hard disks with crash files all over the place. Also print on
6888 6890 screen the necessary mail command.
6889 6891
6890 6892 * With the new ultraTB, implemented LightBG color scheme for light
6891 6893 background terminals. A lot of people like white backgrounds, so I
6892 6894 guess we should at least give them something readable.
6893 6895
6894 6896 2001-12-06 Fernando Perez <fperez@colorado.edu>
6895 6897
6896 6898 * Modified the structure of ultraTB. Now there's a proper class
6897 6899 for tables of color schemes which allow adding schemes easily and
6898 6900 switching the active scheme without creating a new instance every
6899 6901 time (which was ridiculous). The syntax for creating new schemes
6900 6902 is also cleaner. I think ultraTB is finally done, with a clean
6901 6903 class structure. Names are also much cleaner (now there's proper
6902 6904 color tables, no need for every variable to also have 'color' in
6903 6905 its name).
6904 6906
6905 6907 * Broke down genutils into separate files. Now genutils only
6906 6908 contains utility functions, and classes have been moved to their
6907 6909 own files (they had enough independent functionality to warrant
6908 6910 it): ConfigLoader, OutputTrap, Struct.
6909 6911
6910 6912 2001-12-05 Fernando Perez <fperez@colorado.edu>
6911 6913
6912 6914 * IPython turns 21! Released version 0.1.21, as a candidate for
6913 6915 public consumption. If all goes well, release in a few days.
6914 6916
6915 6917 * Fixed path bug (files in Extensions/ directory wouldn't be found
6916 6918 unless IPython/ was explicitly in sys.path).
6917 6919
6918 6920 * Extended the FlexCompleter class as MagicCompleter to allow
6919 6921 completion of @-starting lines.
6920 6922
6921 6923 * Created __release__.py file as a central repository for release
6922 6924 info that other files can read from.
6923 6925
6924 6926 * Fixed small bug in logging: when logging was turned on in
6925 6927 mid-session, old lines with special meanings (!@?) were being
6926 6928 logged without the prepended comment, which is necessary since
6927 6929 they are not truly valid python syntax. This should make session
6928 6930 restores produce less errors.
6929 6931
6930 6932 * The namespace cleanup forced me to make a FlexCompleter class
6931 6933 which is nothing but a ripoff of rlcompleter, but with selectable
6932 6934 namespace (rlcompleter only works in __main__.__dict__). I'll try
6933 6935 to submit a note to the authors to see if this change can be
6934 6936 incorporated in future rlcompleter releases (Dec.6: done)
6935 6937
6936 6938 * More fixes to namespace handling. It was a mess! Now all
6937 6939 explicit references to __main__.__dict__ are gone (except when
6938 6940 really needed) and everything is handled through the namespace
6939 6941 dicts in the IPython instance. We seem to be getting somewhere
6940 6942 with this, finally...
6941 6943
6942 6944 * Small documentation updates.
6943 6945
6944 6946 * Created the Extensions directory under IPython (with an
6945 6947 __init__.py). Put the PhysicalQ stuff there. This directory should
6946 6948 be used for all special-purpose extensions.
6947 6949
6948 6950 * File renaming:
6949 6951 ipythonlib --> ipmaker
6950 6952 ipplib --> iplib
6951 6953 This makes a bit more sense in terms of what these files actually do.
6952 6954
6953 6955 * Moved all the classes and functions in ipythonlib to ipplib, so
6954 6956 now ipythonlib only has make_IPython(). This will ease up its
6955 6957 splitting in smaller functional chunks later.
6956 6958
6957 6959 * Cleaned up (done, I think) output of @whos. Better column
6958 6960 formatting, and now shows str(var) for as much as it can, which is
6959 6961 typically what one gets with a 'print var'.
6960 6962
6961 6963 2001-12-04 Fernando Perez <fperez@colorado.edu>
6962 6964
6963 6965 * Fixed namespace problems. Now builtin/IPyhton/user names get
6964 6966 properly reported in their namespace. Internal namespace handling
6965 6967 is finally getting decent (not perfect yet, but much better than
6966 6968 the ad-hoc mess we had).
6967 6969
6968 6970 * Removed -exit option. If people just want to run a python
6969 6971 script, that's what the normal interpreter is for. Less
6970 6972 unnecessary options, less chances for bugs.
6971 6973
6972 6974 * Added a crash handler which generates a complete post-mortem if
6973 6975 IPython crashes. This will help a lot in tracking bugs down the
6974 6976 road.
6975 6977
6976 6978 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6977 6979 which were boud to functions being reassigned would bypass the
6978 6980 logger, breaking the sync of _il with the prompt counter. This
6979 6981 would then crash IPython later when a new line was logged.
6980 6982
6981 6983 2001-12-02 Fernando Perez <fperez@colorado.edu>
6982 6984
6983 6985 * Made IPython a package. This means people don't have to clutter
6984 6986 their sys.path with yet another directory. Changed the INSTALL
6985 6987 file accordingly.
6986 6988
6987 6989 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6988 6990 sorts its output (so @who shows it sorted) and @whos formats the
6989 6991 table according to the width of the first column. Nicer, easier to
6990 6992 read. Todo: write a generic table_format() which takes a list of
6991 6993 lists and prints it nicely formatted, with optional row/column
6992 6994 separators and proper padding and justification.
6993 6995
6994 6996 * Released 0.1.20
6995 6997
6996 6998 * Fixed bug in @log which would reverse the inputcache list (a
6997 6999 copy operation was missing).
6998 7000
6999 7001 * Code cleanup. @config was changed to use page(). Better, since
7000 7002 its output is always quite long.
7001 7003
7002 7004 * Itpl is back as a dependency. I was having too many problems
7003 7005 getting the parametric aliases to work reliably, and it's just
7004 7006 easier to code weird string operations with it than playing %()s
7005 7007 games. It's only ~6k, so I don't think it's too big a deal.
7006 7008
7007 7009 * Found (and fixed) a very nasty bug with history. !lines weren't
7008 7010 getting cached, and the out of sync caches would crash
7009 7011 IPython. Fixed it by reorganizing the prefilter/handlers/logger
7010 7012 division of labor a bit better. Bug fixed, cleaner structure.
7011 7013
7012 7014 2001-12-01 Fernando Perez <fperez@colorado.edu>
7013 7015
7014 7016 * Released 0.1.19
7015 7017
7016 7018 * Added option -n to @hist to prevent line number printing. Much
7017 7019 easier to copy/paste code this way.
7018 7020
7019 7021 * Created global _il to hold the input list. Allows easy
7020 7022 re-execution of blocks of code by slicing it (inspired by Janko's
7021 7023 comment on 'macros').
7022 7024
7023 7025 * Small fixes and doc updates.
7024 7026
7025 7027 * Rewrote @history function (was @h). Renamed it to @hist, @h is
7026 7028 much too fragile with automagic. Handles properly multi-line
7027 7029 statements and takes parameters.
7028 7030
7029 7031 2001-11-30 Fernando Perez <fperez@colorado.edu>
7030 7032
7031 7033 * Version 0.1.18 released.
7032 7034
7033 7035 * Fixed nasty namespace bug in initial module imports.
7034 7036
7035 7037 * Added copyright/license notes to all code files (except
7036 7038 DPyGetOpt). For the time being, LGPL. That could change.
7037 7039
7038 7040 * Rewrote a much nicer README, updated INSTALL, cleaned up
7039 7041 ipythonrc-* samples.
7040 7042
7041 7043 * Overall code/documentation cleanup. Basically ready for
7042 7044 release. Only remaining thing: licence decision (LGPL?).
7043 7045
7044 7046 * Converted load_config to a class, ConfigLoader. Now recursion
7045 7047 control is better organized. Doesn't include the same file twice.
7046 7048
7047 7049 2001-11-29 Fernando Perez <fperez@colorado.edu>
7048 7050
7049 7051 * Got input history working. Changed output history variables from
7050 7052 _p to _o so that _i is for input and _o for output. Just cleaner
7051 7053 convention.
7052 7054
7053 7055 * Implemented parametric aliases. This pretty much allows the
7054 7056 alias system to offer full-blown shell convenience, I think.
7055 7057
7056 7058 * Version 0.1.17 released, 0.1.18 opened.
7057 7059
7058 7060 * dot_ipython/ipythonrc (alias): added documentation.
7059 7061 (xcolor): Fixed small bug (xcolors -> xcolor)
7060 7062
7061 7063 * Changed the alias system. Now alias is a magic command to define
7062 7064 aliases just like the shell. Rationale: the builtin magics should
7063 7065 be there for things deeply connected to IPython's
7064 7066 architecture. And this is a much lighter system for what I think
7065 7067 is the really important feature: allowing users to define quickly
7066 7068 magics that will do shell things for them, so they can customize
7067 7069 IPython easily to match their work habits. If someone is really
7068 7070 desperate to have another name for a builtin alias, they can
7069 7071 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
7070 7072 works.
7071 7073
7072 7074 2001-11-28 Fernando Perez <fperez@colorado.edu>
7073 7075
7074 7076 * Changed @file so that it opens the source file at the proper
7075 7077 line. Since it uses less, if your EDITOR environment is
7076 7078 configured, typing v will immediately open your editor of choice
7077 7079 right at the line where the object is defined. Not as quick as
7078 7080 having a direct @edit command, but for all intents and purposes it
7079 7081 works. And I don't have to worry about writing @edit to deal with
7080 7082 all the editors, less does that.
7081 7083
7082 7084 * Version 0.1.16 released, 0.1.17 opened.
7083 7085
7084 7086 * Fixed some nasty bugs in the page/page_dumb combo that could
7085 7087 crash IPython.
7086 7088
7087 7089 2001-11-27 Fernando Perez <fperez@colorado.edu>
7088 7090
7089 7091 * Version 0.1.15 released, 0.1.16 opened.
7090 7092
7091 7093 * Finally got ? and ?? to work for undefined things: now it's
7092 7094 possible to type {}.get? and get information about the get method
7093 7095 of dicts, or os.path? even if only os is defined (so technically
7094 7096 os.path isn't). Works at any level. For example, after import os,
7095 7097 os?, os.path?, os.path.abspath? all work. This is great, took some
7096 7098 work in _ofind.
7097 7099
7098 7100 * Fixed more bugs with logging. The sanest way to do it was to add
7099 7101 to @log a 'mode' parameter. Killed two in one shot (this mode
7100 7102 option was a request of Janko's). I think it's finally clean
7101 7103 (famous last words).
7102 7104
7103 7105 * Added a page_dumb() pager which does a decent job of paging on
7104 7106 screen, if better things (like less) aren't available. One less
7105 7107 unix dependency (someday maybe somebody will port this to
7106 7108 windows).
7107 7109
7108 7110 * Fixed problem in magic_log: would lock of logging out if log
7109 7111 creation failed (because it would still think it had succeeded).
7110 7112
7111 7113 * Improved the page() function using curses to auto-detect screen
7112 7114 size. Now it can make a much better decision on whether to print
7113 7115 or page a string. Option screen_length was modified: a value 0
7114 7116 means auto-detect, and that's the default now.
7115 7117
7116 7118 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
7117 7119 go out. I'll test it for a few days, then talk to Janko about
7118 7120 licences and announce it.
7119 7121
7120 7122 * Fixed the length of the auto-generated ---> prompt which appears
7121 7123 for auto-parens and auto-quotes. Getting this right isn't trivial,
7122 7124 with all the color escapes, different prompt types and optional
7123 7125 separators. But it seems to be working in all the combinations.
7124 7126
7125 7127 2001-11-26 Fernando Perez <fperez@colorado.edu>
7126 7128
7127 7129 * Wrote a regexp filter to get option types from the option names
7128 7130 string. This eliminates the need to manually keep two duplicate
7129 7131 lists.
7130 7132
7131 7133 * Removed the unneeded check_option_names. Now options are handled
7132 7134 in a much saner manner and it's easy to visually check that things
7133 7135 are ok.
7134 7136
7135 7137 * Updated version numbers on all files I modified to carry a
7136 7138 notice so Janko and Nathan have clear version markers.
7137 7139
7138 7140 * Updated docstring for ultraTB with my changes. I should send
7139 7141 this to Nathan.
7140 7142
7141 7143 * Lots of small fixes. Ran everything through pychecker again.
7142 7144
7143 7145 * Made loading of deep_reload an cmd line option. If it's not too
7144 7146 kosher, now people can just disable it. With -nodeep_reload it's
7145 7147 still available as dreload(), it just won't overwrite reload().
7146 7148
7147 7149 * Moved many options to the no| form (-opt and -noopt
7148 7150 accepted). Cleaner.
7149 7151
7150 7152 * Changed magic_log so that if called with no parameters, it uses
7151 7153 'rotate' mode. That way auto-generated logs aren't automatically
7152 7154 over-written. For normal logs, now a backup is made if it exists
7153 7155 (only 1 level of backups). A new 'backup' mode was added to the
7154 7156 Logger class to support this. This was a request by Janko.
7155 7157
7156 7158 * Added @logoff/@logon to stop/restart an active log.
7157 7159
7158 7160 * Fixed a lot of bugs in log saving/replay. It was pretty
7159 7161 broken. Now special lines (!@,/) appear properly in the command
7160 7162 history after a log replay.
7161 7163
7162 7164 * Tried and failed to implement full session saving via pickle. My
7163 7165 idea was to pickle __main__.__dict__, but modules can't be
7164 7166 pickled. This would be a better alternative to replaying logs, but
7165 7167 seems quite tricky to get to work. Changed -session to be called
7166 7168 -logplay, which more accurately reflects what it does. And if we
7167 7169 ever get real session saving working, -session is now available.
7168 7170
7169 7171 * Implemented color schemes for prompts also. As for tracebacks,
7170 7172 currently only NoColor and Linux are supported. But now the
7171 7173 infrastructure is in place, based on a generic ColorScheme
7172 7174 class. So writing and activating new schemes both for the prompts
7173 7175 and the tracebacks should be straightforward.
7174 7176
7175 7177 * Version 0.1.13 released, 0.1.14 opened.
7176 7178
7177 7179 * Changed handling of options for output cache. Now counter is
7178 7180 hardwired starting at 1 and one specifies the maximum number of
7179 7181 entries *in the outcache* (not the max prompt counter). This is
7180 7182 much better, since many statements won't increase the cache
7181 7183 count. It also eliminated some confusing options, now there's only
7182 7184 one: cache_size.
7183 7185
7184 7186 * Added 'alias' magic function and magic_alias option in the
7185 7187 ipythonrc file. Now the user can easily define whatever names he
7186 7188 wants for the magic functions without having to play weird
7187 7189 namespace games. This gives IPython a real shell-like feel.
7188 7190
7189 7191 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7190 7192 @ or not).
7191 7193
7192 7194 This was one of the last remaining 'visible' bugs (that I know
7193 7195 of). I think if I can clean up the session loading so it works
7194 7196 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7195 7197 about licensing).
7196 7198
7197 7199 2001-11-25 Fernando Perez <fperez@colorado.edu>
7198 7200
7199 7201 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7200 7202 there's a cleaner distinction between what ? and ?? show.
7201 7203
7202 7204 * Added screen_length option. Now the user can define his own
7203 7205 screen size for page() operations.
7204 7206
7205 7207 * Implemented magic shell-like functions with automatic code
7206 7208 generation. Now adding another function is just a matter of adding
7207 7209 an entry to a dict, and the function is dynamically generated at
7208 7210 run-time. Python has some really cool features!
7209 7211
7210 7212 * Renamed many options to cleanup conventions a little. Now all
7211 7213 are lowercase, and only underscores where needed. Also in the code
7212 7214 option name tables are clearer.
7213 7215
7214 7216 * Changed prompts a little. Now input is 'In [n]:' instead of
7215 7217 'In[n]:='. This allows it the numbers to be aligned with the
7216 7218 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7217 7219 Python (it was a Mathematica thing). The '...' continuation prompt
7218 7220 was also changed a little to align better.
7219 7221
7220 7222 * Fixed bug when flushing output cache. Not all _p<n> variables
7221 7223 exist, so their deletion needs to be wrapped in a try:
7222 7224
7223 7225 * Figured out how to properly use inspect.formatargspec() (it
7224 7226 requires the args preceded by *). So I removed all the code from
7225 7227 _get_pdef in Magic, which was just replicating that.
7226 7228
7227 7229 * Added test to prefilter to allow redefining magic function names
7228 7230 as variables. This is ok, since the @ form is always available,
7229 7231 but whe should allow the user to define a variable called 'ls' if
7230 7232 he needs it.
7231 7233
7232 7234 * Moved the ToDo information from README into a separate ToDo.
7233 7235
7234 7236 * General code cleanup and small bugfixes. I think it's close to a
7235 7237 state where it can be released, obviously with a big 'beta'
7236 7238 warning on it.
7237 7239
7238 7240 * Got the magic function split to work. Now all magics are defined
7239 7241 in a separate class. It just organizes things a bit, and now
7240 7242 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7241 7243 was too long).
7242 7244
7243 7245 * Changed @clear to @reset to avoid potential confusions with
7244 7246 the shell command clear. Also renamed @cl to @clear, which does
7245 7247 exactly what people expect it to from their shell experience.
7246 7248
7247 7249 Added a check to the @reset command (since it's so
7248 7250 destructive, it's probably a good idea to ask for confirmation).
7249 7251 But now reset only works for full namespace resetting. Since the
7250 7252 del keyword is already there for deleting a few specific
7251 7253 variables, I don't see the point of having a redundant magic
7252 7254 function for the same task.
7253 7255
7254 7256 2001-11-24 Fernando Perez <fperez@colorado.edu>
7255 7257
7256 7258 * Updated the builtin docs (esp. the ? ones).
7257 7259
7258 7260 * Ran all the code through pychecker. Not terribly impressed with
7259 7261 it: lots of spurious warnings and didn't really find anything of
7260 7262 substance (just a few modules being imported and not used).
7261 7263
7262 7264 * Implemented the new ultraTB functionality into IPython. New
7263 7265 option: xcolors. This chooses color scheme. xmode now only selects
7264 7266 between Plain and Verbose. Better orthogonality.
7265 7267
7266 7268 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7267 7269 mode and color scheme for the exception handlers. Now it's
7268 7270 possible to have the verbose traceback with no coloring.
7269 7271
7270 7272 2001-11-23 Fernando Perez <fperez@colorado.edu>
7271 7273
7272 7274 * Version 0.1.12 released, 0.1.13 opened.
7273 7275
7274 7276 * Removed option to set auto-quote and auto-paren escapes by
7275 7277 user. The chances of breaking valid syntax are just too high. If
7276 7278 someone *really* wants, they can always dig into the code.
7277 7279
7278 7280 * Made prompt separators configurable.
7279 7281
7280 7282 2001-11-22 Fernando Perez <fperez@colorado.edu>
7281 7283
7282 7284 * Small bugfixes in many places.
7283 7285
7284 7286 * Removed the MyCompleter class from ipplib. It seemed redundant
7285 7287 with the C-p,C-n history search functionality. Less code to
7286 7288 maintain.
7287 7289
7288 7290 * Moved all the original ipython.py code into ipythonlib.py. Right
7289 7291 now it's just one big dump into a function called make_IPython, so
7290 7292 no real modularity has been gained. But at least it makes the
7291 7293 wrapper script tiny, and since ipythonlib is a module, it gets
7292 7294 compiled and startup is much faster.
7293 7295
7294 7296 This is a reasobably 'deep' change, so we should test it for a
7295 7297 while without messing too much more with the code.
7296 7298
7297 7299 2001-11-21 Fernando Perez <fperez@colorado.edu>
7298 7300
7299 7301 * Version 0.1.11 released, 0.1.12 opened for further work.
7300 7302
7301 7303 * Removed dependency on Itpl. It was only needed in one place. It
7302 7304 would be nice if this became part of python, though. It makes life
7303 7305 *a lot* easier in some cases.
7304 7306
7305 7307 * Simplified the prefilter code a bit. Now all handlers are
7306 7308 expected to explicitly return a value (at least a blank string).
7307 7309
7308 7310 * Heavy edits in ipplib. Removed the help system altogether. Now
7309 7311 obj?/?? is used for inspecting objects, a magic @doc prints
7310 7312 docstrings, and full-blown Python help is accessed via the 'help'
7311 7313 keyword. This cleans up a lot of code (less to maintain) and does
7312 7314 the job. Since 'help' is now a standard Python component, might as
7313 7315 well use it and remove duplicate functionality.
7314 7316
7315 7317 Also removed the option to use ipplib as a standalone program. By
7316 7318 now it's too dependent on other parts of IPython to function alone.
7317 7319
7318 7320 * Fixed bug in genutils.pager. It would crash if the pager was
7319 7321 exited immediately after opening (broken pipe).
7320 7322
7321 7323 * Trimmed down the VerboseTB reporting a little. The header is
7322 7324 much shorter now and the repeated exception arguments at the end
7323 7325 have been removed. For interactive use the old header seemed a bit
7324 7326 excessive.
7325 7327
7326 7328 * Fixed small bug in output of @whos for variables with multi-word
7327 7329 types (only first word was displayed).
7328 7330
7329 7331 2001-11-17 Fernando Perez <fperez@colorado.edu>
7330 7332
7331 7333 * Version 0.1.10 released, 0.1.11 opened for further work.
7332 7334
7333 7335 * Modified dirs and friends. dirs now *returns* the stack (not
7334 7336 prints), so one can manipulate it as a variable. Convenient to
7335 7337 travel along many directories.
7336 7338
7337 7339 * Fixed bug in magic_pdef: would only work with functions with
7338 7340 arguments with default values.
7339 7341
7340 7342 2001-11-14 Fernando Perez <fperez@colorado.edu>
7341 7343
7342 7344 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7343 7345 example with IPython. Various other minor fixes and cleanups.
7344 7346
7345 7347 * Version 0.1.9 released, 0.1.10 opened for further work.
7346 7348
7347 7349 * Added sys.path to the list of directories searched in the
7348 7350 execfile= option. It used to be the current directory and the
7349 7351 user's IPYTHONDIR only.
7350 7352
7351 7353 2001-11-13 Fernando Perez <fperez@colorado.edu>
7352 7354
7353 7355 * Reinstated the raw_input/prefilter separation that Janko had
7354 7356 initially. This gives a more convenient setup for extending the
7355 7357 pre-processor from the outside: raw_input always gets a string,
7356 7358 and prefilter has to process it. We can then redefine prefilter
7357 7359 from the outside and implement extensions for special
7358 7360 purposes.
7359 7361
7360 7362 Today I got one for inputting PhysicalQuantity objects
7361 7363 (from Scientific) without needing any function calls at
7362 7364 all. Extremely convenient, and it's all done as a user-level
7363 7365 extension (no IPython code was touched). Now instead of:
7364 7366 a = PhysicalQuantity(4.2,'m/s**2')
7365 7367 one can simply say
7366 7368 a = 4.2 m/s**2
7367 7369 or even
7368 7370 a = 4.2 m/s^2
7369 7371
7370 7372 I use this, but it's also a proof of concept: IPython really is
7371 7373 fully user-extensible, even at the level of the parsing of the
7372 7374 command line. It's not trivial, but it's perfectly doable.
7373 7375
7374 7376 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7375 7377 the problem of modules being loaded in the inverse order in which
7376 7378 they were defined in
7377 7379
7378 7380 * Version 0.1.8 released, 0.1.9 opened for further work.
7379 7381
7380 7382 * Added magics pdef, source and file. They respectively show the
7381 7383 definition line ('prototype' in C), source code and full python
7382 7384 file for any callable object. The object inspector oinfo uses
7383 7385 these to show the same information.
7384 7386
7385 7387 * Version 0.1.7 released, 0.1.8 opened for further work.
7386 7388
7387 7389 * Separated all the magic functions into a class called Magic. The
7388 7390 InteractiveShell class was becoming too big for Xemacs to handle
7389 7391 (de-indenting a line would lock it up for 10 seconds while it
7390 7392 backtracked on the whole class!)
7391 7393
7392 7394 FIXME: didn't work. It can be done, but right now namespaces are
7393 7395 all messed up. Do it later (reverted it for now, so at least
7394 7396 everything works as before).
7395 7397
7396 7398 * Got the object introspection system (magic_oinfo) working! I
7397 7399 think this is pretty much ready for release to Janko, so he can
7398 7400 test it for a while and then announce it. Pretty much 100% of what
7399 7401 I wanted for the 'phase 1' release is ready. Happy, tired.
7400 7402
7401 7403 2001-11-12 Fernando Perez <fperez@colorado.edu>
7402 7404
7403 7405 * Version 0.1.6 released, 0.1.7 opened for further work.
7404 7406
7405 7407 * Fixed bug in printing: it used to test for truth before
7406 7408 printing, so 0 wouldn't print. Now checks for None.
7407 7409
7408 7410 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7409 7411 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7410 7412 reaches by hand into the outputcache. Think of a better way to do
7411 7413 this later.
7412 7414
7413 7415 * Various small fixes thanks to Nathan's comments.
7414 7416
7415 7417 * Changed magic_pprint to magic_Pprint. This way it doesn't
7416 7418 collide with pprint() and the name is consistent with the command
7417 7419 line option.
7418 7420
7419 7421 * Changed prompt counter behavior to be fully like
7420 7422 Mathematica's. That is, even input that doesn't return a result
7421 7423 raises the prompt counter. The old behavior was kind of confusing
7422 7424 (getting the same prompt number several times if the operation
7423 7425 didn't return a result).
7424 7426
7425 7427 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7426 7428
7427 7429 * Fixed -Classic mode (wasn't working anymore).
7428 7430
7429 7431 * Added colored prompts using Nathan's new code. Colors are
7430 7432 currently hardwired, they can be user-configurable. For
7431 7433 developers, they can be chosen in file ipythonlib.py, at the
7432 7434 beginning of the CachedOutput class def.
7433 7435
7434 7436 2001-11-11 Fernando Perez <fperez@colorado.edu>
7435 7437
7436 7438 * Version 0.1.5 released, 0.1.6 opened for further work.
7437 7439
7438 7440 * Changed magic_env to *return* the environment as a dict (not to
7439 7441 print it). This way it prints, but it can also be processed.
7440 7442
7441 7443 * Added Verbose exception reporting to interactive
7442 7444 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7443 7445 traceback. Had to make some changes to the ultraTB file. This is
7444 7446 probably the last 'big' thing in my mental todo list. This ties
7445 7447 in with the next entry:
7446 7448
7447 7449 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7448 7450 has to specify is Plain, Color or Verbose for all exception
7449 7451 handling.
7450 7452
7451 7453 * Removed ShellServices option. All this can really be done via
7452 7454 the magic system. It's easier to extend, cleaner and has automatic
7453 7455 namespace protection and documentation.
7454 7456
7455 7457 2001-11-09 Fernando Perez <fperez@colorado.edu>
7456 7458
7457 7459 * Fixed bug in output cache flushing (missing parameter to
7458 7460 __init__). Other small bugs fixed (found using pychecker).
7459 7461
7460 7462 * Version 0.1.4 opened for bugfixing.
7461 7463
7462 7464 2001-11-07 Fernando Perez <fperez@colorado.edu>
7463 7465
7464 7466 * Version 0.1.3 released, mainly because of the raw_input bug.
7465 7467
7466 7468 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7467 7469 and when testing for whether things were callable, a call could
7468 7470 actually be made to certain functions. They would get called again
7469 7471 once 'really' executed, with a resulting double call. A disaster
7470 7472 in many cases (list.reverse() would never work!).
7471 7473
7472 7474 * Removed prefilter() function, moved its code to raw_input (which
7473 7475 after all was just a near-empty caller for prefilter). This saves
7474 7476 a function call on every prompt, and simplifies the class a tiny bit.
7475 7477
7476 7478 * Fix _ip to __ip name in magic example file.
7477 7479
7478 7480 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7479 7481 work with non-gnu versions of tar.
7480 7482
7481 7483 2001-11-06 Fernando Perez <fperez@colorado.edu>
7482 7484
7483 7485 * Version 0.1.2. Just to keep track of the recent changes.
7484 7486
7485 7487 * Fixed nasty bug in output prompt routine. It used to check 'if
7486 7488 arg != None...'. Problem is, this fails if arg implements a
7487 7489 special comparison (__cmp__) which disallows comparing to
7488 7490 None. Found it when trying to use the PhysicalQuantity module from
7489 7491 ScientificPython.
7490 7492
7491 7493 2001-11-05 Fernando Perez <fperez@colorado.edu>
7492 7494
7493 7495 * Also added dirs. Now the pushd/popd/dirs family functions
7494 7496 basically like the shell, with the added convenience of going home
7495 7497 when called with no args.
7496 7498
7497 7499 * pushd/popd slightly modified to mimic shell behavior more
7498 7500 closely.
7499 7501
7500 7502 * Added env,pushd,popd from ShellServices as magic functions. I
7501 7503 think the cleanest will be to port all desired functions from
7502 7504 ShellServices as magics and remove ShellServices altogether. This
7503 7505 will provide a single, clean way of adding functionality
7504 7506 (shell-type or otherwise) to IP.
7505 7507
7506 7508 2001-11-04 Fernando Perez <fperez@colorado.edu>
7507 7509
7508 7510 * Added .ipython/ directory to sys.path. This way users can keep
7509 7511 customizations there and access them via import.
7510 7512
7511 7513 2001-11-03 Fernando Perez <fperez@colorado.edu>
7512 7514
7513 7515 * Opened version 0.1.1 for new changes.
7514 7516
7515 7517 * Changed version number to 0.1.0: first 'public' release, sent to
7516 7518 Nathan and Janko.
7517 7519
7518 7520 * Lots of small fixes and tweaks.
7519 7521
7520 7522 * Minor changes to whos format. Now strings are shown, snipped if
7521 7523 too long.
7522 7524
7523 7525 * Changed ShellServices to work on __main__ so they show up in @who
7524 7526
7525 7527 * Help also works with ? at the end of a line:
7526 7528 ?sin and sin?
7527 7529 both produce the same effect. This is nice, as often I use the
7528 7530 tab-complete to find the name of a method, but I used to then have
7529 7531 to go to the beginning of the line to put a ? if I wanted more
7530 7532 info. Now I can just add the ? and hit return. Convenient.
7531 7533
7532 7534 2001-11-02 Fernando Perez <fperez@colorado.edu>
7533 7535
7534 7536 * Python version check (>=2.1) added.
7535 7537
7536 7538 * Added LazyPython documentation. At this point the docs are quite
7537 7539 a mess. A cleanup is in order.
7538 7540
7539 7541 * Auto-installer created. For some bizarre reason, the zipfiles
7540 7542 module isn't working on my system. So I made a tar version
7541 7543 (hopefully the command line options in various systems won't kill
7542 7544 me).
7543 7545
7544 7546 * Fixes to Struct in genutils. Now all dictionary-like methods are
7545 7547 protected (reasonably).
7546 7548
7547 7549 * Added pager function to genutils and changed ? to print usage
7548 7550 note through it (it was too long).
7549 7551
7550 7552 * Added the LazyPython functionality. Works great! I changed the
7551 7553 auto-quote escape to ';', it's on home row and next to '. But
7552 7554 both auto-quote and auto-paren (still /) escapes are command-line
7553 7555 parameters.
7554 7556
7555 7557
7556 7558 2001-11-01 Fernando Perez <fperez@colorado.edu>
7557 7559
7558 7560 * Version changed to 0.0.7. Fairly large change: configuration now
7559 7561 is all stored in a directory, by default .ipython. There, all
7560 7562 config files have normal looking names (not .names)
7561 7563
7562 7564 * Version 0.0.6 Released first to Lucas and Archie as a test
7563 7565 run. Since it's the first 'semi-public' release, change version to
7564 7566 > 0.0.6 for any changes now.
7565 7567
7566 7568 * Stuff I had put in the ipplib.py changelog:
7567 7569
7568 7570 Changes to InteractiveShell:
7569 7571
7570 7572 - Made the usage message a parameter.
7571 7573
7572 7574 - Require the name of the shell variable to be given. It's a bit
7573 7575 of a hack, but allows the name 'shell' not to be hardwired in the
7574 7576 magic (@) handler, which is problematic b/c it requires
7575 7577 polluting the global namespace with 'shell'. This in turn is
7576 7578 fragile: if a user redefines a variable called shell, things
7577 7579 break.
7578 7580
7579 7581 - magic @: all functions available through @ need to be defined
7580 7582 as magic_<name>, even though they can be called simply as
7581 7583 @<name>. This allows the special command @magic to gather
7582 7584 information automatically about all existing magic functions,
7583 7585 even if they are run-time user extensions, by parsing the shell
7584 7586 instance __dict__ looking for special magic_ names.
7585 7587
7586 7588 - mainloop: added *two* local namespace parameters. This allows
7587 7589 the class to differentiate between parameters which were there
7588 7590 before and after command line initialization was processed. This
7589 7591 way, later @who can show things loaded at startup by the
7590 7592 user. This trick was necessary to make session saving/reloading
7591 7593 really work: ideally after saving/exiting/reloading a session,
7592 7594 *everything* should look the same, including the output of @who. I
7593 7595 was only able to make this work with this double namespace
7594 7596 trick.
7595 7597
7596 7598 - added a header to the logfile which allows (almost) full
7597 7599 session restoring.
7598 7600
7599 7601 - prepend lines beginning with @ or !, with a and log
7600 7602 them. Why? !lines: may be useful to know what you did @lines:
7601 7603 they may affect session state. So when restoring a session, at
7602 7604 least inform the user of their presence. I couldn't quite get
7603 7605 them to properly re-execute, but at least the user is warned.
7604 7606
7605 7607 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now