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