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