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