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