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