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