##// END OF EJS Templates
Fix wx deprecation warning
fperez -
Show More
@@ -1,1040 +1,1046 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """IPython Shell classes.
2 """IPython Shell classes.
3
3
4 All the matplotlib support code was co-developed with John Hunter,
4 All the matplotlib support code was co-developed with John Hunter,
5 matplotlib's author.
5 matplotlib's author.
6
6
7 $Id: Shell.py 2120 2007-02-27 15:48:24Z fperez $"""
7 $Id: Shell.py 2151 2007-03-18 01:17:00Z fperez $"""
8
8
9 #*****************************************************************************
9 #*****************************************************************************
10 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
10 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
11 #
11 #
12 # Distributed under the terms of the BSD License. The full license is in
12 # Distributed under the terms of the BSD License. The full license is in
13 # the file COPYING, distributed as part of this software.
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
14 #*****************************************************************************
15
15
16 from IPython import Release
16 from IPython import Release
17 __author__ = '%s <%s>' % Release.authors['Fernando']
17 __author__ = '%s <%s>' % Release.authors['Fernando']
18 __license__ = Release.license
18 __license__ = Release.license
19
19
20 # Code begins
20 # Code begins
21 import __builtin__
21 import __builtin__
22 import __main__
22 import __main__
23 import Queue
23 import Queue
24 import os
24 import os
25 import signal
25 import signal
26 import sys
26 import sys
27 import threading
27 import threading
28 import time
28 import time
29
29
30 import IPython
30 import IPython
31 from IPython import ultraTB
31 from IPython import ultraTB
32 from IPython.genutils import Term,warn,error,flag_calls
32 from IPython.genutils import Term,warn,error,flag_calls
33 from IPython.iplib import InteractiveShell
33 from IPython.iplib import InteractiveShell
34 from IPython.ipmaker import make_IPython
34 from IPython.ipmaker import make_IPython
35 from IPython.Magic import Magic
35 from IPython.Magic import Magic
36 from IPython.ipstruct import Struct
36 from IPython.ipstruct import Struct
37
37
38 # global flag to pass around information about Ctrl-C without exceptions
38 # global flag to pass around information about Ctrl-C without exceptions
39 KBINT = False
39 KBINT = False
40
40
41 # global flag to turn on/off Tk support.
41 # global flag to turn on/off Tk support.
42 USE_TK = False
42 USE_TK = False
43
43
44 #-----------------------------------------------------------------------------
44 #-----------------------------------------------------------------------------
45 # This class is trivial now, but I want to have it in to publish a clean
45 # This class is trivial now, but I want to have it in to publish a clean
46 # interface. Later when the internals are reorganized, code that uses this
46 # interface. Later when the internals are reorganized, code that uses this
47 # shouldn't have to change.
47 # shouldn't have to change.
48
48
49 class IPShell:
49 class IPShell:
50 """Create an IPython instance."""
50 """Create an IPython instance."""
51
51
52 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
52 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
53 debug=1,shell_class=InteractiveShell):
53 debug=1,shell_class=InteractiveShell):
54 self.IP = make_IPython(argv,user_ns=user_ns,
54 self.IP = make_IPython(argv,user_ns=user_ns,
55 user_global_ns=user_global_ns,
55 user_global_ns=user_global_ns,
56 debug=debug,shell_class=shell_class)
56 debug=debug,shell_class=shell_class)
57
57
58 def mainloop(self,sys_exit=0,banner=None):
58 def mainloop(self,sys_exit=0,banner=None):
59 self.IP.mainloop(banner)
59 self.IP.mainloop(banner)
60 if sys_exit:
60 if sys_exit:
61 sys.exit()
61 sys.exit()
62
62
63 #-----------------------------------------------------------------------------
63 #-----------------------------------------------------------------------------
64 class IPShellEmbed:
64 class IPShellEmbed:
65 """Allow embedding an IPython shell into a running program.
65 """Allow embedding an IPython shell into a running program.
66
66
67 Instances of this class are callable, with the __call__ method being an
67 Instances of this class are callable, with the __call__ method being an
68 alias to the embed() method of an InteractiveShell instance.
68 alias to the embed() method of an InteractiveShell instance.
69
69
70 Usage (see also the example-embed.py file for a running example):
70 Usage (see also the example-embed.py file for a running example):
71
71
72 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
72 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
73
73
74 - argv: list containing valid command-line options for IPython, as they
74 - argv: list containing valid command-line options for IPython, as they
75 would appear in sys.argv[1:].
75 would appear in sys.argv[1:].
76
76
77 For example, the following command-line options:
77 For example, the following command-line options:
78
78
79 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
79 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
80
80
81 would be passed in the argv list as:
81 would be passed in the argv list as:
82
82
83 ['-prompt_in1','Input <\\#>','-colors','LightBG']
83 ['-prompt_in1','Input <\\#>','-colors','LightBG']
84
84
85 - banner: string which gets printed every time the interpreter starts.
85 - banner: string which gets printed every time the interpreter starts.
86
86
87 - exit_msg: string which gets printed every time the interpreter exits.
87 - exit_msg: string which gets printed every time the interpreter exits.
88
88
89 - rc_override: a dict or Struct of configuration options such as those
89 - rc_override: a dict or Struct of configuration options such as those
90 used by IPython. These options are read from your ~/.ipython/ipythonrc
90 used by IPython. These options are read from your ~/.ipython/ipythonrc
91 file when the Shell object is created. Passing an explicit rc_override
91 file when the Shell object is created. Passing an explicit rc_override
92 dict with any options you want allows you to override those values at
92 dict with any options you want allows you to override those values at
93 creation time without having to modify the file. This way you can create
93 creation time without having to modify the file. This way you can create
94 embeddable instances configured in any way you want without editing any
94 embeddable instances configured in any way you want without editing any
95 global files (thus keeping your interactive IPython configuration
95 global files (thus keeping your interactive IPython configuration
96 unchanged).
96 unchanged).
97
97
98 Then the ipshell instance can be called anywhere inside your code:
98 Then the ipshell instance can be called anywhere inside your code:
99
99
100 ipshell(header='') -> Opens up an IPython shell.
100 ipshell(header='') -> Opens up an IPython shell.
101
101
102 - header: string printed by the IPython shell upon startup. This can let
102 - header: string printed by the IPython shell upon startup. This can let
103 you know where in your code you are when dropping into the shell. Note
103 you know where in your code you are when dropping into the shell. Note
104 that 'banner' gets prepended to all calls, so header is used for
104 that 'banner' gets prepended to all calls, so header is used for
105 location-specific information.
105 location-specific information.
106
106
107 For more details, see the __call__ method below.
107 For more details, see the __call__ method below.
108
108
109 When the IPython shell is exited with Ctrl-D, normal program execution
109 When the IPython shell is exited with Ctrl-D, normal program execution
110 resumes.
110 resumes.
111
111
112 This functionality was inspired by a posting on comp.lang.python by cmkl
112 This functionality was inspired by a posting on comp.lang.python by cmkl
113 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
113 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
114 by the IDL stop/continue commands."""
114 by the IDL stop/continue commands."""
115
115
116 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
116 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None,
117 user_ns=None):
117 user_ns=None):
118 """Note that argv here is a string, NOT a list."""
118 """Note that argv here is a string, NOT a list."""
119 self.set_banner(banner)
119 self.set_banner(banner)
120 self.set_exit_msg(exit_msg)
120 self.set_exit_msg(exit_msg)
121 self.set_dummy_mode(0)
121 self.set_dummy_mode(0)
122
122
123 # sys.displayhook is a global, we need to save the user's original
123 # sys.displayhook is a global, we need to save the user's original
124 # Don't rely on __displayhook__, as the user may have changed that.
124 # Don't rely on __displayhook__, as the user may have changed that.
125 self.sys_displayhook_ori = sys.displayhook
125 self.sys_displayhook_ori = sys.displayhook
126
126
127 # save readline completer status
127 # save readline completer status
128 try:
128 try:
129 #print 'Save completer',sys.ipcompleter # dbg
129 #print 'Save completer',sys.ipcompleter # dbg
130 self.sys_ipcompleter_ori = sys.ipcompleter
130 self.sys_ipcompleter_ori = sys.ipcompleter
131 except:
131 except:
132 pass # not nested with IPython
132 pass # not nested with IPython
133
133
134 self.IP = make_IPython(argv,rc_override=rc_override,
134 self.IP = make_IPython(argv,rc_override=rc_override,
135 embedded=True,
135 embedded=True,
136 user_ns=user_ns)
136 user_ns=user_ns)
137
137
138 # copy our own displayhook also
138 # copy our own displayhook also
139 self.sys_displayhook_embed = sys.displayhook
139 self.sys_displayhook_embed = sys.displayhook
140 # and leave the system's display hook clean
140 # and leave the system's display hook clean
141 sys.displayhook = self.sys_displayhook_ori
141 sys.displayhook = self.sys_displayhook_ori
142 # don't use the ipython crash handler so that user exceptions aren't
142 # don't use the ipython crash handler so that user exceptions aren't
143 # trapped
143 # trapped
144 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
144 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
145 mode = self.IP.rc.xmode,
145 mode = self.IP.rc.xmode,
146 call_pdb = self.IP.rc.pdb)
146 call_pdb = self.IP.rc.pdb)
147 self.restore_system_completer()
147 self.restore_system_completer()
148
148
149 def restore_system_completer(self):
149 def restore_system_completer(self):
150 """Restores the readline completer which was in place.
150 """Restores the readline completer which was in place.
151
151
152 This allows embedded IPython within IPython not to disrupt the
152 This allows embedded IPython within IPython not to disrupt the
153 parent's completion.
153 parent's completion.
154 """
154 """
155
155
156 try:
156 try:
157 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
157 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
158 sys.ipcompleter = self.sys_ipcompleter_ori
158 sys.ipcompleter = self.sys_ipcompleter_ori
159 except:
159 except:
160 pass
160 pass
161
161
162 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
162 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
163 """Activate the interactive interpreter.
163 """Activate the interactive interpreter.
164
164
165 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
165 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
166 the interpreter shell with the given local and global namespaces, and
166 the interpreter shell with the given local and global namespaces, and
167 optionally print a header string at startup.
167 optionally print a header string at startup.
168
168
169 The shell can be globally activated/deactivated using the
169 The shell can be globally activated/deactivated using the
170 set/get_dummy_mode methods. This allows you to turn off a shell used
170 set/get_dummy_mode methods. This allows you to turn off a shell used
171 for debugging globally.
171 for debugging globally.
172
172
173 However, *each* time you call the shell you can override the current
173 However, *each* time you call the shell you can override the current
174 state of dummy_mode with the optional keyword parameter 'dummy'. For
174 state of dummy_mode with the optional keyword parameter 'dummy'. For
175 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
175 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
176 can still have a specific call work by making it as IPShell(dummy=0).
176 can still have a specific call work by making it as IPShell(dummy=0).
177
177
178 The optional keyword parameter dummy controls whether the call
178 The optional keyword parameter dummy controls whether the call
179 actually does anything. """
179 actually does anything. """
180
180
181 # Allow the dummy parameter to override the global __dummy_mode
181 # Allow the dummy parameter to override the global __dummy_mode
182 if dummy or (dummy != 0 and self.__dummy_mode):
182 if dummy or (dummy != 0 and self.__dummy_mode):
183 return
183 return
184
184
185 # Set global subsystems (display,completions) to our values
185 # Set global subsystems (display,completions) to our values
186 sys.displayhook = self.sys_displayhook_embed
186 sys.displayhook = self.sys_displayhook_embed
187 if self.IP.has_readline:
187 if self.IP.has_readline:
188 self.IP.readline.set_completer(self.IP.Completer.complete)
188 self.IP.readline.set_completer(self.IP.Completer.complete)
189
189
190 if self.banner and header:
190 if self.banner and header:
191 format = '%s\n%s\n'
191 format = '%s\n%s\n'
192 else:
192 else:
193 format = '%s%s\n'
193 format = '%s%s\n'
194 banner = format % (self.banner,header)
194 banner = format % (self.banner,header)
195
195
196 # Call the embedding code with a stack depth of 1 so it can skip over
196 # Call the embedding code with a stack depth of 1 so it can skip over
197 # our call and get the original caller's namespaces.
197 # our call and get the original caller's namespaces.
198 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
198 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
199
199
200 if self.exit_msg:
200 if self.exit_msg:
201 print self.exit_msg
201 print self.exit_msg
202
202
203 # Restore global systems (display, completion)
203 # Restore global systems (display, completion)
204 sys.displayhook = self.sys_displayhook_ori
204 sys.displayhook = self.sys_displayhook_ori
205 self.restore_system_completer()
205 self.restore_system_completer()
206
206
207 def set_dummy_mode(self,dummy):
207 def set_dummy_mode(self,dummy):
208 """Sets the embeddable shell's dummy mode parameter.
208 """Sets the embeddable shell's dummy mode parameter.
209
209
210 set_dummy_mode(dummy): dummy = 0 or 1.
210 set_dummy_mode(dummy): dummy = 0 or 1.
211
211
212 This parameter is persistent and makes calls to the embeddable shell
212 This parameter is persistent and makes calls to the embeddable shell
213 silently return without performing any action. This allows you to
213 silently return without performing any action. This allows you to
214 globally activate or deactivate a shell you're using with a single call.
214 globally activate or deactivate a shell you're using with a single call.
215
215
216 If you need to manually"""
216 If you need to manually"""
217
217
218 if dummy not in [0,1,False,True]:
218 if dummy not in [0,1,False,True]:
219 raise ValueError,'dummy parameter must be boolean'
219 raise ValueError,'dummy parameter must be boolean'
220 self.__dummy_mode = dummy
220 self.__dummy_mode = dummy
221
221
222 def get_dummy_mode(self):
222 def get_dummy_mode(self):
223 """Return the current value of the dummy mode parameter.
223 """Return the current value of the dummy mode parameter.
224 """
224 """
225 return self.__dummy_mode
225 return self.__dummy_mode
226
226
227 def set_banner(self,banner):
227 def set_banner(self,banner):
228 """Sets the global banner.
228 """Sets the global banner.
229
229
230 This banner gets prepended to every header printed when the shell
230 This banner gets prepended to every header printed when the shell
231 instance is called."""
231 instance is called."""
232
232
233 self.banner = banner
233 self.banner = banner
234
234
235 def set_exit_msg(self,exit_msg):
235 def set_exit_msg(self,exit_msg):
236 """Sets the global exit_msg.
236 """Sets the global exit_msg.
237
237
238 This exit message gets printed upon exiting every time the embedded
238 This exit message gets printed upon exiting every time the embedded
239 shell is called. It is None by default. """
239 shell is called. It is None by default. """
240
240
241 self.exit_msg = exit_msg
241 self.exit_msg = exit_msg
242
242
243 #-----------------------------------------------------------------------------
243 #-----------------------------------------------------------------------------
244 def sigint_handler (signum,stack_frame):
244 def sigint_handler (signum,stack_frame):
245 """Sigint handler for threaded apps.
245 """Sigint handler for threaded apps.
246
246
247 This is a horrible hack to pass information about SIGINT _without_ using
247 This is a horrible hack to pass information about SIGINT _without_ using
248 exceptions, since I haven't been able to properly manage cross-thread
248 exceptions, since I haven't been able to properly manage cross-thread
249 exceptions in GTK/WX. In fact, I don't think it can be done (or at least
249 exceptions in GTK/WX. In fact, I don't think it can be done (or at least
250 that's my understanding from a c.l.py thread where this was discussed)."""
250 that's my understanding from a c.l.py thread where this was discussed)."""
251
251
252 global KBINT
252 global KBINT
253
253
254 print '\nKeyboardInterrupt - Press <Enter> to continue.',
254 print '\nKeyboardInterrupt - Press <Enter> to continue.',
255 Term.cout.flush()
255 Term.cout.flush()
256 # Set global flag so that runsource can know that Ctrl-C was hit
256 # Set global flag so that runsource can know that Ctrl-C was hit
257 KBINT = True
257 KBINT = True
258
258
259 class MTInteractiveShell(InteractiveShell):
259 class MTInteractiveShell(InteractiveShell):
260 """Simple multi-threaded shell."""
260 """Simple multi-threaded shell."""
261
261
262 # Threading strategy taken from:
262 # Threading strategy taken from:
263 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
263 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
264 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
264 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
265 # from the pygtk mailing list, to avoid lockups with system calls.
265 # from the pygtk mailing list, to avoid lockups with system calls.
266
266
267 # class attribute to indicate whether the class supports threads or not.
267 # class attribute to indicate whether the class supports threads or not.
268 # Subclasses with thread support should override this as needed.
268 # Subclasses with thread support should override this as needed.
269 isthreaded = True
269 isthreaded = True
270
270
271 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
271 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
272 user_ns=None,user_global_ns=None,banner2='',**kw):
272 user_ns=None,user_global_ns=None,banner2='',**kw):
273 """Similar to the normal InteractiveShell, but with threading control"""
273 """Similar to the normal InteractiveShell, but with threading control"""
274
274
275 InteractiveShell.__init__(self,name,usage,rc,user_ns,
275 InteractiveShell.__init__(self,name,usage,rc,user_ns,
276 user_global_ns,banner2)
276 user_global_ns,banner2)
277
277
278 # Locking control variable. We need to use a norma lock, not an RLock
278 # Locking control variable. We need to use a norma lock, not an RLock
279 # here. I'm not exactly sure why, it seems to me like it should be
279 # here. I'm not exactly sure why, it seems to me like it should be
280 # the opposite, but we deadlock with an RLock. Puzzled...
280 # the opposite, but we deadlock with an RLock. Puzzled...
281 self.thread_ready = threading.Condition(threading.Lock())
281 self.thread_ready = threading.Condition(threading.Lock())
282
282
283 # A queue to hold the code to be executed. A scalar variable is NOT
283 # A queue to hold the code to be executed. A scalar variable is NOT
284 # enough, because uses like macros cause reentrancy.
284 # enough, because uses like macros cause reentrancy.
285 self.code_queue = Queue.Queue()
285 self.code_queue = Queue.Queue()
286
286
287 # Stuff to do at closing time
287 # Stuff to do at closing time
288 self._kill = False
288 self._kill = False
289 on_kill = kw.get('on_kill')
289 on_kill = kw.get('on_kill')
290 if on_kill is None:
290 if on_kill is None:
291 on_kill = []
291 on_kill = []
292 # Check that all things to kill are callable:
292 # Check that all things to kill are callable:
293 for t in on_kill:
293 for t in on_kill:
294 if not callable(t):
294 if not callable(t):
295 raise TypeError,'on_kill must be a list of callables'
295 raise TypeError,'on_kill must be a list of callables'
296 self.on_kill = on_kill
296 self.on_kill = on_kill
297
297
298 def runsource(self, source, filename="<input>", symbol="single"):
298 def runsource(self, source, filename="<input>", symbol="single"):
299 """Compile and run some source in the interpreter.
299 """Compile and run some source in the interpreter.
300
300
301 Modified version of code.py's runsource(), to handle threading issues.
301 Modified version of code.py's runsource(), to handle threading issues.
302 See the original for full docstring details."""
302 See the original for full docstring details."""
303
303
304 global KBINT
304 global KBINT
305
305
306 # If Ctrl-C was typed, we reset the flag and return right away
306 # If Ctrl-C was typed, we reset the flag and return right away
307 if KBINT:
307 if KBINT:
308 KBINT = False
308 KBINT = False
309 return False
309 return False
310
310
311 try:
311 try:
312 code = self.compile(source, filename, symbol)
312 code = self.compile(source, filename, symbol)
313 except (OverflowError, SyntaxError, ValueError):
313 except (OverflowError, SyntaxError, ValueError):
314 # Case 1
314 # Case 1
315 self.showsyntaxerror(filename)
315 self.showsyntaxerror(filename)
316 return False
316 return False
317
317
318 if code is None:
318 if code is None:
319 # Case 2
319 # Case 2
320 return True
320 return True
321
321
322 # Case 3
322 # Case 3
323 # Store code in queue, so the execution thread can handle it.
323 # Store code in queue, so the execution thread can handle it.
324
324
325 # Note that with macros and other applications, we MAY re-enter this
325 # Note that with macros and other applications, we MAY re-enter this
326 # section, so we have to acquire the lock with non-blocking semantics,
326 # section, so we have to acquire the lock with non-blocking semantics,
327 # else we deadlock.
327 # else we deadlock.
328 got_lock = self.thread_ready.acquire(False)
328 got_lock = self.thread_ready.acquire(False)
329 self.code_queue.put(code)
329 self.code_queue.put(code)
330 if got_lock:
330 if got_lock:
331 self.thread_ready.wait() # Wait until processed in timeout interval
331 self.thread_ready.wait() # Wait until processed in timeout interval
332 self.thread_ready.release()
332 self.thread_ready.release()
333
333
334 return False
334 return False
335
335
336 def runcode(self):
336 def runcode(self):
337 """Execute a code object.
337 """Execute a code object.
338
338
339 Multithreaded wrapper around IPython's runcode()."""
339 Multithreaded wrapper around IPython's runcode()."""
340
340
341 # lock thread-protected stuff
341 # lock thread-protected stuff
342 got_lock = self.thread_ready.acquire(False)
342 got_lock = self.thread_ready.acquire(False)
343
343
344 # Install sigint handler
344 # Install sigint handler
345 try:
345 try:
346 signal.signal(signal.SIGINT, sigint_handler)
346 signal.signal(signal.SIGINT, sigint_handler)
347 except SystemError:
347 except SystemError:
348 # This happens under Windows, which seems to have all sorts
348 # This happens under Windows, which seems to have all sorts
349 # of problems with signal handling. Oh well...
349 # of problems with signal handling. Oh well...
350 pass
350 pass
351
351
352 if self._kill:
352 if self._kill:
353 print >>Term.cout, 'Closing threads...',
353 print >>Term.cout, 'Closing threads...',
354 Term.cout.flush()
354 Term.cout.flush()
355 for tokill in self.on_kill:
355 for tokill in self.on_kill:
356 tokill()
356 tokill()
357 print >>Term.cout, 'Done.'
357 print >>Term.cout, 'Done.'
358
358
359 # Flush queue of pending code by calling the run methood of the parent
359 # Flush queue of pending code by calling the run methood of the parent
360 # class with all items which may be in the queue.
360 # class with all items which may be in the queue.
361 while 1:
361 while 1:
362 try:
362 try:
363 code_to_run = self.code_queue.get_nowait()
363 code_to_run = self.code_queue.get_nowait()
364 except Queue.Empty:
364 except Queue.Empty:
365 break
365 break
366 if got_lock:
366 if got_lock:
367 self.thread_ready.notify()
367 self.thread_ready.notify()
368 InteractiveShell.runcode(self,code_to_run)
368 InteractiveShell.runcode(self,code_to_run)
369 else:
369 else:
370 break
370 break
371
371
372 # We're done with thread-protected variables
372 # We're done with thread-protected variables
373 if got_lock:
373 if got_lock:
374 self.thread_ready.release()
374 self.thread_ready.release()
375 # This MUST return true for gtk threading to work
375 # This MUST return true for gtk threading to work
376 return True
376 return True
377
377
378 def kill(self):
378 def kill(self):
379 """Kill the thread, returning when it has been shut down."""
379 """Kill the thread, returning when it has been shut down."""
380 got_lock = self.thread_ready.acquire(False)
380 got_lock = self.thread_ready.acquire(False)
381 self._kill = True
381 self._kill = True
382 if got_lock:
382 if got_lock:
383 self.thread_ready.release()
383 self.thread_ready.release()
384
384
385 class MatplotlibShellBase:
385 class MatplotlibShellBase:
386 """Mixin class to provide the necessary modifications to regular IPython
386 """Mixin class to provide the necessary modifications to regular IPython
387 shell classes for matplotlib support.
387 shell classes for matplotlib support.
388
388
389 Given Python's MRO, this should be used as the FIRST class in the
389 Given Python's MRO, this should be used as the FIRST class in the
390 inheritance hierarchy, so that it overrides the relevant methods."""
390 inheritance hierarchy, so that it overrides the relevant methods."""
391
391
392 def _matplotlib_config(self,name,user_ns):
392 def _matplotlib_config(self,name,user_ns):
393 """Return items needed to setup the user's shell with matplotlib"""
393 """Return items needed to setup the user's shell with matplotlib"""
394
394
395 # Initialize matplotlib to interactive mode always
395 # Initialize matplotlib to interactive mode always
396 import matplotlib
396 import matplotlib
397 from matplotlib import backends
397 from matplotlib import backends
398 matplotlib.interactive(True)
398 matplotlib.interactive(True)
399
399
400 def use(arg):
400 def use(arg):
401 """IPython wrapper for matplotlib's backend switcher.
401 """IPython wrapper for matplotlib's backend switcher.
402
402
403 In interactive use, we can not allow switching to a different
403 In interactive use, we can not allow switching to a different
404 interactive backend, since thread conflicts will most likely crash
404 interactive backend, since thread conflicts will most likely crash
405 the python interpreter. This routine does a safety check first,
405 the python interpreter. This routine does a safety check first,
406 and refuses to perform a dangerous switch. It still allows
406 and refuses to perform a dangerous switch. It still allows
407 switching to non-interactive backends."""
407 switching to non-interactive backends."""
408
408
409 if arg in backends.interactive_bk and arg != self.mpl_backend:
409 if arg in backends.interactive_bk and arg != self.mpl_backend:
410 m=('invalid matplotlib backend switch.\n'
410 m=('invalid matplotlib backend switch.\n'
411 'This script attempted to switch to the interactive '
411 'This script attempted to switch to the interactive '
412 'backend: `%s`\n'
412 'backend: `%s`\n'
413 'Your current choice of interactive backend is: `%s`\n\n'
413 'Your current choice of interactive backend is: `%s`\n\n'
414 'Switching interactive matplotlib backends at runtime\n'
414 'Switching interactive matplotlib backends at runtime\n'
415 'would crash the python interpreter, '
415 'would crash the python interpreter, '
416 'and IPython has blocked it.\n\n'
416 'and IPython has blocked it.\n\n'
417 'You need to either change your choice of matplotlib backend\n'
417 'You need to either change your choice of matplotlib backend\n'
418 'by editing your .matplotlibrc file, or run this script as a \n'
418 'by editing your .matplotlibrc file, or run this script as a \n'
419 'standalone file from the command line, not using IPython.\n' %
419 'standalone file from the command line, not using IPython.\n' %
420 (arg,self.mpl_backend) )
420 (arg,self.mpl_backend) )
421 raise RuntimeError, m
421 raise RuntimeError, m
422 else:
422 else:
423 self.mpl_use(arg)
423 self.mpl_use(arg)
424 self.mpl_use._called = True
424 self.mpl_use._called = True
425
425
426 self.matplotlib = matplotlib
426 self.matplotlib = matplotlib
427 self.mpl_backend = matplotlib.rcParams['backend']
427 self.mpl_backend = matplotlib.rcParams['backend']
428
428
429 # we also need to block switching of interactive backends by use()
429 # we also need to block switching of interactive backends by use()
430 self.mpl_use = matplotlib.use
430 self.mpl_use = matplotlib.use
431 self.mpl_use._called = False
431 self.mpl_use._called = False
432 # overwrite the original matplotlib.use with our wrapper
432 # overwrite the original matplotlib.use with our wrapper
433 matplotlib.use = use
433 matplotlib.use = use
434
434
435 # This must be imported last in the matplotlib series, after
435 # This must be imported last in the matplotlib series, after
436 # backend/interactivity choices have been made
436 # backend/interactivity choices have been made
437 import matplotlib.pylab as pylab
437 import matplotlib.pylab as pylab
438 self.pylab = pylab
438 self.pylab = pylab
439
439
440 self.pylab.show._needmain = False
440 self.pylab.show._needmain = False
441 # We need to detect at runtime whether show() is called by the user.
441 # We need to detect at runtime whether show() is called by the user.
442 # For this, we wrap it into a decorator which adds a 'called' flag.
442 # For this, we wrap it into a decorator which adds a 'called' flag.
443 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
443 self.pylab.draw_if_interactive = flag_calls(self.pylab.draw_if_interactive)
444
444
445 # Build a user namespace initialized with matplotlib/matlab features.
445 # Build a user namespace initialized with matplotlib/matlab features.
446 user_ns = IPython.ipapi.make_user_ns(user_ns)
446 user_ns = IPython.ipapi.make_user_ns(user_ns)
447
447
448 exec ("import matplotlib\n"
448 exec ("import matplotlib\n"
449 "import matplotlib.pylab as pylab\n"
449 "import matplotlib.pylab as pylab\n"
450 "from matplotlib.pylab import *") in user_ns
450 "from matplotlib.pylab import *") in user_ns
451
451
452 # Build matplotlib info banner
452 # Build matplotlib info banner
453 b="""
453 b="""
454 Welcome to pylab, a matplotlib-based Python environment.
454 Welcome to pylab, a matplotlib-based Python environment.
455 For more information, type 'help(pylab)'.
455 For more information, type 'help(pylab)'.
456 """
456 """
457 return user_ns,b
457 return user_ns,b
458
458
459 def mplot_exec(self,fname,*where,**kw):
459 def mplot_exec(self,fname,*where,**kw):
460 """Execute a matplotlib script.
460 """Execute a matplotlib script.
461
461
462 This is a call to execfile(), but wrapped in safeties to properly
462 This is a call to execfile(), but wrapped in safeties to properly
463 handle interactive rendering and backend switching."""
463 handle interactive rendering and backend switching."""
464
464
465 #print '*** Matplotlib runner ***' # dbg
465 #print '*** Matplotlib runner ***' # dbg
466 # turn off rendering until end of script
466 # turn off rendering until end of script
467 isInteractive = self.matplotlib.rcParams['interactive']
467 isInteractive = self.matplotlib.rcParams['interactive']
468 self.matplotlib.interactive(False)
468 self.matplotlib.interactive(False)
469 self.safe_execfile(fname,*where,**kw)
469 self.safe_execfile(fname,*where,**kw)
470 self.matplotlib.interactive(isInteractive)
470 self.matplotlib.interactive(isInteractive)
471 # make rendering call now, if the user tried to do it
471 # make rendering call now, if the user tried to do it
472 if self.pylab.draw_if_interactive.called:
472 if self.pylab.draw_if_interactive.called:
473 self.pylab.draw()
473 self.pylab.draw()
474 self.pylab.draw_if_interactive.called = False
474 self.pylab.draw_if_interactive.called = False
475
475
476 # if a backend switch was performed, reverse it now
476 # if a backend switch was performed, reverse it now
477 if self.mpl_use._called:
477 if self.mpl_use._called:
478 self.matplotlib.rcParams['backend'] = self.mpl_backend
478 self.matplotlib.rcParams['backend'] = self.mpl_backend
479
479
480 def magic_run(self,parameter_s=''):
480 def magic_run(self,parameter_s=''):
481 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
481 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
482
482
483 # Fix the docstring so users see the original as well
483 # Fix the docstring so users see the original as well
484 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
484 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
485 "\n *** Modified %run for Matplotlib,"
485 "\n *** Modified %run for Matplotlib,"
486 " with proper interactive handling ***")
486 " with proper interactive handling ***")
487
487
488 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
488 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
489 # and multithreaded. Note that these are meant for internal use, the IPShell*
489 # and multithreaded. Note that these are meant for internal use, the IPShell*
490 # classes below are the ones meant for public consumption.
490 # classes below are the ones meant for public consumption.
491
491
492 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
492 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
493 """Single-threaded shell with matplotlib support."""
493 """Single-threaded shell with matplotlib support."""
494
494
495 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
495 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
496 user_ns=None,user_global_ns=None,**kw):
496 user_ns=None,user_global_ns=None,**kw):
497 user_ns,b2 = self._matplotlib_config(name,user_ns)
497 user_ns,b2 = self._matplotlib_config(name,user_ns)
498 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
498 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
499 banner2=b2,**kw)
499 banner2=b2,**kw)
500
500
501 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
501 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
502 """Multi-threaded shell with matplotlib support."""
502 """Multi-threaded shell with matplotlib support."""
503
503
504 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
504 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
505 user_ns=None,user_global_ns=None, **kw):
505 user_ns=None,user_global_ns=None, **kw):
506 user_ns,b2 = self._matplotlib_config(name,user_ns)
506 user_ns,b2 = self._matplotlib_config(name,user_ns)
507 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
507 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
508 banner2=b2,**kw)
508 banner2=b2,**kw)
509
509
510 #-----------------------------------------------------------------------------
510 #-----------------------------------------------------------------------------
511 # Utility functions for the different GUI enabled IPShell* classes.
511 # Utility functions for the different GUI enabled IPShell* classes.
512
512
513 def get_tk():
513 def get_tk():
514 """Tries to import Tkinter and returns a withdrawn Tkinter root
514 """Tries to import Tkinter and returns a withdrawn Tkinter root
515 window. If Tkinter is already imported or not available, this
515 window. If Tkinter is already imported or not available, this
516 returns None. This function calls `hijack_tk` underneath.
516 returns None. This function calls `hijack_tk` underneath.
517 """
517 """
518 if not USE_TK or sys.modules.has_key('Tkinter'):
518 if not USE_TK or sys.modules.has_key('Tkinter'):
519 return None
519 return None
520 else:
520 else:
521 try:
521 try:
522 import Tkinter
522 import Tkinter
523 except ImportError:
523 except ImportError:
524 return None
524 return None
525 else:
525 else:
526 hijack_tk()
526 hijack_tk()
527 r = Tkinter.Tk()
527 r = Tkinter.Tk()
528 r.withdraw()
528 r.withdraw()
529 return r
529 return r
530
530
531 def hijack_tk():
531 def hijack_tk():
532 """Modifies Tkinter's mainloop with a dummy so when a module calls
532 """Modifies Tkinter's mainloop with a dummy so when a module calls
533 mainloop, it does not block.
533 mainloop, it does not block.
534
534
535 """
535 """
536 def misc_mainloop(self, n=0):
536 def misc_mainloop(self, n=0):
537 pass
537 pass
538 def tkinter_mainloop(n=0):
538 def tkinter_mainloop(n=0):
539 pass
539 pass
540
540
541 import Tkinter
541 import Tkinter
542 Tkinter.Misc.mainloop = misc_mainloop
542 Tkinter.Misc.mainloop = misc_mainloop
543 Tkinter.mainloop = tkinter_mainloop
543 Tkinter.mainloop = tkinter_mainloop
544
544
545 def update_tk(tk):
545 def update_tk(tk):
546 """Updates the Tkinter event loop. This is typically called from
546 """Updates the Tkinter event loop. This is typically called from
547 the respective WX or GTK mainloops.
547 the respective WX or GTK mainloops.
548 """
548 """
549 if tk:
549 if tk:
550 tk.update()
550 tk.update()
551
551
552 def hijack_wx():
552 def hijack_wx():
553 """Modifies wxPython's MainLoop with a dummy so user code does not
553 """Modifies wxPython's MainLoop with a dummy so user code does not
554 block IPython. The hijacked mainloop function is returned.
554 block IPython. The hijacked mainloop function is returned.
555 """
555 """
556 def dummy_mainloop(*args, **kw):
556 def dummy_mainloop(*args, **kw):
557 pass
557 pass
558 import wxPython
558
559 ver = wxPython.__version__
559 try:
560 import wx
561 except ImportError:
562 # For very old versions of WX
563 import wxPython as wx
564
565 ver = wx.__version__
560 orig_mainloop = None
566 orig_mainloop = None
561 if ver[:3] >= '2.5':
567 if ver[:3] >= '2.5':
562 import wx
568 import wx
563 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
569 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
564 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
570 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
565 else: raise AttributeError('Could not find wx core module')
571 else: raise AttributeError('Could not find wx core module')
566 orig_mainloop = core.PyApp_MainLoop
572 orig_mainloop = core.PyApp_MainLoop
567 core.PyApp_MainLoop = dummy_mainloop
573 core.PyApp_MainLoop = dummy_mainloop
568 elif ver[:3] == '2.4':
574 elif ver[:3] == '2.4':
569 orig_mainloop = wxPython.wxc.wxPyApp_MainLoop
575 orig_mainloop = wx.wxc.wxPyApp_MainLoop
570 wxPython.wxc.wxPyApp_MainLoop = dummy_mainloop
576 wx.wxc.wxPyApp_MainLoop = dummy_mainloop
571 else:
577 else:
572 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
578 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
573 return orig_mainloop
579 return orig_mainloop
574
580
575 def hijack_gtk():
581 def hijack_gtk():
576 """Modifies pyGTK's mainloop with a dummy so user code does not
582 """Modifies pyGTK's mainloop with a dummy so user code does not
577 block IPython. This function returns the original `gtk.mainloop`
583 block IPython. This function returns the original `gtk.mainloop`
578 function that has been hijacked.
584 function that has been hijacked.
579 """
585 """
580 def dummy_mainloop(*args, **kw):
586 def dummy_mainloop(*args, **kw):
581 pass
587 pass
582 import gtk
588 import gtk
583 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
589 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
584 else: orig_mainloop = gtk.mainloop
590 else: orig_mainloop = gtk.mainloop
585 gtk.mainloop = dummy_mainloop
591 gtk.mainloop = dummy_mainloop
586 gtk.main = dummy_mainloop
592 gtk.main = dummy_mainloop
587 return orig_mainloop
593 return orig_mainloop
588
594
589 #-----------------------------------------------------------------------------
595 #-----------------------------------------------------------------------------
590 # The IPShell* classes below are the ones meant to be run by external code as
596 # The IPShell* classes below are the ones meant to be run by external code as
591 # IPython instances. Note that unless a specific threading strategy is
597 # IPython instances. Note that unless a specific threading strategy is
592 # desired, the factory function start() below should be used instead (it
598 # desired, the factory function start() below should be used instead (it
593 # selects the proper threaded class).
599 # selects the proper threaded class).
594
600
595 class IPShellGTK(threading.Thread):
601 class IPShellGTK(threading.Thread):
596 """Run a gtk mainloop() in a separate thread.
602 """Run a gtk mainloop() in a separate thread.
597
603
598 Python commands can be passed to the thread where they will be executed.
604 Python commands can be passed to the thread where they will be executed.
599 This is implemented by periodically checking for passed code using a
605 This is implemented by periodically checking for passed code using a
600 GTK timeout callback."""
606 GTK timeout callback."""
601
607
602 TIMEOUT = 100 # Millisecond interval between timeouts.
608 TIMEOUT = 100 # Millisecond interval between timeouts.
603
609
604 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
610 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
605 debug=1,shell_class=MTInteractiveShell):
611 debug=1,shell_class=MTInteractiveShell):
606
612
607 import gtk
613 import gtk
608
614
609 self.gtk = gtk
615 self.gtk = gtk
610 self.gtk_mainloop = hijack_gtk()
616 self.gtk_mainloop = hijack_gtk()
611
617
612 # Allows us to use both Tk and GTK.
618 # Allows us to use both Tk and GTK.
613 self.tk = get_tk()
619 self.tk = get_tk()
614
620
615 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
621 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
616 else: mainquit = self.gtk.mainquit
622 else: mainquit = self.gtk.mainquit
617
623
618 self.IP = make_IPython(argv,user_ns=user_ns,
624 self.IP = make_IPython(argv,user_ns=user_ns,
619 user_global_ns=user_global_ns,
625 user_global_ns=user_global_ns,
620 debug=debug,
626 debug=debug,
621 shell_class=shell_class,
627 shell_class=shell_class,
622 on_kill=[mainquit])
628 on_kill=[mainquit])
623
629
624 # HACK: slot for banner in self; it will be passed to the mainloop
630 # HACK: slot for banner in self; it will be passed to the mainloop
625 # method only and .run() needs it. The actual value will be set by
631 # method only and .run() needs it. The actual value will be set by
626 # .mainloop().
632 # .mainloop().
627 self._banner = None
633 self._banner = None
628
634
629 threading.Thread.__init__(self)
635 threading.Thread.__init__(self)
630
636
631 def run(self):
637 def run(self):
632 self.IP.mainloop(self._banner)
638 self.IP.mainloop(self._banner)
633 self.IP.kill()
639 self.IP.kill()
634
640
635 def mainloop(self,sys_exit=0,banner=None):
641 def mainloop(self,sys_exit=0,banner=None):
636
642
637 self._banner = banner
643 self._banner = banner
638
644
639 if self.gtk.pygtk_version >= (2,4,0):
645 if self.gtk.pygtk_version >= (2,4,0):
640 import gobject
646 import gobject
641 gobject.idle_add(self.on_timer)
647 gobject.idle_add(self.on_timer)
642 else:
648 else:
643 self.gtk.idle_add(self.on_timer)
649 self.gtk.idle_add(self.on_timer)
644
650
645 if sys.platform != 'win32':
651 if sys.platform != 'win32':
646 try:
652 try:
647 if self.gtk.gtk_version[0] >= 2:
653 if self.gtk.gtk_version[0] >= 2:
648 self.gtk.gdk.threads_init()
654 self.gtk.gdk.threads_init()
649 except AttributeError:
655 except AttributeError:
650 pass
656 pass
651 except RuntimeError:
657 except RuntimeError:
652 error('Your pyGTK likely has not been compiled with '
658 error('Your pyGTK likely has not been compiled with '
653 'threading support.\n'
659 'threading support.\n'
654 'The exception printout is below.\n'
660 'The exception printout is below.\n'
655 'You can either rebuild pyGTK with threads, or '
661 'You can either rebuild pyGTK with threads, or '
656 'try using \n'
662 'try using \n'
657 'matplotlib with a different backend (like Tk or WX).\n'
663 'matplotlib with a different backend (like Tk or WX).\n'
658 'Note that matplotlib will most likely not work in its '
664 'Note that matplotlib will most likely not work in its '
659 'current state!')
665 'current state!')
660 self.IP.InteractiveTB()
666 self.IP.InteractiveTB()
661
667
662 self.start()
668 self.start()
663 self.gtk.gdk.threads_enter()
669 self.gtk.gdk.threads_enter()
664 self.gtk_mainloop()
670 self.gtk_mainloop()
665 self.gtk.gdk.threads_leave()
671 self.gtk.gdk.threads_leave()
666 self.join()
672 self.join()
667
673
668 def on_timer(self):
674 def on_timer(self):
669 """Called when GTK is idle.
675 """Called when GTK is idle.
670
676
671 Must return True always, otherwise GTK stops calling it"""
677 Must return True always, otherwise GTK stops calling it"""
672
678
673 update_tk(self.tk)
679 update_tk(self.tk)
674 self.IP.runcode()
680 self.IP.runcode()
675 time.sleep(0.01)
681 time.sleep(0.01)
676 return True
682 return True
677
683
678 class IPShellWX(threading.Thread):
684 class IPShellWX(threading.Thread):
679 """Run a wx mainloop() in a separate thread.
685 """Run a wx mainloop() in a separate thread.
680
686
681 Python commands can be passed to the thread where they will be executed.
687 Python commands can be passed to the thread where they will be executed.
682 This is implemented by periodically checking for passed code using a
688 This is implemented by periodically checking for passed code using a
683 GTK timeout callback."""
689 GTK timeout callback."""
684
690
685 TIMEOUT = 100 # Millisecond interval between timeouts.
691 TIMEOUT = 100 # Millisecond interval between timeouts.
686
692
687 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
693 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
688 debug=1,shell_class=MTInteractiveShell):
694 debug=1,shell_class=MTInteractiveShell):
689
695
690 self.IP = make_IPython(argv,user_ns=user_ns,
696 self.IP = make_IPython(argv,user_ns=user_ns,
691 user_global_ns=user_global_ns,
697 user_global_ns=user_global_ns,
692 debug=debug,
698 debug=debug,
693 shell_class=shell_class,
699 shell_class=shell_class,
694 on_kill=[self.wxexit])
700 on_kill=[self.wxexit])
695
701
696 wantedwxversion=self.IP.rc.wxversion
702 wantedwxversion=self.IP.rc.wxversion
697 if wantedwxversion!="0":
703 if wantedwxversion!="0":
698 try:
704 try:
699 import wxversion
705 import wxversion
700 except ImportError:
706 except ImportError:
701 error('The wxversion module is needed for WX version selection')
707 error('The wxversion module is needed for WX version selection')
702 else:
708 else:
703 try:
709 try:
704 wxversion.select(wantedwxversion)
710 wxversion.select(wantedwxversion)
705 except:
711 except:
706 self.IP.InteractiveTB()
712 self.IP.InteractiveTB()
707 error('Requested wxPython version %s could not be loaded' %
713 error('Requested wxPython version %s could not be loaded' %
708 wantedwxversion)
714 wantedwxversion)
709
715
710 import wx
716 import wx
711
717
712 threading.Thread.__init__(self)
718 threading.Thread.__init__(self)
713 self.wx = wx
719 self.wx = wx
714 self.wx_mainloop = hijack_wx()
720 self.wx_mainloop = hijack_wx()
715
721
716 # Allows us to use both Tk and GTK.
722 # Allows us to use both Tk and GTK.
717 self.tk = get_tk()
723 self.tk = get_tk()
718
724
719
725
720 # HACK: slot for banner in self; it will be passed to the mainloop
726 # HACK: slot for banner in self; it will be passed to the mainloop
721 # method only and .run() needs it. The actual value will be set by
727 # method only and .run() needs it. The actual value will be set by
722 # .mainloop().
728 # .mainloop().
723 self._banner = None
729 self._banner = None
724
730
725 self.app = None
731 self.app = None
726
732
727 def wxexit(self, *args):
733 def wxexit(self, *args):
728 if self.app is not None:
734 if self.app is not None:
729 self.app.agent.timer.Stop()
735 self.app.agent.timer.Stop()
730 self.app.ExitMainLoop()
736 self.app.ExitMainLoop()
731
737
732 def run(self):
738 def run(self):
733 self.IP.mainloop(self._banner)
739 self.IP.mainloop(self._banner)
734 self.IP.kill()
740 self.IP.kill()
735
741
736 def mainloop(self,sys_exit=0,banner=None):
742 def mainloop(self,sys_exit=0,banner=None):
737
743
738 self._banner = banner
744 self._banner = banner
739
745
740 self.start()
746 self.start()
741
747
742 class TimerAgent(self.wx.MiniFrame):
748 class TimerAgent(self.wx.MiniFrame):
743 wx = self.wx
749 wx = self.wx
744 IP = self.IP
750 IP = self.IP
745 tk = self.tk
751 tk = self.tk
746 def __init__(self, parent, interval):
752 def __init__(self, parent, interval):
747 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
753 style = self.wx.DEFAULT_FRAME_STYLE | self.wx.TINY_CAPTION_HORIZ
748 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
754 self.wx.MiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
749 size=(100, 100),style=style)
755 size=(100, 100),style=style)
750 self.Show(False)
756 self.Show(False)
751 self.interval = interval
757 self.interval = interval
752 self.timerId = self.wx.NewId()
758 self.timerId = self.wx.NewId()
753
759
754 def StartWork(self):
760 def StartWork(self):
755 self.timer = self.wx.Timer(self, self.timerId)
761 self.timer = self.wx.Timer(self, self.timerId)
756 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
762 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
757 self.timer.Start(self.interval)
763 self.timer.Start(self.interval)
758
764
759 def OnTimer(self, event):
765 def OnTimer(self, event):
760 update_tk(self.tk)
766 update_tk(self.tk)
761 self.IP.runcode()
767 self.IP.runcode()
762
768
763 class App(self.wx.App):
769 class App(self.wx.App):
764 wx = self.wx
770 wx = self.wx
765 TIMEOUT = self.TIMEOUT
771 TIMEOUT = self.TIMEOUT
766 def OnInit(self):
772 def OnInit(self):
767 'Create the main window and insert the custom frame'
773 'Create the main window and insert the custom frame'
768 self.agent = TimerAgent(None, self.TIMEOUT)
774 self.agent = TimerAgent(None, self.TIMEOUT)
769 self.agent.Show(False)
775 self.agent.Show(False)
770 self.agent.StartWork()
776 self.agent.StartWork()
771 return True
777 return True
772
778
773 self.app = App(redirect=False)
779 self.app = App(redirect=False)
774 self.wx_mainloop(self.app)
780 self.wx_mainloop(self.app)
775 self.join()
781 self.join()
776
782
777
783
778 class IPShellQt(threading.Thread):
784 class IPShellQt(threading.Thread):
779 """Run a Qt event loop in a separate thread.
785 """Run a Qt event loop in a separate thread.
780
786
781 Python commands can be passed to the thread where they will be executed.
787 Python commands can be passed to the thread where they will be executed.
782 This is implemented by periodically checking for passed code using a
788 This is implemented by periodically checking for passed code using a
783 Qt timer / slot."""
789 Qt timer / slot."""
784
790
785 TIMEOUT = 100 # Millisecond interval between timeouts.
791 TIMEOUT = 100 # Millisecond interval between timeouts.
786
792
787 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
793 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
788 debug=0,shell_class=MTInteractiveShell):
794 debug=0,shell_class=MTInteractiveShell):
789
795
790 import qt
796 import qt
791
797
792 class newQApplication:
798 class newQApplication:
793 def __init__( self ):
799 def __init__( self ):
794 self.QApplication = qt.QApplication
800 self.QApplication = qt.QApplication
795
801
796 def __call__( *args, **kwargs ):
802 def __call__( *args, **kwargs ):
797 return qt.qApp
803 return qt.qApp
798
804
799 def exec_loop( *args, **kwargs ):
805 def exec_loop( *args, **kwargs ):
800 pass
806 pass
801
807
802 def __getattr__( self, name ):
808 def __getattr__( self, name ):
803 return getattr( self.QApplication, name )
809 return getattr( self.QApplication, name )
804
810
805 qt.QApplication = newQApplication()
811 qt.QApplication = newQApplication()
806
812
807 # Allows us to use both Tk and QT.
813 # Allows us to use both Tk and QT.
808 self.tk = get_tk()
814 self.tk = get_tk()
809
815
810 self.IP = make_IPython(argv,user_ns=user_ns,
816 self.IP = make_IPython(argv,user_ns=user_ns,
811 user_global_ns=user_global_ns,
817 user_global_ns=user_global_ns,
812 debug=debug,
818 debug=debug,
813 shell_class=shell_class,
819 shell_class=shell_class,
814 on_kill=[qt.qApp.exit])
820 on_kill=[qt.qApp.exit])
815
821
816 # HACK: slot for banner in self; it will be passed to the mainloop
822 # HACK: slot for banner in self; it will be passed to the mainloop
817 # method only and .run() needs it. The actual value will be set by
823 # method only and .run() needs it. The actual value will be set by
818 # .mainloop().
824 # .mainloop().
819 self._banner = None
825 self._banner = None
820
826
821 threading.Thread.__init__(self)
827 threading.Thread.__init__(self)
822
828
823 def run(self):
829 def run(self):
824 self.IP.mainloop(self._banner)
830 self.IP.mainloop(self._banner)
825 self.IP.kill()
831 self.IP.kill()
826
832
827 def mainloop(self,sys_exit=0,banner=None):
833 def mainloop(self,sys_exit=0,banner=None):
828
834
829 import qt
835 import qt
830
836
831 self._banner = banner
837 self._banner = banner
832
838
833 if qt.QApplication.startingUp():
839 if qt.QApplication.startingUp():
834 a = qt.QApplication.QApplication(sys.argv)
840 a = qt.QApplication.QApplication(sys.argv)
835 self.timer = qt.QTimer()
841 self.timer = qt.QTimer()
836 qt.QObject.connect( self.timer, qt.SIGNAL( 'timeout()' ), self.on_timer )
842 qt.QObject.connect( self.timer, qt.SIGNAL( 'timeout()' ), self.on_timer )
837
843
838 self.start()
844 self.start()
839 self.timer.start( self.TIMEOUT, True )
845 self.timer.start( self.TIMEOUT, True )
840 while True:
846 while True:
841 if self.IP._kill: break
847 if self.IP._kill: break
842 qt.qApp.exec_loop()
848 qt.qApp.exec_loop()
843 self.join()
849 self.join()
844
850
845 def on_timer(self):
851 def on_timer(self):
846 update_tk(self.tk)
852 update_tk(self.tk)
847 result = self.IP.runcode()
853 result = self.IP.runcode()
848 self.timer.start( self.TIMEOUT, True )
854 self.timer.start( self.TIMEOUT, True )
849 return result
855 return result
850
856
851
857
852 class IPShellQt4(threading.Thread):
858 class IPShellQt4(threading.Thread):
853 """Run a Qt event loop in a separate thread.
859 """Run a Qt event loop in a separate thread.
854
860
855 Python commands can be passed to the thread where they will be executed.
861 Python commands can be passed to the thread where they will be executed.
856 This is implemented by periodically checking for passed code using a
862 This is implemented by periodically checking for passed code using a
857 Qt timer / slot."""
863 Qt timer / slot."""
858
864
859 TIMEOUT = 100 # Millisecond interval between timeouts.
865 TIMEOUT = 100 # Millisecond interval between timeouts.
860
866
861 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
867 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
862 debug=0,shell_class=MTInteractiveShell):
868 debug=0,shell_class=MTInteractiveShell):
863
869
864 from PyQt4 import QtCore, QtGui
870 from PyQt4 import QtCore, QtGui
865
871
866 class newQApplication:
872 class newQApplication:
867 def __init__( self ):
873 def __init__( self ):
868 self.QApplication = QtGui.QApplication
874 self.QApplication = QtGui.QApplication
869
875
870 def __call__( *args, **kwargs ):
876 def __call__( *args, **kwargs ):
871 return QtGui.qApp
877 return QtGui.qApp
872
878
873 def exec_loop( *args, **kwargs ):
879 def exec_loop( *args, **kwargs ):
874 pass
880 pass
875
881
876 def __getattr__( self, name ):
882 def __getattr__( self, name ):
877 return getattr( self.QApplication, name )
883 return getattr( self.QApplication, name )
878
884
879 QtGui.QApplication = newQApplication()
885 QtGui.QApplication = newQApplication()
880
886
881 # Allows us to use both Tk and QT.
887 # Allows us to use both Tk and QT.
882 self.tk = get_tk()
888 self.tk = get_tk()
883
889
884 self.IP = make_IPython(argv,user_ns=user_ns,
890 self.IP = make_IPython(argv,user_ns=user_ns,
885 user_global_ns=user_global_ns,
891 user_global_ns=user_global_ns,
886 debug=debug,
892 debug=debug,
887 shell_class=shell_class,
893 shell_class=shell_class,
888 on_kill=[QtGui.qApp.exit])
894 on_kill=[QtGui.qApp.exit])
889
895
890 # HACK: slot for banner in self; it will be passed to the mainloop
896 # HACK: slot for banner in self; it will be passed to the mainloop
891 # method only and .run() needs it. The actual value will be set by
897 # method only and .run() needs it. The actual value will be set by
892 # .mainloop().
898 # .mainloop().
893 self._banner = None
899 self._banner = None
894
900
895 threading.Thread.__init__(self)
901 threading.Thread.__init__(self)
896
902
897 def run(self):
903 def run(self):
898 self.IP.mainloop(self._banner)
904 self.IP.mainloop(self._banner)
899 self.IP.kill()
905 self.IP.kill()
900
906
901 def mainloop(self,sys_exit=0,banner=None):
907 def mainloop(self,sys_exit=0,banner=None):
902
908
903 from PyQt4 import QtCore, QtGui
909 from PyQt4 import QtCore, QtGui
904
910
905 self._banner = banner
911 self._banner = banner
906
912
907 if QtGui.QApplication.startingUp():
913 if QtGui.QApplication.startingUp():
908 a = QtGui.QApplication.QApplication(sys.argv)
914 a = QtGui.QApplication.QApplication(sys.argv)
909 self.timer = QtCore.QTimer()
915 self.timer = QtCore.QTimer()
910 QtCore.QObject.connect( self.timer, QtCore.SIGNAL( 'timeout()' ), self.on_timer )
916 QtCore.QObject.connect( self.timer, QtCore.SIGNAL( 'timeout()' ), self.on_timer )
911
917
912 self.start()
918 self.start()
913 self.timer.start( self.TIMEOUT )
919 self.timer.start( self.TIMEOUT )
914 while True:
920 while True:
915 if self.IP._kill: break
921 if self.IP._kill: break
916 QtGui.qApp.exec_()
922 QtGui.qApp.exec_()
917 self.join()
923 self.join()
918
924
919 def on_timer(self):
925 def on_timer(self):
920 update_tk(self.tk)
926 update_tk(self.tk)
921 result = self.IP.runcode()
927 result = self.IP.runcode()
922 self.timer.start( self.TIMEOUT )
928 self.timer.start( self.TIMEOUT )
923 return result
929 return result
924
930
925
931
926 # A set of matplotlib public IPython shell classes, for single-threaded
932 # A set of matplotlib public IPython shell classes, for single-threaded
927 # (Tk* and FLTK* backends) and multithreaded (GTK* and WX* backends) use.
933 # (Tk* and FLTK* backends) and multithreaded (GTK* and WX* backends) use.
928 class IPShellMatplotlib(IPShell):
934 class IPShellMatplotlib(IPShell):
929 """Subclass IPShell with MatplotlibShell as the internal shell.
935 """Subclass IPShell with MatplotlibShell as the internal shell.
930
936
931 Single-threaded class, meant for the Tk* and FLTK* backends.
937 Single-threaded class, meant for the Tk* and FLTK* backends.
932
938
933 Having this on a separate class simplifies the external driver code."""
939 Having this on a separate class simplifies the external driver code."""
934
940
935 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
941 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
936 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
942 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
937 shell_class=MatplotlibShell)
943 shell_class=MatplotlibShell)
938
944
939 class IPShellMatplotlibGTK(IPShellGTK):
945 class IPShellMatplotlibGTK(IPShellGTK):
940 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
946 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
941
947
942 Multi-threaded class, meant for the GTK* backends."""
948 Multi-threaded class, meant for the GTK* backends."""
943
949
944 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
950 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
945 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
951 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
946 shell_class=MatplotlibMTShell)
952 shell_class=MatplotlibMTShell)
947
953
948 class IPShellMatplotlibWX(IPShellWX):
954 class IPShellMatplotlibWX(IPShellWX):
949 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
955 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
950
956
951 Multi-threaded class, meant for the WX* backends."""
957 Multi-threaded class, meant for the WX* backends."""
952
958
953 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
959 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
954 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
960 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
955 shell_class=MatplotlibMTShell)
961 shell_class=MatplotlibMTShell)
956
962
957 class IPShellMatplotlibQt(IPShellQt):
963 class IPShellMatplotlibQt(IPShellQt):
958 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
964 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
959
965
960 Multi-threaded class, meant for the Qt* backends."""
966 Multi-threaded class, meant for the Qt* backends."""
961
967
962 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
968 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
963 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
969 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
964 shell_class=MatplotlibMTShell)
970 shell_class=MatplotlibMTShell)
965
971
966 class IPShellMatplotlibQt4(IPShellQt4):
972 class IPShellMatplotlibQt4(IPShellQt4):
967 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
973 """Subclass IPShellQt4 with MatplotlibMTShell as the internal shell.
968
974
969 Multi-threaded class, meant for the Qt4* backends."""
975 Multi-threaded class, meant for the Qt4* backends."""
970
976
971 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
977 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
972 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
978 IPShellQt4.__init__(self,argv,user_ns,user_global_ns,debug,
973 shell_class=MatplotlibMTShell)
979 shell_class=MatplotlibMTShell)
974
980
975 #-----------------------------------------------------------------------------
981 #-----------------------------------------------------------------------------
976 # Factory functions to actually start the proper thread-aware shell
982 # Factory functions to actually start the proper thread-aware shell
977
983
978 def _matplotlib_shell_class():
984 def _matplotlib_shell_class():
979 """Factory function to handle shell class selection for matplotlib.
985 """Factory function to handle shell class selection for matplotlib.
980
986
981 The proper shell class to use depends on the matplotlib backend, since
987 The proper shell class to use depends on the matplotlib backend, since
982 each backend requires a different threading strategy."""
988 each backend requires a different threading strategy."""
983
989
984 try:
990 try:
985 import matplotlib
991 import matplotlib
986 except ImportError:
992 except ImportError:
987 error('matplotlib could NOT be imported! Starting normal IPython.')
993 error('matplotlib could NOT be imported! Starting normal IPython.')
988 sh_class = IPShell
994 sh_class = IPShell
989 else:
995 else:
990 backend = matplotlib.rcParams['backend']
996 backend = matplotlib.rcParams['backend']
991 if backend.startswith('GTK'):
997 if backend.startswith('GTK'):
992 sh_class = IPShellMatplotlibGTK
998 sh_class = IPShellMatplotlibGTK
993 elif backend.startswith('WX'):
999 elif backend.startswith('WX'):
994 sh_class = IPShellMatplotlibWX
1000 sh_class = IPShellMatplotlibWX
995 elif backend.startswith('Qt4'):
1001 elif backend.startswith('Qt4'):
996 sh_class = IPShellMatplotlibQt4
1002 sh_class = IPShellMatplotlibQt4
997 elif backend.startswith('Qt'):
1003 elif backend.startswith('Qt'):
998 sh_class = IPShellMatplotlibQt
1004 sh_class = IPShellMatplotlibQt
999 else:
1005 else:
1000 sh_class = IPShellMatplotlib
1006 sh_class = IPShellMatplotlib
1001 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
1007 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
1002 return sh_class
1008 return sh_class
1003
1009
1004 # This is the one which should be called by external code.
1010 # This is the one which should be called by external code.
1005 def start(user_ns = None):
1011 def start(user_ns = None):
1006 """Return a running shell instance, dealing with threading options.
1012 """Return a running shell instance, dealing with threading options.
1007
1013
1008 This is a factory function which will instantiate the proper IPython shell
1014 This is a factory function which will instantiate the proper IPython shell
1009 based on the user's threading choice. Such a selector is needed because
1015 based on the user's threading choice. Such a selector is needed because
1010 different GUI toolkits require different thread handling details."""
1016 different GUI toolkits require different thread handling details."""
1011
1017
1012 global USE_TK
1018 global USE_TK
1013 # Crude sys.argv hack to extract the threading options.
1019 # Crude sys.argv hack to extract the threading options.
1014 argv = sys.argv
1020 argv = sys.argv
1015 if len(argv) > 1:
1021 if len(argv) > 1:
1016 if len(argv) > 2:
1022 if len(argv) > 2:
1017 arg2 = argv[2]
1023 arg2 = argv[2]
1018 if arg2.endswith('-tk'):
1024 if arg2.endswith('-tk'):
1019 USE_TK = True
1025 USE_TK = True
1020 arg1 = argv[1]
1026 arg1 = argv[1]
1021 if arg1.endswith('-gthread'):
1027 if arg1.endswith('-gthread'):
1022 shell = IPShellGTK
1028 shell = IPShellGTK
1023 elif arg1.endswith( '-qthread' ):
1029 elif arg1.endswith( '-qthread' ):
1024 shell = IPShellQt
1030 shell = IPShellQt
1025 elif arg1.endswith( '-q4thread' ):
1031 elif arg1.endswith( '-q4thread' ):
1026 shell = IPShellQt4
1032 shell = IPShellQt4
1027 elif arg1.endswith('-wthread'):
1033 elif arg1.endswith('-wthread'):
1028 shell = IPShellWX
1034 shell = IPShellWX
1029 elif arg1.endswith('-pylab'):
1035 elif arg1.endswith('-pylab'):
1030 shell = _matplotlib_shell_class()
1036 shell = _matplotlib_shell_class()
1031 else:
1037 else:
1032 shell = IPShell
1038 shell = IPShell
1033 else:
1039 else:
1034 shell = IPShell
1040 shell = IPShell
1035 return shell(user_ns = user_ns)
1041 return shell(user_ns = user_ns)
1036
1042
1037 # Some aliases for backwards compatibility
1043 # Some aliases for backwards compatibility
1038 IPythonShell = IPShell
1044 IPythonShell = IPShell
1039 IPythonShellEmbed = IPShellEmbed
1045 IPythonShellEmbed = IPShellEmbed
1040 #************************ End of file <Shell.py> ***************************
1046 #************************ End of file <Shell.py> ***************************
@@ -1,6321 +1,6327 b''
1 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
4 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
5 a report by Nik Tautenhahn.
6
1 2007-03-16 Walter Doerwald <walter@livinglogic.de>
7 2007-03-16 Walter Doerwald <walter@livinglogic.de>
2
8
3 * setup.py: Add the igrid help files to the list of data files
9 * setup.py: Add the igrid help files to the list of data files
4 to be installed alongside igrid.
10 to be installed alongside igrid.
5 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
11 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
6 Show the input object of the igrid browser as the window tile.
12 Show the input object of the igrid browser as the window tile.
7 Show the object the cursor is on in the statusbar.
13 Show the object the cursor is on in the statusbar.
8
14
9 2007-03-15 Ville Vainio <vivainio@gmail.com>
15 2007-03-15 Ville Vainio <vivainio@gmail.com>
10
16
11 * Extensions/ipy_stock_completers.py: Fixed exception
17 * Extensions/ipy_stock_completers.py: Fixed exception
12 on mismatching quotes in %run completer. Patch by
18 on mismatching quotes in %run completer. Patch by
13 JοΏ½rgen Stenarson. Closes #127.
19 JοΏ½rgen Stenarson. Closes #127.
14
20
15 2007-03-14 Ville Vainio <vivainio@gmail.com>
21 2007-03-14 Ville Vainio <vivainio@gmail.com>
16
22
17 * Extensions/ext_rehashdir.py: Do not do auto_alias
23 * Extensions/ext_rehashdir.py: Do not do auto_alias
18 in %rehashdir, it clobbers %store'd aliases.
24 in %rehashdir, it clobbers %store'd aliases.
19
25
20 * UserConfig/ipy_profile_sh.py: envpersist.py extension
26 * UserConfig/ipy_profile_sh.py: envpersist.py extension
21 (beefed up %env) imported for sh profile.
27 (beefed up %env) imported for sh profile.
22
28
23 2007-03-10 Walter Doerwald <walter@livinglogic.de>
29 2007-03-10 Walter Doerwald <walter@livinglogic.de>
24
30
25 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
31 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
26 as the default browser.
32 as the default browser.
27 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
33 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
28 As igrid displays all attributes it ever encounters, fetch() (which has
34 As igrid displays all attributes it ever encounters, fetch() (which has
29 been renamed to _fetch()) doesn't have to recalculate the display attributes
35 been renamed to _fetch()) doesn't have to recalculate the display attributes
30 every time a new item is fetched. This should speed up scrolling.
36 every time a new item is fetched. This should speed up scrolling.
31
37
32 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
38 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
33
39
34 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
40 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
35 Schmolck's recently reported tab-completion bug (my previous one
41 Schmolck's recently reported tab-completion bug (my previous one
36 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
42 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
37
43
38 2007-03-09 Walter Doerwald <walter@livinglogic.de>
44 2007-03-09 Walter Doerwald <walter@livinglogic.de>
39
45
40 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
46 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
41 Close help window if exiting igrid.
47 Close help window if exiting igrid.
42
48
43 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
49 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
44
50
45 * IPython/Extensions/ipy_defaults.py: Check if readline is available
51 * IPython/Extensions/ipy_defaults.py: Check if readline is available
46 before calling functions from readline.
52 before calling functions from readline.
47
53
48 2007-03-02 Walter Doerwald <walter@livinglogic.de>
54 2007-03-02 Walter Doerwald <walter@livinglogic.de>
49
55
50 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
56 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
51 igrid is a wxPython-based display object for ipipe. If your system has
57 igrid is a wxPython-based display object for ipipe. If your system has
52 wx installed igrid will be the default display. Without wx ipipe falls
58 wx installed igrid will be the default display. Without wx ipipe falls
53 back to ibrowse (which needs curses). If no curses is installed ipipe
59 back to ibrowse (which needs curses). If no curses is installed ipipe
54 falls back to idump.
60 falls back to idump.
55
61
56 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
62 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
57
63
58 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
64 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
59 my changes from yesterday, they introduced bugs. Will reactivate
65 my changes from yesterday, they introduced bugs. Will reactivate
60 once I get a correct solution, which will be much easier thanks to
66 once I get a correct solution, which will be much easier thanks to
61 Dan Milstein's new prefilter test suite.
67 Dan Milstein's new prefilter test suite.
62
68
63 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
69 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
64
70
65 * IPython/iplib.py (split_user_input): fix input splitting so we
71 * IPython/iplib.py (split_user_input): fix input splitting so we
66 don't attempt attribute accesses on things that can't possibly be
72 don't attempt attribute accesses on things that can't possibly be
67 valid Python attributes. After a bug report by Alex Schmolck.
73 valid Python attributes. After a bug report by Alex Schmolck.
68 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
74 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
69 %magic with explicit % prefix.
75 %magic with explicit % prefix.
70
76
71 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
77 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
72
78
73 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
79 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
74 avoid a DeprecationWarning from GTK.
80 avoid a DeprecationWarning from GTK.
75
81
76 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
82 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
77
83
78 * IPython/genutils.py (clock): I modified clock() to return total
84 * IPython/genutils.py (clock): I modified clock() to return total
79 time, user+system. This is a more commonly needed metric. I also
85 time, user+system. This is a more commonly needed metric. I also
80 introduced the new clocku/clocks to get only user/system time if
86 introduced the new clocku/clocks to get only user/system time if
81 one wants those instead.
87 one wants those instead.
82
88
83 ***WARNING: API CHANGE*** clock() used to return only user time,
89 ***WARNING: API CHANGE*** clock() used to return only user time,
84 so if you want exactly the same results as before, use clocku
90 so if you want exactly the same results as before, use clocku
85 instead.
91 instead.
86
92
87 2007-02-22 Ville Vainio <vivainio@gmail.com>
93 2007-02-22 Ville Vainio <vivainio@gmail.com>
88
94
89 * IPython/Extensions/ipy_p4.py: Extension for improved
95 * IPython/Extensions/ipy_p4.py: Extension for improved
90 p4 (perforce version control system) experience.
96 p4 (perforce version control system) experience.
91 Adds %p4 magic with p4 command completion and
97 Adds %p4 magic with p4 command completion and
92 automatic -G argument (marshall output as python dict)
98 automatic -G argument (marshall output as python dict)
93
99
94 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
100 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
95
101
96 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
102 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
97 stop marks.
103 stop marks.
98 (ClearingMixin): a simple mixin to easily make a Demo class clear
104 (ClearingMixin): a simple mixin to easily make a Demo class clear
99 the screen in between blocks and have empty marquees. The
105 the screen in between blocks and have empty marquees. The
100 ClearDemo and ClearIPDemo classes that use it are included.
106 ClearDemo and ClearIPDemo classes that use it are included.
101
107
102 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
108 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
103
109
104 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
110 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
105 protect against exceptions at Python shutdown time. Patch
111 protect against exceptions at Python shutdown time. Patch
106 sumbmitted to upstream.
112 sumbmitted to upstream.
107
113
108 2007-02-14 Walter Doerwald <walter@livinglogic.de>
114 2007-02-14 Walter Doerwald <walter@livinglogic.de>
109
115
110 * IPython/Extensions/ibrowse.py: If entering the first object level
116 * IPython/Extensions/ibrowse.py: If entering the first object level
111 (i.e. the object for which the browser has been started) fails,
117 (i.e. the object for which the browser has been started) fails,
112 now the error is raised directly (aborting the browser) instead of
118 now the error is raised directly (aborting the browser) instead of
113 running into an empty levels list later.
119 running into an empty levels list later.
114
120
115 2007-02-03 Walter Doerwald <walter@livinglogic.de>
121 2007-02-03 Walter Doerwald <walter@livinglogic.de>
116
122
117 * IPython/Extensions/ipipe.py: Add an xrepr implementation
123 * IPython/Extensions/ipipe.py: Add an xrepr implementation
118 for the noitem object.
124 for the noitem object.
119
125
120 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
126 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
121
127
122 * IPython/completer.py (Completer.attr_matches): Fix small
128 * IPython/completer.py (Completer.attr_matches): Fix small
123 tab-completion bug with Enthought Traits objects with units.
129 tab-completion bug with Enthought Traits objects with units.
124 Thanks to a bug report by Tom Denniston
130 Thanks to a bug report by Tom Denniston
125 <tom.denniston-AT-alum.dartmouth.org>.
131 <tom.denniston-AT-alum.dartmouth.org>.
126
132
127 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
133 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
128
134
129 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
135 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
130 bug where only .ipy or .py would be completed. Once the first
136 bug where only .ipy or .py would be completed. Once the first
131 argument to %run has been given, all completions are valid because
137 argument to %run has been given, all completions are valid because
132 they are the arguments to the script, which may well be non-python
138 they are the arguments to the script, which may well be non-python
133 filenames.
139 filenames.
134
140
135 * IPython/irunner.py (InteractiveRunner.run_source): major updates
141 * IPython/irunner.py (InteractiveRunner.run_source): major updates
136 to irunner to allow it to correctly support real doctesting of
142 to irunner to allow it to correctly support real doctesting of
137 out-of-process ipython code.
143 out-of-process ipython code.
138
144
139 * IPython/Magic.py (magic_cd): Make the setting of the terminal
145 * IPython/Magic.py (magic_cd): Make the setting of the terminal
140 title an option (-noterm_title) because it completely breaks
146 title an option (-noterm_title) because it completely breaks
141 doctesting.
147 doctesting.
142
148
143 * IPython/demo.py: fix IPythonDemo class that was not actually working.
149 * IPython/demo.py: fix IPythonDemo class that was not actually working.
144
150
145 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
151 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
146
152
147 * IPython/irunner.py (main): fix small bug where extensions were
153 * IPython/irunner.py (main): fix small bug where extensions were
148 not being correctly recognized.
154 not being correctly recognized.
149
155
150 2007-01-23 Walter Doerwald <walter@livinglogic.de>
156 2007-01-23 Walter Doerwald <walter@livinglogic.de>
151
157
152 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
158 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
153 a string containing a single line yields the string itself as the
159 a string containing a single line yields the string itself as the
154 only item.
160 only item.
155
161
156 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
162 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
157 object if it's the same as the one on the last level (This avoids
163 object if it's the same as the one on the last level (This avoids
158 infinite recursion for one line strings).
164 infinite recursion for one line strings).
159
165
160 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
166 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
161
167
162 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
168 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
163 all output streams before printing tracebacks. This ensures that
169 all output streams before printing tracebacks. This ensures that
164 user output doesn't end up interleaved with traceback output.
170 user output doesn't end up interleaved with traceback output.
165
171
166 2007-01-10 Ville Vainio <vivainio@gmail.com>
172 2007-01-10 Ville Vainio <vivainio@gmail.com>
167
173
168 * Extensions/envpersist.py: Turbocharged %env that remembers
174 * Extensions/envpersist.py: Turbocharged %env that remembers
169 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
175 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
170 "%env VISUAL=jed".
176 "%env VISUAL=jed".
171
177
172 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
178 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
173
179
174 * IPython/iplib.py (showtraceback): ensure that we correctly call
180 * IPython/iplib.py (showtraceback): ensure that we correctly call
175 custom handlers in all cases (some with pdb were slipping through,
181 custom handlers in all cases (some with pdb were slipping through,
176 but I'm not exactly sure why).
182 but I'm not exactly sure why).
177
183
178 * IPython/Debugger.py (Tracer.__init__): added new class to
184 * IPython/Debugger.py (Tracer.__init__): added new class to
179 support set_trace-like usage of IPython's enhanced debugger.
185 support set_trace-like usage of IPython's enhanced debugger.
180
186
181 2006-12-24 Ville Vainio <vivainio@gmail.com>
187 2006-12-24 Ville Vainio <vivainio@gmail.com>
182
188
183 * ipmaker.py: more informative message when ipy_user_conf
189 * ipmaker.py: more informative message when ipy_user_conf
184 import fails (suggest running %upgrade).
190 import fails (suggest running %upgrade).
185
191
186 * tools/run_ipy_in_profiler.py: Utility to see where
192 * tools/run_ipy_in_profiler.py: Utility to see where
187 the time during IPython startup is spent.
193 the time during IPython startup is spent.
188
194
189 2006-12-20 Ville Vainio <vivainio@gmail.com>
195 2006-12-20 Ville Vainio <vivainio@gmail.com>
190
196
191 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
197 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
192
198
193 * ipapi.py: Add new ipapi method, expand_alias.
199 * ipapi.py: Add new ipapi method, expand_alias.
194
200
195 * Release.py: Bump up version to 0.7.4.svn
201 * Release.py: Bump up version to 0.7.4.svn
196
202
197 2006-12-17 Ville Vainio <vivainio@gmail.com>
203 2006-12-17 Ville Vainio <vivainio@gmail.com>
198
204
199 * Extensions/jobctrl.py: Fixed &cmd arg arg...
205 * Extensions/jobctrl.py: Fixed &cmd arg arg...
200 to work properly on posix too
206 to work properly on posix too
201
207
202 * Release.py: Update revnum (version is still just 0.7.3).
208 * Release.py: Update revnum (version is still just 0.7.3).
203
209
204 2006-12-15 Ville Vainio <vivainio@gmail.com>
210 2006-12-15 Ville Vainio <vivainio@gmail.com>
205
211
206 * scripts/ipython_win_post_install: create ipython.py in
212 * scripts/ipython_win_post_install: create ipython.py in
207 prefix + "/scripts".
213 prefix + "/scripts".
208
214
209 * Release.py: Update version to 0.7.3.
215 * Release.py: Update version to 0.7.3.
210
216
211 2006-12-14 Ville Vainio <vivainio@gmail.com>
217 2006-12-14 Ville Vainio <vivainio@gmail.com>
212
218
213 * scripts/ipython_win_post_install: Overwrite old shortcuts
219 * scripts/ipython_win_post_install: Overwrite old shortcuts
214 if they already exist
220 if they already exist
215
221
216 * Release.py: release 0.7.3rc2
222 * Release.py: release 0.7.3rc2
217
223
218 2006-12-13 Ville Vainio <vivainio@gmail.com>
224 2006-12-13 Ville Vainio <vivainio@gmail.com>
219
225
220 * Branch and update Release.py for 0.7.3rc1
226 * Branch and update Release.py for 0.7.3rc1
221
227
222 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
228 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
223
229
224 * IPython/Shell.py (IPShellWX): update for current WX naming
230 * IPython/Shell.py (IPShellWX): update for current WX naming
225 conventions, to avoid a deprecation warning with current WX
231 conventions, to avoid a deprecation warning with current WX
226 versions. Thanks to a report by Danny Shevitz.
232 versions. Thanks to a report by Danny Shevitz.
227
233
228 2006-12-12 Ville Vainio <vivainio@gmail.com>
234 2006-12-12 Ville Vainio <vivainio@gmail.com>
229
235
230 * ipmaker.py: apply david cournapeau's patch to make
236 * ipmaker.py: apply david cournapeau's patch to make
231 import_some work properly even when ipythonrc does
237 import_some work properly even when ipythonrc does
232 import_some on empty list (it was an old bug!).
238 import_some on empty list (it was an old bug!).
233
239
234 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
240 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
235 Add deprecation note to ipythonrc and a url to wiki
241 Add deprecation note to ipythonrc and a url to wiki
236 in ipy_user_conf.py
242 in ipy_user_conf.py
237
243
238
244
239 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
245 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
240 as if it was typed on IPython command prompt, i.e.
246 as if it was typed on IPython command prompt, i.e.
241 as IPython script.
247 as IPython script.
242
248
243 * example-magic.py, magic_grepl.py: remove outdated examples
249 * example-magic.py, magic_grepl.py: remove outdated examples
244
250
245 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
251 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
246
252
247 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
253 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
248 is called before any exception has occurred.
254 is called before any exception has occurred.
249
255
250 2006-12-08 Ville Vainio <vivainio@gmail.com>
256 2006-12-08 Ville Vainio <vivainio@gmail.com>
251
257
252 * Extensions/ipy_stock_completers.py: fix cd completer
258 * Extensions/ipy_stock_completers.py: fix cd completer
253 to translate /'s to \'s again.
259 to translate /'s to \'s again.
254
260
255 * completer.py: prevent traceback on file completions w/
261 * completer.py: prevent traceback on file completions w/
256 backslash.
262 backslash.
257
263
258 * Release.py: Update release number to 0.7.3b3 for release
264 * Release.py: Update release number to 0.7.3b3 for release
259
265
260 2006-12-07 Ville Vainio <vivainio@gmail.com>
266 2006-12-07 Ville Vainio <vivainio@gmail.com>
261
267
262 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
268 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
263 while executing external code. Provides more shell-like behaviour
269 while executing external code. Provides more shell-like behaviour
264 and overall better response to ctrl + C / ctrl + break.
270 and overall better response to ctrl + C / ctrl + break.
265
271
266 * tools/make_tarball.py: new script to create tarball straight from svn
272 * tools/make_tarball.py: new script to create tarball straight from svn
267 (setup.py sdist doesn't work on win32).
273 (setup.py sdist doesn't work on win32).
268
274
269 * Extensions/ipy_stock_completers.py: fix cd completer to give up
275 * Extensions/ipy_stock_completers.py: fix cd completer to give up
270 on dirnames with spaces and use the default completer instead.
276 on dirnames with spaces and use the default completer instead.
271
277
272 * Revision.py: Change version to 0.7.3b2 for release.
278 * Revision.py: Change version to 0.7.3b2 for release.
273
279
274 2006-12-05 Ville Vainio <vivainio@gmail.com>
280 2006-12-05 Ville Vainio <vivainio@gmail.com>
275
281
276 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
282 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
277 pydb patch 4 (rm debug printing, py 2.5 checking)
283 pydb patch 4 (rm debug printing, py 2.5 checking)
278
284
279 2006-11-30 Walter Doerwald <walter@livinglogic.de>
285 2006-11-30 Walter Doerwald <walter@livinglogic.de>
280 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
286 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
281 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
287 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
282 "refreshfind" (mapped to "R") does the same but tries to go back to the same
288 "refreshfind" (mapped to "R") does the same but tries to go back to the same
283 object the cursor was on before the refresh. The command "markrange" is
289 object the cursor was on before the refresh. The command "markrange" is
284 mapped to "%" now.
290 mapped to "%" now.
285 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
291 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
286
292
287 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
293 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
288
294
289 * IPython/Magic.py (magic_debug): new %debug magic to activate the
295 * IPython/Magic.py (magic_debug): new %debug magic to activate the
290 interactive debugger on the last traceback, without having to call
296 interactive debugger on the last traceback, without having to call
291 %pdb and rerun your code. Made minor changes in various modules,
297 %pdb and rerun your code. Made minor changes in various modules,
292 should automatically recognize pydb if available.
298 should automatically recognize pydb if available.
293
299
294 2006-11-28 Ville Vainio <vivainio@gmail.com>
300 2006-11-28 Ville Vainio <vivainio@gmail.com>
295
301
296 * completer.py: If the text start with !, show file completions
302 * completer.py: If the text start with !, show file completions
297 properly. This helps when trying to complete command name
303 properly. This helps when trying to complete command name
298 for shell escapes.
304 for shell escapes.
299
305
300 2006-11-27 Ville Vainio <vivainio@gmail.com>
306 2006-11-27 Ville Vainio <vivainio@gmail.com>
301
307
302 * ipy_stock_completers.py: bzr completer submitted by Stefan van
308 * ipy_stock_completers.py: bzr completer submitted by Stefan van
303 der Walt. Clean up svn and hg completers by using a common
309 der Walt. Clean up svn and hg completers by using a common
304 vcs_completer.
310 vcs_completer.
305
311
306 2006-11-26 Ville Vainio <vivainio@gmail.com>
312 2006-11-26 Ville Vainio <vivainio@gmail.com>
307
313
308 * Remove ipconfig and %config; you should use _ip.options structure
314 * Remove ipconfig and %config; you should use _ip.options structure
309 directly instead!
315 directly instead!
310
316
311 * genutils.py: add wrap_deprecated function for deprecating callables
317 * genutils.py: add wrap_deprecated function for deprecating callables
312
318
313 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
319 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
314 _ip.system instead. ipalias is redundant.
320 _ip.system instead. ipalias is redundant.
315
321
316 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
322 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
317 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
323 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
318 explicit.
324 explicit.
319
325
320 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
326 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
321 completer. Try it by entering 'hg ' and pressing tab.
327 completer. Try it by entering 'hg ' and pressing tab.
322
328
323 * macro.py: Give Macro a useful __repr__ method
329 * macro.py: Give Macro a useful __repr__ method
324
330
325 * Magic.py: %whos abbreviates the typename of Macro for brevity.
331 * Magic.py: %whos abbreviates the typename of Macro for brevity.
326
332
327 2006-11-24 Walter Doerwald <walter@livinglogic.de>
333 2006-11-24 Walter Doerwald <walter@livinglogic.de>
328 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
334 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
329 we don't get a duplicate ipipe module, where registration of the xrepr
335 we don't get a duplicate ipipe module, where registration of the xrepr
330 implementation for Text is useless.
336 implementation for Text is useless.
331
337
332 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
338 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
333
339
334 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
340 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
335
341
336 2006-11-24 Ville Vainio <vivainio@gmail.com>
342 2006-11-24 Ville Vainio <vivainio@gmail.com>
337
343
338 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
344 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
339 try to use "cProfile" instead of the slower pure python
345 try to use "cProfile" instead of the slower pure python
340 "profile"
346 "profile"
341
347
342 2006-11-23 Ville Vainio <vivainio@gmail.com>
348 2006-11-23 Ville Vainio <vivainio@gmail.com>
343
349
344 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
350 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
345 Qt+IPython+Designer link in documentation.
351 Qt+IPython+Designer link in documentation.
346
352
347 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
353 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
348 correct Pdb object to %pydb.
354 correct Pdb object to %pydb.
349
355
350
356
351 2006-11-22 Walter Doerwald <walter@livinglogic.de>
357 2006-11-22 Walter Doerwald <walter@livinglogic.de>
352 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
358 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
353 generic xrepr(), otherwise the list implementation would kick in.
359 generic xrepr(), otherwise the list implementation would kick in.
354
360
355 2006-11-21 Ville Vainio <vivainio@gmail.com>
361 2006-11-21 Ville Vainio <vivainio@gmail.com>
356
362
357 * upgrade_dir.py: Now actually overwrites a nonmodified user file
363 * upgrade_dir.py: Now actually overwrites a nonmodified user file
358 with one from UserConfig.
364 with one from UserConfig.
359
365
360 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
366 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
361 it was missing which broke the sh profile.
367 it was missing which broke the sh profile.
362
368
363 * completer.py: file completer now uses explicit '/' instead
369 * completer.py: file completer now uses explicit '/' instead
364 of os.path.join, expansion of 'foo' was broken on win32
370 of os.path.join, expansion of 'foo' was broken on win32
365 if there was one directory with name 'foobar'.
371 if there was one directory with name 'foobar'.
366
372
367 * A bunch of patches from Kirill Smelkov:
373 * A bunch of patches from Kirill Smelkov:
368
374
369 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
375 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
370
376
371 * [patch 7/9] Implement %page -r (page in raw mode) -
377 * [patch 7/9] Implement %page -r (page in raw mode) -
372
378
373 * [patch 5/9] ScientificPython webpage has moved
379 * [patch 5/9] ScientificPython webpage has moved
374
380
375 * [patch 4/9] The manual mentions %ds, should be %dhist
381 * [patch 4/9] The manual mentions %ds, should be %dhist
376
382
377 * [patch 3/9] Kill old bits from %prun doc.
383 * [patch 3/9] Kill old bits from %prun doc.
378
384
379 * [patch 1/9] Fix typos here and there.
385 * [patch 1/9] Fix typos here and there.
380
386
381 2006-11-08 Ville Vainio <vivainio@gmail.com>
387 2006-11-08 Ville Vainio <vivainio@gmail.com>
382
388
383 * completer.py (attr_matches): catch all exceptions raised
389 * completer.py (attr_matches): catch all exceptions raised
384 by eval of expr with dots.
390 by eval of expr with dots.
385
391
386 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
392 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
387
393
388 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
394 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
389 input if it starts with whitespace. This allows you to paste
395 input if it starts with whitespace. This allows you to paste
390 indented input from any editor without manually having to type in
396 indented input from any editor without manually having to type in
391 the 'if 1:', which is convenient when working interactively.
397 the 'if 1:', which is convenient when working interactively.
392 Slightly modifed version of a patch by Bo Peng
398 Slightly modifed version of a patch by Bo Peng
393 <bpeng-AT-rice.edu>.
399 <bpeng-AT-rice.edu>.
394
400
395 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
401 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
396
402
397 * IPython/irunner.py (main): modified irunner so it automatically
403 * IPython/irunner.py (main): modified irunner so it automatically
398 recognizes the right runner to use based on the extension (.py for
404 recognizes the right runner to use based on the extension (.py for
399 python, .ipy for ipython and .sage for sage).
405 python, .ipy for ipython and .sage for sage).
400
406
401 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
407 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
402 visible in ipapi as ip.config(), to programatically control the
408 visible in ipapi as ip.config(), to programatically control the
403 internal rc object. There's an accompanying %config magic for
409 internal rc object. There's an accompanying %config magic for
404 interactive use, which has been enhanced to match the
410 interactive use, which has been enhanced to match the
405 funtionality in ipconfig.
411 funtionality in ipconfig.
406
412
407 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
413 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
408 so it's not just a toggle, it now takes an argument. Add support
414 so it's not just a toggle, it now takes an argument. Add support
409 for a customizable header when making system calls, as the new
415 for a customizable header when making system calls, as the new
410 system_header variable in the ipythonrc file.
416 system_header variable in the ipythonrc file.
411
417
412 2006-11-03 Walter Doerwald <walter@livinglogic.de>
418 2006-11-03 Walter Doerwald <walter@livinglogic.de>
413
419
414 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
420 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
415 generic functions (using Philip J. Eby's simplegeneric package).
421 generic functions (using Philip J. Eby's simplegeneric package).
416 This makes it possible to customize the display of third-party classes
422 This makes it possible to customize the display of third-party classes
417 without having to monkeypatch them. xiter() no longer supports a mode
423 without having to monkeypatch them. xiter() no longer supports a mode
418 argument and the XMode class has been removed. The same functionality can
424 argument and the XMode class has been removed. The same functionality can
419 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
425 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
420 One consequence of the switch to generic functions is that xrepr() and
426 One consequence of the switch to generic functions is that xrepr() and
421 xattrs() implementation must define the default value for the mode
427 xattrs() implementation must define the default value for the mode
422 argument themselves and xattrs() implementations must return real
428 argument themselves and xattrs() implementations must return real
423 descriptors.
429 descriptors.
424
430
425 * IPython/external: This new subpackage will contain all third-party
431 * IPython/external: This new subpackage will contain all third-party
426 packages that are bundled with IPython. (The first one is simplegeneric).
432 packages that are bundled with IPython. (The first one is simplegeneric).
427
433
428 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
434 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
429 directory which as been dropped in r1703.
435 directory which as been dropped in r1703.
430
436
431 * IPython/Extensions/ipipe.py (iless): Fixed.
437 * IPython/Extensions/ipipe.py (iless): Fixed.
432
438
433 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
439 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
434
440
435 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
441 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
436
442
437 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
443 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
438 handling in variable expansion so that shells and magics recognize
444 handling in variable expansion so that shells and magics recognize
439 function local scopes correctly. Bug reported by Brian.
445 function local scopes correctly. Bug reported by Brian.
440
446
441 * scripts/ipython: remove the very first entry in sys.path which
447 * scripts/ipython: remove the very first entry in sys.path which
442 Python auto-inserts for scripts, so that sys.path under IPython is
448 Python auto-inserts for scripts, so that sys.path under IPython is
443 as similar as possible to that under plain Python.
449 as similar as possible to that under plain Python.
444
450
445 * IPython/completer.py (IPCompleter.file_matches): Fix
451 * IPython/completer.py (IPCompleter.file_matches): Fix
446 tab-completion so that quotes are not closed unless the completion
452 tab-completion so that quotes are not closed unless the completion
447 is unambiguous. After a request by Stefan. Minor cleanups in
453 is unambiguous. After a request by Stefan. Minor cleanups in
448 ipy_stock_completers.
454 ipy_stock_completers.
449
455
450 2006-11-02 Ville Vainio <vivainio@gmail.com>
456 2006-11-02 Ville Vainio <vivainio@gmail.com>
451
457
452 * ipy_stock_completers.py: Add %run and %cd completers.
458 * ipy_stock_completers.py: Add %run and %cd completers.
453
459
454 * completer.py: Try running custom completer for both
460 * completer.py: Try running custom completer for both
455 "foo" and "%foo" if the command is just "foo". Ignore case
461 "foo" and "%foo" if the command is just "foo". Ignore case
456 when filtering possible completions.
462 when filtering possible completions.
457
463
458 * UserConfig/ipy_user_conf.py: install stock completers as default
464 * UserConfig/ipy_user_conf.py: install stock completers as default
459
465
460 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
466 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
461 simplified readline history save / restore through a wrapper
467 simplified readline history save / restore through a wrapper
462 function
468 function
463
469
464
470
465 2006-10-31 Ville Vainio <vivainio@gmail.com>
471 2006-10-31 Ville Vainio <vivainio@gmail.com>
466
472
467 * strdispatch.py, completer.py, ipy_stock_completers.py:
473 * strdispatch.py, completer.py, ipy_stock_completers.py:
468 Allow str_key ("command") in completer hooks. Implement
474 Allow str_key ("command") in completer hooks. Implement
469 trivial completer for 'import' (stdlib modules only). Rename
475 trivial completer for 'import' (stdlib modules only). Rename
470 ipy_linux_package_managers.py to ipy_stock_completers.py.
476 ipy_linux_package_managers.py to ipy_stock_completers.py.
471 SVN completer.
477 SVN completer.
472
478
473 * Extensions/ledit.py: %magic line editor for easily and
479 * Extensions/ledit.py: %magic line editor for easily and
474 incrementally manipulating lists of strings. The magic command
480 incrementally manipulating lists of strings. The magic command
475 name is %led.
481 name is %led.
476
482
477 2006-10-30 Ville Vainio <vivainio@gmail.com>
483 2006-10-30 Ville Vainio <vivainio@gmail.com>
478
484
479 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
485 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
480 Bernsteins's patches for pydb integration.
486 Bernsteins's patches for pydb integration.
481 http://bashdb.sourceforge.net/pydb/
487 http://bashdb.sourceforge.net/pydb/
482
488
483 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
489 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
484 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
490 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
485 custom completer hook to allow the users to implement their own
491 custom completer hook to allow the users to implement their own
486 completers. See ipy_linux_package_managers.py for example. The
492 completers. See ipy_linux_package_managers.py for example. The
487 hook name is 'complete_command'.
493 hook name is 'complete_command'.
488
494
489 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
495 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
490
496
491 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
497 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
492 Numeric leftovers.
498 Numeric leftovers.
493
499
494 * ipython.el (py-execute-region): apply Stefan's patch to fix
500 * ipython.el (py-execute-region): apply Stefan's patch to fix
495 garbled results if the python shell hasn't been previously started.
501 garbled results if the python shell hasn't been previously started.
496
502
497 * IPython/genutils.py (arg_split): moved to genutils, since it's a
503 * IPython/genutils.py (arg_split): moved to genutils, since it's a
498 pretty generic function and useful for other things.
504 pretty generic function and useful for other things.
499
505
500 * IPython/OInspect.py (getsource): Add customizable source
506 * IPython/OInspect.py (getsource): Add customizable source
501 extractor. After a request/patch form W. Stein (SAGE).
507 extractor. After a request/patch form W. Stein (SAGE).
502
508
503 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
509 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
504 window size to a more reasonable value from what pexpect does,
510 window size to a more reasonable value from what pexpect does,
505 since their choice causes wrapping bugs with long input lines.
511 since their choice causes wrapping bugs with long input lines.
506
512
507 2006-10-28 Ville Vainio <vivainio@gmail.com>
513 2006-10-28 Ville Vainio <vivainio@gmail.com>
508
514
509 * Magic.py (%run): Save and restore the readline history from
515 * Magic.py (%run): Save and restore the readline history from
510 file around %run commands to prevent side effects from
516 file around %run commands to prevent side effects from
511 %runned programs that might use readline (e.g. pydb).
517 %runned programs that might use readline (e.g. pydb).
512
518
513 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
519 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
514 invoking the pydb enhanced debugger.
520 invoking the pydb enhanced debugger.
515
521
516 2006-10-23 Walter Doerwald <walter@livinglogic.de>
522 2006-10-23 Walter Doerwald <walter@livinglogic.de>
517
523
518 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
524 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
519 call the base class method and propagate the return value to
525 call the base class method and propagate the return value to
520 ifile. This is now done by path itself.
526 ifile. This is now done by path itself.
521
527
522 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
528 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
523
529
524 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
530 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
525 api: set_crash_handler(), to expose the ability to change the
531 api: set_crash_handler(), to expose the ability to change the
526 internal crash handler.
532 internal crash handler.
527
533
528 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
534 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
529 the various parameters of the crash handler so that apps using
535 the various parameters of the crash handler so that apps using
530 IPython as their engine can customize crash handling. Ipmlemented
536 IPython as their engine can customize crash handling. Ipmlemented
531 at the request of SAGE.
537 at the request of SAGE.
532
538
533 2006-10-14 Ville Vainio <vivainio@gmail.com>
539 2006-10-14 Ville Vainio <vivainio@gmail.com>
534
540
535 * Magic.py, ipython.el: applied first "safe" part of Rocky
541 * Magic.py, ipython.el: applied first "safe" part of Rocky
536 Bernstein's patch set for pydb integration.
542 Bernstein's patch set for pydb integration.
537
543
538 * Magic.py (%unalias, %alias): %store'd aliases can now be
544 * Magic.py (%unalias, %alias): %store'd aliases can now be
539 removed with '%unalias'. %alias w/o args now shows most
545 removed with '%unalias'. %alias w/o args now shows most
540 interesting (stored / manually defined) aliases last
546 interesting (stored / manually defined) aliases last
541 where they catch the eye w/o scrolling.
547 where they catch the eye w/o scrolling.
542
548
543 * Magic.py (%rehashx), ext_rehashdir.py: files with
549 * Magic.py (%rehashx), ext_rehashdir.py: files with
544 'py' extension are always considered executable, even
550 'py' extension are always considered executable, even
545 when not in PATHEXT environment variable.
551 when not in PATHEXT environment variable.
546
552
547 2006-10-12 Ville Vainio <vivainio@gmail.com>
553 2006-10-12 Ville Vainio <vivainio@gmail.com>
548
554
549 * jobctrl.py: Add new "jobctrl" extension for spawning background
555 * jobctrl.py: Add new "jobctrl" extension for spawning background
550 processes with "&find /". 'import jobctrl' to try it out. Requires
556 processes with "&find /". 'import jobctrl' to try it out. Requires
551 'subprocess' module, standard in python 2.4+.
557 'subprocess' module, standard in python 2.4+.
552
558
553 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
559 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
554 so if foo -> bar and bar -> baz, then foo -> baz.
560 so if foo -> bar and bar -> baz, then foo -> baz.
555
561
556 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
562 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
557
563
558 * IPython/Magic.py (Magic.parse_options): add a new posix option
564 * IPython/Magic.py (Magic.parse_options): add a new posix option
559 to allow parsing of input args in magics that doesn't strip quotes
565 to allow parsing of input args in magics that doesn't strip quotes
560 (if posix=False). This also closes %timeit bug reported by
566 (if posix=False). This also closes %timeit bug reported by
561 Stefan.
567 Stefan.
562
568
563 2006-10-03 Ville Vainio <vivainio@gmail.com>
569 2006-10-03 Ville Vainio <vivainio@gmail.com>
564
570
565 * iplib.py (raw_input, interact): Return ValueError catching for
571 * iplib.py (raw_input, interact): Return ValueError catching for
566 raw_input. Fixes infinite loop for sys.stdin.close() or
572 raw_input. Fixes infinite loop for sys.stdin.close() or
567 sys.stdout.close().
573 sys.stdout.close().
568
574
569 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
575 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
570
576
571 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
577 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
572 to help in handling doctests. irunner is now pretty useful for
578 to help in handling doctests. irunner is now pretty useful for
573 running standalone scripts and simulate a full interactive session
579 running standalone scripts and simulate a full interactive session
574 in a format that can be then pasted as a doctest.
580 in a format that can be then pasted as a doctest.
575
581
576 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
582 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
577 on top of the default (useless) ones. This also fixes the nasty
583 on top of the default (useless) ones. This also fixes the nasty
578 way in which 2.5's Quitter() exits (reverted [1785]).
584 way in which 2.5's Quitter() exits (reverted [1785]).
579
585
580 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
586 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
581 2.5.
587 2.5.
582
588
583 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
589 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
584 color scheme is updated as well when color scheme is changed
590 color scheme is updated as well when color scheme is changed
585 interactively.
591 interactively.
586
592
587 2006-09-27 Ville Vainio <vivainio@gmail.com>
593 2006-09-27 Ville Vainio <vivainio@gmail.com>
588
594
589 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
595 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
590 infinite loop and just exit. It's a hack, but will do for a while.
596 infinite loop and just exit. It's a hack, but will do for a while.
591
597
592 2006-08-25 Walter Doerwald <walter@livinglogic.de>
598 2006-08-25 Walter Doerwald <walter@livinglogic.de>
593
599
594 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
600 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
595 the constructor, this makes it possible to get a list of only directories
601 the constructor, this makes it possible to get a list of only directories
596 or only files.
602 or only files.
597
603
598 2006-08-12 Ville Vainio <vivainio@gmail.com>
604 2006-08-12 Ville Vainio <vivainio@gmail.com>
599
605
600 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
606 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
601 they broke unittest
607 they broke unittest
602
608
603 2006-08-11 Ville Vainio <vivainio@gmail.com>
609 2006-08-11 Ville Vainio <vivainio@gmail.com>
604
610
605 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
611 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
606 by resolving issue properly, i.e. by inheriting FakeModule
612 by resolving issue properly, i.e. by inheriting FakeModule
607 from types.ModuleType. Pickling ipython interactive data
613 from types.ModuleType. Pickling ipython interactive data
608 should still work as usual (testing appreciated).
614 should still work as usual (testing appreciated).
609
615
610 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
616 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
611
617
612 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
618 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
613 running under python 2.3 with code from 2.4 to fix a bug with
619 running under python 2.3 with code from 2.4 to fix a bug with
614 help(). Reported by the Debian maintainers, Norbert Tretkowski
620 help(). Reported by the Debian maintainers, Norbert Tretkowski
615 <norbert-AT-tretkowski.de> and Alexandre Fayolle
621 <norbert-AT-tretkowski.de> and Alexandre Fayolle
616 <afayolle-AT-debian.org>.
622 <afayolle-AT-debian.org>.
617
623
618 2006-08-04 Walter Doerwald <walter@livinglogic.de>
624 2006-08-04 Walter Doerwald <walter@livinglogic.de>
619
625
620 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
626 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
621 (which was displaying "quit" twice).
627 (which was displaying "quit" twice).
622
628
623 2006-07-28 Walter Doerwald <walter@livinglogic.de>
629 2006-07-28 Walter Doerwald <walter@livinglogic.de>
624
630
625 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
631 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
626 the mode argument).
632 the mode argument).
627
633
628 2006-07-27 Walter Doerwald <walter@livinglogic.de>
634 2006-07-27 Walter Doerwald <walter@livinglogic.de>
629
635
630 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
636 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
631 not running under IPython.
637 not running under IPython.
632
638
633 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
639 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
634 and make it iterable (iterating over the attribute itself). Add two new
640 and make it iterable (iterating over the attribute itself). Add two new
635 magic strings for __xattrs__(): If the string starts with "-", the attribute
641 magic strings for __xattrs__(): If the string starts with "-", the attribute
636 will not be displayed in ibrowse's detail view (but it can still be
642 will not be displayed in ibrowse's detail view (but it can still be
637 iterated over). This makes it possible to add attributes that are large
643 iterated over). This makes it possible to add attributes that are large
638 lists or generator methods to the detail view. Replace magic attribute names
644 lists or generator methods to the detail view. Replace magic attribute names
639 and _attrname() and _getattr() with "descriptors": For each type of magic
645 and _attrname() and _getattr() with "descriptors": For each type of magic
640 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
646 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
641 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
647 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
642 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
648 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
643 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
649 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
644 are still supported.
650 are still supported.
645
651
646 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
652 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
647 fails in ibrowse.fetch(), the exception object is added as the last item
653 fails in ibrowse.fetch(), the exception object is added as the last item
648 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
654 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
649 a generator throws an exception midway through execution.
655 a generator throws an exception midway through execution.
650
656
651 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
657 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
652 encoding into methods.
658 encoding into methods.
653
659
654 2006-07-26 Ville Vainio <vivainio@gmail.com>
660 2006-07-26 Ville Vainio <vivainio@gmail.com>
655
661
656 * iplib.py: history now stores multiline input as single
662 * iplib.py: history now stores multiline input as single
657 history entries. Patch by Jorgen Cederlof.
663 history entries. Patch by Jorgen Cederlof.
658
664
659 2006-07-18 Walter Doerwald <walter@livinglogic.de>
665 2006-07-18 Walter Doerwald <walter@livinglogic.de>
660
666
661 * IPython/Extensions/ibrowse.py: Make cursor visible over
667 * IPython/Extensions/ibrowse.py: Make cursor visible over
662 non existing attributes.
668 non existing attributes.
663
669
664 2006-07-14 Walter Doerwald <walter@livinglogic.de>
670 2006-07-14 Walter Doerwald <walter@livinglogic.de>
665
671
666 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
672 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
667 error output of the running command doesn't mess up the screen.
673 error output of the running command doesn't mess up the screen.
668
674
669 2006-07-13 Walter Doerwald <walter@livinglogic.de>
675 2006-07-13 Walter Doerwald <walter@livinglogic.de>
670
676
671 * IPython/Extensions/ipipe.py (isort): Make isort usable without
677 * IPython/Extensions/ipipe.py (isort): Make isort usable without
672 argument. This sorts the items themselves.
678 argument. This sorts the items themselves.
673
679
674 2006-07-12 Walter Doerwald <walter@livinglogic.de>
680 2006-07-12 Walter Doerwald <walter@livinglogic.de>
675
681
676 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
682 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
677 Compile expression strings into code objects. This should speed
683 Compile expression strings into code objects. This should speed
678 up ifilter and friends somewhat.
684 up ifilter and friends somewhat.
679
685
680 2006-07-08 Ville Vainio <vivainio@gmail.com>
686 2006-07-08 Ville Vainio <vivainio@gmail.com>
681
687
682 * Magic.py: %cpaste now strips > from the beginning of lines
688 * Magic.py: %cpaste now strips > from the beginning of lines
683 to ease pasting quoted code from emails. Contributed by
689 to ease pasting quoted code from emails. Contributed by
684 Stefan van der Walt.
690 Stefan van der Walt.
685
691
686 2006-06-29 Ville Vainio <vivainio@gmail.com>
692 2006-06-29 Ville Vainio <vivainio@gmail.com>
687
693
688 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
694 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
689 mode, patch contributed by Darren Dale. NEEDS TESTING!
695 mode, patch contributed by Darren Dale. NEEDS TESTING!
690
696
691 2006-06-28 Walter Doerwald <walter@livinglogic.de>
697 2006-06-28 Walter Doerwald <walter@livinglogic.de>
692
698
693 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
699 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
694 a blue background. Fix fetching new display rows when the browser
700 a blue background. Fix fetching new display rows when the browser
695 scrolls more than a screenful (e.g. by using the goto command).
701 scrolls more than a screenful (e.g. by using the goto command).
696
702
697 2006-06-27 Ville Vainio <vivainio@gmail.com>
703 2006-06-27 Ville Vainio <vivainio@gmail.com>
698
704
699 * Magic.py (_inspect, _ofind) Apply David Huard's
705 * Magic.py (_inspect, _ofind) Apply David Huard's
700 patch for displaying the correct docstring for 'property'
706 patch for displaying the correct docstring for 'property'
701 attributes.
707 attributes.
702
708
703 2006-06-23 Walter Doerwald <walter@livinglogic.de>
709 2006-06-23 Walter Doerwald <walter@livinglogic.de>
704
710
705 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
711 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
706 commands into the methods implementing them.
712 commands into the methods implementing them.
707
713
708 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
714 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
709
715
710 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
716 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
711 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
717 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
712 autoindent support was authored by Jin Liu.
718 autoindent support was authored by Jin Liu.
713
719
714 2006-06-22 Walter Doerwald <walter@livinglogic.de>
720 2006-06-22 Walter Doerwald <walter@livinglogic.de>
715
721
716 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
722 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
717 for keymaps with a custom class that simplifies handling.
723 for keymaps with a custom class that simplifies handling.
718
724
719 2006-06-19 Walter Doerwald <walter@livinglogic.de>
725 2006-06-19 Walter Doerwald <walter@livinglogic.de>
720
726
721 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
727 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
722 resizing. This requires Python 2.5 to work.
728 resizing. This requires Python 2.5 to work.
723
729
724 2006-06-16 Walter Doerwald <walter@livinglogic.de>
730 2006-06-16 Walter Doerwald <walter@livinglogic.de>
725
731
726 * IPython/Extensions/ibrowse.py: Add two new commands to
732 * IPython/Extensions/ibrowse.py: Add two new commands to
727 ibrowse: "hideattr" (mapped to "h") hides the attribute under
733 ibrowse: "hideattr" (mapped to "h") hides the attribute under
728 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
734 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
729 attributes again. Remapped the help command to "?". Display
735 attributes again. Remapped the help command to "?". Display
730 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
736 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
731 as keys for the "home" and "end" commands. Add three new commands
737 as keys for the "home" and "end" commands. Add three new commands
732 to the input mode for "find" and friends: "delend" (CTRL-K)
738 to the input mode for "find" and friends: "delend" (CTRL-K)
733 deletes to the end of line. "incsearchup" searches upwards in the
739 deletes to the end of line. "incsearchup" searches upwards in the
734 command history for an input that starts with the text before the cursor.
740 command history for an input that starts with the text before the cursor.
735 "incsearchdown" does the same downwards. Removed a bogus mapping of
741 "incsearchdown" does the same downwards. Removed a bogus mapping of
736 the x key to "delete".
742 the x key to "delete".
737
743
738 2006-06-15 Ville Vainio <vivainio@gmail.com>
744 2006-06-15 Ville Vainio <vivainio@gmail.com>
739
745
740 * iplib.py, hooks.py: Added new generate_prompt hook that can be
746 * iplib.py, hooks.py: Added new generate_prompt hook that can be
741 used to create prompts dynamically, instead of the "old" way of
747 used to create prompts dynamically, instead of the "old" way of
742 assigning "magic" strings to prompt_in1 and prompt_in2. The old
748 assigning "magic" strings to prompt_in1 and prompt_in2. The old
743 way still works (it's invoked by the default hook), of course.
749 way still works (it's invoked by the default hook), of course.
744
750
745 * Prompts.py: added generate_output_prompt hook for altering output
751 * Prompts.py: added generate_output_prompt hook for altering output
746 prompt
752 prompt
747
753
748 * Release.py: Changed version string to 0.7.3.svn.
754 * Release.py: Changed version string to 0.7.3.svn.
749
755
750 2006-06-15 Walter Doerwald <walter@livinglogic.de>
756 2006-06-15 Walter Doerwald <walter@livinglogic.de>
751
757
752 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
758 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
753 the call to fetch() always tries to fetch enough data for at least one
759 the call to fetch() always tries to fetch enough data for at least one
754 full screen. This makes it possible to simply call moveto(0,0,True) in
760 full screen. This makes it possible to simply call moveto(0,0,True) in
755 the constructor. Fix typos and removed the obsolete goto attribute.
761 the constructor. Fix typos and removed the obsolete goto attribute.
756
762
757 2006-06-12 Ville Vainio <vivainio@gmail.com>
763 2006-06-12 Ville Vainio <vivainio@gmail.com>
758
764
759 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
765 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
760 allowing $variable interpolation within multiline statements,
766 allowing $variable interpolation within multiline statements,
761 though so far only with "sh" profile for a testing period.
767 though so far only with "sh" profile for a testing period.
762 The patch also enables splitting long commands with \ but it
768 The patch also enables splitting long commands with \ but it
763 doesn't work properly yet.
769 doesn't work properly yet.
764
770
765 2006-06-12 Walter Doerwald <walter@livinglogic.de>
771 2006-06-12 Walter Doerwald <walter@livinglogic.de>
766
772
767 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
773 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
768 input history and the position of the cursor in the input history for
774 input history and the position of the cursor in the input history for
769 the find, findbackwards and goto command.
775 the find, findbackwards and goto command.
770
776
771 2006-06-10 Walter Doerwald <walter@livinglogic.de>
777 2006-06-10 Walter Doerwald <walter@livinglogic.de>
772
778
773 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
779 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
774 implements the basic functionality of browser commands that require
780 implements the basic functionality of browser commands that require
775 input. Reimplement the goto, find and findbackwards commands as
781 input. Reimplement the goto, find and findbackwards commands as
776 subclasses of _CommandInput. Add an input history and keymaps to those
782 subclasses of _CommandInput. Add an input history and keymaps to those
777 commands. Add "\r" as a keyboard shortcut for the enterdefault and
783 commands. Add "\r" as a keyboard shortcut for the enterdefault and
778 execute commands.
784 execute commands.
779
785
780 2006-06-07 Ville Vainio <vivainio@gmail.com>
786 2006-06-07 Ville Vainio <vivainio@gmail.com>
781
787
782 * iplib.py: ipython mybatch.ipy exits ipython immediately after
788 * iplib.py: ipython mybatch.ipy exits ipython immediately after
783 running the batch files instead of leaving the session open.
789 running the batch files instead of leaving the session open.
784
790
785 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
791 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
786
792
787 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
793 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
788 the original fix was incomplete. Patch submitted by W. Maier.
794 the original fix was incomplete. Patch submitted by W. Maier.
789
795
790 2006-06-07 Ville Vainio <vivainio@gmail.com>
796 2006-06-07 Ville Vainio <vivainio@gmail.com>
791
797
792 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
798 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
793 Confirmation prompts can be supressed by 'quiet' option.
799 Confirmation prompts can be supressed by 'quiet' option.
794 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
800 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
795
801
796 2006-06-06 *** Released version 0.7.2
802 2006-06-06 *** Released version 0.7.2
797
803
798 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
804 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
799
805
800 * IPython/Release.py (version): Made 0.7.2 final for release.
806 * IPython/Release.py (version): Made 0.7.2 final for release.
801 Repo tagged and release cut.
807 Repo tagged and release cut.
802
808
803 2006-06-05 Ville Vainio <vivainio@gmail.com>
809 2006-06-05 Ville Vainio <vivainio@gmail.com>
804
810
805 * Magic.py (magic_rehashx): Honor no_alias list earlier in
811 * Magic.py (magic_rehashx): Honor no_alias list earlier in
806 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
812 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
807
813
808 * upgrade_dir.py: try import 'path' module a bit harder
814 * upgrade_dir.py: try import 'path' module a bit harder
809 (for %upgrade)
815 (for %upgrade)
810
816
811 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
817 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
812
818
813 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
819 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
814 instead of looping 20 times.
820 instead of looping 20 times.
815
821
816 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
822 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
817 correctly at initialization time. Bug reported by Krishna Mohan
823 correctly at initialization time. Bug reported by Krishna Mohan
818 Gundu <gkmohan-AT-gmail.com> on the user list.
824 Gundu <gkmohan-AT-gmail.com> on the user list.
819
825
820 * IPython/Release.py (version): Mark 0.7.2 version to start
826 * IPython/Release.py (version): Mark 0.7.2 version to start
821 testing for release on 06/06.
827 testing for release on 06/06.
822
828
823 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
829 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
824
830
825 * scripts/irunner: thin script interface so users don't have to
831 * scripts/irunner: thin script interface so users don't have to
826 find the module and call it as an executable, since modules rarely
832 find the module and call it as an executable, since modules rarely
827 live in people's PATH.
833 live in people's PATH.
828
834
829 * IPython/irunner.py (InteractiveRunner.__init__): added
835 * IPython/irunner.py (InteractiveRunner.__init__): added
830 delaybeforesend attribute to control delays with newer versions of
836 delaybeforesend attribute to control delays with newer versions of
831 pexpect. Thanks to detailed help from pexpect's author, Noah
837 pexpect. Thanks to detailed help from pexpect's author, Noah
832 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
838 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
833 correctly (it works in NoColor mode).
839 correctly (it works in NoColor mode).
834
840
835 * IPython/iplib.py (handle_normal): fix nasty crash reported on
841 * IPython/iplib.py (handle_normal): fix nasty crash reported on
836 SAGE list, from improper log() calls.
842 SAGE list, from improper log() calls.
837
843
838 2006-05-31 Ville Vainio <vivainio@gmail.com>
844 2006-05-31 Ville Vainio <vivainio@gmail.com>
839
845
840 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
846 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
841 with args in parens to work correctly with dirs that have spaces.
847 with args in parens to work correctly with dirs that have spaces.
842
848
843 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
849 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
844
850
845 * IPython/Logger.py (Logger.logstart): add option to log raw input
851 * IPython/Logger.py (Logger.logstart): add option to log raw input
846 instead of the processed one. A -r flag was added to the
852 instead of the processed one. A -r flag was added to the
847 %logstart magic used for controlling logging.
853 %logstart magic used for controlling logging.
848
854
849 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
855 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
850
856
851 * IPython/iplib.py (InteractiveShell.__init__): add check for the
857 * IPython/iplib.py (InteractiveShell.__init__): add check for the
852 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
858 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
853 recognize the option. After a bug report by Will Maier. This
859 recognize the option. After a bug report by Will Maier. This
854 closes #64 (will do it after confirmation from W. Maier).
860 closes #64 (will do it after confirmation from W. Maier).
855
861
856 * IPython/irunner.py: New module to run scripts as if manually
862 * IPython/irunner.py: New module to run scripts as if manually
857 typed into an interactive environment, based on pexpect. After a
863 typed into an interactive environment, based on pexpect. After a
858 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
864 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
859 ipython-user list. Simple unittests in the tests/ directory.
865 ipython-user list. Simple unittests in the tests/ directory.
860
866
861 * tools/release: add Will Maier, OpenBSD port maintainer, to
867 * tools/release: add Will Maier, OpenBSD port maintainer, to
862 recepients list. We are now officially part of the OpenBSD ports:
868 recepients list. We are now officially part of the OpenBSD ports:
863 http://www.openbsd.org/ports.html ! Many thanks to Will for the
869 http://www.openbsd.org/ports.html ! Many thanks to Will for the
864 work.
870 work.
865
871
866 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
872 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
867
873
868 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
874 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
869 so that it doesn't break tkinter apps.
875 so that it doesn't break tkinter apps.
870
876
871 * IPython/iplib.py (_prefilter): fix bug where aliases would
877 * IPython/iplib.py (_prefilter): fix bug where aliases would
872 shadow variables when autocall was fully off. Reported by SAGE
878 shadow variables when autocall was fully off. Reported by SAGE
873 author William Stein.
879 author William Stein.
874
880
875 * IPython/OInspect.py (Inspector.__init__): add a flag to control
881 * IPython/OInspect.py (Inspector.__init__): add a flag to control
876 at what detail level strings are computed when foo? is requested.
882 at what detail level strings are computed when foo? is requested.
877 This allows users to ask for example that the string form of an
883 This allows users to ask for example that the string form of an
878 object is only computed when foo?? is called, or even never, by
884 object is only computed when foo?? is called, or even never, by
879 setting the object_info_string_level >= 2 in the configuration
885 setting the object_info_string_level >= 2 in the configuration
880 file. This new option has been added and documented. After a
886 file. This new option has been added and documented. After a
881 request by SAGE to be able to control the printing of very large
887 request by SAGE to be able to control the printing of very large
882 objects more easily.
888 objects more easily.
883
889
884 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
890 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
885
891
886 * IPython/ipmaker.py (make_IPython): remove the ipython call path
892 * IPython/ipmaker.py (make_IPython): remove the ipython call path
887 from sys.argv, to be 100% consistent with how Python itself works
893 from sys.argv, to be 100% consistent with how Python itself works
888 (as seen for example with python -i file.py). After a bug report
894 (as seen for example with python -i file.py). After a bug report
889 by Jeffrey Collins.
895 by Jeffrey Collins.
890
896
891 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
897 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
892 nasty bug which was preventing custom namespaces with -pylab,
898 nasty bug which was preventing custom namespaces with -pylab,
893 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
899 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
894 compatibility (long gone from mpl).
900 compatibility (long gone from mpl).
895
901
896 * IPython/ipapi.py (make_session): name change: create->make. We
902 * IPython/ipapi.py (make_session): name change: create->make. We
897 use make in other places (ipmaker,...), it's shorter and easier to
903 use make in other places (ipmaker,...), it's shorter and easier to
898 type and say, etc. I'm trying to clean things before 0.7.2 so
904 type and say, etc. I'm trying to clean things before 0.7.2 so
899 that I can keep things stable wrt to ipapi in the chainsaw branch.
905 that I can keep things stable wrt to ipapi in the chainsaw branch.
900
906
901 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
907 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
902 python-mode recognizes our debugger mode. Add support for
908 python-mode recognizes our debugger mode. Add support for
903 autoindent inside (X)emacs. After a patch sent in by Jin Liu
909 autoindent inside (X)emacs. After a patch sent in by Jin Liu
904 <m.liu.jin-AT-gmail.com> originally written by
910 <m.liu.jin-AT-gmail.com> originally written by
905 doxgen-AT-newsmth.net (with minor modifications for xemacs
911 doxgen-AT-newsmth.net (with minor modifications for xemacs
906 compatibility)
912 compatibility)
907
913
908 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
914 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
909 tracebacks when walking the stack so that the stack tracking system
915 tracebacks when walking the stack so that the stack tracking system
910 in emacs' python-mode can identify the frames correctly.
916 in emacs' python-mode can identify the frames correctly.
911
917
912 * IPython/ipmaker.py (make_IPython): make the internal (and
918 * IPython/ipmaker.py (make_IPython): make the internal (and
913 default config) autoedit_syntax value false by default. Too many
919 default config) autoedit_syntax value false by default. Too many
914 users have complained to me (both on and off-list) about problems
920 users have complained to me (both on and off-list) about problems
915 with this option being on by default, so I'm making it default to
921 with this option being on by default, so I'm making it default to
916 off. It can still be enabled by anyone via the usual mechanisms.
922 off. It can still be enabled by anyone via the usual mechanisms.
917
923
918 * IPython/completer.py (Completer.attr_matches): add support for
924 * IPython/completer.py (Completer.attr_matches): add support for
919 PyCrust-style _getAttributeNames magic method. Patch contributed
925 PyCrust-style _getAttributeNames magic method. Patch contributed
920 by <mscott-AT-goldenspud.com>. Closes #50.
926 by <mscott-AT-goldenspud.com>. Closes #50.
921
927
922 * IPython/iplib.py (InteractiveShell.__init__): remove the
928 * IPython/iplib.py (InteractiveShell.__init__): remove the
923 deletion of exit/quit from __builtin__, which can break
929 deletion of exit/quit from __builtin__, which can break
924 third-party tools like the Zope debugging console. The
930 third-party tools like the Zope debugging console. The
925 %exit/%quit magics remain. In general, it's probably a good idea
931 %exit/%quit magics remain. In general, it's probably a good idea
926 not to delete anything from __builtin__, since we never know what
932 not to delete anything from __builtin__, since we never know what
927 that will break. In any case, python now (for 2.5) will support
933 that will break. In any case, python now (for 2.5) will support
928 'real' exit/quit, so this issue is moot. Closes #55.
934 'real' exit/quit, so this issue is moot. Closes #55.
929
935
930 * IPython/genutils.py (with_obj): rename the 'with' function to
936 * IPython/genutils.py (with_obj): rename the 'with' function to
931 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
937 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
932 becomes a language keyword. Closes #53.
938 becomes a language keyword. Closes #53.
933
939
934 * IPython/FakeModule.py (FakeModule.__init__): add a proper
940 * IPython/FakeModule.py (FakeModule.__init__): add a proper
935 __file__ attribute to this so it fools more things into thinking
941 __file__ attribute to this so it fools more things into thinking
936 it is a real module. Closes #59.
942 it is a real module. Closes #59.
937
943
938 * IPython/Magic.py (magic_edit): add -n option to open the editor
944 * IPython/Magic.py (magic_edit): add -n option to open the editor
939 at a specific line number. After a patch by Stefan van der Walt.
945 at a specific line number. After a patch by Stefan van der Walt.
940
946
941 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
947 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
942
948
943 * IPython/iplib.py (edit_syntax_error): fix crash when for some
949 * IPython/iplib.py (edit_syntax_error): fix crash when for some
944 reason the file could not be opened. After automatic crash
950 reason the file could not be opened. After automatic crash
945 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
951 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
946 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
952 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
947 (_should_recompile): Don't fire editor if using %bg, since there
953 (_should_recompile): Don't fire editor if using %bg, since there
948 is no file in the first place. From the same report as above.
954 is no file in the first place. From the same report as above.
949 (raw_input): protect against faulty third-party prefilters. After
955 (raw_input): protect against faulty third-party prefilters. After
950 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
956 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
951 while running under SAGE.
957 while running under SAGE.
952
958
953 2006-05-23 Ville Vainio <vivainio@gmail.com>
959 2006-05-23 Ville Vainio <vivainio@gmail.com>
954
960
955 * ipapi.py: Stripped down ip.to_user_ns() to work only as
961 * ipapi.py: Stripped down ip.to_user_ns() to work only as
956 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
962 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
957 now returns None (again), unless dummy is specifically allowed by
963 now returns None (again), unless dummy is specifically allowed by
958 ipapi.get(allow_dummy=True).
964 ipapi.get(allow_dummy=True).
959
965
960 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
966 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
961
967
962 * IPython: remove all 2.2-compatibility objects and hacks from
968 * IPython: remove all 2.2-compatibility objects and hacks from
963 everywhere, since we only support 2.3 at this point. Docs
969 everywhere, since we only support 2.3 at this point. Docs
964 updated.
970 updated.
965
971
966 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
972 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
967 Anything requiring extra validation can be turned into a Python
973 Anything requiring extra validation can be turned into a Python
968 property in the future. I used a property for the db one b/c
974 property in the future. I used a property for the db one b/c
969 there was a nasty circularity problem with the initialization
975 there was a nasty circularity problem with the initialization
970 order, which right now I don't have time to clean up.
976 order, which right now I don't have time to clean up.
971
977
972 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
978 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
973 another locking bug reported by Jorgen. I'm not 100% sure though,
979 another locking bug reported by Jorgen. I'm not 100% sure though,
974 so more testing is needed...
980 so more testing is needed...
975
981
976 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
982 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
977
983
978 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
984 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
979 local variables from any routine in user code (typically executed
985 local variables from any routine in user code (typically executed
980 with %run) directly into the interactive namespace. Very useful
986 with %run) directly into the interactive namespace. Very useful
981 when doing complex debugging.
987 when doing complex debugging.
982 (IPythonNotRunning): Changed the default None object to a dummy
988 (IPythonNotRunning): Changed the default None object to a dummy
983 whose attributes can be queried as well as called without
989 whose attributes can be queried as well as called without
984 exploding, to ease writing code which works transparently both in
990 exploding, to ease writing code which works transparently both in
985 and out of ipython and uses some of this API.
991 and out of ipython and uses some of this API.
986
992
987 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
993 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
988
994
989 * IPython/hooks.py (result_display): Fix the fact that our display
995 * IPython/hooks.py (result_display): Fix the fact that our display
990 hook was using str() instead of repr(), as the default python
996 hook was using str() instead of repr(), as the default python
991 console does. This had gone unnoticed b/c it only happened if
997 console does. This had gone unnoticed b/c it only happened if
992 %Pprint was off, but the inconsistency was there.
998 %Pprint was off, but the inconsistency was there.
993
999
994 2006-05-15 Ville Vainio <vivainio@gmail.com>
1000 2006-05-15 Ville Vainio <vivainio@gmail.com>
995
1001
996 * Oinspect.py: Only show docstring for nonexisting/binary files
1002 * Oinspect.py: Only show docstring for nonexisting/binary files
997 when doing object??, closing ticket #62
1003 when doing object??, closing ticket #62
998
1004
999 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1005 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1000
1006
1001 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1007 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1002 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1008 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1003 was being released in a routine which hadn't checked if it had
1009 was being released in a routine which hadn't checked if it had
1004 been the one to acquire it.
1010 been the one to acquire it.
1005
1011
1006 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1012 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1007
1013
1008 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1014 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1009
1015
1010 2006-04-11 Ville Vainio <vivainio@gmail.com>
1016 2006-04-11 Ville Vainio <vivainio@gmail.com>
1011
1017
1012 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1018 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1013 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1019 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1014 prefilters, allowing stuff like magics and aliases in the file.
1020 prefilters, allowing stuff like magics and aliases in the file.
1015
1021
1016 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1022 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1017 added. Supported now are "%clear in" and "%clear out" (clear input and
1023 added. Supported now are "%clear in" and "%clear out" (clear input and
1018 output history, respectively). Also fixed CachedOutput.flush to
1024 output history, respectively). Also fixed CachedOutput.flush to
1019 properly flush the output cache.
1025 properly flush the output cache.
1020
1026
1021 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1027 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1022 half-success (and fail explicitly).
1028 half-success (and fail explicitly).
1023
1029
1024 2006-03-28 Ville Vainio <vivainio@gmail.com>
1030 2006-03-28 Ville Vainio <vivainio@gmail.com>
1025
1031
1026 * iplib.py: Fix quoting of aliases so that only argless ones
1032 * iplib.py: Fix quoting of aliases so that only argless ones
1027 are quoted
1033 are quoted
1028
1034
1029 2006-03-28 Ville Vainio <vivainio@gmail.com>
1035 2006-03-28 Ville Vainio <vivainio@gmail.com>
1030
1036
1031 * iplib.py: Quote aliases with spaces in the name.
1037 * iplib.py: Quote aliases with spaces in the name.
1032 "c:\program files\blah\bin" is now legal alias target.
1038 "c:\program files\blah\bin" is now legal alias target.
1033
1039
1034 * ext_rehashdir.py: Space no longer allowed as arg
1040 * ext_rehashdir.py: Space no longer allowed as arg
1035 separator, since space is legal in path names.
1041 separator, since space is legal in path names.
1036
1042
1037 2006-03-16 Ville Vainio <vivainio@gmail.com>
1043 2006-03-16 Ville Vainio <vivainio@gmail.com>
1038
1044
1039 * upgrade_dir.py: Take path.py from Extensions, correcting
1045 * upgrade_dir.py: Take path.py from Extensions, correcting
1040 %upgrade magic
1046 %upgrade magic
1041
1047
1042 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1048 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1043
1049
1044 * hooks.py: Only enclose editor binary in quotes if legal and
1050 * hooks.py: Only enclose editor binary in quotes if legal and
1045 necessary (space in the name, and is an existing file). Fixes a bug
1051 necessary (space in the name, and is an existing file). Fixes a bug
1046 reported by Zachary Pincus.
1052 reported by Zachary Pincus.
1047
1053
1048 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1054 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1049
1055
1050 * Manual: thanks to a tip on proper color handling for Emacs, by
1056 * Manual: thanks to a tip on proper color handling for Emacs, by
1051 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1057 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1052
1058
1053 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1059 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1054 by applying the provided patch. Thanks to Liu Jin
1060 by applying the provided patch. Thanks to Liu Jin
1055 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1061 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1056 XEmacs/Linux, I'm trusting the submitter that it actually helps
1062 XEmacs/Linux, I'm trusting the submitter that it actually helps
1057 under win32/GNU Emacs. Will revisit if any problems are reported.
1063 under win32/GNU Emacs. Will revisit if any problems are reported.
1058
1064
1059 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1065 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1066
1061 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1067 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1062 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1068 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1063
1069
1064 2006-03-12 Ville Vainio <vivainio@gmail.com>
1070 2006-03-12 Ville Vainio <vivainio@gmail.com>
1065
1071
1066 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1072 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1067 Torsten Marek.
1073 Torsten Marek.
1068
1074
1069 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1075 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1070
1076
1071 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1077 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1072 line ranges works again.
1078 line ranges works again.
1073
1079
1074 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1080 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1075
1081
1076 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1082 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1077 and friends, after a discussion with Zach Pincus on ipython-user.
1083 and friends, after a discussion with Zach Pincus on ipython-user.
1078 I'm not 100% sure, but after thinking about it quite a bit, it may
1084 I'm not 100% sure, but after thinking about it quite a bit, it may
1079 be OK. Testing with the multithreaded shells didn't reveal any
1085 be OK. Testing with the multithreaded shells didn't reveal any
1080 problems, but let's keep an eye out.
1086 problems, but let's keep an eye out.
1081
1087
1082 In the process, I fixed a few things which were calling
1088 In the process, I fixed a few things which were calling
1083 self.InteractiveTB() directly (like safe_execfile), which is a
1089 self.InteractiveTB() directly (like safe_execfile), which is a
1084 mistake: ALL exception reporting should be done by calling
1090 mistake: ALL exception reporting should be done by calling
1085 self.showtraceback(), which handles state and tab-completion and
1091 self.showtraceback(), which handles state and tab-completion and
1086 more.
1092 more.
1087
1093
1088 2006-03-01 Ville Vainio <vivainio@gmail.com>
1094 2006-03-01 Ville Vainio <vivainio@gmail.com>
1089
1095
1090 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1096 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1091 To use, do "from ipipe import *".
1097 To use, do "from ipipe import *".
1092
1098
1093 2006-02-24 Ville Vainio <vivainio@gmail.com>
1099 2006-02-24 Ville Vainio <vivainio@gmail.com>
1094
1100
1095 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1101 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1096 "cleanly" and safely than the older upgrade mechanism.
1102 "cleanly" and safely than the older upgrade mechanism.
1097
1103
1098 2006-02-21 Ville Vainio <vivainio@gmail.com>
1104 2006-02-21 Ville Vainio <vivainio@gmail.com>
1099
1105
1100 * Magic.py: %save works again.
1106 * Magic.py: %save works again.
1101
1107
1102 2006-02-15 Ville Vainio <vivainio@gmail.com>
1108 2006-02-15 Ville Vainio <vivainio@gmail.com>
1103
1109
1104 * Magic.py: %Pprint works again
1110 * Magic.py: %Pprint works again
1105
1111
1106 * Extensions/ipy_sane_defaults.py: Provide everything provided
1112 * Extensions/ipy_sane_defaults.py: Provide everything provided
1107 in default ipythonrc, to make it possible to have a completely empty
1113 in default ipythonrc, to make it possible to have a completely empty
1108 ipythonrc (and thus completely rc-file free configuration)
1114 ipythonrc (and thus completely rc-file free configuration)
1109
1115
1110 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1116 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1111
1117
1112 * IPython/hooks.py (editor): quote the call to the editor command,
1118 * IPython/hooks.py (editor): quote the call to the editor command,
1113 to allow commands with spaces in them. Problem noted by watching
1119 to allow commands with spaces in them. Problem noted by watching
1114 Ian Oswald's video about textpad under win32 at
1120 Ian Oswald's video about textpad under win32 at
1115 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1121 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1116
1122
1117 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1123 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1118 describing magics (we haven't used @ for a loong time).
1124 describing magics (we haven't used @ for a loong time).
1119
1125
1120 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1126 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1121 contributed by marienz to close
1127 contributed by marienz to close
1122 http://www.scipy.net/roundup/ipython/issue53.
1128 http://www.scipy.net/roundup/ipython/issue53.
1123
1129
1124 2006-02-10 Ville Vainio <vivainio@gmail.com>
1130 2006-02-10 Ville Vainio <vivainio@gmail.com>
1125
1131
1126 * genutils.py: getoutput now works in win32 too
1132 * genutils.py: getoutput now works in win32 too
1127
1133
1128 * completer.py: alias and magic completion only invoked
1134 * completer.py: alias and magic completion only invoked
1129 at the first "item" in the line, to avoid "cd %store"
1135 at the first "item" in the line, to avoid "cd %store"
1130 nonsense.
1136 nonsense.
1131
1137
1132 2006-02-09 Ville Vainio <vivainio@gmail.com>
1138 2006-02-09 Ville Vainio <vivainio@gmail.com>
1133
1139
1134 * test/*: Added a unit testing framework (finally).
1140 * test/*: Added a unit testing framework (finally).
1135 '%run runtests.py' to run test_*.
1141 '%run runtests.py' to run test_*.
1136
1142
1137 * ipapi.py: Exposed runlines and set_custom_exc
1143 * ipapi.py: Exposed runlines and set_custom_exc
1138
1144
1139 2006-02-07 Ville Vainio <vivainio@gmail.com>
1145 2006-02-07 Ville Vainio <vivainio@gmail.com>
1140
1146
1141 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1147 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1142 instead use "f(1 2)" as before.
1148 instead use "f(1 2)" as before.
1143
1149
1144 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1150 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1145
1151
1146 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1152 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1147 facilities, for demos processed by the IPython input filter
1153 facilities, for demos processed by the IPython input filter
1148 (IPythonDemo), and for running a script one-line-at-a-time as a
1154 (IPythonDemo), and for running a script one-line-at-a-time as a
1149 demo, both for pure Python (LineDemo) and for IPython-processed
1155 demo, both for pure Python (LineDemo) and for IPython-processed
1150 input (IPythonLineDemo). After a request by Dave Kohel, from the
1156 input (IPythonLineDemo). After a request by Dave Kohel, from the
1151 SAGE team.
1157 SAGE team.
1152 (Demo.edit): added an edit() method to the demo objects, to edit
1158 (Demo.edit): added an edit() method to the demo objects, to edit
1153 the in-memory copy of the last executed block.
1159 the in-memory copy of the last executed block.
1154
1160
1155 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1161 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1156 processing to %edit, %macro and %save. These commands can now be
1162 processing to %edit, %macro and %save. These commands can now be
1157 invoked on the unprocessed input as it was typed by the user
1163 invoked on the unprocessed input as it was typed by the user
1158 (without any prefilters applied). After requests by the SAGE team
1164 (without any prefilters applied). After requests by the SAGE team
1159 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1165 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1160
1166
1161 2006-02-01 Ville Vainio <vivainio@gmail.com>
1167 2006-02-01 Ville Vainio <vivainio@gmail.com>
1162
1168
1163 * setup.py, eggsetup.py: easy_install ipython==dev works
1169 * setup.py, eggsetup.py: easy_install ipython==dev works
1164 correctly now (on Linux)
1170 correctly now (on Linux)
1165
1171
1166 * ipy_user_conf,ipmaker: user config changes, removed spurious
1172 * ipy_user_conf,ipmaker: user config changes, removed spurious
1167 warnings
1173 warnings
1168
1174
1169 * iplib: if rc.banner is string, use it as is.
1175 * iplib: if rc.banner is string, use it as is.
1170
1176
1171 * Magic: %pycat accepts a string argument and pages it's contents.
1177 * Magic: %pycat accepts a string argument and pages it's contents.
1172
1178
1173
1179
1174 2006-01-30 Ville Vainio <vivainio@gmail.com>
1180 2006-01-30 Ville Vainio <vivainio@gmail.com>
1175
1181
1176 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1182 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1177 Now %store and bookmarks work through PickleShare, meaning that
1183 Now %store and bookmarks work through PickleShare, meaning that
1178 concurrent access is possible and all ipython sessions see the
1184 concurrent access is possible and all ipython sessions see the
1179 same database situation all the time, instead of snapshot of
1185 same database situation all the time, instead of snapshot of
1180 the situation when the session was started. Hence, %bookmark
1186 the situation when the session was started. Hence, %bookmark
1181 results are immediately accessible from othes sessions. The database
1187 results are immediately accessible from othes sessions. The database
1182 is also available for use by user extensions. See:
1188 is also available for use by user extensions. See:
1183 http://www.python.org/pypi/pickleshare
1189 http://www.python.org/pypi/pickleshare
1184
1190
1185 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1191 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1186
1192
1187 * aliases can now be %store'd
1193 * aliases can now be %store'd
1188
1194
1189 * path.py moved to Extensions so that pickleshare does not need
1195 * path.py moved to Extensions so that pickleshare does not need
1190 IPython-specific import. Extensions added to pythonpath right
1196 IPython-specific import. Extensions added to pythonpath right
1191 at __init__.
1197 at __init__.
1192
1198
1193 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1199 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1194 called with _ip.system and the pre-transformed command string.
1200 called with _ip.system and the pre-transformed command string.
1195
1201
1196 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1202 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1197
1203
1198 * IPython/iplib.py (interact): Fix that we were not catching
1204 * IPython/iplib.py (interact): Fix that we were not catching
1199 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1205 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1200 logic here had to change, but it's fixed now.
1206 logic here had to change, but it's fixed now.
1201
1207
1202 2006-01-29 Ville Vainio <vivainio@gmail.com>
1208 2006-01-29 Ville Vainio <vivainio@gmail.com>
1203
1209
1204 * iplib.py: Try to import pyreadline on Windows.
1210 * iplib.py: Try to import pyreadline on Windows.
1205
1211
1206 2006-01-27 Ville Vainio <vivainio@gmail.com>
1212 2006-01-27 Ville Vainio <vivainio@gmail.com>
1207
1213
1208 * iplib.py: Expose ipapi as _ip in builtin namespace.
1214 * iplib.py: Expose ipapi as _ip in builtin namespace.
1209 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1215 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1210 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1216 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1211 syntax now produce _ip.* variant of the commands.
1217 syntax now produce _ip.* variant of the commands.
1212
1218
1213 * "_ip.options().autoedit_syntax = 2" automatically throws
1219 * "_ip.options().autoedit_syntax = 2" automatically throws
1214 user to editor for syntax error correction without prompting.
1220 user to editor for syntax error correction without prompting.
1215
1221
1216 2006-01-27 Ville Vainio <vivainio@gmail.com>
1222 2006-01-27 Ville Vainio <vivainio@gmail.com>
1217
1223
1218 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1224 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1219 'ipython' at argv[0]) executed through command line.
1225 'ipython' at argv[0]) executed through command line.
1220 NOTE: this DEPRECATES calling ipython with multiple scripts
1226 NOTE: this DEPRECATES calling ipython with multiple scripts
1221 ("ipython a.py b.py c.py")
1227 ("ipython a.py b.py c.py")
1222
1228
1223 * iplib.py, hooks.py: Added configurable input prefilter,
1229 * iplib.py, hooks.py: Added configurable input prefilter,
1224 named 'input_prefilter'. See ext_rescapture.py for example
1230 named 'input_prefilter'. See ext_rescapture.py for example
1225 usage.
1231 usage.
1226
1232
1227 * ext_rescapture.py, Magic.py: Better system command output capture
1233 * ext_rescapture.py, Magic.py: Better system command output capture
1228 through 'var = !ls' (deprecates user-visible %sc). Same notation
1234 through 'var = !ls' (deprecates user-visible %sc). Same notation
1229 applies for magics, 'var = %alias' assigns alias list to var.
1235 applies for magics, 'var = %alias' assigns alias list to var.
1230
1236
1231 * ipapi.py: added meta() for accessing extension-usable data store.
1237 * ipapi.py: added meta() for accessing extension-usable data store.
1232
1238
1233 * iplib.py: added InteractiveShell.getapi(). New magics should be
1239 * iplib.py: added InteractiveShell.getapi(). New magics should be
1234 written doing self.getapi() instead of using the shell directly.
1240 written doing self.getapi() instead of using the shell directly.
1235
1241
1236 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1242 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1237 %store foo >> ~/myfoo.txt to store variables to files (in clean
1243 %store foo >> ~/myfoo.txt to store variables to files (in clean
1238 textual form, not a restorable pickle).
1244 textual form, not a restorable pickle).
1239
1245
1240 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1246 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1241
1247
1242 * usage.py, Magic.py: added %quickref
1248 * usage.py, Magic.py: added %quickref
1243
1249
1244 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1250 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1245
1251
1246 * GetoptErrors when invoking magics etc. with wrong args
1252 * GetoptErrors when invoking magics etc. with wrong args
1247 are now more helpful:
1253 are now more helpful:
1248 GetoptError: option -l not recognized (allowed: "qb" )
1254 GetoptError: option -l not recognized (allowed: "qb" )
1249
1255
1250 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1256 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1251
1257
1252 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1258 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1253 computationally intensive blocks don't appear to stall the demo.
1259 computationally intensive blocks don't appear to stall the demo.
1254
1260
1255 2006-01-24 Ville Vainio <vivainio@gmail.com>
1261 2006-01-24 Ville Vainio <vivainio@gmail.com>
1256
1262
1257 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1263 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1258 value to manipulate resulting history entry.
1264 value to manipulate resulting history entry.
1259
1265
1260 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1266 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1261 to instance methods of IPApi class, to make extending an embedded
1267 to instance methods of IPApi class, to make extending an embedded
1262 IPython feasible. See ext_rehashdir.py for example usage.
1268 IPython feasible. See ext_rehashdir.py for example usage.
1263
1269
1264 * Merged 1071-1076 from branches/0.7.1
1270 * Merged 1071-1076 from branches/0.7.1
1265
1271
1266
1272
1267 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1273 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1268
1274
1269 * tools/release (daystamp): Fix build tools to use the new
1275 * tools/release (daystamp): Fix build tools to use the new
1270 eggsetup.py script to build lightweight eggs.
1276 eggsetup.py script to build lightweight eggs.
1271
1277
1272 * Applied changesets 1062 and 1064 before 0.7.1 release.
1278 * Applied changesets 1062 and 1064 before 0.7.1 release.
1273
1279
1274 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1280 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1275 see the raw input history (without conversions like %ls ->
1281 see the raw input history (without conversions like %ls ->
1276 ipmagic("ls")). After a request from W. Stein, SAGE
1282 ipmagic("ls")). After a request from W. Stein, SAGE
1277 (http://modular.ucsd.edu/sage) developer. This information is
1283 (http://modular.ucsd.edu/sage) developer. This information is
1278 stored in the input_hist_raw attribute of the IPython instance, so
1284 stored in the input_hist_raw attribute of the IPython instance, so
1279 developers can access it if needed (it's an InputList instance).
1285 developers can access it if needed (it's an InputList instance).
1280
1286
1281 * Versionstring = 0.7.2.svn
1287 * Versionstring = 0.7.2.svn
1282
1288
1283 * eggsetup.py: A separate script for constructing eggs, creates
1289 * eggsetup.py: A separate script for constructing eggs, creates
1284 proper launch scripts even on Windows (an .exe file in
1290 proper launch scripts even on Windows (an .exe file in
1285 \python24\scripts).
1291 \python24\scripts).
1286
1292
1287 * ipapi.py: launch_new_instance, launch entry point needed for the
1293 * ipapi.py: launch_new_instance, launch entry point needed for the
1288 egg.
1294 egg.
1289
1295
1290 2006-01-23 Ville Vainio <vivainio@gmail.com>
1296 2006-01-23 Ville Vainio <vivainio@gmail.com>
1291
1297
1292 * Added %cpaste magic for pasting python code
1298 * Added %cpaste magic for pasting python code
1293
1299
1294 2006-01-22 Ville Vainio <vivainio@gmail.com>
1300 2006-01-22 Ville Vainio <vivainio@gmail.com>
1295
1301
1296 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1302 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1297
1303
1298 * Versionstring = 0.7.2.svn
1304 * Versionstring = 0.7.2.svn
1299
1305
1300 * eggsetup.py: A separate script for constructing eggs, creates
1306 * eggsetup.py: A separate script for constructing eggs, creates
1301 proper launch scripts even on Windows (an .exe file in
1307 proper launch scripts even on Windows (an .exe file in
1302 \python24\scripts).
1308 \python24\scripts).
1303
1309
1304 * ipapi.py: launch_new_instance, launch entry point needed for the
1310 * ipapi.py: launch_new_instance, launch entry point needed for the
1305 egg.
1311 egg.
1306
1312
1307 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1313 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1308
1314
1309 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1315 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1310 %pfile foo would print the file for foo even if it was a binary.
1316 %pfile foo would print the file for foo even if it was a binary.
1311 Now, extensions '.so' and '.dll' are skipped.
1317 Now, extensions '.so' and '.dll' are skipped.
1312
1318
1313 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1319 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1314 bug, where macros would fail in all threaded modes. I'm not 100%
1320 bug, where macros would fail in all threaded modes. I'm not 100%
1315 sure, so I'm going to put out an rc instead of making a release
1321 sure, so I'm going to put out an rc instead of making a release
1316 today, and wait for feedback for at least a few days.
1322 today, and wait for feedback for at least a few days.
1317
1323
1318 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1324 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1319 it...) the handling of pasting external code with autoindent on.
1325 it...) the handling of pasting external code with autoindent on.
1320 To get out of a multiline input, the rule will appear for most
1326 To get out of a multiline input, the rule will appear for most
1321 users unchanged: two blank lines or change the indent level
1327 users unchanged: two blank lines or change the indent level
1322 proposed by IPython. But there is a twist now: you can
1328 proposed by IPython. But there is a twist now: you can
1323 add/subtract only *one or two spaces*. If you add/subtract three
1329 add/subtract only *one or two spaces*. If you add/subtract three
1324 or more (unless you completely delete the line), IPython will
1330 or more (unless you completely delete the line), IPython will
1325 accept that line, and you'll need to enter a second one of pure
1331 accept that line, and you'll need to enter a second one of pure
1326 whitespace. I know it sounds complicated, but I can't find a
1332 whitespace. I know it sounds complicated, but I can't find a
1327 different solution that covers all the cases, with the right
1333 different solution that covers all the cases, with the right
1328 heuristics. Hopefully in actual use, nobody will really notice
1334 heuristics. Hopefully in actual use, nobody will really notice
1329 all these strange rules and things will 'just work'.
1335 all these strange rules and things will 'just work'.
1330
1336
1331 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1337 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1332
1338
1333 * IPython/iplib.py (interact): catch exceptions which can be
1339 * IPython/iplib.py (interact): catch exceptions which can be
1334 triggered asynchronously by signal handlers. Thanks to an
1340 triggered asynchronously by signal handlers. Thanks to an
1335 automatic crash report, submitted by Colin Kingsley
1341 automatic crash report, submitted by Colin Kingsley
1336 <tercel-AT-gentoo.org>.
1342 <tercel-AT-gentoo.org>.
1337
1343
1338 2006-01-20 Ville Vainio <vivainio@gmail.com>
1344 2006-01-20 Ville Vainio <vivainio@gmail.com>
1339
1345
1340 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1346 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1341 (%rehashdir, very useful, try it out) of how to extend ipython
1347 (%rehashdir, very useful, try it out) of how to extend ipython
1342 with new magics. Also added Extensions dir to pythonpath to make
1348 with new magics. Also added Extensions dir to pythonpath to make
1343 importing extensions easy.
1349 importing extensions easy.
1344
1350
1345 * %store now complains when trying to store interactively declared
1351 * %store now complains when trying to store interactively declared
1346 classes / instances of those classes.
1352 classes / instances of those classes.
1347
1353
1348 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1354 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1349 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1355 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1350 if they exist, and ipy_user_conf.py with some defaults is created for
1356 if they exist, and ipy_user_conf.py with some defaults is created for
1351 the user.
1357 the user.
1352
1358
1353 * Startup rehashing done by the config file, not InterpreterExec.
1359 * Startup rehashing done by the config file, not InterpreterExec.
1354 This means system commands are available even without selecting the
1360 This means system commands are available even without selecting the
1355 pysh profile. It's the sensible default after all.
1361 pysh profile. It's the sensible default after all.
1356
1362
1357 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1363 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1358
1364
1359 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1365 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1360 multiline code with autoindent on working. But I am really not
1366 multiline code with autoindent on working. But I am really not
1361 sure, so this needs more testing. Will commit a debug-enabled
1367 sure, so this needs more testing. Will commit a debug-enabled
1362 version for now, while I test it some more, so that Ville and
1368 version for now, while I test it some more, so that Ville and
1363 others may also catch any problems. Also made
1369 others may also catch any problems. Also made
1364 self.indent_current_str() a method, to ensure that there's no
1370 self.indent_current_str() a method, to ensure that there's no
1365 chance of the indent space count and the corresponding string
1371 chance of the indent space count and the corresponding string
1366 falling out of sync. All code needing the string should just call
1372 falling out of sync. All code needing the string should just call
1367 the method.
1373 the method.
1368
1374
1369 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1375 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1370
1376
1371 * IPython/Magic.py (magic_edit): fix check for when users don't
1377 * IPython/Magic.py (magic_edit): fix check for when users don't
1372 save their output files, the try/except was in the wrong section.
1378 save their output files, the try/except was in the wrong section.
1373
1379
1374 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1380 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1375
1381
1376 * IPython/Magic.py (magic_run): fix __file__ global missing from
1382 * IPython/Magic.py (magic_run): fix __file__ global missing from
1377 script's namespace when executed via %run. After a report by
1383 script's namespace when executed via %run. After a report by
1378 Vivian.
1384 Vivian.
1379
1385
1380 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1386 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1381 when using python 2.4. The parent constructor changed in 2.4, and
1387 when using python 2.4. The parent constructor changed in 2.4, and
1382 we need to track it directly (we can't call it, as it messes up
1388 we need to track it directly (we can't call it, as it messes up
1383 readline and tab-completion inside our pdb would stop working).
1389 readline and tab-completion inside our pdb would stop working).
1384 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1390 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1385
1391
1386 2006-01-16 Ville Vainio <vivainio@gmail.com>
1392 2006-01-16 Ville Vainio <vivainio@gmail.com>
1387
1393
1388 * Ipython/magic.py: Reverted back to old %edit functionality
1394 * Ipython/magic.py: Reverted back to old %edit functionality
1389 that returns file contents on exit.
1395 that returns file contents on exit.
1390
1396
1391 * IPython/path.py: Added Jason Orendorff's "path" module to
1397 * IPython/path.py: Added Jason Orendorff's "path" module to
1392 IPython tree, http://www.jorendorff.com/articles/python/path/.
1398 IPython tree, http://www.jorendorff.com/articles/python/path/.
1393 You can get path objects conveniently through %sc, and !!, e.g.:
1399 You can get path objects conveniently through %sc, and !!, e.g.:
1394 sc files=ls
1400 sc files=ls
1395 for p in files.paths: # or files.p
1401 for p in files.paths: # or files.p
1396 print p,p.mtime
1402 print p,p.mtime
1397
1403
1398 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1404 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1399 now work again without considering the exclusion regexp -
1405 now work again without considering the exclusion regexp -
1400 hence, things like ',foo my/path' turn to 'foo("my/path")'
1406 hence, things like ',foo my/path' turn to 'foo("my/path")'
1401 instead of syntax error.
1407 instead of syntax error.
1402
1408
1403
1409
1404 2006-01-14 Ville Vainio <vivainio@gmail.com>
1410 2006-01-14 Ville Vainio <vivainio@gmail.com>
1405
1411
1406 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1412 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1407 ipapi decorators for python 2.4 users, options() provides access to rc
1413 ipapi decorators for python 2.4 users, options() provides access to rc
1408 data.
1414 data.
1409
1415
1410 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1416 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1411 as path separators (even on Linux ;-). Space character after
1417 as path separators (even on Linux ;-). Space character after
1412 backslash (as yielded by tab completer) is still space;
1418 backslash (as yielded by tab completer) is still space;
1413 "%cd long\ name" works as expected.
1419 "%cd long\ name" works as expected.
1414
1420
1415 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1421 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1416 as "chain of command", with priority. API stays the same,
1422 as "chain of command", with priority. API stays the same,
1417 TryNext exception raised by a hook function signals that
1423 TryNext exception raised by a hook function signals that
1418 current hook failed and next hook should try handling it, as
1424 current hook failed and next hook should try handling it, as
1419 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1425 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1420 requested configurable display hook, which is now implemented.
1426 requested configurable display hook, which is now implemented.
1421
1427
1422 2006-01-13 Ville Vainio <vivainio@gmail.com>
1428 2006-01-13 Ville Vainio <vivainio@gmail.com>
1423
1429
1424 * IPython/platutils*.py: platform specific utility functions,
1430 * IPython/platutils*.py: platform specific utility functions,
1425 so far only set_term_title is implemented (change terminal
1431 so far only set_term_title is implemented (change terminal
1426 label in windowing systems). %cd now changes the title to
1432 label in windowing systems). %cd now changes the title to
1427 current dir.
1433 current dir.
1428
1434
1429 * IPython/Release.py: Added myself to "authors" list,
1435 * IPython/Release.py: Added myself to "authors" list,
1430 had to create new files.
1436 had to create new files.
1431
1437
1432 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1438 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1433 shell escape; not a known bug but had potential to be one in the
1439 shell escape; not a known bug but had potential to be one in the
1434 future.
1440 future.
1435
1441
1436 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1442 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1437 extension API for IPython! See the module for usage example. Fix
1443 extension API for IPython! See the module for usage example. Fix
1438 OInspect for docstring-less magic functions.
1444 OInspect for docstring-less magic functions.
1439
1445
1440
1446
1441 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1447 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1442
1448
1443 * IPython/iplib.py (raw_input): temporarily deactivate all
1449 * IPython/iplib.py (raw_input): temporarily deactivate all
1444 attempts at allowing pasting of code with autoindent on. It
1450 attempts at allowing pasting of code with autoindent on. It
1445 introduced bugs (reported by Prabhu) and I can't seem to find a
1451 introduced bugs (reported by Prabhu) and I can't seem to find a
1446 robust combination which works in all cases. Will have to revisit
1452 robust combination which works in all cases. Will have to revisit
1447 later.
1453 later.
1448
1454
1449 * IPython/genutils.py: remove isspace() function. We've dropped
1455 * IPython/genutils.py: remove isspace() function. We've dropped
1450 2.2 compatibility, so it's OK to use the string method.
1456 2.2 compatibility, so it's OK to use the string method.
1451
1457
1452 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1458 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1453
1459
1454 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1460 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1455 matching what NOT to autocall on, to include all python binary
1461 matching what NOT to autocall on, to include all python binary
1456 operators (including things like 'and', 'or', 'is' and 'in').
1462 operators (including things like 'and', 'or', 'is' and 'in').
1457 Prompted by a bug report on 'foo & bar', but I realized we had
1463 Prompted by a bug report on 'foo & bar', but I realized we had
1458 many more potential bug cases with other operators. The regexp is
1464 many more potential bug cases with other operators. The regexp is
1459 self.re_exclude_auto, it's fairly commented.
1465 self.re_exclude_auto, it's fairly commented.
1460
1466
1461 2006-01-12 Ville Vainio <vivainio@gmail.com>
1467 2006-01-12 Ville Vainio <vivainio@gmail.com>
1462
1468
1463 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1469 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1464 Prettified and hardened string/backslash quoting with ipsystem(),
1470 Prettified and hardened string/backslash quoting with ipsystem(),
1465 ipalias() and ipmagic(). Now even \ characters are passed to
1471 ipalias() and ipmagic(). Now even \ characters are passed to
1466 %magics, !shell escapes and aliases exactly as they are in the
1472 %magics, !shell escapes and aliases exactly as they are in the
1467 ipython command line. Should improve backslash experience,
1473 ipython command line. Should improve backslash experience,
1468 particularly in Windows (path delimiter for some commands that
1474 particularly in Windows (path delimiter for some commands that
1469 won't understand '/'), but Unix benefits as well (regexps). %cd
1475 won't understand '/'), but Unix benefits as well (regexps). %cd
1470 magic still doesn't support backslash path delimiters, though. Also
1476 magic still doesn't support backslash path delimiters, though. Also
1471 deleted all pretense of supporting multiline command strings in
1477 deleted all pretense of supporting multiline command strings in
1472 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1478 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1473
1479
1474 * doc/build_doc_instructions.txt added. Documentation on how to
1480 * doc/build_doc_instructions.txt added. Documentation on how to
1475 use doc/update_manual.py, added yesterday. Both files contributed
1481 use doc/update_manual.py, added yesterday. Both files contributed
1476 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1482 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1477 doc/*.sh for deprecation at a later date.
1483 doc/*.sh for deprecation at a later date.
1478
1484
1479 * /ipython.py Added ipython.py to root directory for
1485 * /ipython.py Added ipython.py to root directory for
1480 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1486 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1481 ipython.py) and development convenience (no need to keep doing
1487 ipython.py) and development convenience (no need to keep doing
1482 "setup.py install" between changes).
1488 "setup.py install" between changes).
1483
1489
1484 * Made ! and !! shell escapes work (again) in multiline expressions:
1490 * Made ! and !! shell escapes work (again) in multiline expressions:
1485 if 1:
1491 if 1:
1486 !ls
1492 !ls
1487 !!ls
1493 !!ls
1488
1494
1489 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1495 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1490
1496
1491 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1497 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1492 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1498 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1493 module in case-insensitive installation. Was causing crashes
1499 module in case-insensitive installation. Was causing crashes
1494 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1500 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1495
1501
1496 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1502 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1497 <marienz-AT-gentoo.org>, closes
1503 <marienz-AT-gentoo.org>, closes
1498 http://www.scipy.net/roundup/ipython/issue51.
1504 http://www.scipy.net/roundup/ipython/issue51.
1499
1505
1500 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1506 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1501
1507
1502 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1508 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1503 problem of excessive CPU usage under *nix and keyboard lag under
1509 problem of excessive CPU usage under *nix and keyboard lag under
1504 win32.
1510 win32.
1505
1511
1506 2006-01-10 *** Released version 0.7.0
1512 2006-01-10 *** Released version 0.7.0
1507
1513
1508 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1514 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1509
1515
1510 * IPython/Release.py (revision): tag version number to 0.7.0,
1516 * IPython/Release.py (revision): tag version number to 0.7.0,
1511 ready for release.
1517 ready for release.
1512
1518
1513 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1519 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1514 it informs the user of the name of the temp. file used. This can
1520 it informs the user of the name of the temp. file used. This can
1515 help if you decide later to reuse that same file, so you know
1521 help if you decide later to reuse that same file, so you know
1516 where to copy the info from.
1522 where to copy the info from.
1517
1523
1518 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1524 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1519
1525
1520 * setup_bdist_egg.py: little script to build an egg. Added
1526 * setup_bdist_egg.py: little script to build an egg. Added
1521 support in the release tools as well.
1527 support in the release tools as well.
1522
1528
1523 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1529 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1524
1530
1525 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1531 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1526 version selection (new -wxversion command line and ipythonrc
1532 version selection (new -wxversion command line and ipythonrc
1527 parameter). Patch contributed by Arnd Baecker
1533 parameter). Patch contributed by Arnd Baecker
1528 <arnd.baecker-AT-web.de>.
1534 <arnd.baecker-AT-web.de>.
1529
1535
1530 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1536 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1531 embedded instances, for variables defined at the interactive
1537 embedded instances, for variables defined at the interactive
1532 prompt of the embedded ipython. Reported by Arnd.
1538 prompt of the embedded ipython. Reported by Arnd.
1533
1539
1534 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1540 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1535 it can be used as a (stateful) toggle, or with a direct parameter.
1541 it can be used as a (stateful) toggle, or with a direct parameter.
1536
1542
1537 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1543 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1538 could be triggered in certain cases and cause the traceback
1544 could be triggered in certain cases and cause the traceback
1539 printer not to work.
1545 printer not to work.
1540
1546
1541 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1547 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1542
1548
1543 * IPython/iplib.py (_should_recompile): Small fix, closes
1549 * IPython/iplib.py (_should_recompile): Small fix, closes
1544 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1550 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1545
1551
1546 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1552 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1547
1553
1548 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1554 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1549 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1555 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1550 Moad for help with tracking it down.
1556 Moad for help with tracking it down.
1551
1557
1552 * IPython/iplib.py (handle_auto): fix autocall handling for
1558 * IPython/iplib.py (handle_auto): fix autocall handling for
1553 objects which support BOTH __getitem__ and __call__ (so that f [x]
1559 objects which support BOTH __getitem__ and __call__ (so that f [x]
1554 is left alone, instead of becoming f([x]) automatically).
1560 is left alone, instead of becoming f([x]) automatically).
1555
1561
1556 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1562 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1557 Ville's patch.
1563 Ville's patch.
1558
1564
1559 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1565 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1560
1566
1561 * IPython/iplib.py (handle_auto): changed autocall semantics to
1567 * IPython/iplib.py (handle_auto): changed autocall semantics to
1562 include 'smart' mode, where the autocall transformation is NOT
1568 include 'smart' mode, where the autocall transformation is NOT
1563 applied if there are no arguments on the line. This allows you to
1569 applied if there are no arguments on the line. This allows you to
1564 just type 'foo' if foo is a callable to see its internal form,
1570 just type 'foo' if foo is a callable to see its internal form,
1565 instead of having it called with no arguments (typically a
1571 instead of having it called with no arguments (typically a
1566 mistake). The old 'full' autocall still exists: for that, you
1572 mistake). The old 'full' autocall still exists: for that, you
1567 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1573 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1568
1574
1569 * IPython/completer.py (Completer.attr_matches): add
1575 * IPython/completer.py (Completer.attr_matches): add
1570 tab-completion support for Enthoughts' traits. After a report by
1576 tab-completion support for Enthoughts' traits. After a report by
1571 Arnd and a patch by Prabhu.
1577 Arnd and a patch by Prabhu.
1572
1578
1573 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1579 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1574
1580
1575 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1581 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1576 Schmolck's patch to fix inspect.getinnerframes().
1582 Schmolck's patch to fix inspect.getinnerframes().
1577
1583
1578 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1584 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1579 for embedded instances, regarding handling of namespaces and items
1585 for embedded instances, regarding handling of namespaces and items
1580 added to the __builtin__ one. Multiple embedded instances and
1586 added to the __builtin__ one. Multiple embedded instances and
1581 recursive embeddings should work better now (though I'm not sure
1587 recursive embeddings should work better now (though I'm not sure
1582 I've got all the corner cases fixed, that code is a bit of a brain
1588 I've got all the corner cases fixed, that code is a bit of a brain
1583 twister).
1589 twister).
1584
1590
1585 * IPython/Magic.py (magic_edit): added support to edit in-memory
1591 * IPython/Magic.py (magic_edit): added support to edit in-memory
1586 macros (automatically creates the necessary temp files). %edit
1592 macros (automatically creates the necessary temp files). %edit
1587 also doesn't return the file contents anymore, it's just noise.
1593 also doesn't return the file contents anymore, it's just noise.
1588
1594
1589 * IPython/completer.py (Completer.attr_matches): revert change to
1595 * IPython/completer.py (Completer.attr_matches): revert change to
1590 complete only on attributes listed in __all__. I realized it
1596 complete only on attributes listed in __all__. I realized it
1591 cripples the tab-completion system as a tool for exploring the
1597 cripples the tab-completion system as a tool for exploring the
1592 internals of unknown libraries (it renders any non-__all__
1598 internals of unknown libraries (it renders any non-__all__
1593 attribute off-limits). I got bit by this when trying to see
1599 attribute off-limits). I got bit by this when trying to see
1594 something inside the dis module.
1600 something inside the dis module.
1595
1601
1596 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1602 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1597
1603
1598 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1604 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1599 namespace for users and extension writers to hold data in. This
1605 namespace for users and extension writers to hold data in. This
1600 follows the discussion in
1606 follows the discussion in
1601 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1607 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1602
1608
1603 * IPython/completer.py (IPCompleter.complete): small patch to help
1609 * IPython/completer.py (IPCompleter.complete): small patch to help
1604 tab-completion under Emacs, after a suggestion by John Barnard
1610 tab-completion under Emacs, after a suggestion by John Barnard
1605 <barnarj-AT-ccf.org>.
1611 <barnarj-AT-ccf.org>.
1606
1612
1607 * IPython/Magic.py (Magic.extract_input_slices): added support for
1613 * IPython/Magic.py (Magic.extract_input_slices): added support for
1608 the slice notation in magics to use N-M to represent numbers N...M
1614 the slice notation in magics to use N-M to represent numbers N...M
1609 (closed endpoints). This is used by %macro and %save.
1615 (closed endpoints). This is used by %macro and %save.
1610
1616
1611 * IPython/completer.py (Completer.attr_matches): for modules which
1617 * IPython/completer.py (Completer.attr_matches): for modules which
1612 define __all__, complete only on those. After a patch by Jeffrey
1618 define __all__, complete only on those. After a patch by Jeffrey
1613 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1619 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1614 speed up this routine.
1620 speed up this routine.
1615
1621
1616 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1622 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1617 don't know if this is the end of it, but the behavior now is
1623 don't know if this is the end of it, but the behavior now is
1618 certainly much more correct. Note that coupled with macros,
1624 certainly much more correct. Note that coupled with macros,
1619 slightly surprising (at first) behavior may occur: a macro will in
1625 slightly surprising (at first) behavior may occur: a macro will in
1620 general expand to multiple lines of input, so upon exiting, the
1626 general expand to multiple lines of input, so upon exiting, the
1621 in/out counters will both be bumped by the corresponding amount
1627 in/out counters will both be bumped by the corresponding amount
1622 (as if the macro's contents had been typed interactively). Typing
1628 (as if the macro's contents had been typed interactively). Typing
1623 %hist will reveal the intermediate (silently processed) lines.
1629 %hist will reveal the intermediate (silently processed) lines.
1624
1630
1625 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1631 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1626 pickle to fail (%run was overwriting __main__ and not restoring
1632 pickle to fail (%run was overwriting __main__ and not restoring
1627 it, but pickle relies on __main__ to operate).
1633 it, but pickle relies on __main__ to operate).
1628
1634
1629 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1635 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1630 using properties, but forgot to make the main InteractiveShell
1636 using properties, but forgot to make the main InteractiveShell
1631 class a new-style class. Properties fail silently, and
1637 class a new-style class. Properties fail silently, and
1632 mysteriously, with old-style class (getters work, but
1638 mysteriously, with old-style class (getters work, but
1633 setters don't do anything).
1639 setters don't do anything).
1634
1640
1635 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1641 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1636
1642
1637 * IPython/Magic.py (magic_history): fix history reporting bug (I
1643 * IPython/Magic.py (magic_history): fix history reporting bug (I
1638 know some nasties are still there, I just can't seem to find a
1644 know some nasties are still there, I just can't seem to find a
1639 reproducible test case to track them down; the input history is
1645 reproducible test case to track them down; the input history is
1640 falling out of sync...)
1646 falling out of sync...)
1641
1647
1642 * IPython/iplib.py (handle_shell_escape): fix bug where both
1648 * IPython/iplib.py (handle_shell_escape): fix bug where both
1643 aliases and system accesses where broken for indented code (such
1649 aliases and system accesses where broken for indented code (such
1644 as loops).
1650 as loops).
1645
1651
1646 * IPython/genutils.py (shell): fix small but critical bug for
1652 * IPython/genutils.py (shell): fix small but critical bug for
1647 win32 system access.
1653 win32 system access.
1648
1654
1649 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1655 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1650
1656
1651 * IPython/iplib.py (showtraceback): remove use of the
1657 * IPython/iplib.py (showtraceback): remove use of the
1652 sys.last_{type/value/traceback} structures, which are non
1658 sys.last_{type/value/traceback} structures, which are non
1653 thread-safe.
1659 thread-safe.
1654 (_prefilter): change control flow to ensure that we NEVER
1660 (_prefilter): change control flow to ensure that we NEVER
1655 introspect objects when autocall is off. This will guarantee that
1661 introspect objects when autocall is off. This will guarantee that
1656 having an input line of the form 'x.y', where access to attribute
1662 having an input line of the form 'x.y', where access to attribute
1657 'y' has side effects, doesn't trigger the side effect TWICE. It
1663 'y' has side effects, doesn't trigger the side effect TWICE. It
1658 is important to note that, with autocall on, these side effects
1664 is important to note that, with autocall on, these side effects
1659 can still happen.
1665 can still happen.
1660 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1666 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1661 trio. IPython offers these three kinds of special calls which are
1667 trio. IPython offers these three kinds of special calls which are
1662 not python code, and it's a good thing to have their call method
1668 not python code, and it's a good thing to have their call method
1663 be accessible as pure python functions (not just special syntax at
1669 be accessible as pure python functions (not just special syntax at
1664 the command line). It gives us a better internal implementation
1670 the command line). It gives us a better internal implementation
1665 structure, as well as exposing these for user scripting more
1671 structure, as well as exposing these for user scripting more
1666 cleanly.
1672 cleanly.
1667
1673
1668 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1674 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1669 file. Now that they'll be more likely to be used with the
1675 file. Now that they'll be more likely to be used with the
1670 persistance system (%store), I want to make sure their module path
1676 persistance system (%store), I want to make sure their module path
1671 doesn't change in the future, so that we don't break things for
1677 doesn't change in the future, so that we don't break things for
1672 users' persisted data.
1678 users' persisted data.
1673
1679
1674 * IPython/iplib.py (autoindent_update): move indentation
1680 * IPython/iplib.py (autoindent_update): move indentation
1675 management into the _text_ processing loop, not the keyboard
1681 management into the _text_ processing loop, not the keyboard
1676 interactive one. This is necessary to correctly process non-typed
1682 interactive one. This is necessary to correctly process non-typed
1677 multiline input (such as macros).
1683 multiline input (such as macros).
1678
1684
1679 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1685 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1680 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1686 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1681 which was producing problems in the resulting manual.
1687 which was producing problems in the resulting manual.
1682 (magic_whos): improve reporting of instances (show their class,
1688 (magic_whos): improve reporting of instances (show their class,
1683 instead of simply printing 'instance' which isn't terribly
1689 instead of simply printing 'instance' which isn't terribly
1684 informative).
1690 informative).
1685
1691
1686 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1692 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1687 (minor mods) to support network shares under win32.
1693 (minor mods) to support network shares under win32.
1688
1694
1689 * IPython/winconsole.py (get_console_size): add new winconsole
1695 * IPython/winconsole.py (get_console_size): add new winconsole
1690 module and fixes to page_dumb() to improve its behavior under
1696 module and fixes to page_dumb() to improve its behavior under
1691 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1697 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1692
1698
1693 * IPython/Magic.py (Macro): simplified Macro class to just
1699 * IPython/Magic.py (Macro): simplified Macro class to just
1694 subclass list. We've had only 2.2 compatibility for a very long
1700 subclass list. We've had only 2.2 compatibility for a very long
1695 time, yet I was still avoiding subclassing the builtin types. No
1701 time, yet I was still avoiding subclassing the builtin types. No
1696 more (I'm also starting to use properties, though I won't shift to
1702 more (I'm also starting to use properties, though I won't shift to
1697 2.3-specific features quite yet).
1703 2.3-specific features quite yet).
1698 (magic_store): added Ville's patch for lightweight variable
1704 (magic_store): added Ville's patch for lightweight variable
1699 persistence, after a request on the user list by Matt Wilkie
1705 persistence, after a request on the user list by Matt Wilkie
1700 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1706 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1701 details.
1707 details.
1702
1708
1703 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1709 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1704 changed the default logfile name from 'ipython.log' to
1710 changed the default logfile name from 'ipython.log' to
1705 'ipython_log.py'. These logs are real python files, and now that
1711 'ipython_log.py'. These logs are real python files, and now that
1706 we have much better multiline support, people are more likely to
1712 we have much better multiline support, people are more likely to
1707 want to use them as such. Might as well name them correctly.
1713 want to use them as such. Might as well name them correctly.
1708
1714
1709 * IPython/Magic.py: substantial cleanup. While we can't stop
1715 * IPython/Magic.py: substantial cleanup. While we can't stop
1710 using magics as mixins, due to the existing customizations 'out
1716 using magics as mixins, due to the existing customizations 'out
1711 there' which rely on the mixin naming conventions, at least I
1717 there' which rely on the mixin naming conventions, at least I
1712 cleaned out all cross-class name usage. So once we are OK with
1718 cleaned out all cross-class name usage. So once we are OK with
1713 breaking compatibility, the two systems can be separated.
1719 breaking compatibility, the two systems can be separated.
1714
1720
1715 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1721 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1716 anymore, and the class is a fair bit less hideous as well. New
1722 anymore, and the class is a fair bit less hideous as well. New
1717 features were also introduced: timestamping of input, and logging
1723 features were also introduced: timestamping of input, and logging
1718 of output results. These are user-visible with the -t and -o
1724 of output results. These are user-visible with the -t and -o
1719 options to %logstart. Closes
1725 options to %logstart. Closes
1720 http://www.scipy.net/roundup/ipython/issue11 and a request by
1726 http://www.scipy.net/roundup/ipython/issue11 and a request by
1721 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1727 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1722
1728
1723 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1729 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1724
1730
1725 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1731 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1726 better handle backslashes in paths. See the thread 'More Windows
1732 better handle backslashes in paths. See the thread 'More Windows
1727 questions part 2 - \/ characters revisited' on the iypthon user
1733 questions part 2 - \/ characters revisited' on the iypthon user
1728 list:
1734 list:
1729 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1735 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1730
1736
1731 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1737 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1732
1738
1733 (InteractiveShell.__init__): change threaded shells to not use the
1739 (InteractiveShell.__init__): change threaded shells to not use the
1734 ipython crash handler. This was causing more problems than not,
1740 ipython crash handler. This was causing more problems than not,
1735 as exceptions in the main thread (GUI code, typically) would
1741 as exceptions in the main thread (GUI code, typically) would
1736 always show up as a 'crash', when they really weren't.
1742 always show up as a 'crash', when they really weren't.
1737
1743
1738 The colors and exception mode commands (%colors/%xmode) have been
1744 The colors and exception mode commands (%colors/%xmode) have been
1739 synchronized to also take this into account, so users can get
1745 synchronized to also take this into account, so users can get
1740 verbose exceptions for their threaded code as well. I also added
1746 verbose exceptions for their threaded code as well. I also added
1741 support for activating pdb inside this exception handler as well,
1747 support for activating pdb inside this exception handler as well,
1742 so now GUI authors can use IPython's enhanced pdb at runtime.
1748 so now GUI authors can use IPython's enhanced pdb at runtime.
1743
1749
1744 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1750 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1745 true by default, and add it to the shipped ipythonrc file. Since
1751 true by default, and add it to the shipped ipythonrc file. Since
1746 this asks the user before proceeding, I think it's OK to make it
1752 this asks the user before proceeding, I think it's OK to make it
1747 true by default.
1753 true by default.
1748
1754
1749 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1755 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1750 of the previous special-casing of input in the eval loop. I think
1756 of the previous special-casing of input in the eval loop. I think
1751 this is cleaner, as they really are commands and shouldn't have
1757 this is cleaner, as they really are commands and shouldn't have
1752 a special role in the middle of the core code.
1758 a special role in the middle of the core code.
1753
1759
1754 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1760 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1755
1761
1756 * IPython/iplib.py (edit_syntax_error): added support for
1762 * IPython/iplib.py (edit_syntax_error): added support for
1757 automatically reopening the editor if the file had a syntax error
1763 automatically reopening the editor if the file had a syntax error
1758 in it. Thanks to scottt who provided the patch at:
1764 in it. Thanks to scottt who provided the patch at:
1759 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1765 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1760 version committed).
1766 version committed).
1761
1767
1762 * IPython/iplib.py (handle_normal): add suport for multi-line
1768 * IPython/iplib.py (handle_normal): add suport for multi-line
1763 input with emtpy lines. This fixes
1769 input with emtpy lines. This fixes
1764 http://www.scipy.net/roundup/ipython/issue43 and a similar
1770 http://www.scipy.net/roundup/ipython/issue43 and a similar
1765 discussion on the user list.
1771 discussion on the user list.
1766
1772
1767 WARNING: a behavior change is necessarily introduced to support
1773 WARNING: a behavior change is necessarily introduced to support
1768 blank lines: now a single blank line with whitespace does NOT
1774 blank lines: now a single blank line with whitespace does NOT
1769 break the input loop, which means that when autoindent is on, by
1775 break the input loop, which means that when autoindent is on, by
1770 default hitting return on the next (indented) line does NOT exit.
1776 default hitting return on the next (indented) line does NOT exit.
1771
1777
1772 Instead, to exit a multiline input you can either have:
1778 Instead, to exit a multiline input you can either have:
1773
1779
1774 - TWO whitespace lines (just hit return again), or
1780 - TWO whitespace lines (just hit return again), or
1775 - a single whitespace line of a different length than provided
1781 - a single whitespace line of a different length than provided
1776 by the autoindent (add or remove a space).
1782 by the autoindent (add or remove a space).
1777
1783
1778 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1784 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1779 module to better organize all readline-related functionality.
1785 module to better organize all readline-related functionality.
1780 I've deleted FlexCompleter and put all completion clases here.
1786 I've deleted FlexCompleter and put all completion clases here.
1781
1787
1782 * IPython/iplib.py (raw_input): improve indentation management.
1788 * IPython/iplib.py (raw_input): improve indentation management.
1783 It is now possible to paste indented code with autoindent on, and
1789 It is now possible to paste indented code with autoindent on, and
1784 the code is interpreted correctly (though it still looks bad on
1790 the code is interpreted correctly (though it still looks bad on
1785 screen, due to the line-oriented nature of ipython).
1791 screen, due to the line-oriented nature of ipython).
1786 (MagicCompleter.complete): change behavior so that a TAB key on an
1792 (MagicCompleter.complete): change behavior so that a TAB key on an
1787 otherwise empty line actually inserts a tab, instead of completing
1793 otherwise empty line actually inserts a tab, instead of completing
1788 on the entire global namespace. This makes it easier to use the
1794 on the entire global namespace. This makes it easier to use the
1789 TAB key for indentation. After a request by Hans Meine
1795 TAB key for indentation. After a request by Hans Meine
1790 <hans_meine-AT-gmx.net>
1796 <hans_meine-AT-gmx.net>
1791 (_prefilter): add support so that typing plain 'exit' or 'quit'
1797 (_prefilter): add support so that typing plain 'exit' or 'quit'
1792 does a sensible thing. Originally I tried to deviate as little as
1798 does a sensible thing. Originally I tried to deviate as little as
1793 possible from the default python behavior, but even that one may
1799 possible from the default python behavior, but even that one may
1794 change in this direction (thread on python-dev to that effect).
1800 change in this direction (thread on python-dev to that effect).
1795 Regardless, ipython should do the right thing even if CPython's
1801 Regardless, ipython should do the right thing even if CPython's
1796 '>>>' prompt doesn't.
1802 '>>>' prompt doesn't.
1797 (InteractiveShell): removed subclassing code.InteractiveConsole
1803 (InteractiveShell): removed subclassing code.InteractiveConsole
1798 class. By now we'd overridden just about all of its methods: I've
1804 class. By now we'd overridden just about all of its methods: I've
1799 copied the remaining two over, and now ipython is a standalone
1805 copied the remaining two over, and now ipython is a standalone
1800 class. This will provide a clearer picture for the chainsaw
1806 class. This will provide a clearer picture for the chainsaw
1801 branch refactoring.
1807 branch refactoring.
1802
1808
1803 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1809 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1804
1810
1805 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1811 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1806 failures for objects which break when dir() is called on them.
1812 failures for objects which break when dir() is called on them.
1807
1813
1808 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1814 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1809 distinct local and global namespaces in the completer API. This
1815 distinct local and global namespaces in the completer API. This
1810 change allows us to properly handle completion with distinct
1816 change allows us to properly handle completion with distinct
1811 scopes, including in embedded instances (this had never really
1817 scopes, including in embedded instances (this had never really
1812 worked correctly).
1818 worked correctly).
1813
1819
1814 Note: this introduces a change in the constructor for
1820 Note: this introduces a change in the constructor for
1815 MagicCompleter, as a new global_namespace parameter is now the
1821 MagicCompleter, as a new global_namespace parameter is now the
1816 second argument (the others were bumped one position).
1822 second argument (the others were bumped one position).
1817
1823
1818 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1824 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1819
1825
1820 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1826 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1821 embedded instances (which can be done now thanks to Vivian's
1827 embedded instances (which can be done now thanks to Vivian's
1822 frame-handling fixes for pdb).
1828 frame-handling fixes for pdb).
1823 (InteractiveShell.__init__): Fix namespace handling problem in
1829 (InteractiveShell.__init__): Fix namespace handling problem in
1824 embedded instances. We were overwriting __main__ unconditionally,
1830 embedded instances. We were overwriting __main__ unconditionally,
1825 and this should only be done for 'full' (non-embedded) IPython;
1831 and this should only be done for 'full' (non-embedded) IPython;
1826 embedded instances must respect the caller's __main__. Thanks to
1832 embedded instances must respect the caller's __main__. Thanks to
1827 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1833 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1828
1834
1829 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1835 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1830
1836
1831 * setup.py: added download_url to setup(). This registers the
1837 * setup.py: added download_url to setup(). This registers the
1832 download address at PyPI, which is not only useful to humans
1838 download address at PyPI, which is not only useful to humans
1833 browsing the site, but is also picked up by setuptools (the Eggs
1839 browsing the site, but is also picked up by setuptools (the Eggs
1834 machinery). Thanks to Ville and R. Kern for the info/discussion
1840 machinery). Thanks to Ville and R. Kern for the info/discussion
1835 on this.
1841 on this.
1836
1842
1837 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1843 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1838
1844
1839 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1845 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1840 This brings a lot of nice functionality to the pdb mode, which now
1846 This brings a lot of nice functionality to the pdb mode, which now
1841 has tab-completion, syntax highlighting, and better stack handling
1847 has tab-completion, syntax highlighting, and better stack handling
1842 than before. Many thanks to Vivian De Smedt
1848 than before. Many thanks to Vivian De Smedt
1843 <vivian-AT-vdesmedt.com> for the original patches.
1849 <vivian-AT-vdesmedt.com> for the original patches.
1844
1850
1845 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1851 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1846
1852
1847 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1853 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1848 sequence to consistently accept the banner argument. The
1854 sequence to consistently accept the banner argument. The
1849 inconsistency was tripping SAGE, thanks to Gary Zablackis
1855 inconsistency was tripping SAGE, thanks to Gary Zablackis
1850 <gzabl-AT-yahoo.com> for the report.
1856 <gzabl-AT-yahoo.com> for the report.
1851
1857
1852 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1858 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1853
1859
1854 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1860 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1855 Fix bug where a naked 'alias' call in the ipythonrc file would
1861 Fix bug where a naked 'alias' call in the ipythonrc file would
1856 cause a crash. Bug reported by Jorgen Stenarson.
1862 cause a crash. Bug reported by Jorgen Stenarson.
1857
1863
1858 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1864 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1859
1865
1860 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1866 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1861 startup time.
1867 startup time.
1862
1868
1863 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1869 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1864 instances had introduced a bug with globals in normal code. Now
1870 instances had introduced a bug with globals in normal code. Now
1865 it's working in all cases.
1871 it's working in all cases.
1866
1872
1867 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1873 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1868 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1874 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1869 has been introduced to set the default case sensitivity of the
1875 has been introduced to set the default case sensitivity of the
1870 searches. Users can still select either mode at runtime on a
1876 searches. Users can still select either mode at runtime on a
1871 per-search basis.
1877 per-search basis.
1872
1878
1873 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1879 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1874
1880
1875 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1881 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1876 attributes in wildcard searches for subclasses. Modified version
1882 attributes in wildcard searches for subclasses. Modified version
1877 of a patch by Jorgen.
1883 of a patch by Jorgen.
1878
1884
1879 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1885 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1880
1886
1881 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1887 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1882 embedded instances. I added a user_global_ns attribute to the
1888 embedded instances. I added a user_global_ns attribute to the
1883 InteractiveShell class to handle this.
1889 InteractiveShell class to handle this.
1884
1890
1885 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1891 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1886
1892
1887 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1893 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1888 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1894 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1889 (reported under win32, but may happen also in other platforms).
1895 (reported under win32, but may happen also in other platforms).
1890 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1896 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1891
1897
1892 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1898 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1893
1899
1894 * IPython/Magic.py (magic_psearch): new support for wildcard
1900 * IPython/Magic.py (magic_psearch): new support for wildcard
1895 patterns. Now, typing ?a*b will list all names which begin with a
1901 patterns. Now, typing ?a*b will list all names which begin with a
1896 and end in b, for example. The %psearch magic has full
1902 and end in b, for example. The %psearch magic has full
1897 docstrings. Many thanks to JΓΆrgen Stenarson
1903 docstrings. Many thanks to JΓΆrgen Stenarson
1898 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1904 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1899 implementing this functionality.
1905 implementing this functionality.
1900
1906
1901 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1907 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1902
1908
1903 * Manual: fixed long-standing annoyance of double-dashes (as in
1909 * Manual: fixed long-standing annoyance of double-dashes (as in
1904 --prefix=~, for example) being stripped in the HTML version. This
1910 --prefix=~, for example) being stripped in the HTML version. This
1905 is a latex2html bug, but a workaround was provided. Many thanks
1911 is a latex2html bug, but a workaround was provided. Many thanks
1906 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1912 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1907 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1913 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1908 rolling. This seemingly small issue had tripped a number of users
1914 rolling. This seemingly small issue had tripped a number of users
1909 when first installing, so I'm glad to see it gone.
1915 when first installing, so I'm glad to see it gone.
1910
1916
1911 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1917 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1912
1918
1913 * IPython/Extensions/numeric_formats.py: fix missing import,
1919 * IPython/Extensions/numeric_formats.py: fix missing import,
1914 reported by Stephen Walton.
1920 reported by Stephen Walton.
1915
1921
1916 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1922 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1917
1923
1918 * IPython/demo.py: finish demo module, fully documented now.
1924 * IPython/demo.py: finish demo module, fully documented now.
1919
1925
1920 * IPython/genutils.py (file_read): simple little utility to read a
1926 * IPython/genutils.py (file_read): simple little utility to read a
1921 file and ensure it's closed afterwards.
1927 file and ensure it's closed afterwards.
1922
1928
1923 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1929 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1924
1930
1925 * IPython/demo.py (Demo.__init__): added support for individually
1931 * IPython/demo.py (Demo.__init__): added support for individually
1926 tagging blocks for automatic execution.
1932 tagging blocks for automatic execution.
1927
1933
1928 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1934 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1929 syntax-highlighted python sources, requested by John.
1935 syntax-highlighted python sources, requested by John.
1930
1936
1931 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1937 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1932
1938
1933 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1939 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1934 finishing.
1940 finishing.
1935
1941
1936 * IPython/genutils.py (shlex_split): moved from Magic to here,
1942 * IPython/genutils.py (shlex_split): moved from Magic to here,
1937 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1943 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1938
1944
1939 * IPython/demo.py (Demo.__init__): added support for silent
1945 * IPython/demo.py (Demo.__init__): added support for silent
1940 blocks, improved marks as regexps, docstrings written.
1946 blocks, improved marks as regexps, docstrings written.
1941 (Demo.__init__): better docstring, added support for sys.argv.
1947 (Demo.__init__): better docstring, added support for sys.argv.
1942
1948
1943 * IPython/genutils.py (marquee): little utility used by the demo
1949 * IPython/genutils.py (marquee): little utility used by the demo
1944 code, handy in general.
1950 code, handy in general.
1945
1951
1946 * IPython/demo.py (Demo.__init__): new class for interactive
1952 * IPython/demo.py (Demo.__init__): new class for interactive
1947 demos. Not documented yet, I just wrote it in a hurry for
1953 demos. Not documented yet, I just wrote it in a hurry for
1948 scipy'05. Will docstring later.
1954 scipy'05. Will docstring later.
1949
1955
1950 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1956 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1951
1957
1952 * IPython/Shell.py (sigint_handler): Drastic simplification which
1958 * IPython/Shell.py (sigint_handler): Drastic simplification which
1953 also seems to make Ctrl-C work correctly across threads! This is
1959 also seems to make Ctrl-C work correctly across threads! This is
1954 so simple, that I can't beleive I'd missed it before. Needs more
1960 so simple, that I can't beleive I'd missed it before. Needs more
1955 testing, though.
1961 testing, though.
1956 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1962 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1957 like this before...
1963 like this before...
1958
1964
1959 * IPython/genutils.py (get_home_dir): add protection against
1965 * IPython/genutils.py (get_home_dir): add protection against
1960 non-dirs in win32 registry.
1966 non-dirs in win32 registry.
1961
1967
1962 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1968 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1963 bug where dict was mutated while iterating (pysh crash).
1969 bug where dict was mutated while iterating (pysh crash).
1964
1970
1965 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1971 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1966
1972
1967 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1973 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1968 spurious newlines added by this routine. After a report by
1974 spurious newlines added by this routine. After a report by
1969 F. Mantegazza.
1975 F. Mantegazza.
1970
1976
1971 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1977 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1972
1978
1973 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1979 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1974 calls. These were a leftover from the GTK 1.x days, and can cause
1980 calls. These were a leftover from the GTK 1.x days, and can cause
1975 problems in certain cases (after a report by John Hunter).
1981 problems in certain cases (after a report by John Hunter).
1976
1982
1977 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1983 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1978 os.getcwd() fails at init time. Thanks to patch from David Remahl
1984 os.getcwd() fails at init time. Thanks to patch from David Remahl
1979 <chmod007-AT-mac.com>.
1985 <chmod007-AT-mac.com>.
1980 (InteractiveShell.__init__): prevent certain special magics from
1986 (InteractiveShell.__init__): prevent certain special magics from
1981 being shadowed by aliases. Closes
1987 being shadowed by aliases. Closes
1982 http://www.scipy.net/roundup/ipython/issue41.
1988 http://www.scipy.net/roundup/ipython/issue41.
1983
1989
1984 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1990 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1985
1991
1986 * IPython/iplib.py (InteractiveShell.complete): Added new
1992 * IPython/iplib.py (InteractiveShell.complete): Added new
1987 top-level completion method to expose the completion mechanism
1993 top-level completion method to expose the completion mechanism
1988 beyond readline-based environments.
1994 beyond readline-based environments.
1989
1995
1990 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1996 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1991
1997
1992 * tools/ipsvnc (svnversion): fix svnversion capture.
1998 * tools/ipsvnc (svnversion): fix svnversion capture.
1993
1999
1994 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2000 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1995 attribute to self, which was missing. Before, it was set by a
2001 attribute to self, which was missing. Before, it was set by a
1996 routine which in certain cases wasn't being called, so the
2002 routine which in certain cases wasn't being called, so the
1997 instance could end up missing the attribute. This caused a crash.
2003 instance could end up missing the attribute. This caused a crash.
1998 Closes http://www.scipy.net/roundup/ipython/issue40.
2004 Closes http://www.scipy.net/roundup/ipython/issue40.
1999
2005
2000 2005-08-16 Fernando Perez <fperez@colorado.edu>
2006 2005-08-16 Fernando Perez <fperez@colorado.edu>
2001
2007
2002 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2008 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2003 contains non-string attribute. Closes
2009 contains non-string attribute. Closes
2004 http://www.scipy.net/roundup/ipython/issue38.
2010 http://www.scipy.net/roundup/ipython/issue38.
2005
2011
2006 2005-08-14 Fernando Perez <fperez@colorado.edu>
2012 2005-08-14 Fernando Perez <fperez@colorado.edu>
2007
2013
2008 * tools/ipsvnc: Minor improvements, to add changeset info.
2014 * tools/ipsvnc: Minor improvements, to add changeset info.
2009
2015
2010 2005-08-12 Fernando Perez <fperez@colorado.edu>
2016 2005-08-12 Fernando Perez <fperez@colorado.edu>
2011
2017
2012 * IPython/iplib.py (runsource): remove self.code_to_run_src
2018 * IPython/iplib.py (runsource): remove self.code_to_run_src
2013 attribute. I realized this is nothing more than
2019 attribute. I realized this is nothing more than
2014 '\n'.join(self.buffer), and having the same data in two different
2020 '\n'.join(self.buffer), and having the same data in two different
2015 places is just asking for synchronization bugs. This may impact
2021 places is just asking for synchronization bugs. This may impact
2016 people who have custom exception handlers, so I need to warn
2022 people who have custom exception handlers, so I need to warn
2017 ipython-dev about it (F. Mantegazza may use them).
2023 ipython-dev about it (F. Mantegazza may use them).
2018
2024
2019 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2025 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2020
2026
2021 * IPython/genutils.py: fix 2.2 compatibility (generators)
2027 * IPython/genutils.py: fix 2.2 compatibility (generators)
2022
2028
2023 2005-07-18 Fernando Perez <fperez@colorado.edu>
2029 2005-07-18 Fernando Perez <fperez@colorado.edu>
2024
2030
2025 * IPython/genutils.py (get_home_dir): fix to help users with
2031 * IPython/genutils.py (get_home_dir): fix to help users with
2026 invalid $HOME under win32.
2032 invalid $HOME under win32.
2027
2033
2028 2005-07-17 Fernando Perez <fperez@colorado.edu>
2034 2005-07-17 Fernando Perez <fperez@colorado.edu>
2029
2035
2030 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2036 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2031 some old hacks and clean up a bit other routines; code should be
2037 some old hacks and clean up a bit other routines; code should be
2032 simpler and a bit faster.
2038 simpler and a bit faster.
2033
2039
2034 * IPython/iplib.py (interact): removed some last-resort attempts
2040 * IPython/iplib.py (interact): removed some last-resort attempts
2035 to survive broken stdout/stderr. That code was only making it
2041 to survive broken stdout/stderr. That code was only making it
2036 harder to abstract out the i/o (necessary for gui integration),
2042 harder to abstract out the i/o (necessary for gui integration),
2037 and the crashes it could prevent were extremely rare in practice
2043 and the crashes it could prevent were extremely rare in practice
2038 (besides being fully user-induced in a pretty violent manner).
2044 (besides being fully user-induced in a pretty violent manner).
2039
2045
2040 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2046 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2041 Nothing major yet, but the code is simpler to read; this should
2047 Nothing major yet, but the code is simpler to read; this should
2042 make it easier to do more serious modifications in the future.
2048 make it easier to do more serious modifications in the future.
2043
2049
2044 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2050 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2045 which broke in .15 (thanks to a report by Ville).
2051 which broke in .15 (thanks to a report by Ville).
2046
2052
2047 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2053 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2048 be quite correct, I know next to nothing about unicode). This
2054 be quite correct, I know next to nothing about unicode). This
2049 will allow unicode strings to be used in prompts, amongst other
2055 will allow unicode strings to be used in prompts, amongst other
2050 cases. It also will prevent ipython from crashing when unicode
2056 cases. It also will prevent ipython from crashing when unicode
2051 shows up unexpectedly in many places. If ascii encoding fails, we
2057 shows up unexpectedly in many places. If ascii encoding fails, we
2052 assume utf_8. Currently the encoding is not a user-visible
2058 assume utf_8. Currently the encoding is not a user-visible
2053 setting, though it could be made so if there is demand for it.
2059 setting, though it could be made so if there is demand for it.
2054
2060
2055 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2061 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2056
2062
2057 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2063 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2058
2064
2059 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2065 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2060
2066
2061 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2067 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2062 code can work transparently for 2.2/2.3.
2068 code can work transparently for 2.2/2.3.
2063
2069
2064 2005-07-16 Fernando Perez <fperez@colorado.edu>
2070 2005-07-16 Fernando Perez <fperez@colorado.edu>
2065
2071
2066 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2072 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2067 out of the color scheme table used for coloring exception
2073 out of the color scheme table used for coloring exception
2068 tracebacks. This allows user code to add new schemes at runtime.
2074 tracebacks. This allows user code to add new schemes at runtime.
2069 This is a minimally modified version of the patch at
2075 This is a minimally modified version of the patch at
2070 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2076 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2071 for the contribution.
2077 for the contribution.
2072
2078
2073 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2079 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2074 slightly modified version of the patch in
2080 slightly modified version of the patch in
2075 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2081 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2076 to remove the previous try/except solution (which was costlier).
2082 to remove the previous try/except solution (which was costlier).
2077 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2083 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2078
2084
2079 2005-06-08 Fernando Perez <fperez@colorado.edu>
2085 2005-06-08 Fernando Perez <fperez@colorado.edu>
2080
2086
2081 * IPython/iplib.py (write/write_err): Add methods to abstract all
2087 * IPython/iplib.py (write/write_err): Add methods to abstract all
2082 I/O a bit more.
2088 I/O a bit more.
2083
2089
2084 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2090 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2085 warning, reported by Aric Hagberg, fix by JD Hunter.
2091 warning, reported by Aric Hagberg, fix by JD Hunter.
2086
2092
2087 2005-06-02 *** Released version 0.6.15
2093 2005-06-02 *** Released version 0.6.15
2088
2094
2089 2005-06-01 Fernando Perez <fperez@colorado.edu>
2095 2005-06-01 Fernando Perez <fperez@colorado.edu>
2090
2096
2091 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2097 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2092 tab-completion of filenames within open-quoted strings. Note that
2098 tab-completion of filenames within open-quoted strings. Note that
2093 this requires that in ~/.ipython/ipythonrc, users change the
2099 this requires that in ~/.ipython/ipythonrc, users change the
2094 readline delimiters configuration to read:
2100 readline delimiters configuration to read:
2095
2101
2096 readline_remove_delims -/~
2102 readline_remove_delims -/~
2097
2103
2098
2104
2099 2005-05-31 *** Released version 0.6.14
2105 2005-05-31 *** Released version 0.6.14
2100
2106
2101 2005-05-29 Fernando Perez <fperez@colorado.edu>
2107 2005-05-29 Fernando Perez <fperez@colorado.edu>
2102
2108
2103 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2109 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2104 with files not on the filesystem. Reported by Eliyahu Sandler
2110 with files not on the filesystem. Reported by Eliyahu Sandler
2105 <eli@gondolin.net>
2111 <eli@gondolin.net>
2106
2112
2107 2005-05-22 Fernando Perez <fperez@colorado.edu>
2113 2005-05-22 Fernando Perez <fperez@colorado.edu>
2108
2114
2109 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2115 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2110 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2116 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2111
2117
2112 2005-05-19 Fernando Perez <fperez@colorado.edu>
2118 2005-05-19 Fernando Perez <fperez@colorado.edu>
2113
2119
2114 * IPython/iplib.py (safe_execfile): close a file which could be
2120 * IPython/iplib.py (safe_execfile): close a file which could be
2115 left open (causing problems in win32, which locks open files).
2121 left open (causing problems in win32, which locks open files).
2116 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2122 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2117
2123
2118 2005-05-18 Fernando Perez <fperez@colorado.edu>
2124 2005-05-18 Fernando Perez <fperez@colorado.edu>
2119
2125
2120 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2126 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2121 keyword arguments correctly to safe_execfile().
2127 keyword arguments correctly to safe_execfile().
2122
2128
2123 2005-05-13 Fernando Perez <fperez@colorado.edu>
2129 2005-05-13 Fernando Perez <fperez@colorado.edu>
2124
2130
2125 * ipython.1: Added info about Qt to manpage, and threads warning
2131 * ipython.1: Added info about Qt to manpage, and threads warning
2126 to usage page (invoked with --help).
2132 to usage page (invoked with --help).
2127
2133
2128 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2134 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2129 new matcher (it goes at the end of the priority list) to do
2135 new matcher (it goes at the end of the priority list) to do
2130 tab-completion on named function arguments. Submitted by George
2136 tab-completion on named function arguments. Submitted by George
2131 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2137 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2132 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2138 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2133 for more details.
2139 for more details.
2134
2140
2135 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2141 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2136 SystemExit exceptions in the script being run. Thanks to a report
2142 SystemExit exceptions in the script being run. Thanks to a report
2137 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2143 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2138 producing very annoying behavior when running unit tests.
2144 producing very annoying behavior when running unit tests.
2139
2145
2140 2005-05-12 Fernando Perez <fperez@colorado.edu>
2146 2005-05-12 Fernando Perez <fperez@colorado.edu>
2141
2147
2142 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2148 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2143 which I'd broken (again) due to a changed regexp. In the process,
2149 which I'd broken (again) due to a changed regexp. In the process,
2144 added ';' as an escape to auto-quote the whole line without
2150 added ';' as an escape to auto-quote the whole line without
2145 splitting its arguments. Thanks to a report by Jerry McRae
2151 splitting its arguments. Thanks to a report by Jerry McRae
2146 <qrs0xyc02-AT-sneakemail.com>.
2152 <qrs0xyc02-AT-sneakemail.com>.
2147
2153
2148 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2154 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2149 possible crashes caused by a TokenError. Reported by Ed Schofield
2155 possible crashes caused by a TokenError. Reported by Ed Schofield
2150 <schofield-AT-ftw.at>.
2156 <schofield-AT-ftw.at>.
2151
2157
2152 2005-05-06 Fernando Perez <fperez@colorado.edu>
2158 2005-05-06 Fernando Perez <fperez@colorado.edu>
2153
2159
2154 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2160 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2155
2161
2156 2005-04-29 Fernando Perez <fperez@colorado.edu>
2162 2005-04-29 Fernando Perez <fperez@colorado.edu>
2157
2163
2158 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2164 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2159 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2165 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2160 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2166 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2161 which provides support for Qt interactive usage (similar to the
2167 which provides support for Qt interactive usage (similar to the
2162 existing one for WX and GTK). This had been often requested.
2168 existing one for WX and GTK). This had been often requested.
2163
2169
2164 2005-04-14 *** Released version 0.6.13
2170 2005-04-14 *** Released version 0.6.13
2165
2171
2166 2005-04-08 Fernando Perez <fperez@colorado.edu>
2172 2005-04-08 Fernando Perez <fperez@colorado.edu>
2167
2173
2168 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2174 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2169 from _ofind, which gets called on almost every input line. Now,
2175 from _ofind, which gets called on almost every input line. Now,
2170 we only try to get docstrings if they are actually going to be
2176 we only try to get docstrings if they are actually going to be
2171 used (the overhead of fetching unnecessary docstrings can be
2177 used (the overhead of fetching unnecessary docstrings can be
2172 noticeable for certain objects, such as Pyro proxies).
2178 noticeable for certain objects, such as Pyro proxies).
2173
2179
2174 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2180 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2175 for completers. For some reason I had been passing them the state
2181 for completers. For some reason I had been passing them the state
2176 variable, which completers never actually need, and was in
2182 variable, which completers never actually need, and was in
2177 conflict with the rlcompleter API. Custom completers ONLY need to
2183 conflict with the rlcompleter API. Custom completers ONLY need to
2178 take the text parameter.
2184 take the text parameter.
2179
2185
2180 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2186 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2181 work correctly in pysh. I've also moved all the logic which used
2187 work correctly in pysh. I've also moved all the logic which used
2182 to be in pysh.py here, which will prevent problems with future
2188 to be in pysh.py here, which will prevent problems with future
2183 upgrades. However, this time I must warn users to update their
2189 upgrades. However, this time I must warn users to update their
2184 pysh profile to include the line
2190 pysh profile to include the line
2185
2191
2186 import_all IPython.Extensions.InterpreterExec
2192 import_all IPython.Extensions.InterpreterExec
2187
2193
2188 because otherwise things won't work for them. They MUST also
2194 because otherwise things won't work for them. They MUST also
2189 delete pysh.py and the line
2195 delete pysh.py and the line
2190
2196
2191 execfile pysh.py
2197 execfile pysh.py
2192
2198
2193 from their ipythonrc-pysh.
2199 from their ipythonrc-pysh.
2194
2200
2195 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2201 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2196 robust in the face of objects whose dir() returns non-strings
2202 robust in the face of objects whose dir() returns non-strings
2197 (which it shouldn't, but some broken libs like ITK do). Thanks to
2203 (which it shouldn't, but some broken libs like ITK do). Thanks to
2198 a patch by John Hunter (implemented differently, though). Also
2204 a patch by John Hunter (implemented differently, though). Also
2199 minor improvements by using .extend instead of + on lists.
2205 minor improvements by using .extend instead of + on lists.
2200
2206
2201 * pysh.py:
2207 * pysh.py:
2202
2208
2203 2005-04-06 Fernando Perez <fperez@colorado.edu>
2209 2005-04-06 Fernando Perez <fperez@colorado.edu>
2204
2210
2205 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2211 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2206 by default, so that all users benefit from it. Those who don't
2212 by default, so that all users benefit from it. Those who don't
2207 want it can still turn it off.
2213 want it can still turn it off.
2208
2214
2209 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2215 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2210 config file, I'd forgotten about this, so users were getting it
2216 config file, I'd forgotten about this, so users were getting it
2211 off by default.
2217 off by default.
2212
2218
2213 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2219 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2214 consistency. Now magics can be called in multiline statements,
2220 consistency. Now magics can be called in multiline statements,
2215 and python variables can be expanded in magic calls via $var.
2221 and python variables can be expanded in magic calls via $var.
2216 This makes the magic system behave just like aliases or !system
2222 This makes the magic system behave just like aliases or !system
2217 calls.
2223 calls.
2218
2224
2219 2005-03-28 Fernando Perez <fperez@colorado.edu>
2225 2005-03-28 Fernando Perez <fperez@colorado.edu>
2220
2226
2221 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2227 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2222 expensive string additions for building command. Add support for
2228 expensive string additions for building command. Add support for
2223 trailing ';' when autocall is used.
2229 trailing ';' when autocall is used.
2224
2230
2225 2005-03-26 Fernando Perez <fperez@colorado.edu>
2231 2005-03-26 Fernando Perez <fperez@colorado.edu>
2226
2232
2227 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2233 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2228 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2234 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2229 ipython.el robust against prompts with any number of spaces
2235 ipython.el robust against prompts with any number of spaces
2230 (including 0) after the ':' character.
2236 (including 0) after the ':' character.
2231
2237
2232 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2238 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2233 continuation prompt, which misled users to think the line was
2239 continuation prompt, which misled users to think the line was
2234 already indented. Closes debian Bug#300847, reported to me by
2240 already indented. Closes debian Bug#300847, reported to me by
2235 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2241 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2236
2242
2237 2005-03-23 Fernando Perez <fperez@colorado.edu>
2243 2005-03-23 Fernando Perez <fperez@colorado.edu>
2238
2244
2239 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2245 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2240 properly aligned if they have embedded newlines.
2246 properly aligned if they have embedded newlines.
2241
2247
2242 * IPython/iplib.py (runlines): Add a public method to expose
2248 * IPython/iplib.py (runlines): Add a public method to expose
2243 IPython's code execution machinery, so that users can run strings
2249 IPython's code execution machinery, so that users can run strings
2244 as if they had been typed at the prompt interactively.
2250 as if they had been typed at the prompt interactively.
2245 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2251 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2246 methods which can call the system shell, but with python variable
2252 methods which can call the system shell, but with python variable
2247 expansion. The three such methods are: __IPYTHON__.system,
2253 expansion. The three such methods are: __IPYTHON__.system,
2248 .getoutput and .getoutputerror. These need to be documented in a
2254 .getoutput and .getoutputerror. These need to be documented in a
2249 'public API' section (to be written) of the manual.
2255 'public API' section (to be written) of the manual.
2250
2256
2251 2005-03-20 Fernando Perez <fperez@colorado.edu>
2257 2005-03-20 Fernando Perez <fperez@colorado.edu>
2252
2258
2253 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2259 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2254 for custom exception handling. This is quite powerful, and it
2260 for custom exception handling. This is quite powerful, and it
2255 allows for user-installable exception handlers which can trap
2261 allows for user-installable exception handlers which can trap
2256 custom exceptions at runtime and treat them separately from
2262 custom exceptions at runtime and treat them separately from
2257 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2263 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2258 Mantegazza <mantegazza-AT-ill.fr>.
2264 Mantegazza <mantegazza-AT-ill.fr>.
2259 (InteractiveShell.set_custom_completer): public API function to
2265 (InteractiveShell.set_custom_completer): public API function to
2260 add new completers at runtime.
2266 add new completers at runtime.
2261
2267
2262 2005-03-19 Fernando Perez <fperez@colorado.edu>
2268 2005-03-19 Fernando Perez <fperez@colorado.edu>
2263
2269
2264 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2270 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2265 allow objects which provide their docstrings via non-standard
2271 allow objects which provide their docstrings via non-standard
2266 mechanisms (like Pyro proxies) to still be inspected by ipython's
2272 mechanisms (like Pyro proxies) to still be inspected by ipython's
2267 ? system.
2273 ? system.
2268
2274
2269 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2275 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2270 automatic capture system. I tried quite hard to make it work
2276 automatic capture system. I tried quite hard to make it work
2271 reliably, and simply failed. I tried many combinations with the
2277 reliably, and simply failed. I tried many combinations with the
2272 subprocess module, but eventually nothing worked in all needed
2278 subprocess module, but eventually nothing worked in all needed
2273 cases (not blocking stdin for the child, duplicating stdout
2279 cases (not blocking stdin for the child, duplicating stdout
2274 without blocking, etc). The new %sc/%sx still do capture to these
2280 without blocking, etc). The new %sc/%sx still do capture to these
2275 magical list/string objects which make shell use much more
2281 magical list/string objects which make shell use much more
2276 conveninent, so not all is lost.
2282 conveninent, so not all is lost.
2277
2283
2278 XXX - FIX MANUAL for the change above!
2284 XXX - FIX MANUAL for the change above!
2279
2285
2280 (runsource): I copied code.py's runsource() into ipython to modify
2286 (runsource): I copied code.py's runsource() into ipython to modify
2281 it a bit. Now the code object and source to be executed are
2287 it a bit. Now the code object and source to be executed are
2282 stored in ipython. This makes this info accessible to third-party
2288 stored in ipython. This makes this info accessible to third-party
2283 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2289 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2284 Mantegazza <mantegazza-AT-ill.fr>.
2290 Mantegazza <mantegazza-AT-ill.fr>.
2285
2291
2286 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2292 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2287 history-search via readline (like C-p/C-n). I'd wanted this for a
2293 history-search via readline (like C-p/C-n). I'd wanted this for a
2288 long time, but only recently found out how to do it. For users
2294 long time, but only recently found out how to do it. For users
2289 who already have their ipythonrc files made and want this, just
2295 who already have their ipythonrc files made and want this, just
2290 add:
2296 add:
2291
2297
2292 readline_parse_and_bind "\e[A": history-search-backward
2298 readline_parse_and_bind "\e[A": history-search-backward
2293 readline_parse_and_bind "\e[B": history-search-forward
2299 readline_parse_and_bind "\e[B": history-search-forward
2294
2300
2295 2005-03-18 Fernando Perez <fperez@colorado.edu>
2301 2005-03-18 Fernando Perez <fperez@colorado.edu>
2296
2302
2297 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2303 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2298 LSString and SList classes which allow transparent conversions
2304 LSString and SList classes which allow transparent conversions
2299 between list mode and whitespace-separated string.
2305 between list mode and whitespace-separated string.
2300 (magic_r): Fix recursion problem in %r.
2306 (magic_r): Fix recursion problem in %r.
2301
2307
2302 * IPython/genutils.py (LSString): New class to be used for
2308 * IPython/genutils.py (LSString): New class to be used for
2303 automatic storage of the results of all alias/system calls in _o
2309 automatic storage of the results of all alias/system calls in _o
2304 and _e (stdout/err). These provide a .l/.list attribute which
2310 and _e (stdout/err). These provide a .l/.list attribute which
2305 does automatic splitting on newlines. This means that for most
2311 does automatic splitting on newlines. This means that for most
2306 uses, you'll never need to do capturing of output with %sc/%sx
2312 uses, you'll never need to do capturing of output with %sc/%sx
2307 anymore, since ipython keeps this always done for you. Note that
2313 anymore, since ipython keeps this always done for you. Note that
2308 only the LAST results are stored, the _o/e variables are
2314 only the LAST results are stored, the _o/e variables are
2309 overwritten on each call. If you need to save their contents
2315 overwritten on each call. If you need to save their contents
2310 further, simply bind them to any other name.
2316 further, simply bind them to any other name.
2311
2317
2312 2005-03-17 Fernando Perez <fperez@colorado.edu>
2318 2005-03-17 Fernando Perez <fperez@colorado.edu>
2313
2319
2314 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2320 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2315 prompt namespace handling.
2321 prompt namespace handling.
2316
2322
2317 2005-03-16 Fernando Perez <fperez@colorado.edu>
2323 2005-03-16 Fernando Perez <fperez@colorado.edu>
2318
2324
2319 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2325 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2320 classic prompts to be '>>> ' (final space was missing, and it
2326 classic prompts to be '>>> ' (final space was missing, and it
2321 trips the emacs python mode).
2327 trips the emacs python mode).
2322 (BasePrompt.__str__): Added safe support for dynamic prompt
2328 (BasePrompt.__str__): Added safe support for dynamic prompt
2323 strings. Now you can set your prompt string to be '$x', and the
2329 strings. Now you can set your prompt string to be '$x', and the
2324 value of x will be printed from your interactive namespace. The
2330 value of x will be printed from your interactive namespace. The
2325 interpolation syntax includes the full Itpl support, so
2331 interpolation syntax includes the full Itpl support, so
2326 ${foo()+x+bar()} is a valid prompt string now, and the function
2332 ${foo()+x+bar()} is a valid prompt string now, and the function
2327 calls will be made at runtime.
2333 calls will be made at runtime.
2328
2334
2329 2005-03-15 Fernando Perez <fperez@colorado.edu>
2335 2005-03-15 Fernando Perez <fperez@colorado.edu>
2330
2336
2331 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2337 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2332 avoid name clashes in pylab. %hist still works, it just forwards
2338 avoid name clashes in pylab. %hist still works, it just forwards
2333 the call to %history.
2339 the call to %history.
2334
2340
2335 2005-03-02 *** Released version 0.6.12
2341 2005-03-02 *** Released version 0.6.12
2336
2342
2337 2005-03-02 Fernando Perez <fperez@colorado.edu>
2343 2005-03-02 Fernando Perez <fperez@colorado.edu>
2338
2344
2339 * IPython/iplib.py (handle_magic): log magic calls properly as
2345 * IPython/iplib.py (handle_magic): log magic calls properly as
2340 ipmagic() function calls.
2346 ipmagic() function calls.
2341
2347
2342 * IPython/Magic.py (magic_time): Improved %time to support
2348 * IPython/Magic.py (magic_time): Improved %time to support
2343 statements and provide wall-clock as well as CPU time.
2349 statements and provide wall-clock as well as CPU time.
2344
2350
2345 2005-02-27 Fernando Perez <fperez@colorado.edu>
2351 2005-02-27 Fernando Perez <fperez@colorado.edu>
2346
2352
2347 * IPython/hooks.py: New hooks module, to expose user-modifiable
2353 * IPython/hooks.py: New hooks module, to expose user-modifiable
2348 IPython functionality in a clean manner. For now only the editor
2354 IPython functionality in a clean manner. For now only the editor
2349 hook is actually written, and other thigns which I intend to turn
2355 hook is actually written, and other thigns which I intend to turn
2350 into proper hooks aren't yet there. The display and prefilter
2356 into proper hooks aren't yet there. The display and prefilter
2351 stuff, for example, should be hooks. But at least now the
2357 stuff, for example, should be hooks. But at least now the
2352 framework is in place, and the rest can be moved here with more
2358 framework is in place, and the rest can be moved here with more
2353 time later. IPython had had a .hooks variable for a long time for
2359 time later. IPython had had a .hooks variable for a long time for
2354 this purpose, but I'd never actually used it for anything.
2360 this purpose, but I'd never actually used it for anything.
2355
2361
2356 2005-02-26 Fernando Perez <fperez@colorado.edu>
2362 2005-02-26 Fernando Perez <fperez@colorado.edu>
2357
2363
2358 * IPython/ipmaker.py (make_IPython): make the default ipython
2364 * IPython/ipmaker.py (make_IPython): make the default ipython
2359 directory be called _ipython under win32, to follow more the
2365 directory be called _ipython under win32, to follow more the
2360 naming peculiarities of that platform (where buggy software like
2366 naming peculiarities of that platform (where buggy software like
2361 Visual Sourcesafe breaks with .named directories). Reported by
2367 Visual Sourcesafe breaks with .named directories). Reported by
2362 Ville Vainio.
2368 Ville Vainio.
2363
2369
2364 2005-02-23 Fernando Perez <fperez@colorado.edu>
2370 2005-02-23 Fernando Perez <fperez@colorado.edu>
2365
2371
2366 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2372 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2367 auto_aliases for win32 which were causing problems. Users can
2373 auto_aliases for win32 which were causing problems. Users can
2368 define the ones they personally like.
2374 define the ones they personally like.
2369
2375
2370 2005-02-21 Fernando Perez <fperez@colorado.edu>
2376 2005-02-21 Fernando Perez <fperez@colorado.edu>
2371
2377
2372 * IPython/Magic.py (magic_time): new magic to time execution of
2378 * IPython/Magic.py (magic_time): new magic to time execution of
2373 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2379 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2374
2380
2375 2005-02-19 Fernando Perez <fperez@colorado.edu>
2381 2005-02-19 Fernando Perez <fperez@colorado.edu>
2376
2382
2377 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2383 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2378 into keys (for prompts, for example).
2384 into keys (for prompts, for example).
2379
2385
2380 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2386 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2381 prompts in case users want them. This introduces a small behavior
2387 prompts in case users want them. This introduces a small behavior
2382 change: ipython does not automatically add a space to all prompts
2388 change: ipython does not automatically add a space to all prompts
2383 anymore. To get the old prompts with a space, users should add it
2389 anymore. To get the old prompts with a space, users should add it
2384 manually to their ipythonrc file, so for example prompt_in1 should
2390 manually to their ipythonrc file, so for example prompt_in1 should
2385 now read 'In [\#]: ' instead of 'In [\#]:'.
2391 now read 'In [\#]: ' instead of 'In [\#]:'.
2386 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2392 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2387 file) to control left-padding of secondary prompts.
2393 file) to control left-padding of secondary prompts.
2388
2394
2389 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2395 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2390 the profiler can't be imported. Fix for Debian, which removed
2396 the profiler can't be imported. Fix for Debian, which removed
2391 profile.py because of License issues. I applied a slightly
2397 profile.py because of License issues. I applied a slightly
2392 modified version of the original Debian patch at
2398 modified version of the original Debian patch at
2393 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2399 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2394
2400
2395 2005-02-17 Fernando Perez <fperez@colorado.edu>
2401 2005-02-17 Fernando Perez <fperez@colorado.edu>
2396
2402
2397 * IPython/genutils.py (native_line_ends): Fix bug which would
2403 * IPython/genutils.py (native_line_ends): Fix bug which would
2398 cause improper line-ends under win32 b/c I was not opening files
2404 cause improper line-ends under win32 b/c I was not opening files
2399 in binary mode. Bug report and fix thanks to Ville.
2405 in binary mode. Bug report and fix thanks to Ville.
2400
2406
2401 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2407 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2402 trying to catch spurious foo[1] autocalls. My fix actually broke
2408 trying to catch spurious foo[1] autocalls. My fix actually broke
2403 ',/' autoquote/call with explicit escape (bad regexp).
2409 ',/' autoquote/call with explicit escape (bad regexp).
2404
2410
2405 2005-02-15 *** Released version 0.6.11
2411 2005-02-15 *** Released version 0.6.11
2406
2412
2407 2005-02-14 Fernando Perez <fperez@colorado.edu>
2413 2005-02-14 Fernando Perez <fperez@colorado.edu>
2408
2414
2409 * IPython/background_jobs.py: New background job management
2415 * IPython/background_jobs.py: New background job management
2410 subsystem. This is implemented via a new set of classes, and
2416 subsystem. This is implemented via a new set of classes, and
2411 IPython now provides a builtin 'jobs' object for background job
2417 IPython now provides a builtin 'jobs' object for background job
2412 execution. A convenience %bg magic serves as a lightweight
2418 execution. A convenience %bg magic serves as a lightweight
2413 frontend for starting the more common type of calls. This was
2419 frontend for starting the more common type of calls. This was
2414 inspired by discussions with B. Granger and the BackgroundCommand
2420 inspired by discussions with B. Granger and the BackgroundCommand
2415 class described in the book Python Scripting for Computational
2421 class described in the book Python Scripting for Computational
2416 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2422 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2417 (although ultimately no code from this text was used, as IPython's
2423 (although ultimately no code from this text was used, as IPython's
2418 system is a separate implementation).
2424 system is a separate implementation).
2419
2425
2420 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2426 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2421 to control the completion of single/double underscore names
2427 to control the completion of single/double underscore names
2422 separately. As documented in the example ipytonrc file, the
2428 separately. As documented in the example ipytonrc file, the
2423 readline_omit__names variable can now be set to 2, to omit even
2429 readline_omit__names variable can now be set to 2, to omit even
2424 single underscore names. Thanks to a patch by Brian Wong
2430 single underscore names. Thanks to a patch by Brian Wong
2425 <BrianWong-AT-AirgoNetworks.Com>.
2431 <BrianWong-AT-AirgoNetworks.Com>.
2426 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2432 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2427 be autocalled as foo([1]) if foo were callable. A problem for
2433 be autocalled as foo([1]) if foo were callable. A problem for
2428 things which are both callable and implement __getitem__.
2434 things which are both callable and implement __getitem__.
2429 (init_readline): Fix autoindentation for win32. Thanks to a patch
2435 (init_readline): Fix autoindentation for win32. Thanks to a patch
2430 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2436 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2431
2437
2432 2005-02-12 Fernando Perez <fperez@colorado.edu>
2438 2005-02-12 Fernando Perez <fperez@colorado.edu>
2433
2439
2434 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2440 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2435 which I had written long ago to sort out user error messages which
2441 which I had written long ago to sort out user error messages which
2436 may occur during startup. This seemed like a good idea initially,
2442 may occur during startup. This seemed like a good idea initially,
2437 but it has proven a disaster in retrospect. I don't want to
2443 but it has proven a disaster in retrospect. I don't want to
2438 change much code for now, so my fix is to set the internal 'debug'
2444 change much code for now, so my fix is to set the internal 'debug'
2439 flag to true everywhere, whose only job was precisely to control
2445 flag to true everywhere, whose only job was precisely to control
2440 this subsystem. This closes issue 28 (as well as avoiding all
2446 this subsystem. This closes issue 28 (as well as avoiding all
2441 sorts of strange hangups which occur from time to time).
2447 sorts of strange hangups which occur from time to time).
2442
2448
2443 2005-02-07 Fernando Perez <fperez@colorado.edu>
2449 2005-02-07 Fernando Perez <fperez@colorado.edu>
2444
2450
2445 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2451 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2446 previous call produced a syntax error.
2452 previous call produced a syntax error.
2447
2453
2448 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2454 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2449 classes without constructor.
2455 classes without constructor.
2450
2456
2451 2005-02-06 Fernando Perez <fperez@colorado.edu>
2457 2005-02-06 Fernando Perez <fperez@colorado.edu>
2452
2458
2453 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2459 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2454 completions with the results of each matcher, so we return results
2460 completions with the results of each matcher, so we return results
2455 to the user from all namespaces. This breaks with ipython
2461 to the user from all namespaces. This breaks with ipython
2456 tradition, but I think it's a nicer behavior. Now you get all
2462 tradition, but I think it's a nicer behavior. Now you get all
2457 possible completions listed, from all possible namespaces (python,
2463 possible completions listed, from all possible namespaces (python,
2458 filesystem, magics...) After a request by John Hunter
2464 filesystem, magics...) After a request by John Hunter
2459 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2465 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2460
2466
2461 2005-02-05 Fernando Perez <fperez@colorado.edu>
2467 2005-02-05 Fernando Perez <fperez@colorado.edu>
2462
2468
2463 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2469 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2464 the call had quote characters in it (the quotes were stripped).
2470 the call had quote characters in it (the quotes were stripped).
2465
2471
2466 2005-01-31 Fernando Perez <fperez@colorado.edu>
2472 2005-01-31 Fernando Perez <fperez@colorado.edu>
2467
2473
2468 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2474 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2469 Itpl.itpl() to make the code more robust against psyco
2475 Itpl.itpl() to make the code more robust against psyco
2470 optimizations.
2476 optimizations.
2471
2477
2472 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2478 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2473 of causing an exception. Quicker, cleaner.
2479 of causing an exception. Quicker, cleaner.
2474
2480
2475 2005-01-28 Fernando Perez <fperez@colorado.edu>
2481 2005-01-28 Fernando Perez <fperez@colorado.edu>
2476
2482
2477 * scripts/ipython_win_post_install.py (install): hardcode
2483 * scripts/ipython_win_post_install.py (install): hardcode
2478 sys.prefix+'python.exe' as the executable path. It turns out that
2484 sys.prefix+'python.exe' as the executable path. It turns out that
2479 during the post-installation run, sys.executable resolves to the
2485 during the post-installation run, sys.executable resolves to the
2480 name of the binary installer! I should report this as a distutils
2486 name of the binary installer! I should report this as a distutils
2481 bug, I think. I updated the .10 release with this tiny fix, to
2487 bug, I think. I updated the .10 release with this tiny fix, to
2482 avoid annoying the lists further.
2488 avoid annoying the lists further.
2483
2489
2484 2005-01-27 *** Released version 0.6.10
2490 2005-01-27 *** Released version 0.6.10
2485
2491
2486 2005-01-27 Fernando Perez <fperez@colorado.edu>
2492 2005-01-27 Fernando Perez <fperez@colorado.edu>
2487
2493
2488 * IPython/numutils.py (norm): Added 'inf' as optional name for
2494 * IPython/numutils.py (norm): Added 'inf' as optional name for
2489 L-infinity norm, included references to mathworld.com for vector
2495 L-infinity norm, included references to mathworld.com for vector
2490 norm definitions.
2496 norm definitions.
2491 (amin/amax): added amin/amax for array min/max. Similar to what
2497 (amin/amax): added amin/amax for array min/max. Similar to what
2492 pylab ships with after the recent reorganization of names.
2498 pylab ships with after the recent reorganization of names.
2493 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2499 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2494
2500
2495 * ipython.el: committed Alex's recent fixes and improvements.
2501 * ipython.el: committed Alex's recent fixes and improvements.
2496 Tested with python-mode from CVS, and it looks excellent. Since
2502 Tested with python-mode from CVS, and it looks excellent. Since
2497 python-mode hasn't released anything in a while, I'm temporarily
2503 python-mode hasn't released anything in a while, I'm temporarily
2498 putting a copy of today's CVS (v 4.70) of python-mode in:
2504 putting a copy of today's CVS (v 4.70) of python-mode in:
2499 http://ipython.scipy.org/tmp/python-mode.el
2505 http://ipython.scipy.org/tmp/python-mode.el
2500
2506
2501 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2507 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2502 sys.executable for the executable name, instead of assuming it's
2508 sys.executable for the executable name, instead of assuming it's
2503 called 'python.exe' (the post-installer would have produced broken
2509 called 'python.exe' (the post-installer would have produced broken
2504 setups on systems with a differently named python binary).
2510 setups on systems with a differently named python binary).
2505
2511
2506 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2512 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2507 references to os.linesep, to make the code more
2513 references to os.linesep, to make the code more
2508 platform-independent. This is also part of the win32 coloring
2514 platform-independent. This is also part of the win32 coloring
2509 fixes.
2515 fixes.
2510
2516
2511 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2517 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2512 lines, which actually cause coloring bugs because the length of
2518 lines, which actually cause coloring bugs because the length of
2513 the line is very difficult to correctly compute with embedded
2519 the line is very difficult to correctly compute with embedded
2514 escapes. This was the source of all the coloring problems under
2520 escapes. This was the source of all the coloring problems under
2515 Win32. I think that _finally_, Win32 users have a properly
2521 Win32. I think that _finally_, Win32 users have a properly
2516 working ipython in all respects. This would never have happened
2522 working ipython in all respects. This would never have happened
2517 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2523 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2518
2524
2519 2005-01-26 *** Released version 0.6.9
2525 2005-01-26 *** Released version 0.6.9
2520
2526
2521 2005-01-25 Fernando Perez <fperez@colorado.edu>
2527 2005-01-25 Fernando Perez <fperez@colorado.edu>
2522
2528
2523 * setup.py: finally, we have a true Windows installer, thanks to
2529 * setup.py: finally, we have a true Windows installer, thanks to
2524 the excellent work of Viktor Ransmayr
2530 the excellent work of Viktor Ransmayr
2525 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2531 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2526 Windows users. The setup routine is quite a bit cleaner thanks to
2532 Windows users. The setup routine is quite a bit cleaner thanks to
2527 this, and the post-install script uses the proper functions to
2533 this, and the post-install script uses the proper functions to
2528 allow a clean de-installation using the standard Windows Control
2534 allow a clean de-installation using the standard Windows Control
2529 Panel.
2535 Panel.
2530
2536
2531 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2537 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2532 environment variable under all OSes (including win32) if
2538 environment variable under all OSes (including win32) if
2533 available. This will give consistency to win32 users who have set
2539 available. This will give consistency to win32 users who have set
2534 this variable for any reason. If os.environ['HOME'] fails, the
2540 this variable for any reason. If os.environ['HOME'] fails, the
2535 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2541 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2536
2542
2537 2005-01-24 Fernando Perez <fperez@colorado.edu>
2543 2005-01-24 Fernando Perez <fperez@colorado.edu>
2538
2544
2539 * IPython/numutils.py (empty_like): add empty_like(), similar to
2545 * IPython/numutils.py (empty_like): add empty_like(), similar to
2540 zeros_like() but taking advantage of the new empty() Numeric routine.
2546 zeros_like() but taking advantage of the new empty() Numeric routine.
2541
2547
2542 2005-01-23 *** Released version 0.6.8
2548 2005-01-23 *** Released version 0.6.8
2543
2549
2544 2005-01-22 Fernando Perez <fperez@colorado.edu>
2550 2005-01-22 Fernando Perez <fperez@colorado.edu>
2545
2551
2546 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2552 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2547 automatic show() calls. After discussing things with JDH, it
2553 automatic show() calls. After discussing things with JDH, it
2548 turns out there are too many corner cases where this can go wrong.
2554 turns out there are too many corner cases where this can go wrong.
2549 It's best not to try to be 'too smart', and simply have ipython
2555 It's best not to try to be 'too smart', and simply have ipython
2550 reproduce as much as possible the default behavior of a normal
2556 reproduce as much as possible the default behavior of a normal
2551 python shell.
2557 python shell.
2552
2558
2553 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2559 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2554 line-splitting regexp and _prefilter() to avoid calling getattr()
2560 line-splitting regexp and _prefilter() to avoid calling getattr()
2555 on assignments. This closes
2561 on assignments. This closes
2556 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2562 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2557 readline uses getattr(), so a simple <TAB> keypress is still
2563 readline uses getattr(), so a simple <TAB> keypress is still
2558 enough to trigger getattr() calls on an object.
2564 enough to trigger getattr() calls on an object.
2559
2565
2560 2005-01-21 Fernando Perez <fperez@colorado.edu>
2566 2005-01-21 Fernando Perez <fperez@colorado.edu>
2561
2567
2562 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2568 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2563 docstring under pylab so it doesn't mask the original.
2569 docstring under pylab so it doesn't mask the original.
2564
2570
2565 2005-01-21 *** Released version 0.6.7
2571 2005-01-21 *** Released version 0.6.7
2566
2572
2567 2005-01-21 Fernando Perez <fperez@colorado.edu>
2573 2005-01-21 Fernando Perez <fperez@colorado.edu>
2568
2574
2569 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2575 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2570 signal handling for win32 users in multithreaded mode.
2576 signal handling for win32 users in multithreaded mode.
2571
2577
2572 2005-01-17 Fernando Perez <fperez@colorado.edu>
2578 2005-01-17 Fernando Perez <fperez@colorado.edu>
2573
2579
2574 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2580 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2575 instances with no __init__. After a crash report by Norbert Nemec
2581 instances with no __init__. After a crash report by Norbert Nemec
2576 <Norbert-AT-nemec-online.de>.
2582 <Norbert-AT-nemec-online.de>.
2577
2583
2578 2005-01-14 Fernando Perez <fperez@colorado.edu>
2584 2005-01-14 Fernando Perez <fperez@colorado.edu>
2579
2585
2580 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2586 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2581 names for verbose exceptions, when multiple dotted names and the
2587 names for verbose exceptions, when multiple dotted names and the
2582 'parent' object were present on the same line.
2588 'parent' object were present on the same line.
2583
2589
2584 2005-01-11 Fernando Perez <fperez@colorado.edu>
2590 2005-01-11 Fernando Perez <fperez@colorado.edu>
2585
2591
2586 * IPython/genutils.py (flag_calls): new utility to trap and flag
2592 * IPython/genutils.py (flag_calls): new utility to trap and flag
2587 calls in functions. I need it to clean up matplotlib support.
2593 calls in functions. I need it to clean up matplotlib support.
2588 Also removed some deprecated code in genutils.
2594 Also removed some deprecated code in genutils.
2589
2595
2590 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2596 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2591 that matplotlib scripts called with %run, which don't call show()
2597 that matplotlib scripts called with %run, which don't call show()
2592 themselves, still have their plotting windows open.
2598 themselves, still have their plotting windows open.
2593
2599
2594 2005-01-05 Fernando Perez <fperez@colorado.edu>
2600 2005-01-05 Fernando Perez <fperez@colorado.edu>
2595
2601
2596 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2602 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2597 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2603 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2598
2604
2599 2004-12-19 Fernando Perez <fperez@colorado.edu>
2605 2004-12-19 Fernando Perez <fperez@colorado.edu>
2600
2606
2601 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2607 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2602 parent_runcode, which was an eyesore. The same result can be
2608 parent_runcode, which was an eyesore. The same result can be
2603 obtained with Python's regular superclass mechanisms.
2609 obtained with Python's regular superclass mechanisms.
2604
2610
2605 2004-12-17 Fernando Perez <fperez@colorado.edu>
2611 2004-12-17 Fernando Perez <fperez@colorado.edu>
2606
2612
2607 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2613 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2608 reported by Prabhu.
2614 reported by Prabhu.
2609 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2615 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2610 sys.stderr) instead of explicitly calling sys.stderr. This helps
2616 sys.stderr) instead of explicitly calling sys.stderr. This helps
2611 maintain our I/O abstractions clean, for future GUI embeddings.
2617 maintain our I/O abstractions clean, for future GUI embeddings.
2612
2618
2613 * IPython/genutils.py (info): added new utility for sys.stderr
2619 * IPython/genutils.py (info): added new utility for sys.stderr
2614 unified info message handling (thin wrapper around warn()).
2620 unified info message handling (thin wrapper around warn()).
2615
2621
2616 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2622 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2617 composite (dotted) names on verbose exceptions.
2623 composite (dotted) names on verbose exceptions.
2618 (VerboseTB.nullrepr): harden against another kind of errors which
2624 (VerboseTB.nullrepr): harden against another kind of errors which
2619 Python's inspect module can trigger, and which were crashing
2625 Python's inspect module can trigger, and which were crashing
2620 IPython. Thanks to a report by Marco Lombardi
2626 IPython. Thanks to a report by Marco Lombardi
2621 <mlombard-AT-ma010192.hq.eso.org>.
2627 <mlombard-AT-ma010192.hq.eso.org>.
2622
2628
2623 2004-12-13 *** Released version 0.6.6
2629 2004-12-13 *** Released version 0.6.6
2624
2630
2625 2004-12-12 Fernando Perez <fperez@colorado.edu>
2631 2004-12-12 Fernando Perez <fperez@colorado.edu>
2626
2632
2627 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2633 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2628 generated by pygtk upon initialization if it was built without
2634 generated by pygtk upon initialization if it was built without
2629 threads (for matplotlib users). After a crash reported by
2635 threads (for matplotlib users). After a crash reported by
2630 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2636 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2631
2637
2632 * IPython/ipmaker.py (make_IPython): fix small bug in the
2638 * IPython/ipmaker.py (make_IPython): fix small bug in the
2633 import_some parameter for multiple imports.
2639 import_some parameter for multiple imports.
2634
2640
2635 * IPython/iplib.py (ipmagic): simplified the interface of
2641 * IPython/iplib.py (ipmagic): simplified the interface of
2636 ipmagic() to take a single string argument, just as it would be
2642 ipmagic() to take a single string argument, just as it would be
2637 typed at the IPython cmd line.
2643 typed at the IPython cmd line.
2638 (ipalias): Added new ipalias() with an interface identical to
2644 (ipalias): Added new ipalias() with an interface identical to
2639 ipmagic(). This completes exposing a pure python interface to the
2645 ipmagic(). This completes exposing a pure python interface to the
2640 alias and magic system, which can be used in loops or more complex
2646 alias and magic system, which can be used in loops or more complex
2641 code where IPython's automatic line mangling is not active.
2647 code where IPython's automatic line mangling is not active.
2642
2648
2643 * IPython/genutils.py (timing): changed interface of timing to
2649 * IPython/genutils.py (timing): changed interface of timing to
2644 simply run code once, which is the most common case. timings()
2650 simply run code once, which is the most common case. timings()
2645 remains unchanged, for the cases where you want multiple runs.
2651 remains unchanged, for the cases where you want multiple runs.
2646
2652
2647 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2653 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2648 bug where Python2.2 crashes with exec'ing code which does not end
2654 bug where Python2.2 crashes with exec'ing code which does not end
2649 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2655 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2650 before.
2656 before.
2651
2657
2652 2004-12-10 Fernando Perez <fperez@colorado.edu>
2658 2004-12-10 Fernando Perez <fperez@colorado.edu>
2653
2659
2654 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2660 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2655 -t to -T, to accomodate the new -t flag in %run (the %run and
2661 -t to -T, to accomodate the new -t flag in %run (the %run and
2656 %prun options are kind of intermixed, and it's not easy to change
2662 %prun options are kind of intermixed, and it's not easy to change
2657 this with the limitations of python's getopt).
2663 this with the limitations of python's getopt).
2658
2664
2659 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2665 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2660 the execution of scripts. It's not as fine-tuned as timeit.py,
2666 the execution of scripts. It's not as fine-tuned as timeit.py,
2661 but it works from inside ipython (and under 2.2, which lacks
2667 but it works from inside ipython (and under 2.2, which lacks
2662 timeit.py). Optionally a number of runs > 1 can be given for
2668 timeit.py). Optionally a number of runs > 1 can be given for
2663 timing very short-running code.
2669 timing very short-running code.
2664
2670
2665 * IPython/genutils.py (uniq_stable): new routine which returns a
2671 * IPython/genutils.py (uniq_stable): new routine which returns a
2666 list of unique elements in any iterable, but in stable order of
2672 list of unique elements in any iterable, but in stable order of
2667 appearance. I needed this for the ultraTB fixes, and it's a handy
2673 appearance. I needed this for the ultraTB fixes, and it's a handy
2668 utility.
2674 utility.
2669
2675
2670 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2676 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2671 dotted names in Verbose exceptions. This had been broken since
2677 dotted names in Verbose exceptions. This had been broken since
2672 the very start, now x.y will properly be printed in a Verbose
2678 the very start, now x.y will properly be printed in a Verbose
2673 traceback, instead of x being shown and y appearing always as an
2679 traceback, instead of x being shown and y appearing always as an
2674 'undefined global'. Getting this to work was a bit tricky,
2680 'undefined global'. Getting this to work was a bit tricky,
2675 because by default python tokenizers are stateless. Saved by
2681 because by default python tokenizers are stateless. Saved by
2676 python's ability to easily add a bit of state to an arbitrary
2682 python's ability to easily add a bit of state to an arbitrary
2677 function (without needing to build a full-blown callable object).
2683 function (without needing to build a full-blown callable object).
2678
2684
2679 Also big cleanup of this code, which had horrendous runtime
2685 Also big cleanup of this code, which had horrendous runtime
2680 lookups of zillions of attributes for colorization. Moved all
2686 lookups of zillions of attributes for colorization. Moved all
2681 this code into a few templates, which make it cleaner and quicker.
2687 this code into a few templates, which make it cleaner and quicker.
2682
2688
2683 Printout quality was also improved for Verbose exceptions: one
2689 Printout quality was also improved for Verbose exceptions: one
2684 variable per line, and memory addresses are printed (this can be
2690 variable per line, and memory addresses are printed (this can be
2685 quite handy in nasty debugging situations, which is what Verbose
2691 quite handy in nasty debugging situations, which is what Verbose
2686 is for).
2692 is for).
2687
2693
2688 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2694 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2689 the command line as scripts to be loaded by embedded instances.
2695 the command line as scripts to be loaded by embedded instances.
2690 Doing so has the potential for an infinite recursion if there are
2696 Doing so has the potential for an infinite recursion if there are
2691 exceptions thrown in the process. This fixes a strange crash
2697 exceptions thrown in the process. This fixes a strange crash
2692 reported by Philippe MULLER <muller-AT-irit.fr>.
2698 reported by Philippe MULLER <muller-AT-irit.fr>.
2693
2699
2694 2004-12-09 Fernando Perez <fperez@colorado.edu>
2700 2004-12-09 Fernando Perez <fperez@colorado.edu>
2695
2701
2696 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2702 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2697 to reflect new names in matplotlib, which now expose the
2703 to reflect new names in matplotlib, which now expose the
2698 matlab-compatible interface via a pylab module instead of the
2704 matlab-compatible interface via a pylab module instead of the
2699 'matlab' name. The new code is backwards compatible, so users of
2705 'matlab' name. The new code is backwards compatible, so users of
2700 all matplotlib versions are OK. Patch by J. Hunter.
2706 all matplotlib versions are OK. Patch by J. Hunter.
2701
2707
2702 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2708 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2703 of __init__ docstrings for instances (class docstrings are already
2709 of __init__ docstrings for instances (class docstrings are already
2704 automatically printed). Instances with customized docstrings
2710 automatically printed). Instances with customized docstrings
2705 (indep. of the class) are also recognized and all 3 separate
2711 (indep. of the class) are also recognized and all 3 separate
2706 docstrings are printed (instance, class, constructor). After some
2712 docstrings are printed (instance, class, constructor). After some
2707 comments/suggestions by J. Hunter.
2713 comments/suggestions by J. Hunter.
2708
2714
2709 2004-12-05 Fernando Perez <fperez@colorado.edu>
2715 2004-12-05 Fernando Perez <fperez@colorado.edu>
2710
2716
2711 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2717 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2712 warnings when tab-completion fails and triggers an exception.
2718 warnings when tab-completion fails and triggers an exception.
2713
2719
2714 2004-12-03 Fernando Perez <fperez@colorado.edu>
2720 2004-12-03 Fernando Perez <fperez@colorado.edu>
2715
2721
2716 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2722 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2717 be triggered when using 'run -p'. An incorrect option flag was
2723 be triggered when using 'run -p'. An incorrect option flag was
2718 being set ('d' instead of 'D').
2724 being set ('d' instead of 'D').
2719 (manpage): fix missing escaped \- sign.
2725 (manpage): fix missing escaped \- sign.
2720
2726
2721 2004-11-30 *** Released version 0.6.5
2727 2004-11-30 *** Released version 0.6.5
2722
2728
2723 2004-11-30 Fernando Perez <fperez@colorado.edu>
2729 2004-11-30 Fernando Perez <fperez@colorado.edu>
2724
2730
2725 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2731 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2726 setting with -d option.
2732 setting with -d option.
2727
2733
2728 * setup.py (docfiles): Fix problem where the doc glob I was using
2734 * setup.py (docfiles): Fix problem where the doc glob I was using
2729 was COMPLETELY BROKEN. It was giving the right files by pure
2735 was COMPLETELY BROKEN. It was giving the right files by pure
2730 accident, but failed once I tried to include ipython.el. Note:
2736 accident, but failed once I tried to include ipython.el. Note:
2731 glob() does NOT allow you to do exclusion on multiple endings!
2737 glob() does NOT allow you to do exclusion on multiple endings!
2732
2738
2733 2004-11-29 Fernando Perez <fperez@colorado.edu>
2739 2004-11-29 Fernando Perez <fperez@colorado.edu>
2734
2740
2735 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2741 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2736 the manpage as the source. Better formatting & consistency.
2742 the manpage as the source. Better formatting & consistency.
2737
2743
2738 * IPython/Magic.py (magic_run): Added new -d option, to run
2744 * IPython/Magic.py (magic_run): Added new -d option, to run
2739 scripts under the control of the python pdb debugger. Note that
2745 scripts under the control of the python pdb debugger. Note that
2740 this required changing the %prun option -d to -D, to avoid a clash
2746 this required changing the %prun option -d to -D, to avoid a clash
2741 (since %run must pass options to %prun, and getopt is too dumb to
2747 (since %run must pass options to %prun, and getopt is too dumb to
2742 handle options with string values with embedded spaces). Thanks
2748 handle options with string values with embedded spaces). Thanks
2743 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2749 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2744 (magic_who_ls): added type matching to %who and %whos, so that one
2750 (magic_who_ls): added type matching to %who and %whos, so that one
2745 can filter their output to only include variables of certain
2751 can filter their output to only include variables of certain
2746 types. Another suggestion by Matthew.
2752 types. Another suggestion by Matthew.
2747 (magic_whos): Added memory summaries in kb and Mb for arrays.
2753 (magic_whos): Added memory summaries in kb and Mb for arrays.
2748 (magic_who): Improve formatting (break lines every 9 vars).
2754 (magic_who): Improve formatting (break lines every 9 vars).
2749
2755
2750 2004-11-28 Fernando Perez <fperez@colorado.edu>
2756 2004-11-28 Fernando Perez <fperez@colorado.edu>
2751
2757
2752 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2758 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2753 cache when empty lines were present.
2759 cache when empty lines were present.
2754
2760
2755 2004-11-24 Fernando Perez <fperez@colorado.edu>
2761 2004-11-24 Fernando Perez <fperez@colorado.edu>
2756
2762
2757 * IPython/usage.py (__doc__): document the re-activated threading
2763 * IPython/usage.py (__doc__): document the re-activated threading
2758 options for WX and GTK.
2764 options for WX and GTK.
2759
2765
2760 2004-11-23 Fernando Perez <fperez@colorado.edu>
2766 2004-11-23 Fernando Perez <fperez@colorado.edu>
2761
2767
2762 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2768 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2763 the -wthread and -gthread options, along with a new -tk one to try
2769 the -wthread and -gthread options, along with a new -tk one to try
2764 and coordinate Tk threading with wx/gtk. The tk support is very
2770 and coordinate Tk threading with wx/gtk. The tk support is very
2765 platform dependent, since it seems to require Tcl and Tk to be
2771 platform dependent, since it seems to require Tcl and Tk to be
2766 built with threads (Fedora1/2 appears NOT to have it, but in
2772 built with threads (Fedora1/2 appears NOT to have it, but in
2767 Prabhu's Debian boxes it works OK). But even with some Tk
2773 Prabhu's Debian boxes it works OK). But even with some Tk
2768 limitations, this is a great improvement.
2774 limitations, this is a great improvement.
2769
2775
2770 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2776 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2771 info in user prompts. Patch by Prabhu.
2777 info in user prompts. Patch by Prabhu.
2772
2778
2773 2004-11-18 Fernando Perez <fperez@colorado.edu>
2779 2004-11-18 Fernando Perez <fperez@colorado.edu>
2774
2780
2775 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2781 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2776 EOFErrors and bail, to avoid infinite loops if a non-terminating
2782 EOFErrors and bail, to avoid infinite loops if a non-terminating
2777 file is fed into ipython. Patch submitted in issue 19 by user,
2783 file is fed into ipython. Patch submitted in issue 19 by user,
2778 many thanks.
2784 many thanks.
2779
2785
2780 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2786 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2781 autoquote/parens in continuation prompts, which can cause lots of
2787 autoquote/parens in continuation prompts, which can cause lots of
2782 problems. Closes roundup issue 20.
2788 problems. Closes roundup issue 20.
2783
2789
2784 2004-11-17 Fernando Perez <fperez@colorado.edu>
2790 2004-11-17 Fernando Perez <fperez@colorado.edu>
2785
2791
2786 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2792 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2787 reported as debian bug #280505. I'm not sure my local changelog
2793 reported as debian bug #280505. I'm not sure my local changelog
2788 entry has the proper debian format (Jack?).
2794 entry has the proper debian format (Jack?).
2789
2795
2790 2004-11-08 *** Released version 0.6.4
2796 2004-11-08 *** Released version 0.6.4
2791
2797
2792 2004-11-08 Fernando Perez <fperez@colorado.edu>
2798 2004-11-08 Fernando Perez <fperez@colorado.edu>
2793
2799
2794 * IPython/iplib.py (init_readline): Fix exit message for Windows
2800 * IPython/iplib.py (init_readline): Fix exit message for Windows
2795 when readline is active. Thanks to a report by Eric Jones
2801 when readline is active. Thanks to a report by Eric Jones
2796 <eric-AT-enthought.com>.
2802 <eric-AT-enthought.com>.
2797
2803
2798 2004-11-07 Fernando Perez <fperez@colorado.edu>
2804 2004-11-07 Fernando Perez <fperez@colorado.edu>
2799
2805
2800 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2806 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2801 sometimes seen by win2k/cygwin users.
2807 sometimes seen by win2k/cygwin users.
2802
2808
2803 2004-11-06 Fernando Perez <fperez@colorado.edu>
2809 2004-11-06 Fernando Perez <fperez@colorado.edu>
2804
2810
2805 * IPython/iplib.py (interact): Change the handling of %Exit from
2811 * IPython/iplib.py (interact): Change the handling of %Exit from
2806 trying to propagate a SystemExit to an internal ipython flag.
2812 trying to propagate a SystemExit to an internal ipython flag.
2807 This is less elegant than using Python's exception mechanism, but
2813 This is less elegant than using Python's exception mechanism, but
2808 I can't get that to work reliably with threads, so under -pylab
2814 I can't get that to work reliably with threads, so under -pylab
2809 %Exit was hanging IPython. Cross-thread exception handling is
2815 %Exit was hanging IPython. Cross-thread exception handling is
2810 really a bitch. Thaks to a bug report by Stephen Walton
2816 really a bitch. Thaks to a bug report by Stephen Walton
2811 <stephen.walton-AT-csun.edu>.
2817 <stephen.walton-AT-csun.edu>.
2812
2818
2813 2004-11-04 Fernando Perez <fperez@colorado.edu>
2819 2004-11-04 Fernando Perez <fperez@colorado.edu>
2814
2820
2815 * IPython/iplib.py (raw_input_original): store a pointer to the
2821 * IPython/iplib.py (raw_input_original): store a pointer to the
2816 true raw_input to harden against code which can modify it
2822 true raw_input to harden against code which can modify it
2817 (wx.py.PyShell does this and would otherwise crash ipython).
2823 (wx.py.PyShell does this and would otherwise crash ipython).
2818 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2824 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2819
2825
2820 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2826 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2821 Ctrl-C problem, which does not mess up the input line.
2827 Ctrl-C problem, which does not mess up the input line.
2822
2828
2823 2004-11-03 Fernando Perez <fperez@colorado.edu>
2829 2004-11-03 Fernando Perez <fperez@colorado.edu>
2824
2830
2825 * IPython/Release.py: Changed licensing to BSD, in all files.
2831 * IPython/Release.py: Changed licensing to BSD, in all files.
2826 (name): lowercase name for tarball/RPM release.
2832 (name): lowercase name for tarball/RPM release.
2827
2833
2828 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2834 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2829 use throughout ipython.
2835 use throughout ipython.
2830
2836
2831 * IPython/Magic.py (Magic._ofind): Switch to using the new
2837 * IPython/Magic.py (Magic._ofind): Switch to using the new
2832 OInspect.getdoc() function.
2838 OInspect.getdoc() function.
2833
2839
2834 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2840 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2835 of the line currently being canceled via Ctrl-C. It's extremely
2841 of the line currently being canceled via Ctrl-C. It's extremely
2836 ugly, but I don't know how to do it better (the problem is one of
2842 ugly, but I don't know how to do it better (the problem is one of
2837 handling cross-thread exceptions).
2843 handling cross-thread exceptions).
2838
2844
2839 2004-10-28 Fernando Perez <fperez@colorado.edu>
2845 2004-10-28 Fernando Perez <fperez@colorado.edu>
2840
2846
2841 * IPython/Shell.py (signal_handler): add signal handlers to trap
2847 * IPython/Shell.py (signal_handler): add signal handlers to trap
2842 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2848 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2843 report by Francesc Alted.
2849 report by Francesc Alted.
2844
2850
2845 2004-10-21 Fernando Perez <fperez@colorado.edu>
2851 2004-10-21 Fernando Perez <fperez@colorado.edu>
2846
2852
2847 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2853 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2848 to % for pysh syntax extensions.
2854 to % for pysh syntax extensions.
2849
2855
2850 2004-10-09 Fernando Perez <fperez@colorado.edu>
2856 2004-10-09 Fernando Perez <fperez@colorado.edu>
2851
2857
2852 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2858 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2853 arrays to print a more useful summary, without calling str(arr).
2859 arrays to print a more useful summary, without calling str(arr).
2854 This avoids the problem of extremely lengthy computations which
2860 This avoids the problem of extremely lengthy computations which
2855 occur if arr is large, and appear to the user as a system lockup
2861 occur if arr is large, and appear to the user as a system lockup
2856 with 100% cpu activity. After a suggestion by Kristian Sandberg
2862 with 100% cpu activity. After a suggestion by Kristian Sandberg
2857 <Kristian.Sandberg@colorado.edu>.
2863 <Kristian.Sandberg@colorado.edu>.
2858 (Magic.__init__): fix bug in global magic escapes not being
2864 (Magic.__init__): fix bug in global magic escapes not being
2859 correctly set.
2865 correctly set.
2860
2866
2861 2004-10-08 Fernando Perez <fperez@colorado.edu>
2867 2004-10-08 Fernando Perez <fperez@colorado.edu>
2862
2868
2863 * IPython/Magic.py (__license__): change to absolute imports of
2869 * IPython/Magic.py (__license__): change to absolute imports of
2864 ipython's own internal packages, to start adapting to the absolute
2870 ipython's own internal packages, to start adapting to the absolute
2865 import requirement of PEP-328.
2871 import requirement of PEP-328.
2866
2872
2867 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2873 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2868 files, and standardize author/license marks through the Release
2874 files, and standardize author/license marks through the Release
2869 module instead of having per/file stuff (except for files with
2875 module instead of having per/file stuff (except for files with
2870 particular licenses, like the MIT/PSF-licensed codes).
2876 particular licenses, like the MIT/PSF-licensed codes).
2871
2877
2872 * IPython/Debugger.py: remove dead code for python 2.1
2878 * IPython/Debugger.py: remove dead code for python 2.1
2873
2879
2874 2004-10-04 Fernando Perez <fperez@colorado.edu>
2880 2004-10-04 Fernando Perez <fperez@colorado.edu>
2875
2881
2876 * IPython/iplib.py (ipmagic): New function for accessing magics
2882 * IPython/iplib.py (ipmagic): New function for accessing magics
2877 via a normal python function call.
2883 via a normal python function call.
2878
2884
2879 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2885 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2880 from '@' to '%', to accomodate the new @decorator syntax of python
2886 from '@' to '%', to accomodate the new @decorator syntax of python
2881 2.4.
2887 2.4.
2882
2888
2883 2004-09-29 Fernando Perez <fperez@colorado.edu>
2889 2004-09-29 Fernando Perez <fperez@colorado.edu>
2884
2890
2885 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2891 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2886 matplotlib.use to prevent running scripts which try to switch
2892 matplotlib.use to prevent running scripts which try to switch
2887 interactive backends from within ipython. This will just crash
2893 interactive backends from within ipython. This will just crash
2888 the python interpreter, so we can't allow it (but a detailed error
2894 the python interpreter, so we can't allow it (but a detailed error
2889 is given to the user).
2895 is given to the user).
2890
2896
2891 2004-09-28 Fernando Perez <fperez@colorado.edu>
2897 2004-09-28 Fernando Perez <fperez@colorado.edu>
2892
2898
2893 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2899 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2894 matplotlib-related fixes so that using @run with non-matplotlib
2900 matplotlib-related fixes so that using @run with non-matplotlib
2895 scripts doesn't pop up spurious plot windows. This requires
2901 scripts doesn't pop up spurious plot windows. This requires
2896 matplotlib >= 0.63, where I had to make some changes as well.
2902 matplotlib >= 0.63, where I had to make some changes as well.
2897
2903
2898 * IPython/ipmaker.py (make_IPython): update version requirement to
2904 * IPython/ipmaker.py (make_IPython): update version requirement to
2899 python 2.2.
2905 python 2.2.
2900
2906
2901 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2907 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2902 banner arg for embedded customization.
2908 banner arg for embedded customization.
2903
2909
2904 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2910 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2905 explicit uses of __IP as the IPython's instance name. Now things
2911 explicit uses of __IP as the IPython's instance name. Now things
2906 are properly handled via the shell.name value. The actual code
2912 are properly handled via the shell.name value. The actual code
2907 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2913 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2908 is much better than before. I'll clean things completely when the
2914 is much better than before. I'll clean things completely when the
2909 magic stuff gets a real overhaul.
2915 magic stuff gets a real overhaul.
2910
2916
2911 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2917 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2912 minor changes to debian dir.
2918 minor changes to debian dir.
2913
2919
2914 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2920 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2915 pointer to the shell itself in the interactive namespace even when
2921 pointer to the shell itself in the interactive namespace even when
2916 a user-supplied dict is provided. This is needed for embedding
2922 a user-supplied dict is provided. This is needed for embedding
2917 purposes (found by tests with Michel Sanner).
2923 purposes (found by tests with Michel Sanner).
2918
2924
2919 2004-09-27 Fernando Perez <fperez@colorado.edu>
2925 2004-09-27 Fernando Perez <fperez@colorado.edu>
2920
2926
2921 * IPython/UserConfig/ipythonrc: remove []{} from
2927 * IPython/UserConfig/ipythonrc: remove []{} from
2922 readline_remove_delims, so that things like [modname.<TAB> do
2928 readline_remove_delims, so that things like [modname.<TAB> do
2923 proper completion. This disables [].TAB, but that's a less common
2929 proper completion. This disables [].TAB, but that's a less common
2924 case than module names in list comprehensions, for example.
2930 case than module names in list comprehensions, for example.
2925 Thanks to a report by Andrea Riciputi.
2931 Thanks to a report by Andrea Riciputi.
2926
2932
2927 2004-09-09 Fernando Perez <fperez@colorado.edu>
2933 2004-09-09 Fernando Perez <fperez@colorado.edu>
2928
2934
2929 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2935 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2930 blocking problems in win32 and osx. Fix by John.
2936 blocking problems in win32 and osx. Fix by John.
2931
2937
2932 2004-09-08 Fernando Perez <fperez@colorado.edu>
2938 2004-09-08 Fernando Perez <fperez@colorado.edu>
2933
2939
2934 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2940 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2935 for Win32 and OSX. Fix by John Hunter.
2941 for Win32 and OSX. Fix by John Hunter.
2936
2942
2937 2004-08-30 *** Released version 0.6.3
2943 2004-08-30 *** Released version 0.6.3
2938
2944
2939 2004-08-30 Fernando Perez <fperez@colorado.edu>
2945 2004-08-30 Fernando Perez <fperez@colorado.edu>
2940
2946
2941 * setup.py (isfile): Add manpages to list of dependent files to be
2947 * setup.py (isfile): Add manpages to list of dependent files to be
2942 updated.
2948 updated.
2943
2949
2944 2004-08-27 Fernando Perez <fperez@colorado.edu>
2950 2004-08-27 Fernando Perez <fperez@colorado.edu>
2945
2951
2946 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2952 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2947 for now. They don't really work with standalone WX/GTK code
2953 for now. They don't really work with standalone WX/GTK code
2948 (though matplotlib IS working fine with both of those backends).
2954 (though matplotlib IS working fine with both of those backends).
2949 This will neeed much more testing. I disabled most things with
2955 This will neeed much more testing. I disabled most things with
2950 comments, so turning it back on later should be pretty easy.
2956 comments, so turning it back on later should be pretty easy.
2951
2957
2952 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2958 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2953 autocalling of expressions like r'foo', by modifying the line
2959 autocalling of expressions like r'foo', by modifying the line
2954 split regexp. Closes
2960 split regexp. Closes
2955 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2961 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2956 Riley <ipythonbugs-AT-sabi.net>.
2962 Riley <ipythonbugs-AT-sabi.net>.
2957 (InteractiveShell.mainloop): honor --nobanner with banner
2963 (InteractiveShell.mainloop): honor --nobanner with banner
2958 extensions.
2964 extensions.
2959
2965
2960 * IPython/Shell.py: Significant refactoring of all classes, so
2966 * IPython/Shell.py: Significant refactoring of all classes, so
2961 that we can really support ALL matplotlib backends and threading
2967 that we can really support ALL matplotlib backends and threading
2962 models (John spotted a bug with Tk which required this). Now we
2968 models (John spotted a bug with Tk which required this). Now we
2963 should support single-threaded, WX-threads and GTK-threads, both
2969 should support single-threaded, WX-threads and GTK-threads, both
2964 for generic code and for matplotlib.
2970 for generic code and for matplotlib.
2965
2971
2966 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2972 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2967 -pylab, to simplify things for users. Will also remove the pylab
2973 -pylab, to simplify things for users. Will also remove the pylab
2968 profile, since now all of matplotlib configuration is directly
2974 profile, since now all of matplotlib configuration is directly
2969 handled here. This also reduces startup time.
2975 handled here. This also reduces startup time.
2970
2976
2971 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2977 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2972 shell wasn't being correctly called. Also in IPShellWX.
2978 shell wasn't being correctly called. Also in IPShellWX.
2973
2979
2974 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2980 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2975 fine-tune banner.
2981 fine-tune banner.
2976
2982
2977 * IPython/numutils.py (spike): Deprecate these spike functions,
2983 * IPython/numutils.py (spike): Deprecate these spike functions,
2978 delete (long deprecated) gnuplot_exec handler.
2984 delete (long deprecated) gnuplot_exec handler.
2979
2985
2980 2004-08-26 Fernando Perez <fperez@colorado.edu>
2986 2004-08-26 Fernando Perez <fperez@colorado.edu>
2981
2987
2982 * ipython.1: Update for threading options, plus some others which
2988 * ipython.1: Update for threading options, plus some others which
2983 were missing.
2989 were missing.
2984
2990
2985 * IPython/ipmaker.py (__call__): Added -wthread option for
2991 * IPython/ipmaker.py (__call__): Added -wthread option for
2986 wxpython thread handling. Make sure threading options are only
2992 wxpython thread handling. Make sure threading options are only
2987 valid at the command line.
2993 valid at the command line.
2988
2994
2989 * scripts/ipython: moved shell selection into a factory function
2995 * scripts/ipython: moved shell selection into a factory function
2990 in Shell.py, to keep the starter script to a minimum.
2996 in Shell.py, to keep the starter script to a minimum.
2991
2997
2992 2004-08-25 Fernando Perez <fperez@colorado.edu>
2998 2004-08-25 Fernando Perez <fperez@colorado.edu>
2993
2999
2994 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3000 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2995 John. Along with some recent changes he made to matplotlib, the
3001 John. Along with some recent changes he made to matplotlib, the
2996 next versions of both systems should work very well together.
3002 next versions of both systems should work very well together.
2997
3003
2998 2004-08-24 Fernando Perez <fperez@colorado.edu>
3004 2004-08-24 Fernando Perez <fperez@colorado.edu>
2999
3005
3000 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3006 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3001 tried to switch the profiling to using hotshot, but I'm getting
3007 tried to switch the profiling to using hotshot, but I'm getting
3002 strange errors from prof.runctx() there. I may be misreading the
3008 strange errors from prof.runctx() there. I may be misreading the
3003 docs, but it looks weird. For now the profiling code will
3009 docs, but it looks weird. For now the profiling code will
3004 continue to use the standard profiler.
3010 continue to use the standard profiler.
3005
3011
3006 2004-08-23 Fernando Perez <fperez@colorado.edu>
3012 2004-08-23 Fernando Perez <fperez@colorado.edu>
3007
3013
3008 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3014 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3009 threaded shell, by John Hunter. It's not quite ready yet, but
3015 threaded shell, by John Hunter. It's not quite ready yet, but
3010 close.
3016 close.
3011
3017
3012 2004-08-22 Fernando Perez <fperez@colorado.edu>
3018 2004-08-22 Fernando Perez <fperez@colorado.edu>
3013
3019
3014 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3020 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3015 in Magic and ultraTB.
3021 in Magic and ultraTB.
3016
3022
3017 * ipython.1: document threading options in manpage.
3023 * ipython.1: document threading options in manpage.
3018
3024
3019 * scripts/ipython: Changed name of -thread option to -gthread,
3025 * scripts/ipython: Changed name of -thread option to -gthread,
3020 since this is GTK specific. I want to leave the door open for a
3026 since this is GTK specific. I want to leave the door open for a
3021 -wthread option for WX, which will most likely be necessary. This
3027 -wthread option for WX, which will most likely be necessary. This
3022 change affects usage and ipmaker as well.
3028 change affects usage and ipmaker as well.
3023
3029
3024 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3030 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3025 handle the matplotlib shell issues. Code by John Hunter
3031 handle the matplotlib shell issues. Code by John Hunter
3026 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3032 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3027 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3033 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3028 broken (and disabled for end users) for now, but it puts the
3034 broken (and disabled for end users) for now, but it puts the
3029 infrastructure in place.
3035 infrastructure in place.
3030
3036
3031 2004-08-21 Fernando Perez <fperez@colorado.edu>
3037 2004-08-21 Fernando Perez <fperez@colorado.edu>
3032
3038
3033 * ipythonrc-pylab: Add matplotlib support.
3039 * ipythonrc-pylab: Add matplotlib support.
3034
3040
3035 * matplotlib_config.py: new files for matplotlib support, part of
3041 * matplotlib_config.py: new files for matplotlib support, part of
3036 the pylab profile.
3042 the pylab profile.
3037
3043
3038 * IPython/usage.py (__doc__): documented the threading options.
3044 * IPython/usage.py (__doc__): documented the threading options.
3039
3045
3040 2004-08-20 Fernando Perez <fperez@colorado.edu>
3046 2004-08-20 Fernando Perez <fperez@colorado.edu>
3041
3047
3042 * ipython: Modified the main calling routine to handle the -thread
3048 * ipython: Modified the main calling routine to handle the -thread
3043 and -mpthread options. This needs to be done as a top-level hack,
3049 and -mpthread options. This needs to be done as a top-level hack,
3044 because it determines which class to instantiate for IPython
3050 because it determines which class to instantiate for IPython
3045 itself.
3051 itself.
3046
3052
3047 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3053 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3048 classes to support multithreaded GTK operation without blocking,
3054 classes to support multithreaded GTK operation without blocking,
3049 and matplotlib with all backends. This is a lot of still very
3055 and matplotlib with all backends. This is a lot of still very
3050 experimental code, and threads are tricky. So it may still have a
3056 experimental code, and threads are tricky. So it may still have a
3051 few rough edges... This code owes a lot to
3057 few rough edges... This code owes a lot to
3052 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3058 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3053 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3059 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3054 to John Hunter for all the matplotlib work.
3060 to John Hunter for all the matplotlib work.
3055
3061
3056 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3062 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3057 options for gtk thread and matplotlib support.
3063 options for gtk thread and matplotlib support.
3058
3064
3059 2004-08-16 Fernando Perez <fperez@colorado.edu>
3065 2004-08-16 Fernando Perez <fperez@colorado.edu>
3060
3066
3061 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3067 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3062 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3068 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3063 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3069 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3064
3070
3065 2004-08-11 Fernando Perez <fperez@colorado.edu>
3071 2004-08-11 Fernando Perez <fperez@colorado.edu>
3066
3072
3067 * setup.py (isfile): Fix build so documentation gets updated for
3073 * setup.py (isfile): Fix build so documentation gets updated for
3068 rpms (it was only done for .tgz builds).
3074 rpms (it was only done for .tgz builds).
3069
3075
3070 2004-08-10 Fernando Perez <fperez@colorado.edu>
3076 2004-08-10 Fernando Perez <fperez@colorado.edu>
3071
3077
3072 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3078 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3073
3079
3074 * iplib.py : Silence syntax error exceptions in tab-completion.
3080 * iplib.py : Silence syntax error exceptions in tab-completion.
3075
3081
3076 2004-08-05 Fernando Perez <fperez@colorado.edu>
3082 2004-08-05 Fernando Perez <fperez@colorado.edu>
3077
3083
3078 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3084 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3079 'color off' mark for continuation prompts. This was causing long
3085 'color off' mark for continuation prompts. This was causing long
3080 continuation lines to mis-wrap.
3086 continuation lines to mis-wrap.
3081
3087
3082 2004-08-01 Fernando Perez <fperez@colorado.edu>
3088 2004-08-01 Fernando Perez <fperez@colorado.edu>
3083
3089
3084 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3090 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3085 for building ipython to be a parameter. All this is necessary
3091 for building ipython to be a parameter. All this is necessary
3086 right now to have a multithreaded version, but this insane
3092 right now to have a multithreaded version, but this insane
3087 non-design will be cleaned up soon. For now, it's a hack that
3093 non-design will be cleaned up soon. For now, it's a hack that
3088 works.
3094 works.
3089
3095
3090 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3096 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3091 args in various places. No bugs so far, but it's a dangerous
3097 args in various places. No bugs so far, but it's a dangerous
3092 practice.
3098 practice.
3093
3099
3094 2004-07-31 Fernando Perez <fperez@colorado.edu>
3100 2004-07-31 Fernando Perez <fperez@colorado.edu>
3095
3101
3096 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3102 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3097 fix completion of files with dots in their names under most
3103 fix completion of files with dots in their names under most
3098 profiles (pysh was OK because the completion order is different).
3104 profiles (pysh was OK because the completion order is different).
3099
3105
3100 2004-07-27 Fernando Perez <fperez@colorado.edu>
3106 2004-07-27 Fernando Perez <fperez@colorado.edu>
3101
3107
3102 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3108 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3103 keywords manually, b/c the one in keyword.py was removed in python
3109 keywords manually, b/c the one in keyword.py was removed in python
3104 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3110 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3105 This is NOT a bug under python 2.3 and earlier.
3111 This is NOT a bug under python 2.3 and earlier.
3106
3112
3107 2004-07-26 Fernando Perez <fperez@colorado.edu>
3113 2004-07-26 Fernando Perez <fperez@colorado.edu>
3108
3114
3109 * IPython/ultraTB.py (VerboseTB.text): Add another
3115 * IPython/ultraTB.py (VerboseTB.text): Add another
3110 linecache.checkcache() call to try to prevent inspect.py from
3116 linecache.checkcache() call to try to prevent inspect.py from
3111 crashing under python 2.3. I think this fixes
3117 crashing under python 2.3. I think this fixes
3112 http://www.scipy.net/roundup/ipython/issue17.
3118 http://www.scipy.net/roundup/ipython/issue17.
3113
3119
3114 2004-07-26 *** Released version 0.6.2
3120 2004-07-26 *** Released version 0.6.2
3115
3121
3116 2004-07-26 Fernando Perez <fperez@colorado.edu>
3122 2004-07-26 Fernando Perez <fperez@colorado.edu>
3117
3123
3118 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3124 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3119 fail for any number.
3125 fail for any number.
3120 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3126 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3121 empty bookmarks.
3127 empty bookmarks.
3122
3128
3123 2004-07-26 *** Released version 0.6.1
3129 2004-07-26 *** Released version 0.6.1
3124
3130
3125 2004-07-26 Fernando Perez <fperez@colorado.edu>
3131 2004-07-26 Fernando Perez <fperez@colorado.edu>
3126
3132
3127 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3133 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3128
3134
3129 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3135 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3130 escaping '()[]{}' in filenames.
3136 escaping '()[]{}' in filenames.
3131
3137
3132 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3138 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3133 Python 2.2 users who lack a proper shlex.split.
3139 Python 2.2 users who lack a proper shlex.split.
3134
3140
3135 2004-07-19 Fernando Perez <fperez@colorado.edu>
3141 2004-07-19 Fernando Perez <fperez@colorado.edu>
3136
3142
3137 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3143 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3138 for reading readline's init file. I follow the normal chain:
3144 for reading readline's init file. I follow the normal chain:
3139 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3145 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3140 report by Mike Heeter. This closes
3146 report by Mike Heeter. This closes
3141 http://www.scipy.net/roundup/ipython/issue16.
3147 http://www.scipy.net/roundup/ipython/issue16.
3142
3148
3143 2004-07-18 Fernando Perez <fperez@colorado.edu>
3149 2004-07-18 Fernando Perez <fperez@colorado.edu>
3144
3150
3145 * IPython/iplib.py (__init__): Add better handling of '\' under
3151 * IPython/iplib.py (__init__): Add better handling of '\' under
3146 Win32 for filenames. After a patch by Ville.
3152 Win32 for filenames. After a patch by Ville.
3147
3153
3148 2004-07-17 Fernando Perez <fperez@colorado.edu>
3154 2004-07-17 Fernando Perez <fperez@colorado.edu>
3149
3155
3150 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3156 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3151 autocalling would be triggered for 'foo is bar' if foo is
3157 autocalling would be triggered for 'foo is bar' if foo is
3152 callable. I also cleaned up the autocall detection code to use a
3158 callable. I also cleaned up the autocall detection code to use a
3153 regexp, which is faster. Bug reported by Alexander Schmolck.
3159 regexp, which is faster. Bug reported by Alexander Schmolck.
3154
3160
3155 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3161 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3156 '?' in them would confuse the help system. Reported by Alex
3162 '?' in them would confuse the help system. Reported by Alex
3157 Schmolck.
3163 Schmolck.
3158
3164
3159 2004-07-16 Fernando Perez <fperez@colorado.edu>
3165 2004-07-16 Fernando Perez <fperez@colorado.edu>
3160
3166
3161 * IPython/GnuplotInteractive.py (__all__): added plot2.
3167 * IPython/GnuplotInteractive.py (__all__): added plot2.
3162
3168
3163 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3169 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3164 plotting dictionaries, lists or tuples of 1d arrays.
3170 plotting dictionaries, lists or tuples of 1d arrays.
3165
3171
3166 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3172 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3167 optimizations.
3173 optimizations.
3168
3174
3169 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3175 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3170 the information which was there from Janko's original IPP code:
3176 the information which was there from Janko's original IPP code:
3171
3177
3172 03.05.99 20:53 porto.ifm.uni-kiel.de
3178 03.05.99 20:53 porto.ifm.uni-kiel.de
3173 --Started changelog.
3179 --Started changelog.
3174 --make clear do what it say it does
3180 --make clear do what it say it does
3175 --added pretty output of lines from inputcache
3181 --added pretty output of lines from inputcache
3176 --Made Logger a mixin class, simplifies handling of switches
3182 --Made Logger a mixin class, simplifies handling of switches
3177 --Added own completer class. .string<TAB> expands to last history
3183 --Added own completer class. .string<TAB> expands to last history
3178 line which starts with string. The new expansion is also present
3184 line which starts with string. The new expansion is also present
3179 with Ctrl-r from the readline library. But this shows, who this
3185 with Ctrl-r from the readline library. But this shows, who this
3180 can be done for other cases.
3186 can be done for other cases.
3181 --Added convention that all shell functions should accept a
3187 --Added convention that all shell functions should accept a
3182 parameter_string This opens the door for different behaviour for
3188 parameter_string This opens the door for different behaviour for
3183 each function. @cd is a good example of this.
3189 each function. @cd is a good example of this.
3184
3190
3185 04.05.99 12:12 porto.ifm.uni-kiel.de
3191 04.05.99 12:12 porto.ifm.uni-kiel.de
3186 --added logfile rotation
3192 --added logfile rotation
3187 --added new mainloop method which freezes first the namespace
3193 --added new mainloop method which freezes first the namespace
3188
3194
3189 07.05.99 21:24 porto.ifm.uni-kiel.de
3195 07.05.99 21:24 porto.ifm.uni-kiel.de
3190 --added the docreader classes. Now there is a help system.
3196 --added the docreader classes. Now there is a help system.
3191 -This is only a first try. Currently it's not easy to put new
3197 -This is only a first try. Currently it's not easy to put new
3192 stuff in the indices. But this is the way to go. Info would be
3198 stuff in the indices. But this is the way to go. Info would be
3193 better, but HTML is every where and not everybody has an info
3199 better, but HTML is every where and not everybody has an info
3194 system installed and it's not so easy to change html-docs to info.
3200 system installed and it's not so easy to change html-docs to info.
3195 --added global logfile option
3201 --added global logfile option
3196 --there is now a hook for object inspection method pinfo needs to
3202 --there is now a hook for object inspection method pinfo needs to
3197 be provided for this. Can be reached by two '??'.
3203 be provided for this. Can be reached by two '??'.
3198
3204
3199 08.05.99 20:51 porto.ifm.uni-kiel.de
3205 08.05.99 20:51 porto.ifm.uni-kiel.de
3200 --added a README
3206 --added a README
3201 --bug in rc file. Something has changed so functions in the rc
3207 --bug in rc file. Something has changed so functions in the rc
3202 file need to reference the shell and not self. Not clear if it's a
3208 file need to reference the shell and not self. Not clear if it's a
3203 bug or feature.
3209 bug or feature.
3204 --changed rc file for new behavior
3210 --changed rc file for new behavior
3205
3211
3206 2004-07-15 Fernando Perez <fperez@colorado.edu>
3212 2004-07-15 Fernando Perez <fperez@colorado.edu>
3207
3213
3208 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3214 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3209 cache was falling out of sync in bizarre manners when multi-line
3215 cache was falling out of sync in bizarre manners when multi-line
3210 input was present. Minor optimizations and cleanup.
3216 input was present. Minor optimizations and cleanup.
3211
3217
3212 (Logger): Remove old Changelog info for cleanup. This is the
3218 (Logger): Remove old Changelog info for cleanup. This is the
3213 information which was there from Janko's original code:
3219 information which was there from Janko's original code:
3214
3220
3215 Changes to Logger: - made the default log filename a parameter
3221 Changes to Logger: - made the default log filename a parameter
3216
3222
3217 - put a check for lines beginning with !@? in log(). Needed
3223 - put a check for lines beginning with !@? in log(). Needed
3218 (even if the handlers properly log their lines) for mid-session
3224 (even if the handlers properly log their lines) for mid-session
3219 logging activation to work properly. Without this, lines logged
3225 logging activation to work properly. Without this, lines logged
3220 in mid session, which get read from the cache, would end up
3226 in mid session, which get read from the cache, would end up
3221 'bare' (with !@? in the open) in the log. Now they are caught
3227 'bare' (with !@? in the open) in the log. Now they are caught
3222 and prepended with a #.
3228 and prepended with a #.
3223
3229
3224 * IPython/iplib.py (InteractiveShell.init_readline): added check
3230 * IPython/iplib.py (InteractiveShell.init_readline): added check
3225 in case MagicCompleter fails to be defined, so we don't crash.
3231 in case MagicCompleter fails to be defined, so we don't crash.
3226
3232
3227 2004-07-13 Fernando Perez <fperez@colorado.edu>
3233 2004-07-13 Fernando Perez <fperez@colorado.edu>
3228
3234
3229 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3235 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3230 of EPS if the requested filename ends in '.eps'.
3236 of EPS if the requested filename ends in '.eps'.
3231
3237
3232 2004-07-04 Fernando Perez <fperez@colorado.edu>
3238 2004-07-04 Fernando Perez <fperez@colorado.edu>
3233
3239
3234 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3240 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3235 escaping of quotes when calling the shell.
3241 escaping of quotes when calling the shell.
3236
3242
3237 2004-07-02 Fernando Perez <fperez@colorado.edu>
3243 2004-07-02 Fernando Perez <fperez@colorado.edu>
3238
3244
3239 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3245 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3240 gettext not working because we were clobbering '_'. Fixes
3246 gettext not working because we were clobbering '_'. Fixes
3241 http://www.scipy.net/roundup/ipython/issue6.
3247 http://www.scipy.net/roundup/ipython/issue6.
3242
3248
3243 2004-07-01 Fernando Perez <fperez@colorado.edu>
3249 2004-07-01 Fernando Perez <fperez@colorado.edu>
3244
3250
3245 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3251 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3246 into @cd. Patch by Ville.
3252 into @cd. Patch by Ville.
3247
3253
3248 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3254 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3249 new function to store things after ipmaker runs. Patch by Ville.
3255 new function to store things after ipmaker runs. Patch by Ville.
3250 Eventually this will go away once ipmaker is removed and the class
3256 Eventually this will go away once ipmaker is removed and the class
3251 gets cleaned up, but for now it's ok. Key functionality here is
3257 gets cleaned up, but for now it's ok. Key functionality here is
3252 the addition of the persistent storage mechanism, a dict for
3258 the addition of the persistent storage mechanism, a dict for
3253 keeping data across sessions (for now just bookmarks, but more can
3259 keeping data across sessions (for now just bookmarks, but more can
3254 be implemented later).
3260 be implemented later).
3255
3261
3256 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3262 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3257 persistent across sections. Patch by Ville, I modified it
3263 persistent across sections. Patch by Ville, I modified it
3258 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3264 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3259 added a '-l' option to list all bookmarks.
3265 added a '-l' option to list all bookmarks.
3260
3266
3261 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3267 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3262 center for cleanup. Registered with atexit.register(). I moved
3268 center for cleanup. Registered with atexit.register(). I moved
3263 here the old exit_cleanup(). After a patch by Ville.
3269 here the old exit_cleanup(). After a patch by Ville.
3264
3270
3265 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3271 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3266 characters in the hacked shlex_split for python 2.2.
3272 characters in the hacked shlex_split for python 2.2.
3267
3273
3268 * IPython/iplib.py (file_matches): more fixes to filenames with
3274 * IPython/iplib.py (file_matches): more fixes to filenames with
3269 whitespace in them. It's not perfect, but limitations in python's
3275 whitespace in them. It's not perfect, but limitations in python's
3270 readline make it impossible to go further.
3276 readline make it impossible to go further.
3271
3277
3272 2004-06-29 Fernando Perez <fperez@colorado.edu>
3278 2004-06-29 Fernando Perez <fperez@colorado.edu>
3273
3279
3274 * IPython/iplib.py (file_matches): escape whitespace correctly in
3280 * IPython/iplib.py (file_matches): escape whitespace correctly in
3275 filename completions. Bug reported by Ville.
3281 filename completions. Bug reported by Ville.
3276
3282
3277 2004-06-28 Fernando Perez <fperez@colorado.edu>
3283 2004-06-28 Fernando Perez <fperez@colorado.edu>
3278
3284
3279 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3285 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3280 the history file will be called 'history-PROFNAME' (or just
3286 the history file will be called 'history-PROFNAME' (or just
3281 'history' if no profile is loaded). I was getting annoyed at
3287 'history' if no profile is loaded). I was getting annoyed at
3282 getting my Numerical work history clobbered by pysh sessions.
3288 getting my Numerical work history clobbered by pysh sessions.
3283
3289
3284 * IPython/iplib.py (InteractiveShell.__init__): Internal
3290 * IPython/iplib.py (InteractiveShell.__init__): Internal
3285 getoutputerror() function so that we can honor the system_verbose
3291 getoutputerror() function so that we can honor the system_verbose
3286 flag for _all_ system calls. I also added escaping of #
3292 flag for _all_ system calls. I also added escaping of #
3287 characters here to avoid confusing Itpl.
3293 characters here to avoid confusing Itpl.
3288
3294
3289 * IPython/Magic.py (shlex_split): removed call to shell in
3295 * IPython/Magic.py (shlex_split): removed call to shell in
3290 parse_options and replaced it with shlex.split(). The annoying
3296 parse_options and replaced it with shlex.split(). The annoying
3291 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3297 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3292 to backport it from 2.3, with several frail hacks (the shlex
3298 to backport it from 2.3, with several frail hacks (the shlex
3293 module is rather limited in 2.2). Thanks to a suggestion by Ville
3299 module is rather limited in 2.2). Thanks to a suggestion by Ville
3294 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3300 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3295 problem.
3301 problem.
3296
3302
3297 (Magic.magic_system_verbose): new toggle to print the actual
3303 (Magic.magic_system_verbose): new toggle to print the actual
3298 system calls made by ipython. Mainly for debugging purposes.
3304 system calls made by ipython. Mainly for debugging purposes.
3299
3305
3300 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3306 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3301 doesn't support persistence. Reported (and fix suggested) by
3307 doesn't support persistence. Reported (and fix suggested) by
3302 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3308 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3303
3309
3304 2004-06-26 Fernando Perez <fperez@colorado.edu>
3310 2004-06-26 Fernando Perez <fperez@colorado.edu>
3305
3311
3306 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3312 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3307 continue prompts.
3313 continue prompts.
3308
3314
3309 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3315 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3310 function (basically a big docstring) and a few more things here to
3316 function (basically a big docstring) and a few more things here to
3311 speedup startup. pysh.py is now very lightweight. We want because
3317 speedup startup. pysh.py is now very lightweight. We want because
3312 it gets execfile'd, while InterpreterExec gets imported, so
3318 it gets execfile'd, while InterpreterExec gets imported, so
3313 byte-compilation saves time.
3319 byte-compilation saves time.
3314
3320
3315 2004-06-25 Fernando Perez <fperez@colorado.edu>
3321 2004-06-25 Fernando Perez <fperez@colorado.edu>
3316
3322
3317 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3323 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3318 -NUM', which was recently broken.
3324 -NUM', which was recently broken.
3319
3325
3320 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3326 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3321 in multi-line input (but not !!, which doesn't make sense there).
3327 in multi-line input (but not !!, which doesn't make sense there).
3322
3328
3323 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3329 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3324 It's just too useful, and people can turn it off in the less
3330 It's just too useful, and people can turn it off in the less
3325 common cases where it's a problem.
3331 common cases where it's a problem.
3326
3332
3327 2004-06-24 Fernando Perez <fperez@colorado.edu>
3333 2004-06-24 Fernando Perez <fperez@colorado.edu>
3328
3334
3329 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3335 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3330 special syntaxes (like alias calling) is now allied in multi-line
3336 special syntaxes (like alias calling) is now allied in multi-line
3331 input. This is still _very_ experimental, but it's necessary for
3337 input. This is still _very_ experimental, but it's necessary for
3332 efficient shell usage combining python looping syntax with system
3338 efficient shell usage combining python looping syntax with system
3333 calls. For now it's restricted to aliases, I don't think it
3339 calls. For now it's restricted to aliases, I don't think it
3334 really even makes sense to have this for magics.
3340 really even makes sense to have this for magics.
3335
3341
3336 2004-06-23 Fernando Perez <fperez@colorado.edu>
3342 2004-06-23 Fernando Perez <fperez@colorado.edu>
3337
3343
3338 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3344 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3339 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3345 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3340
3346
3341 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3347 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3342 extensions under Windows (after code sent by Gary Bishop). The
3348 extensions under Windows (after code sent by Gary Bishop). The
3343 extensions considered 'executable' are stored in IPython's rc
3349 extensions considered 'executable' are stored in IPython's rc
3344 structure as win_exec_ext.
3350 structure as win_exec_ext.
3345
3351
3346 * IPython/genutils.py (shell): new function, like system() but
3352 * IPython/genutils.py (shell): new function, like system() but
3347 without return value. Very useful for interactive shell work.
3353 without return value. Very useful for interactive shell work.
3348
3354
3349 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3355 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3350 delete aliases.
3356 delete aliases.
3351
3357
3352 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3358 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3353 sure that the alias table doesn't contain python keywords.
3359 sure that the alias table doesn't contain python keywords.
3354
3360
3355 2004-06-21 Fernando Perez <fperez@colorado.edu>
3361 2004-06-21 Fernando Perez <fperez@colorado.edu>
3356
3362
3357 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3363 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3358 non-existent items are found in $PATH. Reported by Thorsten.
3364 non-existent items are found in $PATH. Reported by Thorsten.
3359
3365
3360 2004-06-20 Fernando Perez <fperez@colorado.edu>
3366 2004-06-20 Fernando Perez <fperez@colorado.edu>
3361
3367
3362 * IPython/iplib.py (complete): modified the completer so that the
3368 * IPython/iplib.py (complete): modified the completer so that the
3363 order of priorities can be easily changed at runtime.
3369 order of priorities can be easily changed at runtime.
3364
3370
3365 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3371 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3366 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3372 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3367
3373
3368 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3374 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3369 expand Python variables prepended with $ in all system calls. The
3375 expand Python variables prepended with $ in all system calls. The
3370 same was done to InteractiveShell.handle_shell_escape. Now all
3376 same was done to InteractiveShell.handle_shell_escape. Now all
3371 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3377 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3372 expansion of python variables and expressions according to the
3378 expansion of python variables and expressions according to the
3373 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3379 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3374
3380
3375 Though PEP-215 has been rejected, a similar (but simpler) one
3381 Though PEP-215 has been rejected, a similar (but simpler) one
3376 seems like it will go into Python 2.4, PEP-292 -
3382 seems like it will go into Python 2.4, PEP-292 -
3377 http://www.python.org/peps/pep-0292.html.
3383 http://www.python.org/peps/pep-0292.html.
3378
3384
3379 I'll keep the full syntax of PEP-215, since IPython has since the
3385 I'll keep the full syntax of PEP-215, since IPython has since the
3380 start used Ka-Ping Yee's reference implementation discussed there
3386 start used Ka-Ping Yee's reference implementation discussed there
3381 (Itpl), and I actually like the powerful semantics it offers.
3387 (Itpl), and I actually like the powerful semantics it offers.
3382
3388
3383 In order to access normal shell variables, the $ has to be escaped
3389 In order to access normal shell variables, the $ has to be escaped
3384 via an extra $. For example:
3390 via an extra $. For example:
3385
3391
3386 In [7]: PATH='a python variable'
3392 In [7]: PATH='a python variable'
3387
3393
3388 In [8]: !echo $PATH
3394 In [8]: !echo $PATH
3389 a python variable
3395 a python variable
3390
3396
3391 In [9]: !echo $$PATH
3397 In [9]: !echo $$PATH
3392 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3398 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3393
3399
3394 (Magic.parse_options): escape $ so the shell doesn't evaluate
3400 (Magic.parse_options): escape $ so the shell doesn't evaluate
3395 things prematurely.
3401 things prematurely.
3396
3402
3397 * IPython/iplib.py (InteractiveShell.call_alias): added the
3403 * IPython/iplib.py (InteractiveShell.call_alias): added the
3398 ability for aliases to expand python variables via $.
3404 ability for aliases to expand python variables via $.
3399
3405
3400 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3406 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3401 system, now there's a @rehash/@rehashx pair of magics. These work
3407 system, now there's a @rehash/@rehashx pair of magics. These work
3402 like the csh rehash command, and can be invoked at any time. They
3408 like the csh rehash command, and can be invoked at any time. They
3403 build a table of aliases to everything in the user's $PATH
3409 build a table of aliases to everything in the user's $PATH
3404 (@rehash uses everything, @rehashx is slower but only adds
3410 (@rehash uses everything, @rehashx is slower but only adds
3405 executable files). With this, the pysh.py-based shell profile can
3411 executable files). With this, the pysh.py-based shell profile can
3406 now simply call rehash upon startup, and full access to all
3412 now simply call rehash upon startup, and full access to all
3407 programs in the user's path is obtained.
3413 programs in the user's path is obtained.
3408
3414
3409 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3415 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3410 functionality is now fully in place. I removed the old dynamic
3416 functionality is now fully in place. I removed the old dynamic
3411 code generation based approach, in favor of a much lighter one
3417 code generation based approach, in favor of a much lighter one
3412 based on a simple dict. The advantage is that this allows me to
3418 based on a simple dict. The advantage is that this allows me to
3413 now have thousands of aliases with negligible cost (unthinkable
3419 now have thousands of aliases with negligible cost (unthinkable
3414 with the old system).
3420 with the old system).
3415
3421
3416 2004-06-19 Fernando Perez <fperez@colorado.edu>
3422 2004-06-19 Fernando Perez <fperez@colorado.edu>
3417
3423
3418 * IPython/iplib.py (__init__): extended MagicCompleter class to
3424 * IPython/iplib.py (__init__): extended MagicCompleter class to
3419 also complete (last in priority) on user aliases.
3425 also complete (last in priority) on user aliases.
3420
3426
3421 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3427 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3422 call to eval.
3428 call to eval.
3423 (ItplNS.__init__): Added a new class which functions like Itpl,
3429 (ItplNS.__init__): Added a new class which functions like Itpl,
3424 but allows configuring the namespace for the evaluation to occur
3430 but allows configuring the namespace for the evaluation to occur
3425 in.
3431 in.
3426
3432
3427 2004-06-18 Fernando Perez <fperez@colorado.edu>
3433 2004-06-18 Fernando Perez <fperez@colorado.edu>
3428
3434
3429 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3435 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3430 better message when 'exit' or 'quit' are typed (a common newbie
3436 better message when 'exit' or 'quit' are typed (a common newbie
3431 confusion).
3437 confusion).
3432
3438
3433 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3439 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3434 check for Windows users.
3440 check for Windows users.
3435
3441
3436 * IPython/iplib.py (InteractiveShell.user_setup): removed
3442 * IPython/iplib.py (InteractiveShell.user_setup): removed
3437 disabling of colors for Windows. I'll test at runtime and issue a
3443 disabling of colors for Windows. I'll test at runtime and issue a
3438 warning if Gary's readline isn't found, as to nudge users to
3444 warning if Gary's readline isn't found, as to nudge users to
3439 download it.
3445 download it.
3440
3446
3441 2004-06-16 Fernando Perez <fperez@colorado.edu>
3447 2004-06-16 Fernando Perez <fperez@colorado.edu>
3442
3448
3443 * IPython/genutils.py (Stream.__init__): changed to print errors
3449 * IPython/genutils.py (Stream.__init__): changed to print errors
3444 to sys.stderr. I had a circular dependency here. Now it's
3450 to sys.stderr. I had a circular dependency here. Now it's
3445 possible to run ipython as IDLE's shell (consider this pre-alpha,
3451 possible to run ipython as IDLE's shell (consider this pre-alpha,
3446 since true stdout things end up in the starting terminal instead
3452 since true stdout things end up in the starting terminal instead
3447 of IDLE's out).
3453 of IDLE's out).
3448
3454
3449 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3455 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3450 users who haven't # updated their prompt_in2 definitions. Remove
3456 users who haven't # updated their prompt_in2 definitions. Remove
3451 eventually.
3457 eventually.
3452 (multiple_replace): added credit to original ASPN recipe.
3458 (multiple_replace): added credit to original ASPN recipe.
3453
3459
3454 2004-06-15 Fernando Perez <fperez@colorado.edu>
3460 2004-06-15 Fernando Perez <fperez@colorado.edu>
3455
3461
3456 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3462 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3457 list of auto-defined aliases.
3463 list of auto-defined aliases.
3458
3464
3459 2004-06-13 Fernando Perez <fperez@colorado.edu>
3465 2004-06-13 Fernando Perez <fperez@colorado.edu>
3460
3466
3461 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3467 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3462 install was really requested (so setup.py can be used for other
3468 install was really requested (so setup.py can be used for other
3463 things under Windows).
3469 things under Windows).
3464
3470
3465 2004-06-10 Fernando Perez <fperez@colorado.edu>
3471 2004-06-10 Fernando Perez <fperez@colorado.edu>
3466
3472
3467 * IPython/Logger.py (Logger.create_log): Manually remove any old
3473 * IPython/Logger.py (Logger.create_log): Manually remove any old
3468 backup, since os.remove may fail under Windows. Fixes bug
3474 backup, since os.remove may fail under Windows. Fixes bug
3469 reported by Thorsten.
3475 reported by Thorsten.
3470
3476
3471 2004-06-09 Fernando Perez <fperez@colorado.edu>
3477 2004-06-09 Fernando Perez <fperez@colorado.edu>
3472
3478
3473 * examples/example-embed.py: fixed all references to %n (replaced
3479 * examples/example-embed.py: fixed all references to %n (replaced
3474 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3480 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3475 for all examples and the manual as well.
3481 for all examples and the manual as well.
3476
3482
3477 2004-06-08 Fernando Perez <fperez@colorado.edu>
3483 2004-06-08 Fernando Perez <fperez@colorado.edu>
3478
3484
3479 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3485 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3480 alignment and color management. All 3 prompt subsystems now
3486 alignment and color management. All 3 prompt subsystems now
3481 inherit from BasePrompt.
3487 inherit from BasePrompt.
3482
3488
3483 * tools/release: updates for windows installer build and tag rpms
3489 * tools/release: updates for windows installer build and tag rpms
3484 with python version (since paths are fixed).
3490 with python version (since paths are fixed).
3485
3491
3486 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3492 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3487 which will become eventually obsolete. Also fixed the default
3493 which will become eventually obsolete. Also fixed the default
3488 prompt_in2 to use \D, so at least new users start with the correct
3494 prompt_in2 to use \D, so at least new users start with the correct
3489 defaults.
3495 defaults.
3490 WARNING: Users with existing ipythonrc files will need to apply
3496 WARNING: Users with existing ipythonrc files will need to apply
3491 this fix manually!
3497 this fix manually!
3492
3498
3493 * setup.py: make windows installer (.exe). This is finally the
3499 * setup.py: make windows installer (.exe). This is finally the
3494 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3500 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3495 which I hadn't included because it required Python 2.3 (or recent
3501 which I hadn't included because it required Python 2.3 (or recent
3496 distutils).
3502 distutils).
3497
3503
3498 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3504 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3499 usage of new '\D' escape.
3505 usage of new '\D' escape.
3500
3506
3501 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3507 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3502 lacks os.getuid())
3508 lacks os.getuid())
3503 (CachedOutput.set_colors): Added the ability to turn coloring
3509 (CachedOutput.set_colors): Added the ability to turn coloring
3504 on/off with @colors even for manually defined prompt colors. It
3510 on/off with @colors even for manually defined prompt colors. It
3505 uses a nasty global, but it works safely and via the generic color
3511 uses a nasty global, but it works safely and via the generic color
3506 handling mechanism.
3512 handling mechanism.
3507 (Prompt2.__init__): Introduced new escape '\D' for continuation
3513 (Prompt2.__init__): Introduced new escape '\D' for continuation
3508 prompts. It represents the counter ('\#') as dots.
3514 prompts. It represents the counter ('\#') as dots.
3509 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3515 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3510 need to update their ipythonrc files and replace '%n' with '\D' in
3516 need to update their ipythonrc files and replace '%n' with '\D' in
3511 their prompt_in2 settings everywhere. Sorry, but there's
3517 their prompt_in2 settings everywhere. Sorry, but there's
3512 otherwise no clean way to get all prompts to properly align. The
3518 otherwise no clean way to get all prompts to properly align. The
3513 ipythonrc shipped with IPython has been updated.
3519 ipythonrc shipped with IPython has been updated.
3514
3520
3515 2004-06-07 Fernando Perez <fperez@colorado.edu>
3521 2004-06-07 Fernando Perez <fperez@colorado.edu>
3516
3522
3517 * setup.py (isfile): Pass local_icons option to latex2html, so the
3523 * setup.py (isfile): Pass local_icons option to latex2html, so the
3518 resulting HTML file is self-contained. Thanks to
3524 resulting HTML file is self-contained. Thanks to
3519 dryice-AT-liu.com.cn for the tip.
3525 dryice-AT-liu.com.cn for the tip.
3520
3526
3521 * pysh.py: I created a new profile 'shell', which implements a
3527 * pysh.py: I created a new profile 'shell', which implements a
3522 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3528 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3523 system shell, nor will it become one anytime soon. It's mainly
3529 system shell, nor will it become one anytime soon. It's mainly
3524 meant to illustrate the use of the new flexible bash-like prompts.
3530 meant to illustrate the use of the new flexible bash-like prompts.
3525 I guess it could be used by hardy souls for true shell management,
3531 I guess it could be used by hardy souls for true shell management,
3526 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3532 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3527 profile. This uses the InterpreterExec extension provided by
3533 profile. This uses the InterpreterExec extension provided by
3528 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3534 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3529
3535
3530 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3536 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3531 auto-align itself with the length of the previous input prompt
3537 auto-align itself with the length of the previous input prompt
3532 (taking into account the invisible color escapes).
3538 (taking into account the invisible color escapes).
3533 (CachedOutput.__init__): Large restructuring of this class. Now
3539 (CachedOutput.__init__): Large restructuring of this class. Now
3534 all three prompts (primary1, primary2, output) are proper objects,
3540 all three prompts (primary1, primary2, output) are proper objects,
3535 managed by the 'parent' CachedOutput class. The code is still a
3541 managed by the 'parent' CachedOutput class. The code is still a
3536 bit hackish (all prompts share state via a pointer to the cache),
3542 bit hackish (all prompts share state via a pointer to the cache),
3537 but it's overall far cleaner than before.
3543 but it's overall far cleaner than before.
3538
3544
3539 * IPython/genutils.py (getoutputerror): modified to add verbose,
3545 * IPython/genutils.py (getoutputerror): modified to add verbose,
3540 debug and header options. This makes the interface of all getout*
3546 debug and header options. This makes the interface of all getout*
3541 functions uniform.
3547 functions uniform.
3542 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3548 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3543
3549
3544 * IPython/Magic.py (Magic.default_option): added a function to
3550 * IPython/Magic.py (Magic.default_option): added a function to
3545 allow registering default options for any magic command. This
3551 allow registering default options for any magic command. This
3546 makes it easy to have profiles which customize the magics globally
3552 makes it easy to have profiles which customize the magics globally
3547 for a certain use. The values set through this function are
3553 for a certain use. The values set through this function are
3548 picked up by the parse_options() method, which all magics should
3554 picked up by the parse_options() method, which all magics should
3549 use to parse their options.
3555 use to parse their options.
3550
3556
3551 * IPython/genutils.py (warn): modified the warnings framework to
3557 * IPython/genutils.py (warn): modified the warnings framework to
3552 use the Term I/O class. I'm trying to slowly unify all of
3558 use the Term I/O class. I'm trying to slowly unify all of
3553 IPython's I/O operations to pass through Term.
3559 IPython's I/O operations to pass through Term.
3554
3560
3555 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3561 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3556 the secondary prompt to correctly match the length of the primary
3562 the secondary prompt to correctly match the length of the primary
3557 one for any prompt. Now multi-line code will properly line up
3563 one for any prompt. Now multi-line code will properly line up
3558 even for path dependent prompts, such as the new ones available
3564 even for path dependent prompts, such as the new ones available
3559 via the prompt_specials.
3565 via the prompt_specials.
3560
3566
3561 2004-06-06 Fernando Perez <fperez@colorado.edu>
3567 2004-06-06 Fernando Perez <fperez@colorado.edu>
3562
3568
3563 * IPython/Prompts.py (prompt_specials): Added the ability to have
3569 * IPython/Prompts.py (prompt_specials): Added the ability to have
3564 bash-like special sequences in the prompts, which get
3570 bash-like special sequences in the prompts, which get
3565 automatically expanded. Things like hostname, current working
3571 automatically expanded. Things like hostname, current working
3566 directory and username are implemented already, but it's easy to
3572 directory and username are implemented already, but it's easy to
3567 add more in the future. Thanks to a patch by W.J. van der Laan
3573 add more in the future. Thanks to a patch by W.J. van der Laan
3568 <gnufnork-AT-hetdigitalegat.nl>
3574 <gnufnork-AT-hetdigitalegat.nl>
3569 (prompt_specials): Added color support for prompt strings, so
3575 (prompt_specials): Added color support for prompt strings, so
3570 users can define arbitrary color setups for their prompts.
3576 users can define arbitrary color setups for their prompts.
3571
3577
3572 2004-06-05 Fernando Perez <fperez@colorado.edu>
3578 2004-06-05 Fernando Perez <fperez@colorado.edu>
3573
3579
3574 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3580 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3575 code to load Gary Bishop's readline and configure it
3581 code to load Gary Bishop's readline and configure it
3576 automatically. Thanks to Gary for help on this.
3582 automatically. Thanks to Gary for help on this.
3577
3583
3578 2004-06-01 Fernando Perez <fperez@colorado.edu>
3584 2004-06-01 Fernando Perez <fperez@colorado.edu>
3579
3585
3580 * IPython/Logger.py (Logger.create_log): fix bug for logging
3586 * IPython/Logger.py (Logger.create_log): fix bug for logging
3581 with no filename (previous fix was incomplete).
3587 with no filename (previous fix was incomplete).
3582
3588
3583 2004-05-25 Fernando Perez <fperez@colorado.edu>
3589 2004-05-25 Fernando Perez <fperez@colorado.edu>
3584
3590
3585 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3591 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3586 parens would get passed to the shell.
3592 parens would get passed to the shell.
3587
3593
3588 2004-05-20 Fernando Perez <fperez@colorado.edu>
3594 2004-05-20 Fernando Perez <fperez@colorado.edu>
3589
3595
3590 * IPython/Magic.py (Magic.magic_prun): changed default profile
3596 * IPython/Magic.py (Magic.magic_prun): changed default profile
3591 sort order to 'time' (the more common profiling need).
3597 sort order to 'time' (the more common profiling need).
3592
3598
3593 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3599 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3594 so that source code shown is guaranteed in sync with the file on
3600 so that source code shown is guaranteed in sync with the file on
3595 disk (also changed in psource). Similar fix to the one for
3601 disk (also changed in psource). Similar fix to the one for
3596 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3602 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3597 <yann.ledu-AT-noos.fr>.
3603 <yann.ledu-AT-noos.fr>.
3598
3604
3599 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3605 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3600 with a single option would not be correctly parsed. Closes
3606 with a single option would not be correctly parsed. Closes
3601 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3607 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3602 introduced in 0.6.0 (on 2004-05-06).
3608 introduced in 0.6.0 (on 2004-05-06).
3603
3609
3604 2004-05-13 *** Released version 0.6.0
3610 2004-05-13 *** Released version 0.6.0
3605
3611
3606 2004-05-13 Fernando Perez <fperez@colorado.edu>
3612 2004-05-13 Fernando Perez <fperez@colorado.edu>
3607
3613
3608 * debian/: Added debian/ directory to CVS, so that debian support
3614 * debian/: Added debian/ directory to CVS, so that debian support
3609 is publicly accessible. The debian package is maintained by Jack
3615 is publicly accessible. The debian package is maintained by Jack
3610 Moffit <jack-AT-xiph.org>.
3616 Moffit <jack-AT-xiph.org>.
3611
3617
3612 * Documentation: included the notes about an ipython-based system
3618 * Documentation: included the notes about an ipython-based system
3613 shell (the hypothetical 'pysh') into the new_design.pdf document,
3619 shell (the hypothetical 'pysh') into the new_design.pdf document,
3614 so that these ideas get distributed to users along with the
3620 so that these ideas get distributed to users along with the
3615 official documentation.
3621 official documentation.
3616
3622
3617 2004-05-10 Fernando Perez <fperez@colorado.edu>
3623 2004-05-10 Fernando Perez <fperez@colorado.edu>
3618
3624
3619 * IPython/Logger.py (Logger.create_log): fix recently introduced
3625 * IPython/Logger.py (Logger.create_log): fix recently introduced
3620 bug (misindented line) where logstart would fail when not given an
3626 bug (misindented line) where logstart would fail when not given an
3621 explicit filename.
3627 explicit filename.
3622
3628
3623 2004-05-09 Fernando Perez <fperez@colorado.edu>
3629 2004-05-09 Fernando Perez <fperez@colorado.edu>
3624
3630
3625 * IPython/Magic.py (Magic.parse_options): skip system call when
3631 * IPython/Magic.py (Magic.parse_options): skip system call when
3626 there are no options to look for. Faster, cleaner for the common
3632 there are no options to look for. Faster, cleaner for the common
3627 case.
3633 case.
3628
3634
3629 * Documentation: many updates to the manual: describing Windows
3635 * Documentation: many updates to the manual: describing Windows
3630 support better, Gnuplot updates, credits, misc small stuff. Also
3636 support better, Gnuplot updates, credits, misc small stuff. Also
3631 updated the new_design doc a bit.
3637 updated the new_design doc a bit.
3632
3638
3633 2004-05-06 *** Released version 0.6.0.rc1
3639 2004-05-06 *** Released version 0.6.0.rc1
3634
3640
3635 2004-05-06 Fernando Perez <fperez@colorado.edu>
3641 2004-05-06 Fernando Perez <fperez@colorado.edu>
3636
3642
3637 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3643 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3638 operations to use the vastly more efficient list/''.join() method.
3644 operations to use the vastly more efficient list/''.join() method.
3639 (FormattedTB.text): Fix
3645 (FormattedTB.text): Fix
3640 http://www.scipy.net/roundup/ipython/issue12 - exception source
3646 http://www.scipy.net/roundup/ipython/issue12 - exception source
3641 extract not updated after reload. Thanks to Mike Salib
3647 extract not updated after reload. Thanks to Mike Salib
3642 <msalib-AT-mit.edu> for pinning the source of the problem.
3648 <msalib-AT-mit.edu> for pinning the source of the problem.
3643 Fortunately, the solution works inside ipython and doesn't require
3649 Fortunately, the solution works inside ipython and doesn't require
3644 any changes to python proper.
3650 any changes to python proper.
3645
3651
3646 * IPython/Magic.py (Magic.parse_options): Improved to process the
3652 * IPython/Magic.py (Magic.parse_options): Improved to process the
3647 argument list as a true shell would (by actually using the
3653 argument list as a true shell would (by actually using the
3648 underlying system shell). This way, all @magics automatically get
3654 underlying system shell). This way, all @magics automatically get
3649 shell expansion for variables. Thanks to a comment by Alex
3655 shell expansion for variables. Thanks to a comment by Alex
3650 Schmolck.
3656 Schmolck.
3651
3657
3652 2004-04-04 Fernando Perez <fperez@colorado.edu>
3658 2004-04-04 Fernando Perez <fperez@colorado.edu>
3653
3659
3654 * IPython/iplib.py (InteractiveShell.interact): Added a special
3660 * IPython/iplib.py (InteractiveShell.interact): Added a special
3655 trap for a debugger quit exception, which is basically impossible
3661 trap for a debugger quit exception, which is basically impossible
3656 to handle by normal mechanisms, given what pdb does to the stack.
3662 to handle by normal mechanisms, given what pdb does to the stack.
3657 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3663 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3658
3664
3659 2004-04-03 Fernando Perez <fperez@colorado.edu>
3665 2004-04-03 Fernando Perez <fperez@colorado.edu>
3660
3666
3661 * IPython/genutils.py (Term): Standardized the names of the Term
3667 * IPython/genutils.py (Term): Standardized the names of the Term
3662 class streams to cin/cout/cerr, following C++ naming conventions
3668 class streams to cin/cout/cerr, following C++ naming conventions
3663 (I can't use in/out/err because 'in' is not a valid attribute
3669 (I can't use in/out/err because 'in' is not a valid attribute
3664 name).
3670 name).
3665
3671
3666 * IPython/iplib.py (InteractiveShell.interact): don't increment
3672 * IPython/iplib.py (InteractiveShell.interact): don't increment
3667 the prompt if there's no user input. By Daniel 'Dang' Griffith
3673 the prompt if there's no user input. By Daniel 'Dang' Griffith
3668 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3674 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3669 Francois Pinard.
3675 Francois Pinard.
3670
3676
3671 2004-04-02 Fernando Perez <fperez@colorado.edu>
3677 2004-04-02 Fernando Perez <fperez@colorado.edu>
3672
3678
3673 * IPython/genutils.py (Stream.__init__): Modified to survive at
3679 * IPython/genutils.py (Stream.__init__): Modified to survive at
3674 least importing in contexts where stdin/out/err aren't true file
3680 least importing in contexts where stdin/out/err aren't true file
3675 objects, such as PyCrust (they lack fileno() and mode). However,
3681 objects, such as PyCrust (they lack fileno() and mode). However,
3676 the recovery facilities which rely on these things existing will
3682 the recovery facilities which rely on these things existing will
3677 not work.
3683 not work.
3678
3684
3679 2004-04-01 Fernando Perez <fperez@colorado.edu>
3685 2004-04-01 Fernando Perez <fperez@colorado.edu>
3680
3686
3681 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3687 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3682 use the new getoutputerror() function, so it properly
3688 use the new getoutputerror() function, so it properly
3683 distinguishes stdout/err.
3689 distinguishes stdout/err.
3684
3690
3685 * IPython/genutils.py (getoutputerror): added a function to
3691 * IPython/genutils.py (getoutputerror): added a function to
3686 capture separately the standard output and error of a command.
3692 capture separately the standard output and error of a command.
3687 After a comment from dang on the mailing lists. This code is
3693 After a comment from dang on the mailing lists. This code is
3688 basically a modified version of commands.getstatusoutput(), from
3694 basically a modified version of commands.getstatusoutput(), from
3689 the standard library.
3695 the standard library.
3690
3696
3691 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3697 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3692 '!!' as a special syntax (shorthand) to access @sx.
3698 '!!' as a special syntax (shorthand) to access @sx.
3693
3699
3694 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3700 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3695 command and return its output as a list split on '\n'.
3701 command and return its output as a list split on '\n'.
3696
3702
3697 2004-03-31 Fernando Perez <fperez@colorado.edu>
3703 2004-03-31 Fernando Perez <fperez@colorado.edu>
3698
3704
3699 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3705 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3700 method to dictionaries used as FakeModule instances if they lack
3706 method to dictionaries used as FakeModule instances if they lack
3701 it. At least pydoc in python2.3 breaks for runtime-defined
3707 it. At least pydoc in python2.3 breaks for runtime-defined
3702 functions without this hack. At some point I need to _really_
3708 functions without this hack. At some point I need to _really_
3703 understand what FakeModule is doing, because it's a gross hack.
3709 understand what FakeModule is doing, because it's a gross hack.
3704 But it solves Arnd's problem for now...
3710 But it solves Arnd's problem for now...
3705
3711
3706 2004-02-27 Fernando Perez <fperez@colorado.edu>
3712 2004-02-27 Fernando Perez <fperez@colorado.edu>
3707
3713
3708 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3714 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3709 mode would behave erratically. Also increased the number of
3715 mode would behave erratically. Also increased the number of
3710 possible logs in rotate mod to 999. Thanks to Rod Holland
3716 possible logs in rotate mod to 999. Thanks to Rod Holland
3711 <rhh@StructureLABS.com> for the report and fixes.
3717 <rhh@StructureLABS.com> for the report and fixes.
3712
3718
3713 2004-02-26 Fernando Perez <fperez@colorado.edu>
3719 2004-02-26 Fernando Perez <fperez@colorado.edu>
3714
3720
3715 * IPython/genutils.py (page): Check that the curses module really
3721 * IPython/genutils.py (page): Check that the curses module really
3716 has the initscr attribute before trying to use it. For some
3722 has the initscr attribute before trying to use it. For some
3717 reason, the Solaris curses module is missing this. I think this
3723 reason, the Solaris curses module is missing this. I think this
3718 should be considered a Solaris python bug, but I'm not sure.
3724 should be considered a Solaris python bug, but I'm not sure.
3719
3725
3720 2004-01-17 Fernando Perez <fperez@colorado.edu>
3726 2004-01-17 Fernando Perez <fperez@colorado.edu>
3721
3727
3722 * IPython/genutils.py (Stream.__init__): Changes to try to make
3728 * IPython/genutils.py (Stream.__init__): Changes to try to make
3723 ipython robust against stdin/out/err being closed by the user.
3729 ipython robust against stdin/out/err being closed by the user.
3724 This is 'user error' (and blocks a normal python session, at least
3730 This is 'user error' (and blocks a normal python session, at least
3725 the stdout case). However, Ipython should be able to survive such
3731 the stdout case). However, Ipython should be able to survive such
3726 instances of abuse as gracefully as possible. To simplify the
3732 instances of abuse as gracefully as possible. To simplify the
3727 coding and maintain compatibility with Gary Bishop's Term
3733 coding and maintain compatibility with Gary Bishop's Term
3728 contributions, I've made use of classmethods for this. I think
3734 contributions, I've made use of classmethods for this. I think
3729 this introduces a dependency on python 2.2.
3735 this introduces a dependency on python 2.2.
3730
3736
3731 2004-01-13 Fernando Perez <fperez@colorado.edu>
3737 2004-01-13 Fernando Perez <fperez@colorado.edu>
3732
3738
3733 * IPython/numutils.py (exp_safe): simplified the code a bit and
3739 * IPython/numutils.py (exp_safe): simplified the code a bit and
3734 removed the need for importing the kinds module altogether.
3740 removed the need for importing the kinds module altogether.
3735
3741
3736 2004-01-06 Fernando Perez <fperez@colorado.edu>
3742 2004-01-06 Fernando Perez <fperez@colorado.edu>
3737
3743
3738 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3744 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3739 a magic function instead, after some community feedback. No
3745 a magic function instead, after some community feedback. No
3740 special syntax will exist for it, but its name is deliberately
3746 special syntax will exist for it, but its name is deliberately
3741 very short.
3747 very short.
3742
3748
3743 2003-12-20 Fernando Perez <fperez@colorado.edu>
3749 2003-12-20 Fernando Perez <fperez@colorado.edu>
3744
3750
3745 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3751 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3746 new functionality, to automagically assign the result of a shell
3752 new functionality, to automagically assign the result of a shell
3747 command to a variable. I'll solicit some community feedback on
3753 command to a variable. I'll solicit some community feedback on
3748 this before making it permanent.
3754 this before making it permanent.
3749
3755
3750 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3756 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3751 requested about callables for which inspect couldn't obtain a
3757 requested about callables for which inspect couldn't obtain a
3752 proper argspec. Thanks to a crash report sent by Etienne
3758 proper argspec. Thanks to a crash report sent by Etienne
3753 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3759 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3754
3760
3755 2003-12-09 Fernando Perez <fperez@colorado.edu>
3761 2003-12-09 Fernando Perez <fperez@colorado.edu>
3756
3762
3757 * IPython/genutils.py (page): patch for the pager to work across
3763 * IPython/genutils.py (page): patch for the pager to work across
3758 various versions of Windows. By Gary Bishop.
3764 various versions of Windows. By Gary Bishop.
3759
3765
3760 2003-12-04 Fernando Perez <fperez@colorado.edu>
3766 2003-12-04 Fernando Perez <fperez@colorado.edu>
3761
3767
3762 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3768 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3763 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3769 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3764 While I tested this and it looks ok, there may still be corner
3770 While I tested this and it looks ok, there may still be corner
3765 cases I've missed.
3771 cases I've missed.
3766
3772
3767 2003-12-01 Fernando Perez <fperez@colorado.edu>
3773 2003-12-01 Fernando Perez <fperez@colorado.edu>
3768
3774
3769 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3775 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3770 where a line like 'p,q=1,2' would fail because the automagic
3776 where a line like 'p,q=1,2' would fail because the automagic
3771 system would be triggered for @p.
3777 system would be triggered for @p.
3772
3778
3773 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3779 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3774 cleanups, code unmodified.
3780 cleanups, code unmodified.
3775
3781
3776 * IPython/genutils.py (Term): added a class for IPython to handle
3782 * IPython/genutils.py (Term): added a class for IPython to handle
3777 output. In most cases it will just be a proxy for stdout/err, but
3783 output. In most cases it will just be a proxy for stdout/err, but
3778 having this allows modifications to be made for some platforms,
3784 having this allows modifications to be made for some platforms,
3779 such as handling color escapes under Windows. All of this code
3785 such as handling color escapes under Windows. All of this code
3780 was contributed by Gary Bishop, with minor modifications by me.
3786 was contributed by Gary Bishop, with minor modifications by me.
3781 The actual changes affect many files.
3787 The actual changes affect many files.
3782
3788
3783 2003-11-30 Fernando Perez <fperez@colorado.edu>
3789 2003-11-30 Fernando Perez <fperez@colorado.edu>
3784
3790
3785 * IPython/iplib.py (file_matches): new completion code, courtesy
3791 * IPython/iplib.py (file_matches): new completion code, courtesy
3786 of Jeff Collins. This enables filename completion again under
3792 of Jeff Collins. This enables filename completion again under
3787 python 2.3, which disabled it at the C level.
3793 python 2.3, which disabled it at the C level.
3788
3794
3789 2003-11-11 Fernando Perez <fperez@colorado.edu>
3795 2003-11-11 Fernando Perez <fperez@colorado.edu>
3790
3796
3791 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3797 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3792 for Numeric.array(map(...)), but often convenient.
3798 for Numeric.array(map(...)), but often convenient.
3793
3799
3794 2003-11-05 Fernando Perez <fperez@colorado.edu>
3800 2003-11-05 Fernando Perez <fperez@colorado.edu>
3795
3801
3796 * IPython/numutils.py (frange): Changed a call from int() to
3802 * IPython/numutils.py (frange): Changed a call from int() to
3797 int(round()) to prevent a problem reported with arange() in the
3803 int(round()) to prevent a problem reported with arange() in the
3798 numpy list.
3804 numpy list.
3799
3805
3800 2003-10-06 Fernando Perez <fperez@colorado.edu>
3806 2003-10-06 Fernando Perez <fperez@colorado.edu>
3801
3807
3802 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3808 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3803 prevent crashes if sys lacks an argv attribute (it happens with
3809 prevent crashes if sys lacks an argv attribute (it happens with
3804 embedded interpreters which build a bare-bones sys module).
3810 embedded interpreters which build a bare-bones sys module).
3805 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3811 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3806
3812
3807 2003-09-24 Fernando Perez <fperez@colorado.edu>
3813 2003-09-24 Fernando Perez <fperez@colorado.edu>
3808
3814
3809 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3815 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3810 to protect against poorly written user objects where __getattr__
3816 to protect against poorly written user objects where __getattr__
3811 raises exceptions other than AttributeError. Thanks to a bug
3817 raises exceptions other than AttributeError. Thanks to a bug
3812 report by Oliver Sander <osander-AT-gmx.de>.
3818 report by Oliver Sander <osander-AT-gmx.de>.
3813
3819
3814 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3820 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3815 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3821 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3816
3822
3817 2003-09-09 Fernando Perez <fperez@colorado.edu>
3823 2003-09-09 Fernando Perez <fperez@colorado.edu>
3818
3824
3819 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3825 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3820 unpacking a list whith a callable as first element would
3826 unpacking a list whith a callable as first element would
3821 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3827 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3822 Collins.
3828 Collins.
3823
3829
3824 2003-08-25 *** Released version 0.5.0
3830 2003-08-25 *** Released version 0.5.0
3825
3831
3826 2003-08-22 Fernando Perez <fperez@colorado.edu>
3832 2003-08-22 Fernando Perez <fperez@colorado.edu>
3827
3833
3828 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3834 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3829 improperly defined user exceptions. Thanks to feedback from Mark
3835 improperly defined user exceptions. Thanks to feedback from Mark
3830 Russell <mrussell-AT-verio.net>.
3836 Russell <mrussell-AT-verio.net>.
3831
3837
3832 2003-08-20 Fernando Perez <fperez@colorado.edu>
3838 2003-08-20 Fernando Perez <fperez@colorado.edu>
3833
3839
3834 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3840 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3835 printing so that it would print multi-line string forms starting
3841 printing so that it would print multi-line string forms starting
3836 with a new line. This way the formatting is better respected for
3842 with a new line. This way the formatting is better respected for
3837 objects which work hard to make nice string forms.
3843 objects which work hard to make nice string forms.
3838
3844
3839 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3845 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3840 autocall would overtake data access for objects with both
3846 autocall would overtake data access for objects with both
3841 __getitem__ and __call__.
3847 __getitem__ and __call__.
3842
3848
3843 2003-08-19 *** Released version 0.5.0-rc1
3849 2003-08-19 *** Released version 0.5.0-rc1
3844
3850
3845 2003-08-19 Fernando Perez <fperez@colorado.edu>
3851 2003-08-19 Fernando Perez <fperez@colorado.edu>
3846
3852
3847 * IPython/deep_reload.py (load_tail): single tiny change here
3853 * IPython/deep_reload.py (load_tail): single tiny change here
3848 seems to fix the long-standing bug of dreload() failing to work
3854 seems to fix the long-standing bug of dreload() failing to work
3849 for dotted names. But this module is pretty tricky, so I may have
3855 for dotted names. But this module is pretty tricky, so I may have
3850 missed some subtlety. Needs more testing!.
3856 missed some subtlety. Needs more testing!.
3851
3857
3852 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3858 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3853 exceptions which have badly implemented __str__ methods.
3859 exceptions which have badly implemented __str__ methods.
3854 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3860 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3855 which I've been getting reports about from Python 2.3 users. I
3861 which I've been getting reports about from Python 2.3 users. I
3856 wish I had a simple test case to reproduce the problem, so I could
3862 wish I had a simple test case to reproduce the problem, so I could
3857 either write a cleaner workaround or file a bug report if
3863 either write a cleaner workaround or file a bug report if
3858 necessary.
3864 necessary.
3859
3865
3860 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3866 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3861 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3867 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3862 a bug report by Tjabo Kloppenburg.
3868 a bug report by Tjabo Kloppenburg.
3863
3869
3864 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3870 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3865 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3871 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3866 seems rather unstable. Thanks to a bug report by Tjabo
3872 seems rather unstable. Thanks to a bug report by Tjabo
3867 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3873 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3868
3874
3869 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3875 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3870 this out soon because of the critical fixes in the inner loop for
3876 this out soon because of the critical fixes in the inner loop for
3871 generators.
3877 generators.
3872
3878
3873 * IPython/Magic.py (Magic.getargspec): removed. This (and
3879 * IPython/Magic.py (Magic.getargspec): removed. This (and
3874 _get_def) have been obsoleted by OInspect for a long time, I
3880 _get_def) have been obsoleted by OInspect for a long time, I
3875 hadn't noticed that they were dead code.
3881 hadn't noticed that they were dead code.
3876 (Magic._ofind): restored _ofind functionality for a few literals
3882 (Magic._ofind): restored _ofind functionality for a few literals
3877 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3883 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3878 for things like "hello".capitalize?, since that would require a
3884 for things like "hello".capitalize?, since that would require a
3879 potentially dangerous eval() again.
3885 potentially dangerous eval() again.
3880
3886
3881 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3887 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3882 logic a bit more to clean up the escapes handling and minimize the
3888 logic a bit more to clean up the escapes handling and minimize the
3883 use of _ofind to only necessary cases. The interactive 'feel' of
3889 use of _ofind to only necessary cases. The interactive 'feel' of
3884 IPython should have improved quite a bit with the changes in
3890 IPython should have improved quite a bit with the changes in
3885 _prefilter and _ofind (besides being far safer than before).
3891 _prefilter and _ofind (besides being far safer than before).
3886
3892
3887 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3893 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3888 obscure, never reported). Edit would fail to find the object to
3894 obscure, never reported). Edit would fail to find the object to
3889 edit under some circumstances.
3895 edit under some circumstances.
3890 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3896 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3891 which were causing double-calling of generators. Those eval calls
3897 which were causing double-calling of generators. Those eval calls
3892 were _very_ dangerous, since code with side effects could be
3898 were _very_ dangerous, since code with side effects could be
3893 triggered. As they say, 'eval is evil'... These were the
3899 triggered. As they say, 'eval is evil'... These were the
3894 nastiest evals in IPython. Besides, _ofind is now far simpler,
3900 nastiest evals in IPython. Besides, _ofind is now far simpler,
3895 and it should also be quite a bit faster. Its use of inspect is
3901 and it should also be quite a bit faster. Its use of inspect is
3896 also safer, so perhaps some of the inspect-related crashes I've
3902 also safer, so perhaps some of the inspect-related crashes I've
3897 seen lately with Python 2.3 might be taken care of. That will
3903 seen lately with Python 2.3 might be taken care of. That will
3898 need more testing.
3904 need more testing.
3899
3905
3900 2003-08-17 Fernando Perez <fperez@colorado.edu>
3906 2003-08-17 Fernando Perez <fperez@colorado.edu>
3901
3907
3902 * IPython/iplib.py (InteractiveShell._prefilter): significant
3908 * IPython/iplib.py (InteractiveShell._prefilter): significant
3903 simplifications to the logic for handling user escapes. Faster
3909 simplifications to the logic for handling user escapes. Faster
3904 and simpler code.
3910 and simpler code.
3905
3911
3906 2003-08-14 Fernando Perez <fperez@colorado.edu>
3912 2003-08-14 Fernando Perez <fperez@colorado.edu>
3907
3913
3908 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3914 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3909 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3915 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3910 but it should be quite a bit faster. And the recursive version
3916 but it should be quite a bit faster. And the recursive version
3911 generated O(log N) intermediate storage for all rank>1 arrays,
3917 generated O(log N) intermediate storage for all rank>1 arrays,
3912 even if they were contiguous.
3918 even if they were contiguous.
3913 (l1norm): Added this function.
3919 (l1norm): Added this function.
3914 (norm): Added this function for arbitrary norms (including
3920 (norm): Added this function for arbitrary norms (including
3915 l-infinity). l1 and l2 are still special cases for convenience
3921 l-infinity). l1 and l2 are still special cases for convenience
3916 and speed.
3922 and speed.
3917
3923
3918 2003-08-03 Fernando Perez <fperez@colorado.edu>
3924 2003-08-03 Fernando Perez <fperez@colorado.edu>
3919
3925
3920 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3926 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3921 exceptions, which now raise PendingDeprecationWarnings in Python
3927 exceptions, which now raise PendingDeprecationWarnings in Python
3922 2.3. There were some in Magic and some in Gnuplot2.
3928 2.3. There were some in Magic and some in Gnuplot2.
3923
3929
3924 2003-06-30 Fernando Perez <fperez@colorado.edu>
3930 2003-06-30 Fernando Perez <fperez@colorado.edu>
3925
3931
3926 * IPython/genutils.py (page): modified to call curses only for
3932 * IPython/genutils.py (page): modified to call curses only for
3927 terminals where TERM=='xterm'. After problems under many other
3933 terminals where TERM=='xterm'. After problems under many other
3928 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3934 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3929
3935
3930 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3936 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3931 would be triggered when readline was absent. This was just an old
3937 would be triggered when readline was absent. This was just an old
3932 debugging statement I'd forgotten to take out.
3938 debugging statement I'd forgotten to take out.
3933
3939
3934 2003-06-20 Fernando Perez <fperez@colorado.edu>
3940 2003-06-20 Fernando Perez <fperez@colorado.edu>
3935
3941
3936 * IPython/genutils.py (clock): modified to return only user time
3942 * IPython/genutils.py (clock): modified to return only user time
3937 (not counting system time), after a discussion on scipy. While
3943 (not counting system time), after a discussion on scipy. While
3938 system time may be a useful quantity occasionally, it may much
3944 system time may be a useful quantity occasionally, it may much
3939 more easily be skewed by occasional swapping or other similar
3945 more easily be skewed by occasional swapping or other similar
3940 activity.
3946 activity.
3941
3947
3942 2003-06-05 Fernando Perez <fperez@colorado.edu>
3948 2003-06-05 Fernando Perez <fperez@colorado.edu>
3943
3949
3944 * IPython/numutils.py (identity): new function, for building
3950 * IPython/numutils.py (identity): new function, for building
3945 arbitrary rank Kronecker deltas (mostly backwards compatible with
3951 arbitrary rank Kronecker deltas (mostly backwards compatible with
3946 Numeric.identity)
3952 Numeric.identity)
3947
3953
3948 2003-06-03 Fernando Perez <fperez@colorado.edu>
3954 2003-06-03 Fernando Perez <fperez@colorado.edu>
3949
3955
3950 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3956 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3951 arguments passed to magics with spaces, to allow trailing '\' to
3957 arguments passed to magics with spaces, to allow trailing '\' to
3952 work normally (mainly for Windows users).
3958 work normally (mainly for Windows users).
3953
3959
3954 2003-05-29 Fernando Perez <fperez@colorado.edu>
3960 2003-05-29 Fernando Perez <fperez@colorado.edu>
3955
3961
3956 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3962 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3957 instead of pydoc.help. This fixes a bizarre behavior where
3963 instead of pydoc.help. This fixes a bizarre behavior where
3958 printing '%s' % locals() would trigger the help system. Now
3964 printing '%s' % locals() would trigger the help system. Now
3959 ipython behaves like normal python does.
3965 ipython behaves like normal python does.
3960
3966
3961 Note that if one does 'from pydoc import help', the bizarre
3967 Note that if one does 'from pydoc import help', the bizarre
3962 behavior returns, but this will also happen in normal python, so
3968 behavior returns, but this will also happen in normal python, so
3963 it's not an ipython bug anymore (it has to do with how pydoc.help
3969 it's not an ipython bug anymore (it has to do with how pydoc.help
3964 is implemented).
3970 is implemented).
3965
3971
3966 2003-05-22 Fernando Perez <fperez@colorado.edu>
3972 2003-05-22 Fernando Perez <fperez@colorado.edu>
3967
3973
3968 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3974 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3969 return [] instead of None when nothing matches, also match to end
3975 return [] instead of None when nothing matches, also match to end
3970 of line. Patch by Gary Bishop.
3976 of line. Patch by Gary Bishop.
3971
3977
3972 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3978 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3973 protection as before, for files passed on the command line. This
3979 protection as before, for files passed on the command line. This
3974 prevents the CrashHandler from kicking in if user files call into
3980 prevents the CrashHandler from kicking in if user files call into
3975 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3981 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3976 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3982 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3977
3983
3978 2003-05-20 *** Released version 0.4.0
3984 2003-05-20 *** Released version 0.4.0
3979
3985
3980 2003-05-20 Fernando Perez <fperez@colorado.edu>
3986 2003-05-20 Fernando Perez <fperez@colorado.edu>
3981
3987
3982 * setup.py: added support for manpages. It's a bit hackish b/c of
3988 * setup.py: added support for manpages. It's a bit hackish b/c of
3983 a bug in the way the bdist_rpm distutils target handles gzipped
3989 a bug in the way the bdist_rpm distutils target handles gzipped
3984 manpages, but it works. After a patch by Jack.
3990 manpages, but it works. After a patch by Jack.
3985
3991
3986 2003-05-19 Fernando Perez <fperez@colorado.edu>
3992 2003-05-19 Fernando Perez <fperez@colorado.edu>
3987
3993
3988 * IPython/numutils.py: added a mockup of the kinds module, since
3994 * IPython/numutils.py: added a mockup of the kinds module, since
3989 it was recently removed from Numeric. This way, numutils will
3995 it was recently removed from Numeric. This way, numutils will
3990 work for all users even if they are missing kinds.
3996 work for all users even if they are missing kinds.
3991
3997
3992 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3998 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3993 failure, which can occur with SWIG-wrapped extensions. After a
3999 failure, which can occur with SWIG-wrapped extensions. After a
3994 crash report from Prabhu.
4000 crash report from Prabhu.
3995
4001
3996 2003-05-16 Fernando Perez <fperez@colorado.edu>
4002 2003-05-16 Fernando Perez <fperez@colorado.edu>
3997
4003
3998 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4004 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3999 protect ipython from user code which may call directly
4005 protect ipython from user code which may call directly
4000 sys.excepthook (this looks like an ipython crash to the user, even
4006 sys.excepthook (this looks like an ipython crash to the user, even
4001 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4007 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4002 This is especially important to help users of WxWindows, but may
4008 This is especially important to help users of WxWindows, but may
4003 also be useful in other cases.
4009 also be useful in other cases.
4004
4010
4005 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4011 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4006 an optional tb_offset to be specified, and to preserve exception
4012 an optional tb_offset to be specified, and to preserve exception
4007 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4013 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4008
4014
4009 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4015 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4010
4016
4011 2003-05-15 Fernando Perez <fperez@colorado.edu>
4017 2003-05-15 Fernando Perez <fperez@colorado.edu>
4012
4018
4013 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4019 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4014 installing for a new user under Windows.
4020 installing for a new user under Windows.
4015
4021
4016 2003-05-12 Fernando Perez <fperez@colorado.edu>
4022 2003-05-12 Fernando Perez <fperez@colorado.edu>
4017
4023
4018 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4024 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4019 handler for Emacs comint-based lines. Currently it doesn't do
4025 handler for Emacs comint-based lines. Currently it doesn't do
4020 much (but importantly, it doesn't update the history cache). In
4026 much (but importantly, it doesn't update the history cache). In
4021 the future it may be expanded if Alex needs more functionality
4027 the future it may be expanded if Alex needs more functionality
4022 there.
4028 there.
4023
4029
4024 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4030 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4025 info to crash reports.
4031 info to crash reports.
4026
4032
4027 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4033 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4028 just like Python's -c. Also fixed crash with invalid -color
4034 just like Python's -c. Also fixed crash with invalid -color
4029 option value at startup. Thanks to Will French
4035 option value at startup. Thanks to Will French
4030 <wfrench-AT-bestweb.net> for the bug report.
4036 <wfrench-AT-bestweb.net> for the bug report.
4031
4037
4032 2003-05-09 Fernando Perez <fperez@colorado.edu>
4038 2003-05-09 Fernando Perez <fperez@colorado.edu>
4033
4039
4034 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4040 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4035 to EvalDict (it's a mapping, after all) and simplified its code
4041 to EvalDict (it's a mapping, after all) and simplified its code
4036 quite a bit, after a nice discussion on c.l.py where Gustavo
4042 quite a bit, after a nice discussion on c.l.py where Gustavo
4037 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4043 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4038
4044
4039 2003-04-30 Fernando Perez <fperez@colorado.edu>
4045 2003-04-30 Fernando Perez <fperez@colorado.edu>
4040
4046
4041 * IPython/genutils.py (timings_out): modified it to reduce its
4047 * IPython/genutils.py (timings_out): modified it to reduce its
4042 overhead in the common reps==1 case.
4048 overhead in the common reps==1 case.
4043
4049
4044 2003-04-29 Fernando Perez <fperez@colorado.edu>
4050 2003-04-29 Fernando Perez <fperez@colorado.edu>
4045
4051
4046 * IPython/genutils.py (timings_out): Modified to use the resource
4052 * IPython/genutils.py (timings_out): Modified to use the resource
4047 module, which avoids the wraparound problems of time.clock().
4053 module, which avoids the wraparound problems of time.clock().
4048
4054
4049 2003-04-17 *** Released version 0.2.15pre4
4055 2003-04-17 *** Released version 0.2.15pre4
4050
4056
4051 2003-04-17 Fernando Perez <fperez@colorado.edu>
4057 2003-04-17 Fernando Perez <fperez@colorado.edu>
4052
4058
4053 * setup.py (scriptfiles): Split windows-specific stuff over to a
4059 * setup.py (scriptfiles): Split windows-specific stuff over to a
4054 separate file, in an attempt to have a Windows GUI installer.
4060 separate file, in an attempt to have a Windows GUI installer.
4055 That didn't work, but part of the groundwork is done.
4061 That didn't work, but part of the groundwork is done.
4056
4062
4057 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4063 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4058 indent/unindent with 4 spaces. Particularly useful in combination
4064 indent/unindent with 4 spaces. Particularly useful in combination
4059 with the new auto-indent option.
4065 with the new auto-indent option.
4060
4066
4061 2003-04-16 Fernando Perez <fperez@colorado.edu>
4067 2003-04-16 Fernando Perez <fperez@colorado.edu>
4062
4068
4063 * IPython/Magic.py: various replacements of self.rc for
4069 * IPython/Magic.py: various replacements of self.rc for
4064 self.shell.rc. A lot more remains to be done to fully disentangle
4070 self.shell.rc. A lot more remains to be done to fully disentangle
4065 this class from the main Shell class.
4071 this class from the main Shell class.
4066
4072
4067 * IPython/GnuplotRuntime.py: added checks for mouse support so
4073 * IPython/GnuplotRuntime.py: added checks for mouse support so
4068 that we don't try to enable it if the current gnuplot doesn't
4074 that we don't try to enable it if the current gnuplot doesn't
4069 really support it. Also added checks so that we don't try to
4075 really support it. Also added checks so that we don't try to
4070 enable persist under Windows (where Gnuplot doesn't recognize the
4076 enable persist under Windows (where Gnuplot doesn't recognize the
4071 option).
4077 option).
4072
4078
4073 * IPython/iplib.py (InteractiveShell.interact): Added optional
4079 * IPython/iplib.py (InteractiveShell.interact): Added optional
4074 auto-indenting code, after a patch by King C. Shu
4080 auto-indenting code, after a patch by King C. Shu
4075 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4081 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4076 get along well with pasting indented code. If I ever figure out
4082 get along well with pasting indented code. If I ever figure out
4077 how to make that part go well, it will become on by default.
4083 how to make that part go well, it will become on by default.
4078
4084
4079 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4085 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4080 crash ipython if there was an unmatched '%' in the user's prompt
4086 crash ipython if there was an unmatched '%' in the user's prompt
4081 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4087 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4082
4088
4083 * IPython/iplib.py (InteractiveShell.interact): removed the
4089 * IPython/iplib.py (InteractiveShell.interact): removed the
4084 ability to ask the user whether he wants to crash or not at the
4090 ability to ask the user whether he wants to crash or not at the
4085 'last line' exception handler. Calling functions at that point
4091 'last line' exception handler. Calling functions at that point
4086 changes the stack, and the error reports would have incorrect
4092 changes the stack, and the error reports would have incorrect
4087 tracebacks.
4093 tracebacks.
4088
4094
4089 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4095 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4090 pass through a peger a pretty-printed form of any object. After a
4096 pass through a peger a pretty-printed form of any object. After a
4091 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4097 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4092
4098
4093 2003-04-14 Fernando Perez <fperez@colorado.edu>
4099 2003-04-14 Fernando Perez <fperez@colorado.edu>
4094
4100
4095 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4101 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4096 all files in ~ would be modified at first install (instead of
4102 all files in ~ would be modified at first install (instead of
4097 ~/.ipython). This could be potentially disastrous, as the
4103 ~/.ipython). This could be potentially disastrous, as the
4098 modification (make line-endings native) could damage binary files.
4104 modification (make line-endings native) could damage binary files.
4099
4105
4100 2003-04-10 Fernando Perez <fperez@colorado.edu>
4106 2003-04-10 Fernando Perez <fperez@colorado.edu>
4101
4107
4102 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4108 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4103 handle only lines which are invalid python. This now means that
4109 handle only lines which are invalid python. This now means that
4104 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4110 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4105 for the bug report.
4111 for the bug report.
4106
4112
4107 2003-04-01 Fernando Perez <fperez@colorado.edu>
4113 2003-04-01 Fernando Perez <fperez@colorado.edu>
4108
4114
4109 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4115 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4110 where failing to set sys.last_traceback would crash pdb.pm().
4116 where failing to set sys.last_traceback would crash pdb.pm().
4111 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4117 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4112 report.
4118 report.
4113
4119
4114 2003-03-25 Fernando Perez <fperez@colorado.edu>
4120 2003-03-25 Fernando Perez <fperez@colorado.edu>
4115
4121
4116 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4122 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4117 before printing it (it had a lot of spurious blank lines at the
4123 before printing it (it had a lot of spurious blank lines at the
4118 end).
4124 end).
4119
4125
4120 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4126 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4121 output would be sent 21 times! Obviously people don't use this
4127 output would be sent 21 times! Obviously people don't use this
4122 too often, or I would have heard about it.
4128 too often, or I would have heard about it.
4123
4129
4124 2003-03-24 Fernando Perez <fperez@colorado.edu>
4130 2003-03-24 Fernando Perez <fperez@colorado.edu>
4125
4131
4126 * setup.py (scriptfiles): renamed the data_files parameter from
4132 * setup.py (scriptfiles): renamed the data_files parameter from
4127 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4133 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4128 for the patch.
4134 for the patch.
4129
4135
4130 2003-03-20 Fernando Perez <fperez@colorado.edu>
4136 2003-03-20 Fernando Perez <fperez@colorado.edu>
4131
4137
4132 * IPython/genutils.py (error): added error() and fatal()
4138 * IPython/genutils.py (error): added error() and fatal()
4133 functions.
4139 functions.
4134
4140
4135 2003-03-18 *** Released version 0.2.15pre3
4141 2003-03-18 *** Released version 0.2.15pre3
4136
4142
4137 2003-03-18 Fernando Perez <fperez@colorado.edu>
4143 2003-03-18 Fernando Perez <fperez@colorado.edu>
4138
4144
4139 * setupext/install_data_ext.py
4145 * setupext/install_data_ext.py
4140 (install_data_ext.initialize_options): Class contributed by Jack
4146 (install_data_ext.initialize_options): Class contributed by Jack
4141 Moffit for fixing the old distutils hack. He is sending this to
4147 Moffit for fixing the old distutils hack. He is sending this to
4142 the distutils folks so in the future we may not need it as a
4148 the distutils folks so in the future we may not need it as a
4143 private fix.
4149 private fix.
4144
4150
4145 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4151 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4146 changes for Debian packaging. See his patch for full details.
4152 changes for Debian packaging. See his patch for full details.
4147 The old distutils hack of making the ipythonrc* files carry a
4153 The old distutils hack of making the ipythonrc* files carry a
4148 bogus .py extension is gone, at last. Examples were moved to a
4154 bogus .py extension is gone, at last. Examples were moved to a
4149 separate subdir under doc/, and the separate executable scripts
4155 separate subdir under doc/, and the separate executable scripts
4150 now live in their own directory. Overall a great cleanup. The
4156 now live in their own directory. Overall a great cleanup. The
4151 manual was updated to use the new files, and setup.py has been
4157 manual was updated to use the new files, and setup.py has been
4152 fixed for this setup.
4158 fixed for this setup.
4153
4159
4154 * IPython/PyColorize.py (Parser.usage): made non-executable and
4160 * IPython/PyColorize.py (Parser.usage): made non-executable and
4155 created a pycolor wrapper around it to be included as a script.
4161 created a pycolor wrapper around it to be included as a script.
4156
4162
4157 2003-03-12 *** Released version 0.2.15pre2
4163 2003-03-12 *** Released version 0.2.15pre2
4158
4164
4159 2003-03-12 Fernando Perez <fperez@colorado.edu>
4165 2003-03-12 Fernando Perez <fperez@colorado.edu>
4160
4166
4161 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4167 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4162 long-standing problem with garbage characters in some terminals.
4168 long-standing problem with garbage characters in some terminals.
4163 The issue was really that the \001 and \002 escapes must _only_ be
4169 The issue was really that the \001 and \002 escapes must _only_ be
4164 passed to input prompts (which call readline), but _never_ to
4170 passed to input prompts (which call readline), but _never_ to
4165 normal text to be printed on screen. I changed ColorANSI to have
4171 normal text to be printed on screen. I changed ColorANSI to have
4166 two classes: TermColors and InputTermColors, each with the
4172 two classes: TermColors and InputTermColors, each with the
4167 appropriate escapes for input prompts or normal text. The code in
4173 appropriate escapes for input prompts or normal text. The code in
4168 Prompts.py got slightly more complicated, but this very old and
4174 Prompts.py got slightly more complicated, but this very old and
4169 annoying bug is finally fixed.
4175 annoying bug is finally fixed.
4170
4176
4171 All the credit for nailing down the real origin of this problem
4177 All the credit for nailing down the real origin of this problem
4172 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4178 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4173 *Many* thanks to him for spending quite a bit of effort on this.
4179 *Many* thanks to him for spending quite a bit of effort on this.
4174
4180
4175 2003-03-05 *** Released version 0.2.15pre1
4181 2003-03-05 *** Released version 0.2.15pre1
4176
4182
4177 2003-03-03 Fernando Perez <fperez@colorado.edu>
4183 2003-03-03 Fernando Perez <fperez@colorado.edu>
4178
4184
4179 * IPython/FakeModule.py: Moved the former _FakeModule to a
4185 * IPython/FakeModule.py: Moved the former _FakeModule to a
4180 separate file, because it's also needed by Magic (to fix a similar
4186 separate file, because it's also needed by Magic (to fix a similar
4181 pickle-related issue in @run).
4187 pickle-related issue in @run).
4182
4188
4183 2003-03-02 Fernando Perez <fperez@colorado.edu>
4189 2003-03-02 Fernando Perez <fperez@colorado.edu>
4184
4190
4185 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4191 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4186 the autocall option at runtime.
4192 the autocall option at runtime.
4187 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4193 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4188 across Magic.py to start separating Magic from InteractiveShell.
4194 across Magic.py to start separating Magic from InteractiveShell.
4189 (Magic._ofind): Fixed to return proper namespace for dotted
4195 (Magic._ofind): Fixed to return proper namespace for dotted
4190 names. Before, a dotted name would always return 'not currently
4196 names. Before, a dotted name would always return 'not currently
4191 defined', because it would find the 'parent'. s.x would be found,
4197 defined', because it would find the 'parent'. s.x would be found,
4192 but since 'x' isn't defined by itself, it would get confused.
4198 but since 'x' isn't defined by itself, it would get confused.
4193 (Magic.magic_run): Fixed pickling problems reported by Ralf
4199 (Magic.magic_run): Fixed pickling problems reported by Ralf
4194 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4200 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4195 that I'd used when Mike Heeter reported similar issues at the
4201 that I'd used when Mike Heeter reported similar issues at the
4196 top-level, but now for @run. It boils down to injecting the
4202 top-level, but now for @run. It boils down to injecting the
4197 namespace where code is being executed with something that looks
4203 namespace where code is being executed with something that looks
4198 enough like a module to fool pickle.dump(). Since a pickle stores
4204 enough like a module to fool pickle.dump(). Since a pickle stores
4199 a named reference to the importing module, we need this for
4205 a named reference to the importing module, we need this for
4200 pickles to save something sensible.
4206 pickles to save something sensible.
4201
4207
4202 * IPython/ipmaker.py (make_IPython): added an autocall option.
4208 * IPython/ipmaker.py (make_IPython): added an autocall option.
4203
4209
4204 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4210 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4205 the auto-eval code. Now autocalling is an option, and the code is
4211 the auto-eval code. Now autocalling is an option, and the code is
4206 also vastly safer. There is no more eval() involved at all.
4212 also vastly safer. There is no more eval() involved at all.
4207
4213
4208 2003-03-01 Fernando Perez <fperez@colorado.edu>
4214 2003-03-01 Fernando Perez <fperez@colorado.edu>
4209
4215
4210 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4216 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4211 dict with named keys instead of a tuple.
4217 dict with named keys instead of a tuple.
4212
4218
4213 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4219 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4214
4220
4215 * setup.py (make_shortcut): Fixed message about directories
4221 * setup.py (make_shortcut): Fixed message about directories
4216 created during Windows installation (the directories were ok, just
4222 created during Windows installation (the directories were ok, just
4217 the printed message was misleading). Thanks to Chris Liechti
4223 the printed message was misleading). Thanks to Chris Liechti
4218 <cliechti-AT-gmx.net> for the heads up.
4224 <cliechti-AT-gmx.net> for the heads up.
4219
4225
4220 2003-02-21 Fernando Perez <fperez@colorado.edu>
4226 2003-02-21 Fernando Perez <fperez@colorado.edu>
4221
4227
4222 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4228 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4223 of ValueError exception when checking for auto-execution. This
4229 of ValueError exception when checking for auto-execution. This
4224 one is raised by things like Numeric arrays arr.flat when the
4230 one is raised by things like Numeric arrays arr.flat when the
4225 array is non-contiguous.
4231 array is non-contiguous.
4226
4232
4227 2003-01-31 Fernando Perez <fperez@colorado.edu>
4233 2003-01-31 Fernando Perez <fperez@colorado.edu>
4228
4234
4229 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4235 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4230 not return any value at all (even though the command would get
4236 not return any value at all (even though the command would get
4231 executed).
4237 executed).
4232 (xsys): Flush stdout right after printing the command to ensure
4238 (xsys): Flush stdout right after printing the command to ensure
4233 proper ordering of commands and command output in the total
4239 proper ordering of commands and command output in the total
4234 output.
4240 output.
4235 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4241 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4236 system/getoutput as defaults. The old ones are kept for
4242 system/getoutput as defaults. The old ones are kept for
4237 compatibility reasons, so no code which uses this library needs
4243 compatibility reasons, so no code which uses this library needs
4238 changing.
4244 changing.
4239
4245
4240 2003-01-27 *** Released version 0.2.14
4246 2003-01-27 *** Released version 0.2.14
4241
4247
4242 2003-01-25 Fernando Perez <fperez@colorado.edu>
4248 2003-01-25 Fernando Perez <fperez@colorado.edu>
4243
4249
4244 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4250 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4245 functions defined in previous edit sessions could not be re-edited
4251 functions defined in previous edit sessions could not be re-edited
4246 (because the temp files were immediately removed). Now temp files
4252 (because the temp files were immediately removed). Now temp files
4247 are removed only at IPython's exit.
4253 are removed only at IPython's exit.
4248 (Magic.magic_run): Improved @run to perform shell-like expansions
4254 (Magic.magic_run): Improved @run to perform shell-like expansions
4249 on its arguments (~users and $VARS). With this, @run becomes more
4255 on its arguments (~users and $VARS). With this, @run becomes more
4250 like a normal command-line.
4256 like a normal command-line.
4251
4257
4252 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4258 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4253 bugs related to embedding and cleaned up that code. A fairly
4259 bugs related to embedding and cleaned up that code. A fairly
4254 important one was the impossibility to access the global namespace
4260 important one was the impossibility to access the global namespace
4255 through the embedded IPython (only local variables were visible).
4261 through the embedded IPython (only local variables were visible).
4256
4262
4257 2003-01-14 Fernando Perez <fperez@colorado.edu>
4263 2003-01-14 Fernando Perez <fperez@colorado.edu>
4258
4264
4259 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4265 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4260 auto-calling to be a bit more conservative. Now it doesn't get
4266 auto-calling to be a bit more conservative. Now it doesn't get
4261 triggered if any of '!=()<>' are in the rest of the input line, to
4267 triggered if any of '!=()<>' are in the rest of the input line, to
4262 allow comparing callables. Thanks to Alex for the heads up.
4268 allow comparing callables. Thanks to Alex for the heads up.
4263
4269
4264 2003-01-07 Fernando Perez <fperez@colorado.edu>
4270 2003-01-07 Fernando Perez <fperez@colorado.edu>
4265
4271
4266 * IPython/genutils.py (page): fixed estimation of the number of
4272 * IPython/genutils.py (page): fixed estimation of the number of
4267 lines in a string to be paged to simply count newlines. This
4273 lines in a string to be paged to simply count newlines. This
4268 prevents over-guessing due to embedded escape sequences. A better
4274 prevents over-guessing due to embedded escape sequences. A better
4269 long-term solution would involve stripping out the control chars
4275 long-term solution would involve stripping out the control chars
4270 for the count, but it's potentially so expensive I just don't
4276 for the count, but it's potentially so expensive I just don't
4271 think it's worth doing.
4277 think it's worth doing.
4272
4278
4273 2002-12-19 *** Released version 0.2.14pre50
4279 2002-12-19 *** Released version 0.2.14pre50
4274
4280
4275 2002-12-19 Fernando Perez <fperez@colorado.edu>
4281 2002-12-19 Fernando Perez <fperez@colorado.edu>
4276
4282
4277 * tools/release (version): Changed release scripts to inform
4283 * tools/release (version): Changed release scripts to inform
4278 Andrea and build a NEWS file with a list of recent changes.
4284 Andrea and build a NEWS file with a list of recent changes.
4279
4285
4280 * IPython/ColorANSI.py (__all__): changed terminal detection
4286 * IPython/ColorANSI.py (__all__): changed terminal detection
4281 code. Seems to work better for xterms without breaking
4287 code. Seems to work better for xterms without breaking
4282 konsole. Will need more testing to determine if WinXP and Mac OSX
4288 konsole. Will need more testing to determine if WinXP and Mac OSX
4283 also work ok.
4289 also work ok.
4284
4290
4285 2002-12-18 *** Released version 0.2.14pre49
4291 2002-12-18 *** Released version 0.2.14pre49
4286
4292
4287 2002-12-18 Fernando Perez <fperez@colorado.edu>
4293 2002-12-18 Fernando Perez <fperez@colorado.edu>
4288
4294
4289 * Docs: added new info about Mac OSX, from Andrea.
4295 * Docs: added new info about Mac OSX, from Andrea.
4290
4296
4291 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4297 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4292 allow direct plotting of python strings whose format is the same
4298 allow direct plotting of python strings whose format is the same
4293 of gnuplot data files.
4299 of gnuplot data files.
4294
4300
4295 2002-12-16 Fernando Perez <fperez@colorado.edu>
4301 2002-12-16 Fernando Perez <fperez@colorado.edu>
4296
4302
4297 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4303 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4298 value of exit question to be acknowledged.
4304 value of exit question to be acknowledged.
4299
4305
4300 2002-12-03 Fernando Perez <fperez@colorado.edu>
4306 2002-12-03 Fernando Perez <fperez@colorado.edu>
4301
4307
4302 * IPython/ipmaker.py: removed generators, which had been added
4308 * IPython/ipmaker.py: removed generators, which had been added
4303 by mistake in an earlier debugging run. This was causing trouble
4309 by mistake in an earlier debugging run. This was causing trouble
4304 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4310 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4305 for pointing this out.
4311 for pointing this out.
4306
4312
4307 2002-11-17 Fernando Perez <fperez@colorado.edu>
4313 2002-11-17 Fernando Perez <fperez@colorado.edu>
4308
4314
4309 * Manual: updated the Gnuplot section.
4315 * Manual: updated the Gnuplot section.
4310
4316
4311 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4317 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4312 a much better split of what goes in Runtime and what goes in
4318 a much better split of what goes in Runtime and what goes in
4313 Interactive.
4319 Interactive.
4314
4320
4315 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4321 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4316 being imported from iplib.
4322 being imported from iplib.
4317
4323
4318 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4324 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4319 for command-passing. Now the global Gnuplot instance is called
4325 for command-passing. Now the global Gnuplot instance is called
4320 'gp' instead of 'g', which was really a far too fragile and
4326 'gp' instead of 'g', which was really a far too fragile and
4321 common name.
4327 common name.
4322
4328
4323 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4329 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4324 bounding boxes generated by Gnuplot for square plots.
4330 bounding boxes generated by Gnuplot for square plots.
4325
4331
4326 * IPython/genutils.py (popkey): new function added. I should
4332 * IPython/genutils.py (popkey): new function added. I should
4327 suggest this on c.l.py as a dict method, it seems useful.
4333 suggest this on c.l.py as a dict method, it seems useful.
4328
4334
4329 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4335 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4330 to transparently handle PostScript generation. MUCH better than
4336 to transparently handle PostScript generation. MUCH better than
4331 the previous plot_eps/replot_eps (which I removed now). The code
4337 the previous plot_eps/replot_eps (which I removed now). The code
4332 is also fairly clean and well documented now (including
4338 is also fairly clean and well documented now (including
4333 docstrings).
4339 docstrings).
4334
4340
4335 2002-11-13 Fernando Perez <fperez@colorado.edu>
4341 2002-11-13 Fernando Perez <fperez@colorado.edu>
4336
4342
4337 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4343 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4338 (inconsistent with options).
4344 (inconsistent with options).
4339
4345
4340 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4346 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4341 manually disabled, I don't know why. Fixed it.
4347 manually disabled, I don't know why. Fixed it.
4342 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4348 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4343 eps output.
4349 eps output.
4344
4350
4345 2002-11-12 Fernando Perez <fperez@colorado.edu>
4351 2002-11-12 Fernando Perez <fperez@colorado.edu>
4346
4352
4347 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4353 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4348 don't propagate up to caller. Fixes crash reported by François
4354 don't propagate up to caller. Fixes crash reported by François
4349 Pinard.
4355 Pinard.
4350
4356
4351 2002-11-09 Fernando Perez <fperez@colorado.edu>
4357 2002-11-09 Fernando Perez <fperez@colorado.edu>
4352
4358
4353 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4359 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4354 history file for new users.
4360 history file for new users.
4355 (make_IPython): fixed bug where initial install would leave the
4361 (make_IPython): fixed bug where initial install would leave the
4356 user running in the .ipython dir.
4362 user running in the .ipython dir.
4357 (make_IPython): fixed bug where config dir .ipython would be
4363 (make_IPython): fixed bug where config dir .ipython would be
4358 created regardless of the given -ipythondir option. Thanks to Cory
4364 created regardless of the given -ipythondir option. Thanks to Cory
4359 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4365 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4360
4366
4361 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4367 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4362 type confirmations. Will need to use it in all of IPython's code
4368 type confirmations. Will need to use it in all of IPython's code
4363 consistently.
4369 consistently.
4364
4370
4365 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4371 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4366 context to print 31 lines instead of the default 5. This will make
4372 context to print 31 lines instead of the default 5. This will make
4367 the crash reports extremely detailed in case the problem is in
4373 the crash reports extremely detailed in case the problem is in
4368 libraries I don't have access to.
4374 libraries I don't have access to.
4369
4375
4370 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4376 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4371 line of defense' code to still crash, but giving users fair
4377 line of defense' code to still crash, but giving users fair
4372 warning. I don't want internal errors to go unreported: if there's
4378 warning. I don't want internal errors to go unreported: if there's
4373 an internal problem, IPython should crash and generate a full
4379 an internal problem, IPython should crash and generate a full
4374 report.
4380 report.
4375
4381
4376 2002-11-08 Fernando Perez <fperez@colorado.edu>
4382 2002-11-08 Fernando Perez <fperez@colorado.edu>
4377
4383
4378 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4384 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4379 otherwise uncaught exceptions which can appear if people set
4385 otherwise uncaught exceptions which can appear if people set
4380 sys.stdout to something badly broken. Thanks to a crash report
4386 sys.stdout to something badly broken. Thanks to a crash report
4381 from henni-AT-mail.brainbot.com.
4387 from henni-AT-mail.brainbot.com.
4382
4388
4383 2002-11-04 Fernando Perez <fperez@colorado.edu>
4389 2002-11-04 Fernando Perez <fperez@colorado.edu>
4384
4390
4385 * IPython/iplib.py (InteractiveShell.interact): added
4391 * IPython/iplib.py (InteractiveShell.interact): added
4386 __IPYTHON__active to the builtins. It's a flag which goes on when
4392 __IPYTHON__active to the builtins. It's a flag which goes on when
4387 the interaction starts and goes off again when it stops. This
4393 the interaction starts and goes off again when it stops. This
4388 allows embedding code to detect being inside IPython. Before this
4394 allows embedding code to detect being inside IPython. Before this
4389 was done via __IPYTHON__, but that only shows that an IPython
4395 was done via __IPYTHON__, but that only shows that an IPython
4390 instance has been created.
4396 instance has been created.
4391
4397
4392 * IPython/Magic.py (Magic.magic_env): I realized that in a
4398 * IPython/Magic.py (Magic.magic_env): I realized that in a
4393 UserDict, instance.data holds the data as a normal dict. So I
4399 UserDict, instance.data holds the data as a normal dict. So I
4394 modified @env to return os.environ.data instead of rebuilding a
4400 modified @env to return os.environ.data instead of rebuilding a
4395 dict by hand.
4401 dict by hand.
4396
4402
4397 2002-11-02 Fernando Perez <fperez@colorado.edu>
4403 2002-11-02 Fernando Perez <fperez@colorado.edu>
4398
4404
4399 * IPython/genutils.py (warn): changed so that level 1 prints no
4405 * IPython/genutils.py (warn): changed so that level 1 prints no
4400 header. Level 2 is now the default (with 'WARNING' header, as
4406 header. Level 2 is now the default (with 'WARNING' header, as
4401 before). I think I tracked all places where changes were needed in
4407 before). I think I tracked all places where changes were needed in
4402 IPython, but outside code using the old level numbering may have
4408 IPython, but outside code using the old level numbering may have
4403 broken.
4409 broken.
4404
4410
4405 * IPython/iplib.py (InteractiveShell.runcode): added this to
4411 * IPython/iplib.py (InteractiveShell.runcode): added this to
4406 handle the tracebacks in SystemExit traps correctly. The previous
4412 handle the tracebacks in SystemExit traps correctly. The previous
4407 code (through interact) was printing more of the stack than
4413 code (through interact) was printing more of the stack than
4408 necessary, showing IPython internal code to the user.
4414 necessary, showing IPython internal code to the user.
4409
4415
4410 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4416 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4411 default. Now that the default at the confirmation prompt is yes,
4417 default. Now that the default at the confirmation prompt is yes,
4412 it's not so intrusive. François' argument that ipython sessions
4418 it's not so intrusive. François' argument that ipython sessions
4413 tend to be complex enough not to lose them from an accidental C-d,
4419 tend to be complex enough not to lose them from an accidental C-d,
4414 is a valid one.
4420 is a valid one.
4415
4421
4416 * IPython/iplib.py (InteractiveShell.interact): added a
4422 * IPython/iplib.py (InteractiveShell.interact): added a
4417 showtraceback() call to the SystemExit trap, and modified the exit
4423 showtraceback() call to the SystemExit trap, and modified the exit
4418 confirmation to have yes as the default.
4424 confirmation to have yes as the default.
4419
4425
4420 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4426 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4421 this file. It's been gone from the code for a long time, this was
4427 this file. It's been gone from the code for a long time, this was
4422 simply leftover junk.
4428 simply leftover junk.
4423
4429
4424 2002-11-01 Fernando Perez <fperez@colorado.edu>
4430 2002-11-01 Fernando Perez <fperez@colorado.edu>
4425
4431
4426 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4432 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4427 added. If set, IPython now traps EOF and asks for
4433 added. If set, IPython now traps EOF and asks for
4428 confirmation. After a request by François Pinard.
4434 confirmation. After a request by François Pinard.
4429
4435
4430 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4436 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4431 of @abort, and with a new (better) mechanism for handling the
4437 of @abort, and with a new (better) mechanism for handling the
4432 exceptions.
4438 exceptions.
4433
4439
4434 2002-10-27 Fernando Perez <fperez@colorado.edu>
4440 2002-10-27 Fernando Perez <fperez@colorado.edu>
4435
4441
4436 * IPython/usage.py (__doc__): updated the --help information and
4442 * IPython/usage.py (__doc__): updated the --help information and
4437 the ipythonrc file to indicate that -log generates
4443 the ipythonrc file to indicate that -log generates
4438 ./ipython.log. Also fixed the corresponding info in @logstart.
4444 ./ipython.log. Also fixed the corresponding info in @logstart.
4439 This and several other fixes in the manuals thanks to reports by
4445 This and several other fixes in the manuals thanks to reports by
4440 François Pinard <pinard-AT-iro.umontreal.ca>.
4446 François Pinard <pinard-AT-iro.umontreal.ca>.
4441
4447
4442 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4448 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4443 refer to @logstart (instead of @log, which doesn't exist).
4449 refer to @logstart (instead of @log, which doesn't exist).
4444
4450
4445 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4451 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4446 AttributeError crash. Thanks to Christopher Armstrong
4452 AttributeError crash. Thanks to Christopher Armstrong
4447 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4453 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4448 introduced recently (in 0.2.14pre37) with the fix to the eval
4454 introduced recently (in 0.2.14pre37) with the fix to the eval
4449 problem mentioned below.
4455 problem mentioned below.
4450
4456
4451 2002-10-17 Fernando Perez <fperez@colorado.edu>
4457 2002-10-17 Fernando Perez <fperez@colorado.edu>
4452
4458
4453 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4459 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4454 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4460 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4455
4461
4456 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4462 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4457 this function to fix a problem reported by Alex Schmolck. He saw
4463 this function to fix a problem reported by Alex Schmolck. He saw
4458 it with list comprehensions and generators, which were getting
4464 it with list comprehensions and generators, which were getting
4459 called twice. The real problem was an 'eval' call in testing for
4465 called twice. The real problem was an 'eval' call in testing for
4460 automagic which was evaluating the input line silently.
4466 automagic which was evaluating the input line silently.
4461
4467
4462 This is a potentially very nasty bug, if the input has side
4468 This is a potentially very nasty bug, if the input has side
4463 effects which must not be repeated. The code is much cleaner now,
4469 effects which must not be repeated. The code is much cleaner now,
4464 without any blanket 'except' left and with a regexp test for
4470 without any blanket 'except' left and with a regexp test for
4465 actual function names.
4471 actual function names.
4466
4472
4467 But an eval remains, which I'm not fully comfortable with. I just
4473 But an eval remains, which I'm not fully comfortable with. I just
4468 don't know how to find out if an expression could be a callable in
4474 don't know how to find out if an expression could be a callable in
4469 the user's namespace without doing an eval on the string. However
4475 the user's namespace without doing an eval on the string. However
4470 that string is now much more strictly checked so that no code
4476 that string is now much more strictly checked so that no code
4471 slips by, so the eval should only happen for things that can
4477 slips by, so the eval should only happen for things that can
4472 really be only function/method names.
4478 really be only function/method names.
4473
4479
4474 2002-10-15 Fernando Perez <fperez@colorado.edu>
4480 2002-10-15 Fernando Perez <fperez@colorado.edu>
4475
4481
4476 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4482 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4477 OSX information to main manual, removed README_Mac_OSX file from
4483 OSX information to main manual, removed README_Mac_OSX file from
4478 distribution. Also updated credits for recent additions.
4484 distribution. Also updated credits for recent additions.
4479
4485
4480 2002-10-10 Fernando Perez <fperez@colorado.edu>
4486 2002-10-10 Fernando Perez <fperez@colorado.edu>
4481
4487
4482 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4488 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4483 terminal-related issues. Many thanks to Andrea Riciputi
4489 terminal-related issues. Many thanks to Andrea Riciputi
4484 <andrea.riciputi-AT-libero.it> for writing it.
4490 <andrea.riciputi-AT-libero.it> for writing it.
4485
4491
4486 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4492 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4487 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4493 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4488
4494
4489 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4495 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4490 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4496 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4491 <syver-en-AT-online.no> who both submitted patches for this problem.
4497 <syver-en-AT-online.no> who both submitted patches for this problem.
4492
4498
4493 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4499 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4494 global embedding to make sure that things don't overwrite user
4500 global embedding to make sure that things don't overwrite user
4495 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4501 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4496
4502
4497 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4503 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4498 compatibility. Thanks to Hayden Callow
4504 compatibility. Thanks to Hayden Callow
4499 <h.callow-AT-elec.canterbury.ac.nz>
4505 <h.callow-AT-elec.canterbury.ac.nz>
4500
4506
4501 2002-10-04 Fernando Perez <fperez@colorado.edu>
4507 2002-10-04 Fernando Perez <fperez@colorado.edu>
4502
4508
4503 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4509 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4504 Gnuplot.File objects.
4510 Gnuplot.File objects.
4505
4511
4506 2002-07-23 Fernando Perez <fperez@colorado.edu>
4512 2002-07-23 Fernando Perez <fperez@colorado.edu>
4507
4513
4508 * IPython/genutils.py (timing): Added timings() and timing() for
4514 * IPython/genutils.py (timing): Added timings() and timing() for
4509 quick access to the most commonly needed data, the execution
4515 quick access to the most commonly needed data, the execution
4510 times. Old timing() renamed to timings_out().
4516 times. Old timing() renamed to timings_out().
4511
4517
4512 2002-07-18 Fernando Perez <fperez@colorado.edu>
4518 2002-07-18 Fernando Perez <fperez@colorado.edu>
4513
4519
4514 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4520 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4515 bug with nested instances disrupting the parent's tab completion.
4521 bug with nested instances disrupting the parent's tab completion.
4516
4522
4517 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4523 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4518 all_completions code to begin the emacs integration.
4524 all_completions code to begin the emacs integration.
4519
4525
4520 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4526 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4521 argument to allow titling individual arrays when plotting.
4527 argument to allow titling individual arrays when plotting.
4522
4528
4523 2002-07-15 Fernando Perez <fperez@colorado.edu>
4529 2002-07-15 Fernando Perez <fperez@colorado.edu>
4524
4530
4525 * setup.py (make_shortcut): changed to retrieve the value of
4531 * setup.py (make_shortcut): changed to retrieve the value of
4526 'Program Files' directory from the registry (this value changes in
4532 'Program Files' directory from the registry (this value changes in
4527 non-english versions of Windows). Thanks to Thomas Fanslau
4533 non-english versions of Windows). Thanks to Thomas Fanslau
4528 <tfanslau-AT-gmx.de> for the report.
4534 <tfanslau-AT-gmx.de> for the report.
4529
4535
4530 2002-07-10 Fernando Perez <fperez@colorado.edu>
4536 2002-07-10 Fernando Perez <fperez@colorado.edu>
4531
4537
4532 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4538 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4533 a bug in pdb, which crashes if a line with only whitespace is
4539 a bug in pdb, which crashes if a line with only whitespace is
4534 entered. Bug report submitted to sourceforge.
4540 entered. Bug report submitted to sourceforge.
4535
4541
4536 2002-07-09 Fernando Perez <fperez@colorado.edu>
4542 2002-07-09 Fernando Perez <fperez@colorado.edu>
4537
4543
4538 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4544 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4539 reporting exceptions (it's a bug in inspect.py, I just set a
4545 reporting exceptions (it's a bug in inspect.py, I just set a
4540 workaround).
4546 workaround).
4541
4547
4542 2002-07-08 Fernando Perez <fperez@colorado.edu>
4548 2002-07-08 Fernando Perez <fperez@colorado.edu>
4543
4549
4544 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4550 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4545 __IPYTHON__ in __builtins__ to show up in user_ns.
4551 __IPYTHON__ in __builtins__ to show up in user_ns.
4546
4552
4547 2002-07-03 Fernando Perez <fperez@colorado.edu>
4553 2002-07-03 Fernando Perez <fperez@colorado.edu>
4548
4554
4549 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4555 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4550 name from @gp_set_instance to @gp_set_default.
4556 name from @gp_set_instance to @gp_set_default.
4551
4557
4552 * IPython/ipmaker.py (make_IPython): default editor value set to
4558 * IPython/ipmaker.py (make_IPython): default editor value set to
4553 '0' (a string), to match the rc file. Otherwise will crash when
4559 '0' (a string), to match the rc file. Otherwise will crash when
4554 .strip() is called on it.
4560 .strip() is called on it.
4555
4561
4556
4562
4557 2002-06-28 Fernando Perez <fperez@colorado.edu>
4563 2002-06-28 Fernando Perez <fperez@colorado.edu>
4558
4564
4559 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4565 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4560 of files in current directory when a file is executed via
4566 of files in current directory when a file is executed via
4561 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4567 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4562
4568
4563 * setup.py (manfiles): fix for rpm builds, submitted by RA
4569 * setup.py (manfiles): fix for rpm builds, submitted by RA
4564 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4570 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4565
4571
4566 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4572 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4567 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4573 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4568 string!). A. Schmolck caught this one.
4574 string!). A. Schmolck caught this one.
4569
4575
4570 2002-06-27 Fernando Perez <fperez@colorado.edu>
4576 2002-06-27 Fernando Perez <fperez@colorado.edu>
4571
4577
4572 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4578 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4573 defined files at the cmd line. __name__ wasn't being set to
4579 defined files at the cmd line. __name__ wasn't being set to
4574 __main__.
4580 __main__.
4575
4581
4576 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4582 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4577 regular lists and tuples besides Numeric arrays.
4583 regular lists and tuples besides Numeric arrays.
4578
4584
4579 * IPython/Prompts.py (CachedOutput.__call__): Added output
4585 * IPython/Prompts.py (CachedOutput.__call__): Added output
4580 supression for input ending with ';'. Similar to Mathematica and
4586 supression for input ending with ';'. Similar to Mathematica and
4581 Matlab. The _* vars and Out[] list are still updated, just like
4587 Matlab. The _* vars and Out[] list are still updated, just like
4582 Mathematica behaves.
4588 Mathematica behaves.
4583
4589
4584 2002-06-25 Fernando Perez <fperez@colorado.edu>
4590 2002-06-25 Fernando Perez <fperez@colorado.edu>
4585
4591
4586 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4592 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4587 .ini extensions for profiels under Windows.
4593 .ini extensions for profiels under Windows.
4588
4594
4589 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4595 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4590 string form. Fix contributed by Alexander Schmolck
4596 string form. Fix contributed by Alexander Schmolck
4591 <a.schmolck-AT-gmx.net>
4597 <a.schmolck-AT-gmx.net>
4592
4598
4593 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4599 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4594 pre-configured Gnuplot instance.
4600 pre-configured Gnuplot instance.
4595
4601
4596 2002-06-21 Fernando Perez <fperez@colorado.edu>
4602 2002-06-21 Fernando Perez <fperez@colorado.edu>
4597
4603
4598 * IPython/numutils.py (exp_safe): new function, works around the
4604 * IPython/numutils.py (exp_safe): new function, works around the
4599 underflow problems in Numeric.
4605 underflow problems in Numeric.
4600 (log2): New fn. Safe log in base 2: returns exact integer answer
4606 (log2): New fn. Safe log in base 2: returns exact integer answer
4601 for exact integer powers of 2.
4607 for exact integer powers of 2.
4602
4608
4603 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4609 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4604 properly.
4610 properly.
4605
4611
4606 2002-06-20 Fernando Perez <fperez@colorado.edu>
4612 2002-06-20 Fernando Perez <fperez@colorado.edu>
4607
4613
4608 * IPython/genutils.py (timing): new function like
4614 * IPython/genutils.py (timing): new function like
4609 Mathematica's. Similar to time_test, but returns more info.
4615 Mathematica's. Similar to time_test, but returns more info.
4610
4616
4611 2002-06-18 Fernando Perez <fperez@colorado.edu>
4617 2002-06-18 Fernando Perez <fperez@colorado.edu>
4612
4618
4613 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4619 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4614 according to Mike Heeter's suggestions.
4620 according to Mike Heeter's suggestions.
4615
4621
4616 2002-06-16 Fernando Perez <fperez@colorado.edu>
4622 2002-06-16 Fernando Perez <fperez@colorado.edu>
4617
4623
4618 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4624 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4619 system. GnuplotMagic is gone as a user-directory option. New files
4625 system. GnuplotMagic is gone as a user-directory option. New files
4620 make it easier to use all the gnuplot stuff both from external
4626 make it easier to use all the gnuplot stuff both from external
4621 programs as well as from IPython. Had to rewrite part of
4627 programs as well as from IPython. Had to rewrite part of
4622 hardcopy() b/c of a strange bug: often the ps files simply don't
4628 hardcopy() b/c of a strange bug: often the ps files simply don't
4623 get created, and require a repeat of the command (often several
4629 get created, and require a repeat of the command (often several
4624 times).
4630 times).
4625
4631
4626 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4632 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4627 resolve output channel at call time, so that if sys.stderr has
4633 resolve output channel at call time, so that if sys.stderr has
4628 been redirected by user this gets honored.
4634 been redirected by user this gets honored.
4629
4635
4630 2002-06-13 Fernando Perez <fperez@colorado.edu>
4636 2002-06-13 Fernando Perez <fperez@colorado.edu>
4631
4637
4632 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4638 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4633 IPShell. Kept a copy with the old names to avoid breaking people's
4639 IPShell. Kept a copy with the old names to avoid breaking people's
4634 embedded code.
4640 embedded code.
4635
4641
4636 * IPython/ipython: simplified it to the bare minimum after
4642 * IPython/ipython: simplified it to the bare minimum after
4637 Holger's suggestions. Added info about how to use it in
4643 Holger's suggestions. Added info about how to use it in
4638 PYTHONSTARTUP.
4644 PYTHONSTARTUP.
4639
4645
4640 * IPython/Shell.py (IPythonShell): changed the options passing
4646 * IPython/Shell.py (IPythonShell): changed the options passing
4641 from a string with funky %s replacements to a straight list. Maybe
4647 from a string with funky %s replacements to a straight list. Maybe
4642 a bit more typing, but it follows sys.argv conventions, so there's
4648 a bit more typing, but it follows sys.argv conventions, so there's
4643 less special-casing to remember.
4649 less special-casing to remember.
4644
4650
4645 2002-06-12 Fernando Perez <fperez@colorado.edu>
4651 2002-06-12 Fernando Perez <fperez@colorado.edu>
4646
4652
4647 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4653 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4648 command. Thanks to a suggestion by Mike Heeter.
4654 command. Thanks to a suggestion by Mike Heeter.
4649 (Magic.magic_pfile): added behavior to look at filenames if given
4655 (Magic.magic_pfile): added behavior to look at filenames if given
4650 arg is not a defined object.
4656 arg is not a defined object.
4651 (Magic.magic_save): New @save function to save code snippets. Also
4657 (Magic.magic_save): New @save function to save code snippets. Also
4652 a Mike Heeter idea.
4658 a Mike Heeter idea.
4653
4659
4654 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4660 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4655 plot() and replot(). Much more convenient now, especially for
4661 plot() and replot(). Much more convenient now, especially for
4656 interactive use.
4662 interactive use.
4657
4663
4658 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4664 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4659 filenames.
4665 filenames.
4660
4666
4661 2002-06-02 Fernando Perez <fperez@colorado.edu>
4667 2002-06-02 Fernando Perez <fperez@colorado.edu>
4662
4668
4663 * IPython/Struct.py (Struct.__init__): modified to admit
4669 * IPython/Struct.py (Struct.__init__): modified to admit
4664 initialization via another struct.
4670 initialization via another struct.
4665
4671
4666 * IPython/genutils.py (SystemExec.__init__): New stateful
4672 * IPython/genutils.py (SystemExec.__init__): New stateful
4667 interface to xsys and bq. Useful for writing system scripts.
4673 interface to xsys and bq. Useful for writing system scripts.
4668
4674
4669 2002-05-30 Fernando Perez <fperez@colorado.edu>
4675 2002-05-30 Fernando Perez <fperez@colorado.edu>
4670
4676
4671 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4677 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4672 documents. This will make the user download smaller (it's getting
4678 documents. This will make the user download smaller (it's getting
4673 too big).
4679 too big).
4674
4680
4675 2002-05-29 Fernando Perez <fperez@colorado.edu>
4681 2002-05-29 Fernando Perez <fperez@colorado.edu>
4676
4682
4677 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4683 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4678 fix problems with shelve and pickle. Seems to work, but I don't
4684 fix problems with shelve and pickle. Seems to work, but I don't
4679 know if corner cases break it. Thanks to Mike Heeter
4685 know if corner cases break it. Thanks to Mike Heeter
4680 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4686 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4681
4687
4682 2002-05-24 Fernando Perez <fperez@colorado.edu>
4688 2002-05-24 Fernando Perez <fperez@colorado.edu>
4683
4689
4684 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4690 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4685 macros having broken.
4691 macros having broken.
4686
4692
4687 2002-05-21 Fernando Perez <fperez@colorado.edu>
4693 2002-05-21 Fernando Perez <fperez@colorado.edu>
4688
4694
4689 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4695 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4690 introduced logging bug: all history before logging started was
4696 introduced logging bug: all history before logging started was
4691 being written one character per line! This came from the redesign
4697 being written one character per line! This came from the redesign
4692 of the input history as a special list which slices to strings,
4698 of the input history as a special list which slices to strings,
4693 not to lists.
4699 not to lists.
4694
4700
4695 2002-05-20 Fernando Perez <fperez@colorado.edu>
4701 2002-05-20 Fernando Perez <fperez@colorado.edu>
4696
4702
4697 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4703 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4698 be an attribute of all classes in this module. The design of these
4704 be an attribute of all classes in this module. The design of these
4699 classes needs some serious overhauling.
4705 classes needs some serious overhauling.
4700
4706
4701 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4707 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4702 which was ignoring '_' in option names.
4708 which was ignoring '_' in option names.
4703
4709
4704 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4710 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4705 'Verbose_novars' to 'Context' and made it the new default. It's a
4711 'Verbose_novars' to 'Context' and made it the new default. It's a
4706 bit more readable and also safer than verbose.
4712 bit more readable and also safer than verbose.
4707
4713
4708 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4714 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4709 triple-quoted strings.
4715 triple-quoted strings.
4710
4716
4711 * IPython/OInspect.py (__all__): new module exposing the object
4717 * IPython/OInspect.py (__all__): new module exposing the object
4712 introspection facilities. Now the corresponding magics are dummy
4718 introspection facilities. Now the corresponding magics are dummy
4713 wrappers around this. Having this module will make it much easier
4719 wrappers around this. Having this module will make it much easier
4714 to put these functions into our modified pdb.
4720 to put these functions into our modified pdb.
4715 This new object inspector system uses the new colorizing module,
4721 This new object inspector system uses the new colorizing module,
4716 so source code and other things are nicely syntax highlighted.
4722 so source code and other things are nicely syntax highlighted.
4717
4723
4718 2002-05-18 Fernando Perez <fperez@colorado.edu>
4724 2002-05-18 Fernando Perez <fperez@colorado.edu>
4719
4725
4720 * IPython/ColorANSI.py: Split the coloring tools into a separate
4726 * IPython/ColorANSI.py: Split the coloring tools into a separate
4721 module so I can use them in other code easier (they were part of
4727 module so I can use them in other code easier (they were part of
4722 ultraTB).
4728 ultraTB).
4723
4729
4724 2002-05-17 Fernando Perez <fperez@colorado.edu>
4730 2002-05-17 Fernando Perez <fperez@colorado.edu>
4725
4731
4726 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4732 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4727 fixed it to set the global 'g' also to the called instance, as
4733 fixed it to set the global 'g' also to the called instance, as
4728 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4734 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4729 user's 'g' variables).
4735 user's 'g' variables).
4730
4736
4731 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4737 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4732 global variables (aliases to _ih,_oh) so that users which expect
4738 global variables (aliases to _ih,_oh) so that users which expect
4733 In[5] or Out[7] to work aren't unpleasantly surprised.
4739 In[5] or Out[7] to work aren't unpleasantly surprised.
4734 (InputList.__getslice__): new class to allow executing slices of
4740 (InputList.__getslice__): new class to allow executing slices of
4735 input history directly. Very simple class, complements the use of
4741 input history directly. Very simple class, complements the use of
4736 macros.
4742 macros.
4737
4743
4738 2002-05-16 Fernando Perez <fperez@colorado.edu>
4744 2002-05-16 Fernando Perez <fperez@colorado.edu>
4739
4745
4740 * setup.py (docdirbase): make doc directory be just doc/IPython
4746 * setup.py (docdirbase): make doc directory be just doc/IPython
4741 without version numbers, it will reduce clutter for users.
4747 without version numbers, it will reduce clutter for users.
4742
4748
4743 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4749 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4744 execfile call to prevent possible memory leak. See for details:
4750 execfile call to prevent possible memory leak. See for details:
4745 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4751 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4746
4752
4747 2002-05-15 Fernando Perez <fperez@colorado.edu>
4753 2002-05-15 Fernando Perez <fperez@colorado.edu>
4748
4754
4749 * IPython/Magic.py (Magic.magic_psource): made the object
4755 * IPython/Magic.py (Magic.magic_psource): made the object
4750 introspection names be more standard: pdoc, pdef, pfile and
4756 introspection names be more standard: pdoc, pdef, pfile and
4751 psource. They all print/page their output, and it makes
4757 psource. They all print/page their output, and it makes
4752 remembering them easier. Kept old names for compatibility as
4758 remembering them easier. Kept old names for compatibility as
4753 aliases.
4759 aliases.
4754
4760
4755 2002-05-14 Fernando Perez <fperez@colorado.edu>
4761 2002-05-14 Fernando Perez <fperez@colorado.edu>
4756
4762
4757 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4763 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4758 what the mouse problem was. The trick is to use gnuplot with temp
4764 what the mouse problem was. The trick is to use gnuplot with temp
4759 files and NOT with pipes (for data communication), because having
4765 files and NOT with pipes (for data communication), because having
4760 both pipes and the mouse on is bad news.
4766 both pipes and the mouse on is bad news.
4761
4767
4762 2002-05-13 Fernando Perez <fperez@colorado.edu>
4768 2002-05-13 Fernando Perez <fperez@colorado.edu>
4763
4769
4764 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4770 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4765 bug. Information would be reported about builtins even when
4771 bug. Information would be reported about builtins even when
4766 user-defined functions overrode them.
4772 user-defined functions overrode them.
4767
4773
4768 2002-05-11 Fernando Perez <fperez@colorado.edu>
4774 2002-05-11 Fernando Perez <fperez@colorado.edu>
4769
4775
4770 * IPython/__init__.py (__all__): removed FlexCompleter from
4776 * IPython/__init__.py (__all__): removed FlexCompleter from
4771 __all__ so that things don't fail in platforms without readline.
4777 __all__ so that things don't fail in platforms without readline.
4772
4778
4773 2002-05-10 Fernando Perez <fperez@colorado.edu>
4779 2002-05-10 Fernando Perez <fperez@colorado.edu>
4774
4780
4775 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4781 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4776 it requires Numeric, effectively making Numeric a dependency for
4782 it requires Numeric, effectively making Numeric a dependency for
4777 IPython.
4783 IPython.
4778
4784
4779 * Released 0.2.13
4785 * Released 0.2.13
4780
4786
4781 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4787 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4782 profiler interface. Now all the major options from the profiler
4788 profiler interface. Now all the major options from the profiler
4783 module are directly supported in IPython, both for single
4789 module are directly supported in IPython, both for single
4784 expressions (@prun) and for full programs (@run -p).
4790 expressions (@prun) and for full programs (@run -p).
4785
4791
4786 2002-05-09 Fernando Perez <fperez@colorado.edu>
4792 2002-05-09 Fernando Perez <fperez@colorado.edu>
4787
4793
4788 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4794 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4789 magic properly formatted for screen.
4795 magic properly formatted for screen.
4790
4796
4791 * setup.py (make_shortcut): Changed things to put pdf version in
4797 * setup.py (make_shortcut): Changed things to put pdf version in
4792 doc/ instead of doc/manual (had to change lyxport a bit).
4798 doc/ instead of doc/manual (had to change lyxport a bit).
4793
4799
4794 * IPython/Magic.py (Profile.string_stats): made profile runs go
4800 * IPython/Magic.py (Profile.string_stats): made profile runs go
4795 through pager (they are long and a pager allows searching, saving,
4801 through pager (they are long and a pager allows searching, saving,
4796 etc.)
4802 etc.)
4797
4803
4798 2002-05-08 Fernando Perez <fperez@colorado.edu>
4804 2002-05-08 Fernando Perez <fperez@colorado.edu>
4799
4805
4800 * Released 0.2.12
4806 * Released 0.2.12
4801
4807
4802 2002-05-06 Fernando Perez <fperez@colorado.edu>
4808 2002-05-06 Fernando Perez <fperez@colorado.edu>
4803
4809
4804 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4810 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4805 introduced); 'hist n1 n2' was broken.
4811 introduced); 'hist n1 n2' was broken.
4806 (Magic.magic_pdb): added optional on/off arguments to @pdb
4812 (Magic.magic_pdb): added optional on/off arguments to @pdb
4807 (Magic.magic_run): added option -i to @run, which executes code in
4813 (Magic.magic_run): added option -i to @run, which executes code in
4808 the IPython namespace instead of a clean one. Also added @irun as
4814 the IPython namespace instead of a clean one. Also added @irun as
4809 an alias to @run -i.
4815 an alias to @run -i.
4810
4816
4811 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4817 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4812 fixed (it didn't really do anything, the namespaces were wrong).
4818 fixed (it didn't really do anything, the namespaces were wrong).
4813
4819
4814 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4820 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4815
4821
4816 * IPython/__init__.py (__all__): Fixed package namespace, now
4822 * IPython/__init__.py (__all__): Fixed package namespace, now
4817 'import IPython' does give access to IPython.<all> as
4823 'import IPython' does give access to IPython.<all> as
4818 expected. Also renamed __release__ to Release.
4824 expected. Also renamed __release__ to Release.
4819
4825
4820 * IPython/Debugger.py (__license__): created new Pdb class which
4826 * IPython/Debugger.py (__license__): created new Pdb class which
4821 functions like a drop-in for the normal pdb.Pdb but does NOT
4827 functions like a drop-in for the normal pdb.Pdb but does NOT
4822 import readline by default. This way it doesn't muck up IPython's
4828 import readline by default. This way it doesn't muck up IPython's
4823 readline handling, and now tab-completion finally works in the
4829 readline handling, and now tab-completion finally works in the
4824 debugger -- sort of. It completes things globally visible, but the
4830 debugger -- sort of. It completes things globally visible, but the
4825 completer doesn't track the stack as pdb walks it. That's a bit
4831 completer doesn't track the stack as pdb walks it. That's a bit
4826 tricky, and I'll have to implement it later.
4832 tricky, and I'll have to implement it later.
4827
4833
4828 2002-05-05 Fernando Perez <fperez@colorado.edu>
4834 2002-05-05 Fernando Perez <fperez@colorado.edu>
4829
4835
4830 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4836 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4831 magic docstrings when printed via ? (explicit \'s were being
4837 magic docstrings when printed via ? (explicit \'s were being
4832 printed).
4838 printed).
4833
4839
4834 * IPython/ipmaker.py (make_IPython): fixed namespace
4840 * IPython/ipmaker.py (make_IPython): fixed namespace
4835 identification bug. Now variables loaded via logs or command-line
4841 identification bug. Now variables loaded via logs or command-line
4836 files are recognized in the interactive namespace by @who.
4842 files are recognized in the interactive namespace by @who.
4837
4843
4838 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4844 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4839 log replay system stemming from the string form of Structs.
4845 log replay system stemming from the string form of Structs.
4840
4846
4841 * IPython/Magic.py (Macro.__init__): improved macros to properly
4847 * IPython/Magic.py (Macro.__init__): improved macros to properly
4842 handle magic commands in them.
4848 handle magic commands in them.
4843 (Magic.magic_logstart): usernames are now expanded so 'logstart
4849 (Magic.magic_logstart): usernames are now expanded so 'logstart
4844 ~/mylog' now works.
4850 ~/mylog' now works.
4845
4851
4846 * IPython/iplib.py (complete): fixed bug where paths starting with
4852 * IPython/iplib.py (complete): fixed bug where paths starting with
4847 '/' would be completed as magic names.
4853 '/' would be completed as magic names.
4848
4854
4849 2002-05-04 Fernando Perez <fperez@colorado.edu>
4855 2002-05-04 Fernando Perez <fperez@colorado.edu>
4850
4856
4851 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4857 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4852 allow running full programs under the profiler's control.
4858 allow running full programs under the profiler's control.
4853
4859
4854 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4860 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4855 mode to report exceptions verbosely but without formatting
4861 mode to report exceptions verbosely but without formatting
4856 variables. This addresses the issue of ipython 'freezing' (it's
4862 variables. This addresses the issue of ipython 'freezing' (it's
4857 not frozen, but caught in an expensive formatting loop) when huge
4863 not frozen, but caught in an expensive formatting loop) when huge
4858 variables are in the context of an exception.
4864 variables are in the context of an exception.
4859 (VerboseTB.text): Added '--->' markers at line where exception was
4865 (VerboseTB.text): Added '--->' markers at line where exception was
4860 triggered. Much clearer to read, especially in NoColor modes.
4866 triggered. Much clearer to read, especially in NoColor modes.
4861
4867
4862 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4868 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4863 implemented in reverse when changing to the new parse_options().
4869 implemented in reverse when changing to the new parse_options().
4864
4870
4865 2002-05-03 Fernando Perez <fperez@colorado.edu>
4871 2002-05-03 Fernando Perez <fperez@colorado.edu>
4866
4872
4867 * IPython/Magic.py (Magic.parse_options): new function so that
4873 * IPython/Magic.py (Magic.parse_options): new function so that
4868 magics can parse options easier.
4874 magics can parse options easier.
4869 (Magic.magic_prun): new function similar to profile.run(),
4875 (Magic.magic_prun): new function similar to profile.run(),
4870 suggested by Chris Hart.
4876 suggested by Chris Hart.
4871 (Magic.magic_cd): fixed behavior so that it only changes if
4877 (Magic.magic_cd): fixed behavior so that it only changes if
4872 directory actually is in history.
4878 directory actually is in history.
4873
4879
4874 * IPython/usage.py (__doc__): added information about potential
4880 * IPython/usage.py (__doc__): added information about potential
4875 slowness of Verbose exception mode when there are huge data
4881 slowness of Verbose exception mode when there are huge data
4876 structures to be formatted (thanks to Archie Paulson).
4882 structures to be formatted (thanks to Archie Paulson).
4877
4883
4878 * IPython/ipmaker.py (make_IPython): Changed default logging
4884 * IPython/ipmaker.py (make_IPython): Changed default logging
4879 (when simply called with -log) to use curr_dir/ipython.log in
4885 (when simply called with -log) to use curr_dir/ipython.log in
4880 rotate mode. Fixed crash which was occuring with -log before
4886 rotate mode. Fixed crash which was occuring with -log before
4881 (thanks to Jim Boyle).
4887 (thanks to Jim Boyle).
4882
4888
4883 2002-05-01 Fernando Perez <fperez@colorado.edu>
4889 2002-05-01 Fernando Perez <fperez@colorado.edu>
4884
4890
4885 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4891 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4886 was nasty -- though somewhat of a corner case).
4892 was nasty -- though somewhat of a corner case).
4887
4893
4888 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4894 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4889 text (was a bug).
4895 text (was a bug).
4890
4896
4891 2002-04-30 Fernando Perez <fperez@colorado.edu>
4897 2002-04-30 Fernando Perez <fperez@colorado.edu>
4892
4898
4893 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4899 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4894 a print after ^D or ^C from the user so that the In[] prompt
4900 a print after ^D or ^C from the user so that the In[] prompt
4895 doesn't over-run the gnuplot one.
4901 doesn't over-run the gnuplot one.
4896
4902
4897 2002-04-29 Fernando Perez <fperez@colorado.edu>
4903 2002-04-29 Fernando Perez <fperez@colorado.edu>
4898
4904
4899 * Released 0.2.10
4905 * Released 0.2.10
4900
4906
4901 * IPython/__release__.py (version): get date dynamically.
4907 * IPython/__release__.py (version): get date dynamically.
4902
4908
4903 * Misc. documentation updates thanks to Arnd's comments. Also ran
4909 * Misc. documentation updates thanks to Arnd's comments. Also ran
4904 a full spellcheck on the manual (hadn't been done in a while).
4910 a full spellcheck on the manual (hadn't been done in a while).
4905
4911
4906 2002-04-27 Fernando Perez <fperez@colorado.edu>
4912 2002-04-27 Fernando Perez <fperez@colorado.edu>
4907
4913
4908 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4914 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4909 starting a log in mid-session would reset the input history list.
4915 starting a log in mid-session would reset the input history list.
4910
4916
4911 2002-04-26 Fernando Perez <fperez@colorado.edu>
4917 2002-04-26 Fernando Perez <fperez@colorado.edu>
4912
4918
4913 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4919 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4914 all files were being included in an update. Now anything in
4920 all files were being included in an update. Now anything in
4915 UserConfig that matches [A-Za-z]*.py will go (this excludes
4921 UserConfig that matches [A-Za-z]*.py will go (this excludes
4916 __init__.py)
4922 __init__.py)
4917
4923
4918 2002-04-25 Fernando Perez <fperez@colorado.edu>
4924 2002-04-25 Fernando Perez <fperez@colorado.edu>
4919
4925
4920 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4926 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4921 to __builtins__ so that any form of embedded or imported code can
4927 to __builtins__ so that any form of embedded or imported code can
4922 test for being inside IPython.
4928 test for being inside IPython.
4923
4929
4924 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4930 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4925 changed to GnuplotMagic because it's now an importable module,
4931 changed to GnuplotMagic because it's now an importable module,
4926 this makes the name follow that of the standard Gnuplot module.
4932 this makes the name follow that of the standard Gnuplot module.
4927 GnuplotMagic can now be loaded at any time in mid-session.
4933 GnuplotMagic can now be loaded at any time in mid-session.
4928
4934
4929 2002-04-24 Fernando Perez <fperez@colorado.edu>
4935 2002-04-24 Fernando Perez <fperez@colorado.edu>
4930
4936
4931 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4937 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4932 the globals (IPython has its own namespace) and the
4938 the globals (IPython has its own namespace) and the
4933 PhysicalQuantity stuff is much better anyway.
4939 PhysicalQuantity stuff is much better anyway.
4934
4940
4935 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4941 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4936 embedding example to standard user directory for
4942 embedding example to standard user directory for
4937 distribution. Also put it in the manual.
4943 distribution. Also put it in the manual.
4938
4944
4939 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4945 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4940 instance as first argument (so it doesn't rely on some obscure
4946 instance as first argument (so it doesn't rely on some obscure
4941 hidden global).
4947 hidden global).
4942
4948
4943 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4949 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4944 delimiters. While it prevents ().TAB from working, it allows
4950 delimiters. While it prevents ().TAB from working, it allows
4945 completions in open (... expressions. This is by far a more common
4951 completions in open (... expressions. This is by far a more common
4946 case.
4952 case.
4947
4953
4948 2002-04-23 Fernando Perez <fperez@colorado.edu>
4954 2002-04-23 Fernando Perez <fperez@colorado.edu>
4949
4955
4950 * IPython/Extensions/InterpreterPasteInput.py: new
4956 * IPython/Extensions/InterpreterPasteInput.py: new
4951 syntax-processing module for pasting lines with >>> or ... at the
4957 syntax-processing module for pasting lines with >>> or ... at the
4952 start.
4958 start.
4953
4959
4954 * IPython/Extensions/PhysicalQ_Interactive.py
4960 * IPython/Extensions/PhysicalQ_Interactive.py
4955 (PhysicalQuantityInteractive.__int__): fixed to work with either
4961 (PhysicalQuantityInteractive.__int__): fixed to work with either
4956 Numeric or math.
4962 Numeric or math.
4957
4963
4958 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4964 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4959 provided profiles. Now we have:
4965 provided profiles. Now we have:
4960 -math -> math module as * and cmath with its own namespace.
4966 -math -> math module as * and cmath with its own namespace.
4961 -numeric -> Numeric as *, plus gnuplot & grace
4967 -numeric -> Numeric as *, plus gnuplot & grace
4962 -physics -> same as before
4968 -physics -> same as before
4963
4969
4964 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4970 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4965 user-defined magics wouldn't be found by @magic if they were
4971 user-defined magics wouldn't be found by @magic if they were
4966 defined as class methods. Also cleaned up the namespace search
4972 defined as class methods. Also cleaned up the namespace search
4967 logic and the string building (to use %s instead of many repeated
4973 logic and the string building (to use %s instead of many repeated
4968 string adds).
4974 string adds).
4969
4975
4970 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4976 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4971 of user-defined magics to operate with class methods (cleaner, in
4977 of user-defined magics to operate with class methods (cleaner, in
4972 line with the gnuplot code).
4978 line with the gnuplot code).
4973
4979
4974 2002-04-22 Fernando Perez <fperez@colorado.edu>
4980 2002-04-22 Fernando Perez <fperez@colorado.edu>
4975
4981
4976 * setup.py: updated dependency list so that manual is updated when
4982 * setup.py: updated dependency list so that manual is updated when
4977 all included files change.
4983 all included files change.
4978
4984
4979 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4985 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4980 the delimiter removal option (the fix is ugly right now).
4986 the delimiter removal option (the fix is ugly right now).
4981
4987
4982 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4988 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4983 all of the math profile (quicker loading, no conflict between
4989 all of the math profile (quicker loading, no conflict between
4984 g-9.8 and g-gnuplot).
4990 g-9.8 and g-gnuplot).
4985
4991
4986 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4992 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4987 name of post-mortem files to IPython_crash_report.txt.
4993 name of post-mortem files to IPython_crash_report.txt.
4988
4994
4989 * Cleanup/update of the docs. Added all the new readline info and
4995 * Cleanup/update of the docs. Added all the new readline info and
4990 formatted all lists as 'real lists'.
4996 formatted all lists as 'real lists'.
4991
4997
4992 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4998 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4993 tab-completion options, since the full readline parse_and_bind is
4999 tab-completion options, since the full readline parse_and_bind is
4994 now accessible.
5000 now accessible.
4995
5001
4996 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5002 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4997 handling of readline options. Now users can specify any string to
5003 handling of readline options. Now users can specify any string to
4998 be passed to parse_and_bind(), as well as the delimiters to be
5004 be passed to parse_and_bind(), as well as the delimiters to be
4999 removed.
5005 removed.
5000 (InteractiveShell.__init__): Added __name__ to the global
5006 (InteractiveShell.__init__): Added __name__ to the global
5001 namespace so that things like Itpl which rely on its existence
5007 namespace so that things like Itpl which rely on its existence
5002 don't crash.
5008 don't crash.
5003 (InteractiveShell._prefilter): Defined the default with a _ so
5009 (InteractiveShell._prefilter): Defined the default with a _ so
5004 that prefilter() is easier to override, while the default one
5010 that prefilter() is easier to override, while the default one
5005 remains available.
5011 remains available.
5006
5012
5007 2002-04-18 Fernando Perez <fperez@colorado.edu>
5013 2002-04-18 Fernando Perez <fperez@colorado.edu>
5008
5014
5009 * Added information about pdb in the docs.
5015 * Added information about pdb in the docs.
5010
5016
5011 2002-04-17 Fernando Perez <fperez@colorado.edu>
5017 2002-04-17 Fernando Perez <fperez@colorado.edu>
5012
5018
5013 * IPython/ipmaker.py (make_IPython): added rc_override option to
5019 * IPython/ipmaker.py (make_IPython): added rc_override option to
5014 allow passing config options at creation time which may override
5020 allow passing config options at creation time which may override
5015 anything set in the config files or command line. This is
5021 anything set in the config files or command line. This is
5016 particularly useful for configuring embedded instances.
5022 particularly useful for configuring embedded instances.
5017
5023
5018 2002-04-15 Fernando Perez <fperez@colorado.edu>
5024 2002-04-15 Fernando Perez <fperez@colorado.edu>
5019
5025
5020 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5026 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5021 crash embedded instances because of the input cache falling out of
5027 crash embedded instances because of the input cache falling out of
5022 sync with the output counter.
5028 sync with the output counter.
5023
5029
5024 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5030 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5025 mode which calls pdb after an uncaught exception in IPython itself.
5031 mode which calls pdb after an uncaught exception in IPython itself.
5026
5032
5027 2002-04-14 Fernando Perez <fperez@colorado.edu>
5033 2002-04-14 Fernando Perez <fperez@colorado.edu>
5028
5034
5029 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5035 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5030 readline, fix it back after each call.
5036 readline, fix it back after each call.
5031
5037
5032 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5038 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5033 method to force all access via __call__(), which guarantees that
5039 method to force all access via __call__(), which guarantees that
5034 traceback references are properly deleted.
5040 traceback references are properly deleted.
5035
5041
5036 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5042 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5037 improve printing when pprint is in use.
5043 improve printing when pprint is in use.
5038
5044
5039 2002-04-13 Fernando Perez <fperez@colorado.edu>
5045 2002-04-13 Fernando Perez <fperez@colorado.edu>
5040
5046
5041 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5047 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5042 exceptions aren't caught anymore. If the user triggers one, he
5048 exceptions aren't caught anymore. If the user triggers one, he
5043 should know why he's doing it and it should go all the way up,
5049 should know why he's doing it and it should go all the way up,
5044 just like any other exception. So now @abort will fully kill the
5050 just like any other exception. So now @abort will fully kill the
5045 embedded interpreter and the embedding code (unless that happens
5051 embedded interpreter and the embedding code (unless that happens
5046 to catch SystemExit).
5052 to catch SystemExit).
5047
5053
5048 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5054 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5049 and a debugger() method to invoke the interactive pdb debugger
5055 and a debugger() method to invoke the interactive pdb debugger
5050 after printing exception information. Also added the corresponding
5056 after printing exception information. Also added the corresponding
5051 -pdb option and @pdb magic to control this feature, and updated
5057 -pdb option and @pdb magic to control this feature, and updated
5052 the docs. After a suggestion from Christopher Hart
5058 the docs. After a suggestion from Christopher Hart
5053 (hart-AT-caltech.edu).
5059 (hart-AT-caltech.edu).
5054
5060
5055 2002-04-12 Fernando Perez <fperez@colorado.edu>
5061 2002-04-12 Fernando Perez <fperez@colorado.edu>
5056
5062
5057 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5063 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5058 the exception handlers defined by the user (not the CrashHandler)
5064 the exception handlers defined by the user (not the CrashHandler)
5059 so that user exceptions don't trigger an ipython bug report.
5065 so that user exceptions don't trigger an ipython bug report.
5060
5066
5061 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5067 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5062 configurable (it should have always been so).
5068 configurable (it should have always been so).
5063
5069
5064 2002-03-26 Fernando Perez <fperez@colorado.edu>
5070 2002-03-26 Fernando Perez <fperez@colorado.edu>
5065
5071
5066 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5072 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5067 and there to fix embedding namespace issues. This should all be
5073 and there to fix embedding namespace issues. This should all be
5068 done in a more elegant way.
5074 done in a more elegant way.
5069
5075
5070 2002-03-25 Fernando Perez <fperez@colorado.edu>
5076 2002-03-25 Fernando Perez <fperez@colorado.edu>
5071
5077
5072 * IPython/genutils.py (get_home_dir): Try to make it work under
5078 * IPython/genutils.py (get_home_dir): Try to make it work under
5073 win9x also.
5079 win9x also.
5074
5080
5075 2002-03-20 Fernando Perez <fperez@colorado.edu>
5081 2002-03-20 Fernando Perez <fperez@colorado.edu>
5076
5082
5077 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5083 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5078 sys.displayhook untouched upon __init__.
5084 sys.displayhook untouched upon __init__.
5079
5085
5080 2002-03-19 Fernando Perez <fperez@colorado.edu>
5086 2002-03-19 Fernando Perez <fperez@colorado.edu>
5081
5087
5082 * Released 0.2.9 (for embedding bug, basically).
5088 * Released 0.2.9 (for embedding bug, basically).
5083
5089
5084 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5090 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5085 exceptions so that enclosing shell's state can be restored.
5091 exceptions so that enclosing shell's state can be restored.
5086
5092
5087 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5093 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5088 naming conventions in the .ipython/ dir.
5094 naming conventions in the .ipython/ dir.
5089
5095
5090 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5096 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5091 from delimiters list so filenames with - in them get expanded.
5097 from delimiters list so filenames with - in them get expanded.
5092
5098
5093 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5099 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5094 sys.displayhook not being properly restored after an embedded call.
5100 sys.displayhook not being properly restored after an embedded call.
5095
5101
5096 2002-03-18 Fernando Perez <fperez@colorado.edu>
5102 2002-03-18 Fernando Perez <fperez@colorado.edu>
5097
5103
5098 * Released 0.2.8
5104 * Released 0.2.8
5099
5105
5100 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5106 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5101 some files weren't being included in a -upgrade.
5107 some files weren't being included in a -upgrade.
5102 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5108 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5103 on' so that the first tab completes.
5109 on' so that the first tab completes.
5104 (InteractiveShell.handle_magic): fixed bug with spaces around
5110 (InteractiveShell.handle_magic): fixed bug with spaces around
5105 quotes breaking many magic commands.
5111 quotes breaking many magic commands.
5106
5112
5107 * setup.py: added note about ignoring the syntax error messages at
5113 * setup.py: added note about ignoring the syntax error messages at
5108 installation.
5114 installation.
5109
5115
5110 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5116 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5111 streamlining the gnuplot interface, now there's only one magic @gp.
5117 streamlining the gnuplot interface, now there's only one magic @gp.
5112
5118
5113 2002-03-17 Fernando Perez <fperez@colorado.edu>
5119 2002-03-17 Fernando Perez <fperez@colorado.edu>
5114
5120
5115 * IPython/UserConfig/magic_gnuplot.py: new name for the
5121 * IPython/UserConfig/magic_gnuplot.py: new name for the
5116 example-magic_pm.py file. Much enhanced system, now with a shell
5122 example-magic_pm.py file. Much enhanced system, now with a shell
5117 for communicating directly with gnuplot, one command at a time.
5123 for communicating directly with gnuplot, one command at a time.
5118
5124
5119 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5125 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5120 setting __name__=='__main__'.
5126 setting __name__=='__main__'.
5121
5127
5122 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5128 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5123 mini-shell for accessing gnuplot from inside ipython. Should
5129 mini-shell for accessing gnuplot from inside ipython. Should
5124 extend it later for grace access too. Inspired by Arnd's
5130 extend it later for grace access too. Inspired by Arnd's
5125 suggestion.
5131 suggestion.
5126
5132
5127 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5133 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5128 calling magic functions with () in their arguments. Thanks to Arnd
5134 calling magic functions with () in their arguments. Thanks to Arnd
5129 Baecker for pointing this to me.
5135 Baecker for pointing this to me.
5130
5136
5131 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5137 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5132 infinitely for integer or complex arrays (only worked with floats).
5138 infinitely for integer or complex arrays (only worked with floats).
5133
5139
5134 2002-03-16 Fernando Perez <fperez@colorado.edu>
5140 2002-03-16 Fernando Perez <fperez@colorado.edu>
5135
5141
5136 * setup.py: Merged setup and setup_windows into a single script
5142 * setup.py: Merged setup and setup_windows into a single script
5137 which properly handles things for windows users.
5143 which properly handles things for windows users.
5138
5144
5139 2002-03-15 Fernando Perez <fperez@colorado.edu>
5145 2002-03-15 Fernando Perez <fperez@colorado.edu>
5140
5146
5141 * Big change to the manual: now the magics are all automatically
5147 * Big change to the manual: now the magics are all automatically
5142 documented. This information is generated from their docstrings
5148 documented. This information is generated from their docstrings
5143 and put in a latex file included by the manual lyx file. This way
5149 and put in a latex file included by the manual lyx file. This way
5144 we get always up to date information for the magics. The manual
5150 we get always up to date information for the magics. The manual
5145 now also has proper version information, also auto-synced.
5151 now also has proper version information, also auto-synced.
5146
5152
5147 For this to work, an undocumented --magic_docstrings option was added.
5153 For this to work, an undocumented --magic_docstrings option was added.
5148
5154
5149 2002-03-13 Fernando Perez <fperez@colorado.edu>
5155 2002-03-13 Fernando Perez <fperez@colorado.edu>
5150
5156
5151 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5157 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5152 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5158 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5153
5159
5154 2002-03-12 Fernando Perez <fperez@colorado.edu>
5160 2002-03-12 Fernando Perez <fperez@colorado.edu>
5155
5161
5156 * IPython/ultraTB.py (TermColors): changed color escapes again to
5162 * IPython/ultraTB.py (TermColors): changed color escapes again to
5157 fix the (old, reintroduced) line-wrapping bug. Basically, if
5163 fix the (old, reintroduced) line-wrapping bug. Basically, if
5158 \001..\002 aren't given in the color escapes, lines get wrapped
5164 \001..\002 aren't given in the color escapes, lines get wrapped
5159 weirdly. But giving those screws up old xterms and emacs terms. So
5165 weirdly. But giving those screws up old xterms and emacs terms. So
5160 I added some logic for emacs terms to be ok, but I can't identify old
5166 I added some logic for emacs terms to be ok, but I can't identify old
5161 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5167 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5162
5168
5163 2002-03-10 Fernando Perez <fperez@colorado.edu>
5169 2002-03-10 Fernando Perez <fperez@colorado.edu>
5164
5170
5165 * IPython/usage.py (__doc__): Various documentation cleanups and
5171 * IPython/usage.py (__doc__): Various documentation cleanups and
5166 updates, both in usage docstrings and in the manual.
5172 updates, both in usage docstrings and in the manual.
5167
5173
5168 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5174 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5169 handling of caching. Set minimum acceptabe value for having a
5175 handling of caching. Set minimum acceptabe value for having a
5170 cache at 20 values.
5176 cache at 20 values.
5171
5177
5172 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5178 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5173 install_first_time function to a method, renamed it and added an
5179 install_first_time function to a method, renamed it and added an
5174 'upgrade' mode. Now people can update their config directory with
5180 'upgrade' mode. Now people can update their config directory with
5175 a simple command line switch (-upgrade, also new).
5181 a simple command line switch (-upgrade, also new).
5176
5182
5177 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5183 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5178 @file (convenient for automagic users under Python >= 2.2).
5184 @file (convenient for automagic users under Python >= 2.2).
5179 Removed @files (it seemed more like a plural than an abbrev. of
5185 Removed @files (it seemed more like a plural than an abbrev. of
5180 'file show').
5186 'file show').
5181
5187
5182 * IPython/iplib.py (install_first_time): Fixed crash if there were
5188 * IPython/iplib.py (install_first_time): Fixed crash if there were
5183 backup files ('~') in .ipython/ install directory.
5189 backup files ('~') in .ipython/ install directory.
5184
5190
5185 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5191 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5186 system. Things look fine, but these changes are fairly
5192 system. Things look fine, but these changes are fairly
5187 intrusive. Test them for a few days.
5193 intrusive. Test them for a few days.
5188
5194
5189 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5195 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5190 the prompts system. Now all in/out prompt strings are user
5196 the prompts system. Now all in/out prompt strings are user
5191 controllable. This is particularly useful for embedding, as one
5197 controllable. This is particularly useful for embedding, as one
5192 can tag embedded instances with particular prompts.
5198 can tag embedded instances with particular prompts.
5193
5199
5194 Also removed global use of sys.ps1/2, which now allows nested
5200 Also removed global use of sys.ps1/2, which now allows nested
5195 embeddings without any problems. Added command-line options for
5201 embeddings without any problems. Added command-line options for
5196 the prompt strings.
5202 the prompt strings.
5197
5203
5198 2002-03-08 Fernando Perez <fperez@colorado.edu>
5204 2002-03-08 Fernando Perez <fperez@colorado.edu>
5199
5205
5200 * IPython/UserConfig/example-embed-short.py (ipshell): added
5206 * IPython/UserConfig/example-embed-short.py (ipshell): added
5201 example file with the bare minimum code for embedding.
5207 example file with the bare minimum code for embedding.
5202
5208
5203 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5209 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5204 functionality for the embeddable shell to be activated/deactivated
5210 functionality for the embeddable shell to be activated/deactivated
5205 either globally or at each call.
5211 either globally or at each call.
5206
5212
5207 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5213 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5208 rewriting the prompt with '--->' for auto-inputs with proper
5214 rewriting the prompt with '--->' for auto-inputs with proper
5209 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5215 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5210 this is handled by the prompts class itself, as it should.
5216 this is handled by the prompts class itself, as it should.
5211
5217
5212 2002-03-05 Fernando Perez <fperez@colorado.edu>
5218 2002-03-05 Fernando Perez <fperez@colorado.edu>
5213
5219
5214 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5220 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5215 @logstart to avoid name clashes with the math log function.
5221 @logstart to avoid name clashes with the math log function.
5216
5222
5217 * Big updates to X/Emacs section of the manual.
5223 * Big updates to X/Emacs section of the manual.
5218
5224
5219 * Removed ipython_emacs. Milan explained to me how to pass
5225 * Removed ipython_emacs. Milan explained to me how to pass
5220 arguments to ipython through Emacs. Some day I'm going to end up
5226 arguments to ipython through Emacs. Some day I'm going to end up
5221 learning some lisp...
5227 learning some lisp...
5222
5228
5223 2002-03-04 Fernando Perez <fperez@colorado.edu>
5229 2002-03-04 Fernando Perez <fperez@colorado.edu>
5224
5230
5225 * IPython/ipython_emacs: Created script to be used as the
5231 * IPython/ipython_emacs: Created script to be used as the
5226 py-python-command Emacs variable so we can pass IPython
5232 py-python-command Emacs variable so we can pass IPython
5227 parameters. I can't figure out how to tell Emacs directly to pass
5233 parameters. I can't figure out how to tell Emacs directly to pass
5228 parameters to IPython, so a dummy shell script will do it.
5234 parameters to IPython, so a dummy shell script will do it.
5229
5235
5230 Other enhancements made for things to work better under Emacs'
5236 Other enhancements made for things to work better under Emacs'
5231 various types of terminals. Many thanks to Milan Zamazal
5237 various types of terminals. Many thanks to Milan Zamazal
5232 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5238 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5233
5239
5234 2002-03-01 Fernando Perez <fperez@colorado.edu>
5240 2002-03-01 Fernando Perez <fperez@colorado.edu>
5235
5241
5236 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5242 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5237 that loading of readline is now optional. This gives better
5243 that loading of readline is now optional. This gives better
5238 control to emacs users.
5244 control to emacs users.
5239
5245
5240 * IPython/ultraTB.py (__date__): Modified color escape sequences
5246 * IPython/ultraTB.py (__date__): Modified color escape sequences
5241 and now things work fine under xterm and in Emacs' term buffers
5247 and now things work fine under xterm and in Emacs' term buffers
5242 (though not shell ones). Well, in emacs you get colors, but all
5248 (though not shell ones). Well, in emacs you get colors, but all
5243 seem to be 'light' colors (no difference between dark and light
5249 seem to be 'light' colors (no difference between dark and light
5244 ones). But the garbage chars are gone, and also in xterms. It
5250 ones). But the garbage chars are gone, and also in xterms. It
5245 seems that now I'm using 'cleaner' ansi sequences.
5251 seems that now I'm using 'cleaner' ansi sequences.
5246
5252
5247 2002-02-21 Fernando Perez <fperez@colorado.edu>
5253 2002-02-21 Fernando Perez <fperez@colorado.edu>
5248
5254
5249 * Released 0.2.7 (mainly to publish the scoping fix).
5255 * Released 0.2.7 (mainly to publish the scoping fix).
5250
5256
5251 * IPython/Logger.py (Logger.logstate): added. A corresponding
5257 * IPython/Logger.py (Logger.logstate): added. A corresponding
5252 @logstate magic was created.
5258 @logstate magic was created.
5253
5259
5254 * IPython/Magic.py: fixed nested scoping problem under Python
5260 * IPython/Magic.py: fixed nested scoping problem under Python
5255 2.1.x (automagic wasn't working).
5261 2.1.x (automagic wasn't working).
5256
5262
5257 2002-02-20 Fernando Perez <fperez@colorado.edu>
5263 2002-02-20 Fernando Perez <fperez@colorado.edu>
5258
5264
5259 * Released 0.2.6.
5265 * Released 0.2.6.
5260
5266
5261 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5267 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5262 option so that logs can come out without any headers at all.
5268 option so that logs can come out without any headers at all.
5263
5269
5264 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5270 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5265 SciPy.
5271 SciPy.
5266
5272
5267 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5273 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5268 that embedded IPython calls don't require vars() to be explicitly
5274 that embedded IPython calls don't require vars() to be explicitly
5269 passed. Now they are extracted from the caller's frame (code
5275 passed. Now they are extracted from the caller's frame (code
5270 snatched from Eric Jones' weave). Added better documentation to
5276 snatched from Eric Jones' weave). Added better documentation to
5271 the section on embedding and the example file.
5277 the section on embedding and the example file.
5272
5278
5273 * IPython/genutils.py (page): Changed so that under emacs, it just
5279 * IPython/genutils.py (page): Changed so that under emacs, it just
5274 prints the string. You can then page up and down in the emacs
5280 prints the string. You can then page up and down in the emacs
5275 buffer itself. This is how the builtin help() works.
5281 buffer itself. This is how the builtin help() works.
5276
5282
5277 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5283 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5278 macro scoping: macros need to be executed in the user's namespace
5284 macro scoping: macros need to be executed in the user's namespace
5279 to work as if they had been typed by the user.
5285 to work as if they had been typed by the user.
5280
5286
5281 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5287 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5282 execute automatically (no need to type 'exec...'). They then
5288 execute automatically (no need to type 'exec...'). They then
5283 behave like 'true macros'. The printing system was also modified
5289 behave like 'true macros'. The printing system was also modified
5284 for this to work.
5290 for this to work.
5285
5291
5286 2002-02-19 Fernando Perez <fperez@colorado.edu>
5292 2002-02-19 Fernando Perez <fperez@colorado.edu>
5287
5293
5288 * IPython/genutils.py (page_file): new function for paging files
5294 * IPython/genutils.py (page_file): new function for paging files
5289 in an OS-independent way. Also necessary for file viewing to work
5295 in an OS-independent way. Also necessary for file viewing to work
5290 well inside Emacs buffers.
5296 well inside Emacs buffers.
5291 (page): Added checks for being in an emacs buffer.
5297 (page): Added checks for being in an emacs buffer.
5292 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5298 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5293 same bug in iplib.
5299 same bug in iplib.
5294
5300
5295 2002-02-18 Fernando Perez <fperez@colorado.edu>
5301 2002-02-18 Fernando Perez <fperez@colorado.edu>
5296
5302
5297 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5303 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5298 of readline so that IPython can work inside an Emacs buffer.
5304 of readline so that IPython can work inside an Emacs buffer.
5299
5305
5300 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5306 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5301 method signatures (they weren't really bugs, but it looks cleaner
5307 method signatures (they weren't really bugs, but it looks cleaner
5302 and keeps PyChecker happy).
5308 and keeps PyChecker happy).
5303
5309
5304 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5310 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5305 for implementing various user-defined hooks. Currently only
5311 for implementing various user-defined hooks. Currently only
5306 display is done.
5312 display is done.
5307
5313
5308 * IPython/Prompts.py (CachedOutput._display): changed display
5314 * IPython/Prompts.py (CachedOutput._display): changed display
5309 functions so that they can be dynamically changed by users easily.
5315 functions so that they can be dynamically changed by users easily.
5310
5316
5311 * IPython/Extensions/numeric_formats.py (num_display): added an
5317 * IPython/Extensions/numeric_formats.py (num_display): added an
5312 extension for printing NumPy arrays in flexible manners. It
5318 extension for printing NumPy arrays in flexible manners. It
5313 doesn't do anything yet, but all the structure is in
5319 doesn't do anything yet, but all the structure is in
5314 place. Ultimately the plan is to implement output format control
5320 place. Ultimately the plan is to implement output format control
5315 like in Octave.
5321 like in Octave.
5316
5322
5317 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5323 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5318 methods are found at run-time by all the automatic machinery.
5324 methods are found at run-time by all the automatic machinery.
5319
5325
5320 2002-02-17 Fernando Perez <fperez@colorado.edu>
5326 2002-02-17 Fernando Perez <fperez@colorado.edu>
5321
5327
5322 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5328 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5323 whole file a little.
5329 whole file a little.
5324
5330
5325 * ToDo: closed this document. Now there's a new_design.lyx
5331 * ToDo: closed this document. Now there's a new_design.lyx
5326 document for all new ideas. Added making a pdf of it for the
5332 document for all new ideas. Added making a pdf of it for the
5327 end-user distro.
5333 end-user distro.
5328
5334
5329 * IPython/Logger.py (Logger.switch_log): Created this to replace
5335 * IPython/Logger.py (Logger.switch_log): Created this to replace
5330 logon() and logoff(). It also fixes a nasty crash reported by
5336 logon() and logoff(). It also fixes a nasty crash reported by
5331 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5337 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5332
5338
5333 * IPython/iplib.py (complete): got auto-completion to work with
5339 * IPython/iplib.py (complete): got auto-completion to work with
5334 automagic (I had wanted this for a long time).
5340 automagic (I had wanted this for a long time).
5335
5341
5336 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5342 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5337 to @file, since file() is now a builtin and clashes with automagic
5343 to @file, since file() is now a builtin and clashes with automagic
5338 for @file.
5344 for @file.
5339
5345
5340 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5346 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5341 of this was previously in iplib, which had grown to more than 2000
5347 of this was previously in iplib, which had grown to more than 2000
5342 lines, way too long. No new functionality, but it makes managing
5348 lines, way too long. No new functionality, but it makes managing
5343 the code a bit easier.
5349 the code a bit easier.
5344
5350
5345 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5351 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5346 information to crash reports.
5352 information to crash reports.
5347
5353
5348 2002-02-12 Fernando Perez <fperez@colorado.edu>
5354 2002-02-12 Fernando Perez <fperez@colorado.edu>
5349
5355
5350 * Released 0.2.5.
5356 * Released 0.2.5.
5351
5357
5352 2002-02-11 Fernando Perez <fperez@colorado.edu>
5358 2002-02-11 Fernando Perez <fperez@colorado.edu>
5353
5359
5354 * Wrote a relatively complete Windows installer. It puts
5360 * Wrote a relatively complete Windows installer. It puts
5355 everything in place, creates Start Menu entries and fixes the
5361 everything in place, creates Start Menu entries and fixes the
5356 color issues. Nothing fancy, but it works.
5362 color issues. Nothing fancy, but it works.
5357
5363
5358 2002-02-10 Fernando Perez <fperez@colorado.edu>
5364 2002-02-10 Fernando Perez <fperez@colorado.edu>
5359
5365
5360 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5366 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5361 os.path.expanduser() call so that we can type @run ~/myfile.py and
5367 os.path.expanduser() call so that we can type @run ~/myfile.py and
5362 have thigs work as expected.
5368 have thigs work as expected.
5363
5369
5364 * IPython/genutils.py (page): fixed exception handling so things
5370 * IPython/genutils.py (page): fixed exception handling so things
5365 work both in Unix and Windows correctly. Quitting a pager triggers
5371 work both in Unix and Windows correctly. Quitting a pager triggers
5366 an IOError/broken pipe in Unix, and in windows not finding a pager
5372 an IOError/broken pipe in Unix, and in windows not finding a pager
5367 is also an IOError, so I had to actually look at the return value
5373 is also an IOError, so I had to actually look at the return value
5368 of the exception, not just the exception itself. Should be ok now.
5374 of the exception, not just the exception itself. Should be ok now.
5369
5375
5370 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5376 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5371 modified to allow case-insensitive color scheme changes.
5377 modified to allow case-insensitive color scheme changes.
5372
5378
5373 2002-02-09 Fernando Perez <fperez@colorado.edu>
5379 2002-02-09 Fernando Perez <fperez@colorado.edu>
5374
5380
5375 * IPython/genutils.py (native_line_ends): new function to leave
5381 * IPython/genutils.py (native_line_ends): new function to leave
5376 user config files with os-native line-endings.
5382 user config files with os-native line-endings.
5377
5383
5378 * README and manual updates.
5384 * README and manual updates.
5379
5385
5380 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5386 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5381 instead of StringType to catch Unicode strings.
5387 instead of StringType to catch Unicode strings.
5382
5388
5383 * IPython/genutils.py (filefind): fixed bug for paths with
5389 * IPython/genutils.py (filefind): fixed bug for paths with
5384 embedded spaces (very common in Windows).
5390 embedded spaces (very common in Windows).
5385
5391
5386 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5392 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5387 files under Windows, so that they get automatically associated
5393 files under Windows, so that they get automatically associated
5388 with a text editor. Windows makes it a pain to handle
5394 with a text editor. Windows makes it a pain to handle
5389 extension-less files.
5395 extension-less files.
5390
5396
5391 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5397 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5392 warning about readline only occur for Posix. In Windows there's no
5398 warning about readline only occur for Posix. In Windows there's no
5393 way to get readline, so why bother with the warning.
5399 way to get readline, so why bother with the warning.
5394
5400
5395 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5401 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5396 for __str__ instead of dir(self), since dir() changed in 2.2.
5402 for __str__ instead of dir(self), since dir() changed in 2.2.
5397
5403
5398 * Ported to Windows! Tested on XP, I suspect it should work fine
5404 * Ported to Windows! Tested on XP, I suspect it should work fine
5399 on NT/2000, but I don't think it will work on 98 et al. That
5405 on NT/2000, but I don't think it will work on 98 et al. That
5400 series of Windows is such a piece of junk anyway that I won't try
5406 series of Windows is such a piece of junk anyway that I won't try
5401 porting it there. The XP port was straightforward, showed a few
5407 porting it there. The XP port was straightforward, showed a few
5402 bugs here and there (fixed all), in particular some string
5408 bugs here and there (fixed all), in particular some string
5403 handling stuff which required considering Unicode strings (which
5409 handling stuff which required considering Unicode strings (which
5404 Windows uses). This is good, but hasn't been too tested :) No
5410 Windows uses). This is good, but hasn't been too tested :) No
5405 fancy installer yet, I'll put a note in the manual so people at
5411 fancy installer yet, I'll put a note in the manual so people at
5406 least make manually a shortcut.
5412 least make manually a shortcut.
5407
5413
5408 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5414 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5409 into a single one, "colors". This now controls both prompt and
5415 into a single one, "colors". This now controls both prompt and
5410 exception color schemes, and can be changed both at startup
5416 exception color schemes, and can be changed both at startup
5411 (either via command-line switches or via ipythonrc files) and at
5417 (either via command-line switches or via ipythonrc files) and at
5412 runtime, with @colors.
5418 runtime, with @colors.
5413 (Magic.magic_run): renamed @prun to @run and removed the old
5419 (Magic.magic_run): renamed @prun to @run and removed the old
5414 @run. The two were too similar to warrant keeping both.
5420 @run. The two were too similar to warrant keeping both.
5415
5421
5416 2002-02-03 Fernando Perez <fperez@colorado.edu>
5422 2002-02-03 Fernando Perez <fperez@colorado.edu>
5417
5423
5418 * IPython/iplib.py (install_first_time): Added comment on how to
5424 * IPython/iplib.py (install_first_time): Added comment on how to
5419 configure the color options for first-time users. Put a <return>
5425 configure the color options for first-time users. Put a <return>
5420 request at the end so that small-terminal users get a chance to
5426 request at the end so that small-terminal users get a chance to
5421 read the startup info.
5427 read the startup info.
5422
5428
5423 2002-01-23 Fernando Perez <fperez@colorado.edu>
5429 2002-01-23 Fernando Perez <fperez@colorado.edu>
5424
5430
5425 * IPython/iplib.py (CachedOutput.update): Changed output memory
5431 * IPython/iplib.py (CachedOutput.update): Changed output memory
5426 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5432 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5427 input history we still use _i. Did this b/c these variable are
5433 input history we still use _i. Did this b/c these variable are
5428 very commonly used in interactive work, so the less we need to
5434 very commonly used in interactive work, so the less we need to
5429 type the better off we are.
5435 type the better off we are.
5430 (Magic.magic_prun): updated @prun to better handle the namespaces
5436 (Magic.magic_prun): updated @prun to better handle the namespaces
5431 the file will run in, including a fix for __name__ not being set
5437 the file will run in, including a fix for __name__ not being set
5432 before.
5438 before.
5433
5439
5434 2002-01-20 Fernando Perez <fperez@colorado.edu>
5440 2002-01-20 Fernando Perez <fperez@colorado.edu>
5435
5441
5436 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5442 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5437 extra garbage for Python 2.2. Need to look more carefully into
5443 extra garbage for Python 2.2. Need to look more carefully into
5438 this later.
5444 this later.
5439
5445
5440 2002-01-19 Fernando Perez <fperez@colorado.edu>
5446 2002-01-19 Fernando Perez <fperez@colorado.edu>
5441
5447
5442 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5448 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5443 display SyntaxError exceptions properly formatted when they occur
5449 display SyntaxError exceptions properly formatted when they occur
5444 (they can be triggered by imported code).
5450 (they can be triggered by imported code).
5445
5451
5446 2002-01-18 Fernando Perez <fperez@colorado.edu>
5452 2002-01-18 Fernando Perez <fperez@colorado.edu>
5447
5453
5448 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5454 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5449 SyntaxError exceptions are reported nicely formatted, instead of
5455 SyntaxError exceptions are reported nicely formatted, instead of
5450 spitting out only offset information as before.
5456 spitting out only offset information as before.
5451 (Magic.magic_prun): Added the @prun function for executing
5457 (Magic.magic_prun): Added the @prun function for executing
5452 programs with command line args inside IPython.
5458 programs with command line args inside IPython.
5453
5459
5454 2002-01-16 Fernando Perez <fperez@colorado.edu>
5460 2002-01-16 Fernando Perez <fperez@colorado.edu>
5455
5461
5456 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5462 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5457 to *not* include the last item given in a range. This brings their
5463 to *not* include the last item given in a range. This brings their
5458 behavior in line with Python's slicing:
5464 behavior in line with Python's slicing:
5459 a[n1:n2] -> a[n1]...a[n2-1]
5465 a[n1:n2] -> a[n1]...a[n2-1]
5460 It may be a bit less convenient, but I prefer to stick to Python's
5466 It may be a bit less convenient, but I prefer to stick to Python's
5461 conventions *everywhere*, so users never have to wonder.
5467 conventions *everywhere*, so users never have to wonder.
5462 (Magic.magic_macro): Added @macro function to ease the creation of
5468 (Magic.magic_macro): Added @macro function to ease the creation of
5463 macros.
5469 macros.
5464
5470
5465 2002-01-05 Fernando Perez <fperez@colorado.edu>
5471 2002-01-05 Fernando Perez <fperez@colorado.edu>
5466
5472
5467 * Released 0.2.4.
5473 * Released 0.2.4.
5468
5474
5469 * IPython/iplib.py (Magic.magic_pdef):
5475 * IPython/iplib.py (Magic.magic_pdef):
5470 (InteractiveShell.safe_execfile): report magic lines and error
5476 (InteractiveShell.safe_execfile): report magic lines and error
5471 lines without line numbers so one can easily copy/paste them for
5477 lines without line numbers so one can easily copy/paste them for
5472 re-execution.
5478 re-execution.
5473
5479
5474 * Updated manual with recent changes.
5480 * Updated manual with recent changes.
5475
5481
5476 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5482 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5477 docstring printing when class? is called. Very handy for knowing
5483 docstring printing when class? is called. Very handy for knowing
5478 how to create class instances (as long as __init__ is well
5484 how to create class instances (as long as __init__ is well
5479 documented, of course :)
5485 documented, of course :)
5480 (Magic.magic_doc): print both class and constructor docstrings.
5486 (Magic.magic_doc): print both class and constructor docstrings.
5481 (Magic.magic_pdef): give constructor info if passed a class and
5487 (Magic.magic_pdef): give constructor info if passed a class and
5482 __call__ info for callable object instances.
5488 __call__ info for callable object instances.
5483
5489
5484 2002-01-04 Fernando Perez <fperez@colorado.edu>
5490 2002-01-04 Fernando Perez <fperez@colorado.edu>
5485
5491
5486 * Made deep_reload() off by default. It doesn't always work
5492 * Made deep_reload() off by default. It doesn't always work
5487 exactly as intended, so it's probably safer to have it off. It's
5493 exactly as intended, so it's probably safer to have it off. It's
5488 still available as dreload() anyway, so nothing is lost.
5494 still available as dreload() anyway, so nothing is lost.
5489
5495
5490 2002-01-02 Fernando Perez <fperez@colorado.edu>
5496 2002-01-02 Fernando Perez <fperez@colorado.edu>
5491
5497
5492 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5498 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5493 so I wanted an updated release).
5499 so I wanted an updated release).
5494
5500
5495 2001-12-27 Fernando Perez <fperez@colorado.edu>
5501 2001-12-27 Fernando Perez <fperez@colorado.edu>
5496
5502
5497 * IPython/iplib.py (InteractiveShell.interact): Added the original
5503 * IPython/iplib.py (InteractiveShell.interact): Added the original
5498 code from 'code.py' for this module in order to change the
5504 code from 'code.py' for this module in order to change the
5499 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5505 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5500 the history cache would break when the user hit Ctrl-C, and
5506 the history cache would break when the user hit Ctrl-C, and
5501 interact() offers no way to add any hooks to it.
5507 interact() offers no way to add any hooks to it.
5502
5508
5503 2001-12-23 Fernando Perez <fperez@colorado.edu>
5509 2001-12-23 Fernando Perez <fperez@colorado.edu>
5504
5510
5505 * setup.py: added check for 'MANIFEST' before trying to remove
5511 * setup.py: added check for 'MANIFEST' before trying to remove
5506 it. Thanks to Sean Reifschneider.
5512 it. Thanks to Sean Reifschneider.
5507
5513
5508 2001-12-22 Fernando Perez <fperez@colorado.edu>
5514 2001-12-22 Fernando Perez <fperez@colorado.edu>
5509
5515
5510 * Released 0.2.2.
5516 * Released 0.2.2.
5511
5517
5512 * Finished (reasonably) writing the manual. Later will add the
5518 * Finished (reasonably) writing the manual. Later will add the
5513 python-standard navigation stylesheets, but for the time being
5519 python-standard navigation stylesheets, but for the time being
5514 it's fairly complete. Distribution will include html and pdf
5520 it's fairly complete. Distribution will include html and pdf
5515 versions.
5521 versions.
5516
5522
5517 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5523 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5518 (MayaVi author).
5524 (MayaVi author).
5519
5525
5520 2001-12-21 Fernando Perez <fperez@colorado.edu>
5526 2001-12-21 Fernando Perez <fperez@colorado.edu>
5521
5527
5522 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5528 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5523 good public release, I think (with the manual and the distutils
5529 good public release, I think (with the manual and the distutils
5524 installer). The manual can use some work, but that can go
5530 installer). The manual can use some work, but that can go
5525 slowly. Otherwise I think it's quite nice for end users. Next
5531 slowly. Otherwise I think it's quite nice for end users. Next
5526 summer, rewrite the guts of it...
5532 summer, rewrite the guts of it...
5527
5533
5528 * Changed format of ipythonrc files to use whitespace as the
5534 * Changed format of ipythonrc files to use whitespace as the
5529 separator instead of an explicit '='. Cleaner.
5535 separator instead of an explicit '='. Cleaner.
5530
5536
5531 2001-12-20 Fernando Perez <fperez@colorado.edu>
5537 2001-12-20 Fernando Perez <fperez@colorado.edu>
5532
5538
5533 * Started a manual in LyX. For now it's just a quick merge of the
5539 * Started a manual in LyX. For now it's just a quick merge of the
5534 various internal docstrings and READMEs. Later it may grow into a
5540 various internal docstrings and READMEs. Later it may grow into a
5535 nice, full-blown manual.
5541 nice, full-blown manual.
5536
5542
5537 * Set up a distutils based installer. Installation should now be
5543 * Set up a distutils based installer. Installation should now be
5538 trivially simple for end-users.
5544 trivially simple for end-users.
5539
5545
5540 2001-12-11 Fernando Perez <fperez@colorado.edu>
5546 2001-12-11 Fernando Perez <fperez@colorado.edu>
5541
5547
5542 * Released 0.2.0. First public release, announced it at
5548 * Released 0.2.0. First public release, announced it at
5543 comp.lang.python. From now on, just bugfixes...
5549 comp.lang.python. From now on, just bugfixes...
5544
5550
5545 * Went through all the files, set copyright/license notices and
5551 * Went through all the files, set copyright/license notices and
5546 cleaned up things. Ready for release.
5552 cleaned up things. Ready for release.
5547
5553
5548 2001-12-10 Fernando Perez <fperez@colorado.edu>
5554 2001-12-10 Fernando Perez <fperez@colorado.edu>
5549
5555
5550 * Changed the first-time installer not to use tarfiles. It's more
5556 * Changed the first-time installer not to use tarfiles. It's more
5551 robust now and less unix-dependent. Also makes it easier for
5557 robust now and less unix-dependent. Also makes it easier for
5552 people to later upgrade versions.
5558 people to later upgrade versions.
5553
5559
5554 * Changed @exit to @abort to reflect the fact that it's pretty
5560 * Changed @exit to @abort to reflect the fact that it's pretty
5555 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5561 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5556 becomes significant only when IPyhton is embedded: in that case,
5562 becomes significant only when IPyhton is embedded: in that case,
5557 C-D closes IPython only, but @abort kills the enclosing program
5563 C-D closes IPython only, but @abort kills the enclosing program
5558 too (unless it had called IPython inside a try catching
5564 too (unless it had called IPython inside a try catching
5559 SystemExit).
5565 SystemExit).
5560
5566
5561 * Created Shell module which exposes the actuall IPython Shell
5567 * Created Shell module which exposes the actuall IPython Shell
5562 classes, currently the normal and the embeddable one. This at
5568 classes, currently the normal and the embeddable one. This at
5563 least offers a stable interface we won't need to change when
5569 least offers a stable interface we won't need to change when
5564 (later) the internals are rewritten. That rewrite will be confined
5570 (later) the internals are rewritten. That rewrite will be confined
5565 to iplib and ipmaker, but the Shell interface should remain as is.
5571 to iplib and ipmaker, but the Shell interface should remain as is.
5566
5572
5567 * Added embed module which offers an embeddable IPShell object,
5573 * Added embed module which offers an embeddable IPShell object,
5568 useful to fire up IPython *inside* a running program. Great for
5574 useful to fire up IPython *inside* a running program. Great for
5569 debugging or dynamical data analysis.
5575 debugging or dynamical data analysis.
5570
5576
5571 2001-12-08 Fernando Perez <fperez@colorado.edu>
5577 2001-12-08 Fernando Perez <fperez@colorado.edu>
5572
5578
5573 * Fixed small bug preventing seeing info from methods of defined
5579 * Fixed small bug preventing seeing info from methods of defined
5574 objects (incorrect namespace in _ofind()).
5580 objects (incorrect namespace in _ofind()).
5575
5581
5576 * Documentation cleanup. Moved the main usage docstrings to a
5582 * Documentation cleanup. Moved the main usage docstrings to a
5577 separate file, usage.py (cleaner to maintain, and hopefully in the
5583 separate file, usage.py (cleaner to maintain, and hopefully in the
5578 future some perlpod-like way of producing interactive, man and
5584 future some perlpod-like way of producing interactive, man and
5579 html docs out of it will be found).
5585 html docs out of it will be found).
5580
5586
5581 * Added @profile to see your profile at any time.
5587 * Added @profile to see your profile at any time.
5582
5588
5583 * Added @p as an alias for 'print'. It's especially convenient if
5589 * Added @p as an alias for 'print'. It's especially convenient if
5584 using automagic ('p x' prints x).
5590 using automagic ('p x' prints x).
5585
5591
5586 * Small cleanups and fixes after a pychecker run.
5592 * Small cleanups and fixes after a pychecker run.
5587
5593
5588 * Changed the @cd command to handle @cd - and @cd -<n> for
5594 * Changed the @cd command to handle @cd - and @cd -<n> for
5589 visiting any directory in _dh.
5595 visiting any directory in _dh.
5590
5596
5591 * Introduced _dh, a history of visited directories. @dhist prints
5597 * Introduced _dh, a history of visited directories. @dhist prints
5592 it out with numbers.
5598 it out with numbers.
5593
5599
5594 2001-12-07 Fernando Perez <fperez@colorado.edu>
5600 2001-12-07 Fernando Perez <fperez@colorado.edu>
5595
5601
5596 * Released 0.1.22
5602 * Released 0.1.22
5597
5603
5598 * Made initialization a bit more robust against invalid color
5604 * Made initialization a bit more robust against invalid color
5599 options in user input (exit, not traceback-crash).
5605 options in user input (exit, not traceback-crash).
5600
5606
5601 * Changed the bug crash reporter to write the report only in the
5607 * Changed the bug crash reporter to write the report only in the
5602 user's .ipython directory. That way IPython won't litter people's
5608 user's .ipython directory. That way IPython won't litter people's
5603 hard disks with crash files all over the place. Also print on
5609 hard disks with crash files all over the place. Also print on
5604 screen the necessary mail command.
5610 screen the necessary mail command.
5605
5611
5606 * With the new ultraTB, implemented LightBG color scheme for light
5612 * With the new ultraTB, implemented LightBG color scheme for light
5607 background terminals. A lot of people like white backgrounds, so I
5613 background terminals. A lot of people like white backgrounds, so I
5608 guess we should at least give them something readable.
5614 guess we should at least give them something readable.
5609
5615
5610 2001-12-06 Fernando Perez <fperez@colorado.edu>
5616 2001-12-06 Fernando Perez <fperez@colorado.edu>
5611
5617
5612 * Modified the structure of ultraTB. Now there's a proper class
5618 * Modified the structure of ultraTB. Now there's a proper class
5613 for tables of color schemes which allow adding schemes easily and
5619 for tables of color schemes which allow adding schemes easily and
5614 switching the active scheme without creating a new instance every
5620 switching the active scheme without creating a new instance every
5615 time (which was ridiculous). The syntax for creating new schemes
5621 time (which was ridiculous). The syntax for creating new schemes
5616 is also cleaner. I think ultraTB is finally done, with a clean
5622 is also cleaner. I think ultraTB is finally done, with a clean
5617 class structure. Names are also much cleaner (now there's proper
5623 class structure. Names are also much cleaner (now there's proper
5618 color tables, no need for every variable to also have 'color' in
5624 color tables, no need for every variable to also have 'color' in
5619 its name).
5625 its name).
5620
5626
5621 * Broke down genutils into separate files. Now genutils only
5627 * Broke down genutils into separate files. Now genutils only
5622 contains utility functions, and classes have been moved to their
5628 contains utility functions, and classes have been moved to their
5623 own files (they had enough independent functionality to warrant
5629 own files (they had enough independent functionality to warrant
5624 it): ConfigLoader, OutputTrap, Struct.
5630 it): ConfigLoader, OutputTrap, Struct.
5625
5631
5626 2001-12-05 Fernando Perez <fperez@colorado.edu>
5632 2001-12-05 Fernando Perez <fperez@colorado.edu>
5627
5633
5628 * IPython turns 21! Released version 0.1.21, as a candidate for
5634 * IPython turns 21! Released version 0.1.21, as a candidate for
5629 public consumption. If all goes well, release in a few days.
5635 public consumption. If all goes well, release in a few days.
5630
5636
5631 * Fixed path bug (files in Extensions/ directory wouldn't be found
5637 * Fixed path bug (files in Extensions/ directory wouldn't be found
5632 unless IPython/ was explicitly in sys.path).
5638 unless IPython/ was explicitly in sys.path).
5633
5639
5634 * Extended the FlexCompleter class as MagicCompleter to allow
5640 * Extended the FlexCompleter class as MagicCompleter to allow
5635 completion of @-starting lines.
5641 completion of @-starting lines.
5636
5642
5637 * Created __release__.py file as a central repository for release
5643 * Created __release__.py file as a central repository for release
5638 info that other files can read from.
5644 info that other files can read from.
5639
5645
5640 * Fixed small bug in logging: when logging was turned on in
5646 * Fixed small bug in logging: when logging was turned on in
5641 mid-session, old lines with special meanings (!@?) were being
5647 mid-session, old lines with special meanings (!@?) were being
5642 logged without the prepended comment, which is necessary since
5648 logged without the prepended comment, which is necessary since
5643 they are not truly valid python syntax. This should make session
5649 they are not truly valid python syntax. This should make session
5644 restores produce less errors.
5650 restores produce less errors.
5645
5651
5646 * The namespace cleanup forced me to make a FlexCompleter class
5652 * The namespace cleanup forced me to make a FlexCompleter class
5647 which is nothing but a ripoff of rlcompleter, but with selectable
5653 which is nothing but a ripoff of rlcompleter, but with selectable
5648 namespace (rlcompleter only works in __main__.__dict__). I'll try
5654 namespace (rlcompleter only works in __main__.__dict__). I'll try
5649 to submit a note to the authors to see if this change can be
5655 to submit a note to the authors to see if this change can be
5650 incorporated in future rlcompleter releases (Dec.6: done)
5656 incorporated in future rlcompleter releases (Dec.6: done)
5651
5657
5652 * More fixes to namespace handling. It was a mess! Now all
5658 * More fixes to namespace handling. It was a mess! Now all
5653 explicit references to __main__.__dict__ are gone (except when
5659 explicit references to __main__.__dict__ are gone (except when
5654 really needed) and everything is handled through the namespace
5660 really needed) and everything is handled through the namespace
5655 dicts in the IPython instance. We seem to be getting somewhere
5661 dicts in the IPython instance. We seem to be getting somewhere
5656 with this, finally...
5662 with this, finally...
5657
5663
5658 * Small documentation updates.
5664 * Small documentation updates.
5659
5665
5660 * Created the Extensions directory under IPython (with an
5666 * Created the Extensions directory under IPython (with an
5661 __init__.py). Put the PhysicalQ stuff there. This directory should
5667 __init__.py). Put the PhysicalQ stuff there. This directory should
5662 be used for all special-purpose extensions.
5668 be used for all special-purpose extensions.
5663
5669
5664 * File renaming:
5670 * File renaming:
5665 ipythonlib --> ipmaker
5671 ipythonlib --> ipmaker
5666 ipplib --> iplib
5672 ipplib --> iplib
5667 This makes a bit more sense in terms of what these files actually do.
5673 This makes a bit more sense in terms of what these files actually do.
5668
5674
5669 * Moved all the classes and functions in ipythonlib to ipplib, so
5675 * Moved all the classes and functions in ipythonlib to ipplib, so
5670 now ipythonlib only has make_IPython(). This will ease up its
5676 now ipythonlib only has make_IPython(). This will ease up its
5671 splitting in smaller functional chunks later.
5677 splitting in smaller functional chunks later.
5672
5678
5673 * Cleaned up (done, I think) output of @whos. Better column
5679 * Cleaned up (done, I think) output of @whos. Better column
5674 formatting, and now shows str(var) for as much as it can, which is
5680 formatting, and now shows str(var) for as much as it can, which is
5675 typically what one gets with a 'print var'.
5681 typically what one gets with a 'print var'.
5676
5682
5677 2001-12-04 Fernando Perez <fperez@colorado.edu>
5683 2001-12-04 Fernando Perez <fperez@colorado.edu>
5678
5684
5679 * Fixed namespace problems. Now builtin/IPyhton/user names get
5685 * Fixed namespace problems. Now builtin/IPyhton/user names get
5680 properly reported in their namespace. Internal namespace handling
5686 properly reported in their namespace. Internal namespace handling
5681 is finally getting decent (not perfect yet, but much better than
5687 is finally getting decent (not perfect yet, but much better than
5682 the ad-hoc mess we had).
5688 the ad-hoc mess we had).
5683
5689
5684 * Removed -exit option. If people just want to run a python
5690 * Removed -exit option. If people just want to run a python
5685 script, that's what the normal interpreter is for. Less
5691 script, that's what the normal interpreter is for. Less
5686 unnecessary options, less chances for bugs.
5692 unnecessary options, less chances for bugs.
5687
5693
5688 * Added a crash handler which generates a complete post-mortem if
5694 * Added a crash handler which generates a complete post-mortem if
5689 IPython crashes. This will help a lot in tracking bugs down the
5695 IPython crashes. This will help a lot in tracking bugs down the
5690 road.
5696 road.
5691
5697
5692 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5698 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5693 which were boud to functions being reassigned would bypass the
5699 which were boud to functions being reassigned would bypass the
5694 logger, breaking the sync of _il with the prompt counter. This
5700 logger, breaking the sync of _il with the prompt counter. This
5695 would then crash IPython later when a new line was logged.
5701 would then crash IPython later when a new line was logged.
5696
5702
5697 2001-12-02 Fernando Perez <fperez@colorado.edu>
5703 2001-12-02 Fernando Perez <fperez@colorado.edu>
5698
5704
5699 * Made IPython a package. This means people don't have to clutter
5705 * Made IPython a package. This means people don't have to clutter
5700 their sys.path with yet another directory. Changed the INSTALL
5706 their sys.path with yet another directory. Changed the INSTALL
5701 file accordingly.
5707 file accordingly.
5702
5708
5703 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5709 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5704 sorts its output (so @who shows it sorted) and @whos formats the
5710 sorts its output (so @who shows it sorted) and @whos formats the
5705 table according to the width of the first column. Nicer, easier to
5711 table according to the width of the first column. Nicer, easier to
5706 read. Todo: write a generic table_format() which takes a list of
5712 read. Todo: write a generic table_format() which takes a list of
5707 lists and prints it nicely formatted, with optional row/column
5713 lists and prints it nicely formatted, with optional row/column
5708 separators and proper padding and justification.
5714 separators and proper padding and justification.
5709
5715
5710 * Released 0.1.20
5716 * Released 0.1.20
5711
5717
5712 * Fixed bug in @log which would reverse the inputcache list (a
5718 * Fixed bug in @log which would reverse the inputcache list (a
5713 copy operation was missing).
5719 copy operation was missing).
5714
5720
5715 * Code cleanup. @config was changed to use page(). Better, since
5721 * Code cleanup. @config was changed to use page(). Better, since
5716 its output is always quite long.
5722 its output is always quite long.
5717
5723
5718 * Itpl is back as a dependency. I was having too many problems
5724 * Itpl is back as a dependency. I was having too many problems
5719 getting the parametric aliases to work reliably, and it's just
5725 getting the parametric aliases to work reliably, and it's just
5720 easier to code weird string operations with it than playing %()s
5726 easier to code weird string operations with it than playing %()s
5721 games. It's only ~6k, so I don't think it's too big a deal.
5727 games. It's only ~6k, so I don't think it's too big a deal.
5722
5728
5723 * Found (and fixed) a very nasty bug with history. !lines weren't
5729 * Found (and fixed) a very nasty bug with history. !lines weren't
5724 getting cached, and the out of sync caches would crash
5730 getting cached, and the out of sync caches would crash
5725 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5731 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5726 division of labor a bit better. Bug fixed, cleaner structure.
5732 division of labor a bit better. Bug fixed, cleaner structure.
5727
5733
5728 2001-12-01 Fernando Perez <fperez@colorado.edu>
5734 2001-12-01 Fernando Perez <fperez@colorado.edu>
5729
5735
5730 * Released 0.1.19
5736 * Released 0.1.19
5731
5737
5732 * Added option -n to @hist to prevent line number printing. Much
5738 * Added option -n to @hist to prevent line number printing. Much
5733 easier to copy/paste code this way.
5739 easier to copy/paste code this way.
5734
5740
5735 * Created global _il to hold the input list. Allows easy
5741 * Created global _il to hold the input list. Allows easy
5736 re-execution of blocks of code by slicing it (inspired by Janko's
5742 re-execution of blocks of code by slicing it (inspired by Janko's
5737 comment on 'macros').
5743 comment on 'macros').
5738
5744
5739 * Small fixes and doc updates.
5745 * Small fixes and doc updates.
5740
5746
5741 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5747 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5742 much too fragile with automagic. Handles properly multi-line
5748 much too fragile with automagic. Handles properly multi-line
5743 statements and takes parameters.
5749 statements and takes parameters.
5744
5750
5745 2001-11-30 Fernando Perez <fperez@colorado.edu>
5751 2001-11-30 Fernando Perez <fperez@colorado.edu>
5746
5752
5747 * Version 0.1.18 released.
5753 * Version 0.1.18 released.
5748
5754
5749 * Fixed nasty namespace bug in initial module imports.
5755 * Fixed nasty namespace bug in initial module imports.
5750
5756
5751 * Added copyright/license notes to all code files (except
5757 * Added copyright/license notes to all code files (except
5752 DPyGetOpt). For the time being, LGPL. That could change.
5758 DPyGetOpt). For the time being, LGPL. That could change.
5753
5759
5754 * Rewrote a much nicer README, updated INSTALL, cleaned up
5760 * Rewrote a much nicer README, updated INSTALL, cleaned up
5755 ipythonrc-* samples.
5761 ipythonrc-* samples.
5756
5762
5757 * Overall code/documentation cleanup. Basically ready for
5763 * Overall code/documentation cleanup. Basically ready for
5758 release. Only remaining thing: licence decision (LGPL?).
5764 release. Only remaining thing: licence decision (LGPL?).
5759
5765
5760 * Converted load_config to a class, ConfigLoader. Now recursion
5766 * Converted load_config to a class, ConfigLoader. Now recursion
5761 control is better organized. Doesn't include the same file twice.
5767 control is better organized. Doesn't include the same file twice.
5762
5768
5763 2001-11-29 Fernando Perez <fperez@colorado.edu>
5769 2001-11-29 Fernando Perez <fperez@colorado.edu>
5764
5770
5765 * Got input history working. Changed output history variables from
5771 * Got input history working. Changed output history variables from
5766 _p to _o so that _i is for input and _o for output. Just cleaner
5772 _p to _o so that _i is for input and _o for output. Just cleaner
5767 convention.
5773 convention.
5768
5774
5769 * Implemented parametric aliases. This pretty much allows the
5775 * Implemented parametric aliases. This pretty much allows the
5770 alias system to offer full-blown shell convenience, I think.
5776 alias system to offer full-blown shell convenience, I think.
5771
5777
5772 * Version 0.1.17 released, 0.1.18 opened.
5778 * Version 0.1.17 released, 0.1.18 opened.
5773
5779
5774 * dot_ipython/ipythonrc (alias): added documentation.
5780 * dot_ipython/ipythonrc (alias): added documentation.
5775 (xcolor): Fixed small bug (xcolors -> xcolor)
5781 (xcolor): Fixed small bug (xcolors -> xcolor)
5776
5782
5777 * Changed the alias system. Now alias is a magic command to define
5783 * Changed the alias system. Now alias is a magic command to define
5778 aliases just like the shell. Rationale: the builtin magics should
5784 aliases just like the shell. Rationale: the builtin magics should
5779 be there for things deeply connected to IPython's
5785 be there for things deeply connected to IPython's
5780 architecture. And this is a much lighter system for what I think
5786 architecture. And this is a much lighter system for what I think
5781 is the really important feature: allowing users to define quickly
5787 is the really important feature: allowing users to define quickly
5782 magics that will do shell things for them, so they can customize
5788 magics that will do shell things for them, so they can customize
5783 IPython easily to match their work habits. If someone is really
5789 IPython easily to match their work habits. If someone is really
5784 desperate to have another name for a builtin alias, they can
5790 desperate to have another name for a builtin alias, they can
5785 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5791 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5786 works.
5792 works.
5787
5793
5788 2001-11-28 Fernando Perez <fperez@colorado.edu>
5794 2001-11-28 Fernando Perez <fperez@colorado.edu>
5789
5795
5790 * Changed @file so that it opens the source file at the proper
5796 * Changed @file so that it opens the source file at the proper
5791 line. Since it uses less, if your EDITOR environment is
5797 line. Since it uses less, if your EDITOR environment is
5792 configured, typing v will immediately open your editor of choice
5798 configured, typing v will immediately open your editor of choice
5793 right at the line where the object is defined. Not as quick as
5799 right at the line where the object is defined. Not as quick as
5794 having a direct @edit command, but for all intents and purposes it
5800 having a direct @edit command, but for all intents and purposes it
5795 works. And I don't have to worry about writing @edit to deal with
5801 works. And I don't have to worry about writing @edit to deal with
5796 all the editors, less does that.
5802 all the editors, less does that.
5797
5803
5798 * Version 0.1.16 released, 0.1.17 opened.
5804 * Version 0.1.16 released, 0.1.17 opened.
5799
5805
5800 * Fixed some nasty bugs in the page/page_dumb combo that could
5806 * Fixed some nasty bugs in the page/page_dumb combo that could
5801 crash IPython.
5807 crash IPython.
5802
5808
5803 2001-11-27 Fernando Perez <fperez@colorado.edu>
5809 2001-11-27 Fernando Perez <fperez@colorado.edu>
5804
5810
5805 * Version 0.1.15 released, 0.1.16 opened.
5811 * Version 0.1.15 released, 0.1.16 opened.
5806
5812
5807 * Finally got ? and ?? to work for undefined things: now it's
5813 * Finally got ? and ?? to work for undefined things: now it's
5808 possible to type {}.get? and get information about the get method
5814 possible to type {}.get? and get information about the get method
5809 of dicts, or os.path? even if only os is defined (so technically
5815 of dicts, or os.path? even if only os is defined (so technically
5810 os.path isn't). Works at any level. For example, after import os,
5816 os.path isn't). Works at any level. For example, after import os,
5811 os?, os.path?, os.path.abspath? all work. This is great, took some
5817 os?, os.path?, os.path.abspath? all work. This is great, took some
5812 work in _ofind.
5818 work in _ofind.
5813
5819
5814 * Fixed more bugs with logging. The sanest way to do it was to add
5820 * Fixed more bugs with logging. The sanest way to do it was to add
5815 to @log a 'mode' parameter. Killed two in one shot (this mode
5821 to @log a 'mode' parameter. Killed two in one shot (this mode
5816 option was a request of Janko's). I think it's finally clean
5822 option was a request of Janko's). I think it's finally clean
5817 (famous last words).
5823 (famous last words).
5818
5824
5819 * Added a page_dumb() pager which does a decent job of paging on
5825 * Added a page_dumb() pager which does a decent job of paging on
5820 screen, if better things (like less) aren't available. One less
5826 screen, if better things (like less) aren't available. One less
5821 unix dependency (someday maybe somebody will port this to
5827 unix dependency (someday maybe somebody will port this to
5822 windows).
5828 windows).
5823
5829
5824 * Fixed problem in magic_log: would lock of logging out if log
5830 * Fixed problem in magic_log: would lock of logging out if log
5825 creation failed (because it would still think it had succeeded).
5831 creation failed (because it would still think it had succeeded).
5826
5832
5827 * Improved the page() function using curses to auto-detect screen
5833 * Improved the page() function using curses to auto-detect screen
5828 size. Now it can make a much better decision on whether to print
5834 size. Now it can make a much better decision on whether to print
5829 or page a string. Option screen_length was modified: a value 0
5835 or page a string. Option screen_length was modified: a value 0
5830 means auto-detect, and that's the default now.
5836 means auto-detect, and that's the default now.
5831
5837
5832 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5838 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5833 go out. I'll test it for a few days, then talk to Janko about
5839 go out. I'll test it for a few days, then talk to Janko about
5834 licences and announce it.
5840 licences and announce it.
5835
5841
5836 * Fixed the length of the auto-generated ---> prompt which appears
5842 * Fixed the length of the auto-generated ---> prompt which appears
5837 for auto-parens and auto-quotes. Getting this right isn't trivial,
5843 for auto-parens and auto-quotes. Getting this right isn't trivial,
5838 with all the color escapes, different prompt types and optional
5844 with all the color escapes, different prompt types and optional
5839 separators. But it seems to be working in all the combinations.
5845 separators. But it seems to be working in all the combinations.
5840
5846
5841 2001-11-26 Fernando Perez <fperez@colorado.edu>
5847 2001-11-26 Fernando Perez <fperez@colorado.edu>
5842
5848
5843 * Wrote a regexp filter to get option types from the option names
5849 * Wrote a regexp filter to get option types from the option names
5844 string. This eliminates the need to manually keep two duplicate
5850 string. This eliminates the need to manually keep two duplicate
5845 lists.
5851 lists.
5846
5852
5847 * Removed the unneeded check_option_names. Now options are handled
5853 * Removed the unneeded check_option_names. Now options are handled
5848 in a much saner manner and it's easy to visually check that things
5854 in a much saner manner and it's easy to visually check that things
5849 are ok.
5855 are ok.
5850
5856
5851 * Updated version numbers on all files I modified to carry a
5857 * Updated version numbers on all files I modified to carry a
5852 notice so Janko and Nathan have clear version markers.
5858 notice so Janko and Nathan have clear version markers.
5853
5859
5854 * Updated docstring for ultraTB with my changes. I should send
5860 * Updated docstring for ultraTB with my changes. I should send
5855 this to Nathan.
5861 this to Nathan.
5856
5862
5857 * Lots of small fixes. Ran everything through pychecker again.
5863 * Lots of small fixes. Ran everything through pychecker again.
5858
5864
5859 * Made loading of deep_reload an cmd line option. If it's not too
5865 * Made loading of deep_reload an cmd line option. If it's not too
5860 kosher, now people can just disable it. With -nodeep_reload it's
5866 kosher, now people can just disable it. With -nodeep_reload it's
5861 still available as dreload(), it just won't overwrite reload().
5867 still available as dreload(), it just won't overwrite reload().
5862
5868
5863 * Moved many options to the no| form (-opt and -noopt
5869 * Moved many options to the no| form (-opt and -noopt
5864 accepted). Cleaner.
5870 accepted). Cleaner.
5865
5871
5866 * Changed magic_log so that if called with no parameters, it uses
5872 * Changed magic_log so that if called with no parameters, it uses
5867 'rotate' mode. That way auto-generated logs aren't automatically
5873 'rotate' mode. That way auto-generated logs aren't automatically
5868 over-written. For normal logs, now a backup is made if it exists
5874 over-written. For normal logs, now a backup is made if it exists
5869 (only 1 level of backups). A new 'backup' mode was added to the
5875 (only 1 level of backups). A new 'backup' mode was added to the
5870 Logger class to support this. This was a request by Janko.
5876 Logger class to support this. This was a request by Janko.
5871
5877
5872 * Added @logoff/@logon to stop/restart an active log.
5878 * Added @logoff/@logon to stop/restart an active log.
5873
5879
5874 * Fixed a lot of bugs in log saving/replay. It was pretty
5880 * Fixed a lot of bugs in log saving/replay. It was pretty
5875 broken. Now special lines (!@,/) appear properly in the command
5881 broken. Now special lines (!@,/) appear properly in the command
5876 history after a log replay.
5882 history after a log replay.
5877
5883
5878 * Tried and failed to implement full session saving via pickle. My
5884 * Tried and failed to implement full session saving via pickle. My
5879 idea was to pickle __main__.__dict__, but modules can't be
5885 idea was to pickle __main__.__dict__, but modules can't be
5880 pickled. This would be a better alternative to replaying logs, but
5886 pickled. This would be a better alternative to replaying logs, but
5881 seems quite tricky to get to work. Changed -session to be called
5887 seems quite tricky to get to work. Changed -session to be called
5882 -logplay, which more accurately reflects what it does. And if we
5888 -logplay, which more accurately reflects what it does. And if we
5883 ever get real session saving working, -session is now available.
5889 ever get real session saving working, -session is now available.
5884
5890
5885 * Implemented color schemes for prompts also. As for tracebacks,
5891 * Implemented color schemes for prompts also. As for tracebacks,
5886 currently only NoColor and Linux are supported. But now the
5892 currently only NoColor and Linux are supported. But now the
5887 infrastructure is in place, based on a generic ColorScheme
5893 infrastructure is in place, based on a generic ColorScheme
5888 class. So writing and activating new schemes both for the prompts
5894 class. So writing and activating new schemes both for the prompts
5889 and the tracebacks should be straightforward.
5895 and the tracebacks should be straightforward.
5890
5896
5891 * Version 0.1.13 released, 0.1.14 opened.
5897 * Version 0.1.13 released, 0.1.14 opened.
5892
5898
5893 * Changed handling of options for output cache. Now counter is
5899 * Changed handling of options for output cache. Now counter is
5894 hardwired starting at 1 and one specifies the maximum number of
5900 hardwired starting at 1 and one specifies the maximum number of
5895 entries *in the outcache* (not the max prompt counter). This is
5901 entries *in the outcache* (not the max prompt counter). This is
5896 much better, since many statements won't increase the cache
5902 much better, since many statements won't increase the cache
5897 count. It also eliminated some confusing options, now there's only
5903 count. It also eliminated some confusing options, now there's only
5898 one: cache_size.
5904 one: cache_size.
5899
5905
5900 * Added 'alias' magic function and magic_alias option in the
5906 * Added 'alias' magic function and magic_alias option in the
5901 ipythonrc file. Now the user can easily define whatever names he
5907 ipythonrc file. Now the user can easily define whatever names he
5902 wants for the magic functions without having to play weird
5908 wants for the magic functions without having to play weird
5903 namespace games. This gives IPython a real shell-like feel.
5909 namespace games. This gives IPython a real shell-like feel.
5904
5910
5905 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5911 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5906 @ or not).
5912 @ or not).
5907
5913
5908 This was one of the last remaining 'visible' bugs (that I know
5914 This was one of the last remaining 'visible' bugs (that I know
5909 of). I think if I can clean up the session loading so it works
5915 of). I think if I can clean up the session loading so it works
5910 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5916 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5911 about licensing).
5917 about licensing).
5912
5918
5913 2001-11-25 Fernando Perez <fperez@colorado.edu>
5919 2001-11-25 Fernando Perez <fperez@colorado.edu>
5914
5920
5915 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5921 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5916 there's a cleaner distinction between what ? and ?? show.
5922 there's a cleaner distinction between what ? and ?? show.
5917
5923
5918 * Added screen_length option. Now the user can define his own
5924 * Added screen_length option. Now the user can define his own
5919 screen size for page() operations.
5925 screen size for page() operations.
5920
5926
5921 * Implemented magic shell-like functions with automatic code
5927 * Implemented magic shell-like functions with automatic code
5922 generation. Now adding another function is just a matter of adding
5928 generation. Now adding another function is just a matter of adding
5923 an entry to a dict, and the function is dynamically generated at
5929 an entry to a dict, and the function is dynamically generated at
5924 run-time. Python has some really cool features!
5930 run-time. Python has some really cool features!
5925
5931
5926 * Renamed many options to cleanup conventions a little. Now all
5932 * Renamed many options to cleanup conventions a little. Now all
5927 are lowercase, and only underscores where needed. Also in the code
5933 are lowercase, and only underscores where needed. Also in the code
5928 option name tables are clearer.
5934 option name tables are clearer.
5929
5935
5930 * Changed prompts a little. Now input is 'In [n]:' instead of
5936 * Changed prompts a little. Now input is 'In [n]:' instead of
5931 'In[n]:='. This allows it the numbers to be aligned with the
5937 'In[n]:='. This allows it the numbers to be aligned with the
5932 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5938 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5933 Python (it was a Mathematica thing). The '...' continuation prompt
5939 Python (it was a Mathematica thing). The '...' continuation prompt
5934 was also changed a little to align better.
5940 was also changed a little to align better.
5935
5941
5936 * Fixed bug when flushing output cache. Not all _p<n> variables
5942 * Fixed bug when flushing output cache. Not all _p<n> variables
5937 exist, so their deletion needs to be wrapped in a try:
5943 exist, so their deletion needs to be wrapped in a try:
5938
5944
5939 * Figured out how to properly use inspect.formatargspec() (it
5945 * Figured out how to properly use inspect.formatargspec() (it
5940 requires the args preceded by *). So I removed all the code from
5946 requires the args preceded by *). So I removed all the code from
5941 _get_pdef in Magic, which was just replicating that.
5947 _get_pdef in Magic, which was just replicating that.
5942
5948
5943 * Added test to prefilter to allow redefining magic function names
5949 * Added test to prefilter to allow redefining magic function names
5944 as variables. This is ok, since the @ form is always available,
5950 as variables. This is ok, since the @ form is always available,
5945 but whe should allow the user to define a variable called 'ls' if
5951 but whe should allow the user to define a variable called 'ls' if
5946 he needs it.
5952 he needs it.
5947
5953
5948 * Moved the ToDo information from README into a separate ToDo.
5954 * Moved the ToDo information from README into a separate ToDo.
5949
5955
5950 * General code cleanup and small bugfixes. I think it's close to a
5956 * General code cleanup and small bugfixes. I think it's close to a
5951 state where it can be released, obviously with a big 'beta'
5957 state where it can be released, obviously with a big 'beta'
5952 warning on it.
5958 warning on it.
5953
5959
5954 * Got the magic function split to work. Now all magics are defined
5960 * Got the magic function split to work. Now all magics are defined
5955 in a separate class. It just organizes things a bit, and now
5961 in a separate class. It just organizes things a bit, and now
5956 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5962 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5957 was too long).
5963 was too long).
5958
5964
5959 * Changed @clear to @reset to avoid potential confusions with
5965 * Changed @clear to @reset to avoid potential confusions with
5960 the shell command clear. Also renamed @cl to @clear, which does
5966 the shell command clear. Also renamed @cl to @clear, which does
5961 exactly what people expect it to from their shell experience.
5967 exactly what people expect it to from their shell experience.
5962
5968
5963 Added a check to the @reset command (since it's so
5969 Added a check to the @reset command (since it's so
5964 destructive, it's probably a good idea to ask for confirmation).
5970 destructive, it's probably a good idea to ask for confirmation).
5965 But now reset only works for full namespace resetting. Since the
5971 But now reset only works for full namespace resetting. Since the
5966 del keyword is already there for deleting a few specific
5972 del keyword is already there for deleting a few specific
5967 variables, I don't see the point of having a redundant magic
5973 variables, I don't see the point of having a redundant magic
5968 function for the same task.
5974 function for the same task.
5969
5975
5970 2001-11-24 Fernando Perez <fperez@colorado.edu>
5976 2001-11-24 Fernando Perez <fperez@colorado.edu>
5971
5977
5972 * Updated the builtin docs (esp. the ? ones).
5978 * Updated the builtin docs (esp. the ? ones).
5973
5979
5974 * Ran all the code through pychecker. Not terribly impressed with
5980 * Ran all the code through pychecker. Not terribly impressed with
5975 it: lots of spurious warnings and didn't really find anything of
5981 it: lots of spurious warnings and didn't really find anything of
5976 substance (just a few modules being imported and not used).
5982 substance (just a few modules being imported and not used).
5977
5983
5978 * Implemented the new ultraTB functionality into IPython. New
5984 * Implemented the new ultraTB functionality into IPython. New
5979 option: xcolors. This chooses color scheme. xmode now only selects
5985 option: xcolors. This chooses color scheme. xmode now only selects
5980 between Plain and Verbose. Better orthogonality.
5986 between Plain and Verbose. Better orthogonality.
5981
5987
5982 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5988 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5983 mode and color scheme for the exception handlers. Now it's
5989 mode and color scheme for the exception handlers. Now it's
5984 possible to have the verbose traceback with no coloring.
5990 possible to have the verbose traceback with no coloring.
5985
5991
5986 2001-11-23 Fernando Perez <fperez@colorado.edu>
5992 2001-11-23 Fernando Perez <fperez@colorado.edu>
5987
5993
5988 * Version 0.1.12 released, 0.1.13 opened.
5994 * Version 0.1.12 released, 0.1.13 opened.
5989
5995
5990 * Removed option to set auto-quote and auto-paren escapes by
5996 * Removed option to set auto-quote and auto-paren escapes by
5991 user. The chances of breaking valid syntax are just too high. If
5997 user. The chances of breaking valid syntax are just too high. If
5992 someone *really* wants, they can always dig into the code.
5998 someone *really* wants, they can always dig into the code.
5993
5999
5994 * Made prompt separators configurable.
6000 * Made prompt separators configurable.
5995
6001
5996 2001-11-22 Fernando Perez <fperez@colorado.edu>
6002 2001-11-22 Fernando Perez <fperez@colorado.edu>
5997
6003
5998 * Small bugfixes in many places.
6004 * Small bugfixes in many places.
5999
6005
6000 * Removed the MyCompleter class from ipplib. It seemed redundant
6006 * Removed the MyCompleter class from ipplib. It seemed redundant
6001 with the C-p,C-n history search functionality. Less code to
6007 with the C-p,C-n history search functionality. Less code to
6002 maintain.
6008 maintain.
6003
6009
6004 * Moved all the original ipython.py code into ipythonlib.py. Right
6010 * Moved all the original ipython.py code into ipythonlib.py. Right
6005 now it's just one big dump into a function called make_IPython, so
6011 now it's just one big dump into a function called make_IPython, so
6006 no real modularity has been gained. But at least it makes the
6012 no real modularity has been gained. But at least it makes the
6007 wrapper script tiny, and since ipythonlib is a module, it gets
6013 wrapper script tiny, and since ipythonlib is a module, it gets
6008 compiled and startup is much faster.
6014 compiled and startup is much faster.
6009
6015
6010 This is a reasobably 'deep' change, so we should test it for a
6016 This is a reasobably 'deep' change, so we should test it for a
6011 while without messing too much more with the code.
6017 while without messing too much more with the code.
6012
6018
6013 2001-11-21 Fernando Perez <fperez@colorado.edu>
6019 2001-11-21 Fernando Perez <fperez@colorado.edu>
6014
6020
6015 * Version 0.1.11 released, 0.1.12 opened for further work.
6021 * Version 0.1.11 released, 0.1.12 opened for further work.
6016
6022
6017 * Removed dependency on Itpl. It was only needed in one place. It
6023 * Removed dependency on Itpl. It was only needed in one place. It
6018 would be nice if this became part of python, though. It makes life
6024 would be nice if this became part of python, though. It makes life
6019 *a lot* easier in some cases.
6025 *a lot* easier in some cases.
6020
6026
6021 * Simplified the prefilter code a bit. Now all handlers are
6027 * Simplified the prefilter code a bit. Now all handlers are
6022 expected to explicitly return a value (at least a blank string).
6028 expected to explicitly return a value (at least a blank string).
6023
6029
6024 * Heavy edits in ipplib. Removed the help system altogether. Now
6030 * Heavy edits in ipplib. Removed the help system altogether. Now
6025 obj?/?? is used for inspecting objects, a magic @doc prints
6031 obj?/?? is used for inspecting objects, a magic @doc prints
6026 docstrings, and full-blown Python help is accessed via the 'help'
6032 docstrings, and full-blown Python help is accessed via the 'help'
6027 keyword. This cleans up a lot of code (less to maintain) and does
6033 keyword. This cleans up a lot of code (less to maintain) and does
6028 the job. Since 'help' is now a standard Python component, might as
6034 the job. Since 'help' is now a standard Python component, might as
6029 well use it and remove duplicate functionality.
6035 well use it and remove duplicate functionality.
6030
6036
6031 Also removed the option to use ipplib as a standalone program. By
6037 Also removed the option to use ipplib as a standalone program. By
6032 now it's too dependent on other parts of IPython to function alone.
6038 now it's too dependent on other parts of IPython to function alone.
6033
6039
6034 * Fixed bug in genutils.pager. It would crash if the pager was
6040 * Fixed bug in genutils.pager. It would crash if the pager was
6035 exited immediately after opening (broken pipe).
6041 exited immediately after opening (broken pipe).
6036
6042
6037 * Trimmed down the VerboseTB reporting a little. The header is
6043 * Trimmed down the VerboseTB reporting a little. The header is
6038 much shorter now and the repeated exception arguments at the end
6044 much shorter now and the repeated exception arguments at the end
6039 have been removed. For interactive use the old header seemed a bit
6045 have been removed. For interactive use the old header seemed a bit
6040 excessive.
6046 excessive.
6041
6047
6042 * Fixed small bug in output of @whos for variables with multi-word
6048 * Fixed small bug in output of @whos for variables with multi-word
6043 types (only first word was displayed).
6049 types (only first word was displayed).
6044
6050
6045 2001-11-17 Fernando Perez <fperez@colorado.edu>
6051 2001-11-17 Fernando Perez <fperez@colorado.edu>
6046
6052
6047 * Version 0.1.10 released, 0.1.11 opened for further work.
6053 * Version 0.1.10 released, 0.1.11 opened for further work.
6048
6054
6049 * Modified dirs and friends. dirs now *returns* the stack (not
6055 * Modified dirs and friends. dirs now *returns* the stack (not
6050 prints), so one can manipulate it as a variable. Convenient to
6056 prints), so one can manipulate it as a variable. Convenient to
6051 travel along many directories.
6057 travel along many directories.
6052
6058
6053 * Fixed bug in magic_pdef: would only work with functions with
6059 * Fixed bug in magic_pdef: would only work with functions with
6054 arguments with default values.
6060 arguments with default values.
6055
6061
6056 2001-11-14 Fernando Perez <fperez@colorado.edu>
6062 2001-11-14 Fernando Perez <fperez@colorado.edu>
6057
6063
6058 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6064 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6059 example with IPython. Various other minor fixes and cleanups.
6065 example with IPython. Various other minor fixes and cleanups.
6060
6066
6061 * Version 0.1.9 released, 0.1.10 opened for further work.
6067 * Version 0.1.9 released, 0.1.10 opened for further work.
6062
6068
6063 * Added sys.path to the list of directories searched in the
6069 * Added sys.path to the list of directories searched in the
6064 execfile= option. It used to be the current directory and the
6070 execfile= option. It used to be the current directory and the
6065 user's IPYTHONDIR only.
6071 user's IPYTHONDIR only.
6066
6072
6067 2001-11-13 Fernando Perez <fperez@colorado.edu>
6073 2001-11-13 Fernando Perez <fperez@colorado.edu>
6068
6074
6069 * Reinstated the raw_input/prefilter separation that Janko had
6075 * Reinstated the raw_input/prefilter separation that Janko had
6070 initially. This gives a more convenient setup for extending the
6076 initially. This gives a more convenient setup for extending the
6071 pre-processor from the outside: raw_input always gets a string,
6077 pre-processor from the outside: raw_input always gets a string,
6072 and prefilter has to process it. We can then redefine prefilter
6078 and prefilter has to process it. We can then redefine prefilter
6073 from the outside and implement extensions for special
6079 from the outside and implement extensions for special
6074 purposes.
6080 purposes.
6075
6081
6076 Today I got one for inputting PhysicalQuantity objects
6082 Today I got one for inputting PhysicalQuantity objects
6077 (from Scientific) without needing any function calls at
6083 (from Scientific) without needing any function calls at
6078 all. Extremely convenient, and it's all done as a user-level
6084 all. Extremely convenient, and it's all done as a user-level
6079 extension (no IPython code was touched). Now instead of:
6085 extension (no IPython code was touched). Now instead of:
6080 a = PhysicalQuantity(4.2,'m/s**2')
6086 a = PhysicalQuantity(4.2,'m/s**2')
6081 one can simply say
6087 one can simply say
6082 a = 4.2 m/s**2
6088 a = 4.2 m/s**2
6083 or even
6089 or even
6084 a = 4.2 m/s^2
6090 a = 4.2 m/s^2
6085
6091
6086 I use this, but it's also a proof of concept: IPython really is
6092 I use this, but it's also a proof of concept: IPython really is
6087 fully user-extensible, even at the level of the parsing of the
6093 fully user-extensible, even at the level of the parsing of the
6088 command line. It's not trivial, but it's perfectly doable.
6094 command line. It's not trivial, but it's perfectly doable.
6089
6095
6090 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6096 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6091 the problem of modules being loaded in the inverse order in which
6097 the problem of modules being loaded in the inverse order in which
6092 they were defined in
6098 they were defined in
6093
6099
6094 * Version 0.1.8 released, 0.1.9 opened for further work.
6100 * Version 0.1.8 released, 0.1.9 opened for further work.
6095
6101
6096 * Added magics pdef, source and file. They respectively show the
6102 * Added magics pdef, source and file. They respectively show the
6097 definition line ('prototype' in C), source code and full python
6103 definition line ('prototype' in C), source code and full python
6098 file for any callable object. The object inspector oinfo uses
6104 file for any callable object. The object inspector oinfo uses
6099 these to show the same information.
6105 these to show the same information.
6100
6106
6101 * Version 0.1.7 released, 0.1.8 opened for further work.
6107 * Version 0.1.7 released, 0.1.8 opened for further work.
6102
6108
6103 * Separated all the magic functions into a class called Magic. The
6109 * Separated all the magic functions into a class called Magic. The
6104 InteractiveShell class was becoming too big for Xemacs to handle
6110 InteractiveShell class was becoming too big for Xemacs to handle
6105 (de-indenting a line would lock it up for 10 seconds while it
6111 (de-indenting a line would lock it up for 10 seconds while it
6106 backtracked on the whole class!)
6112 backtracked on the whole class!)
6107
6113
6108 FIXME: didn't work. It can be done, but right now namespaces are
6114 FIXME: didn't work. It can be done, but right now namespaces are
6109 all messed up. Do it later (reverted it for now, so at least
6115 all messed up. Do it later (reverted it for now, so at least
6110 everything works as before).
6116 everything works as before).
6111
6117
6112 * Got the object introspection system (magic_oinfo) working! I
6118 * Got the object introspection system (magic_oinfo) working! I
6113 think this is pretty much ready for release to Janko, so he can
6119 think this is pretty much ready for release to Janko, so he can
6114 test it for a while and then announce it. Pretty much 100% of what
6120 test it for a while and then announce it. Pretty much 100% of what
6115 I wanted for the 'phase 1' release is ready. Happy, tired.
6121 I wanted for the 'phase 1' release is ready. Happy, tired.
6116
6122
6117 2001-11-12 Fernando Perez <fperez@colorado.edu>
6123 2001-11-12 Fernando Perez <fperez@colorado.edu>
6118
6124
6119 * Version 0.1.6 released, 0.1.7 opened for further work.
6125 * Version 0.1.6 released, 0.1.7 opened for further work.
6120
6126
6121 * Fixed bug in printing: it used to test for truth before
6127 * Fixed bug in printing: it used to test for truth before
6122 printing, so 0 wouldn't print. Now checks for None.
6128 printing, so 0 wouldn't print. Now checks for None.
6123
6129
6124 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6130 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6125 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6131 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6126 reaches by hand into the outputcache. Think of a better way to do
6132 reaches by hand into the outputcache. Think of a better way to do
6127 this later.
6133 this later.
6128
6134
6129 * Various small fixes thanks to Nathan's comments.
6135 * Various small fixes thanks to Nathan's comments.
6130
6136
6131 * Changed magic_pprint to magic_Pprint. This way it doesn't
6137 * Changed magic_pprint to magic_Pprint. This way it doesn't
6132 collide with pprint() and the name is consistent with the command
6138 collide with pprint() and the name is consistent with the command
6133 line option.
6139 line option.
6134
6140
6135 * Changed prompt counter behavior to be fully like
6141 * Changed prompt counter behavior to be fully like
6136 Mathematica's. That is, even input that doesn't return a result
6142 Mathematica's. That is, even input that doesn't return a result
6137 raises the prompt counter. The old behavior was kind of confusing
6143 raises the prompt counter. The old behavior was kind of confusing
6138 (getting the same prompt number several times if the operation
6144 (getting the same prompt number several times if the operation
6139 didn't return a result).
6145 didn't return a result).
6140
6146
6141 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6147 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6142
6148
6143 * Fixed -Classic mode (wasn't working anymore).
6149 * Fixed -Classic mode (wasn't working anymore).
6144
6150
6145 * Added colored prompts using Nathan's new code. Colors are
6151 * Added colored prompts using Nathan's new code. Colors are
6146 currently hardwired, they can be user-configurable. For
6152 currently hardwired, they can be user-configurable. For
6147 developers, they can be chosen in file ipythonlib.py, at the
6153 developers, they can be chosen in file ipythonlib.py, at the
6148 beginning of the CachedOutput class def.
6154 beginning of the CachedOutput class def.
6149
6155
6150 2001-11-11 Fernando Perez <fperez@colorado.edu>
6156 2001-11-11 Fernando Perez <fperez@colorado.edu>
6151
6157
6152 * Version 0.1.5 released, 0.1.6 opened for further work.
6158 * Version 0.1.5 released, 0.1.6 opened for further work.
6153
6159
6154 * Changed magic_env to *return* the environment as a dict (not to
6160 * Changed magic_env to *return* the environment as a dict (not to
6155 print it). This way it prints, but it can also be processed.
6161 print it). This way it prints, but it can also be processed.
6156
6162
6157 * Added Verbose exception reporting to interactive
6163 * Added Verbose exception reporting to interactive
6158 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6164 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6159 traceback. Had to make some changes to the ultraTB file. This is
6165 traceback. Had to make some changes to the ultraTB file. This is
6160 probably the last 'big' thing in my mental todo list. This ties
6166 probably the last 'big' thing in my mental todo list. This ties
6161 in with the next entry:
6167 in with the next entry:
6162
6168
6163 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6169 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6164 has to specify is Plain, Color or Verbose for all exception
6170 has to specify is Plain, Color or Verbose for all exception
6165 handling.
6171 handling.
6166
6172
6167 * Removed ShellServices option. All this can really be done via
6173 * Removed ShellServices option. All this can really be done via
6168 the magic system. It's easier to extend, cleaner and has automatic
6174 the magic system. It's easier to extend, cleaner and has automatic
6169 namespace protection and documentation.
6175 namespace protection and documentation.
6170
6176
6171 2001-11-09 Fernando Perez <fperez@colorado.edu>
6177 2001-11-09 Fernando Perez <fperez@colorado.edu>
6172
6178
6173 * Fixed bug in output cache flushing (missing parameter to
6179 * Fixed bug in output cache flushing (missing parameter to
6174 __init__). Other small bugs fixed (found using pychecker).
6180 __init__). Other small bugs fixed (found using pychecker).
6175
6181
6176 * Version 0.1.4 opened for bugfixing.
6182 * Version 0.1.4 opened for bugfixing.
6177
6183
6178 2001-11-07 Fernando Perez <fperez@colorado.edu>
6184 2001-11-07 Fernando Perez <fperez@colorado.edu>
6179
6185
6180 * Version 0.1.3 released, mainly because of the raw_input bug.
6186 * Version 0.1.3 released, mainly because of the raw_input bug.
6181
6187
6182 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6188 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6183 and when testing for whether things were callable, a call could
6189 and when testing for whether things were callable, a call could
6184 actually be made to certain functions. They would get called again
6190 actually be made to certain functions. They would get called again
6185 once 'really' executed, with a resulting double call. A disaster
6191 once 'really' executed, with a resulting double call. A disaster
6186 in many cases (list.reverse() would never work!).
6192 in many cases (list.reverse() would never work!).
6187
6193
6188 * Removed prefilter() function, moved its code to raw_input (which
6194 * Removed prefilter() function, moved its code to raw_input (which
6189 after all was just a near-empty caller for prefilter). This saves
6195 after all was just a near-empty caller for prefilter). This saves
6190 a function call on every prompt, and simplifies the class a tiny bit.
6196 a function call on every prompt, and simplifies the class a tiny bit.
6191
6197
6192 * Fix _ip to __ip name in magic example file.
6198 * Fix _ip to __ip name in magic example file.
6193
6199
6194 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6200 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6195 work with non-gnu versions of tar.
6201 work with non-gnu versions of tar.
6196
6202
6197 2001-11-06 Fernando Perez <fperez@colorado.edu>
6203 2001-11-06 Fernando Perez <fperez@colorado.edu>
6198
6204
6199 * Version 0.1.2. Just to keep track of the recent changes.
6205 * Version 0.1.2. Just to keep track of the recent changes.
6200
6206
6201 * Fixed nasty bug in output prompt routine. It used to check 'if
6207 * Fixed nasty bug in output prompt routine. It used to check 'if
6202 arg != None...'. Problem is, this fails if arg implements a
6208 arg != None...'. Problem is, this fails if arg implements a
6203 special comparison (__cmp__) which disallows comparing to
6209 special comparison (__cmp__) which disallows comparing to
6204 None. Found it when trying to use the PhysicalQuantity module from
6210 None. Found it when trying to use the PhysicalQuantity module from
6205 ScientificPython.
6211 ScientificPython.
6206
6212
6207 2001-11-05 Fernando Perez <fperez@colorado.edu>
6213 2001-11-05 Fernando Perez <fperez@colorado.edu>
6208
6214
6209 * Also added dirs. Now the pushd/popd/dirs family functions
6215 * Also added dirs. Now the pushd/popd/dirs family functions
6210 basically like the shell, with the added convenience of going home
6216 basically like the shell, with the added convenience of going home
6211 when called with no args.
6217 when called with no args.
6212
6218
6213 * pushd/popd slightly modified to mimic shell behavior more
6219 * pushd/popd slightly modified to mimic shell behavior more
6214 closely.
6220 closely.
6215
6221
6216 * Added env,pushd,popd from ShellServices as magic functions. I
6222 * Added env,pushd,popd from ShellServices as magic functions. I
6217 think the cleanest will be to port all desired functions from
6223 think the cleanest will be to port all desired functions from
6218 ShellServices as magics and remove ShellServices altogether. This
6224 ShellServices as magics and remove ShellServices altogether. This
6219 will provide a single, clean way of adding functionality
6225 will provide a single, clean way of adding functionality
6220 (shell-type or otherwise) to IP.
6226 (shell-type or otherwise) to IP.
6221
6227
6222 2001-11-04 Fernando Perez <fperez@colorado.edu>
6228 2001-11-04 Fernando Perez <fperez@colorado.edu>
6223
6229
6224 * Added .ipython/ directory to sys.path. This way users can keep
6230 * Added .ipython/ directory to sys.path. This way users can keep
6225 customizations there and access them via import.
6231 customizations there and access them via import.
6226
6232
6227 2001-11-03 Fernando Perez <fperez@colorado.edu>
6233 2001-11-03 Fernando Perez <fperez@colorado.edu>
6228
6234
6229 * Opened version 0.1.1 for new changes.
6235 * Opened version 0.1.1 for new changes.
6230
6236
6231 * Changed version number to 0.1.0: first 'public' release, sent to
6237 * Changed version number to 0.1.0: first 'public' release, sent to
6232 Nathan and Janko.
6238 Nathan and Janko.
6233
6239
6234 * Lots of small fixes and tweaks.
6240 * Lots of small fixes and tweaks.
6235
6241
6236 * Minor changes to whos format. Now strings are shown, snipped if
6242 * Minor changes to whos format. Now strings are shown, snipped if
6237 too long.
6243 too long.
6238
6244
6239 * Changed ShellServices to work on __main__ so they show up in @who
6245 * Changed ShellServices to work on __main__ so they show up in @who
6240
6246
6241 * Help also works with ? at the end of a line:
6247 * Help also works with ? at the end of a line:
6242 ?sin and sin?
6248 ?sin and sin?
6243 both produce the same effect. This is nice, as often I use the
6249 both produce the same effect. This is nice, as often I use the
6244 tab-complete to find the name of a method, but I used to then have
6250 tab-complete to find the name of a method, but I used to then have
6245 to go to the beginning of the line to put a ? if I wanted more
6251 to go to the beginning of the line to put a ? if I wanted more
6246 info. Now I can just add the ? and hit return. Convenient.
6252 info. Now I can just add the ? and hit return. Convenient.
6247
6253
6248 2001-11-02 Fernando Perez <fperez@colorado.edu>
6254 2001-11-02 Fernando Perez <fperez@colorado.edu>
6249
6255
6250 * Python version check (>=2.1) added.
6256 * Python version check (>=2.1) added.
6251
6257
6252 * Added LazyPython documentation. At this point the docs are quite
6258 * Added LazyPython documentation. At this point the docs are quite
6253 a mess. A cleanup is in order.
6259 a mess. A cleanup is in order.
6254
6260
6255 * Auto-installer created. For some bizarre reason, the zipfiles
6261 * Auto-installer created. For some bizarre reason, the zipfiles
6256 module isn't working on my system. So I made a tar version
6262 module isn't working on my system. So I made a tar version
6257 (hopefully the command line options in various systems won't kill
6263 (hopefully the command line options in various systems won't kill
6258 me).
6264 me).
6259
6265
6260 * Fixes to Struct in genutils. Now all dictionary-like methods are
6266 * Fixes to Struct in genutils. Now all dictionary-like methods are
6261 protected (reasonably).
6267 protected (reasonably).
6262
6268
6263 * Added pager function to genutils and changed ? to print usage
6269 * Added pager function to genutils and changed ? to print usage
6264 note through it (it was too long).
6270 note through it (it was too long).
6265
6271
6266 * Added the LazyPython functionality. Works great! I changed the
6272 * Added the LazyPython functionality. Works great! I changed the
6267 auto-quote escape to ';', it's on home row and next to '. But
6273 auto-quote escape to ';', it's on home row and next to '. But
6268 both auto-quote and auto-paren (still /) escapes are command-line
6274 both auto-quote and auto-paren (still /) escapes are command-line
6269 parameters.
6275 parameters.
6270
6276
6271
6277
6272 2001-11-01 Fernando Perez <fperez@colorado.edu>
6278 2001-11-01 Fernando Perez <fperez@colorado.edu>
6273
6279
6274 * Version changed to 0.0.7. Fairly large change: configuration now
6280 * Version changed to 0.0.7. Fairly large change: configuration now
6275 is all stored in a directory, by default .ipython. There, all
6281 is all stored in a directory, by default .ipython. There, all
6276 config files have normal looking names (not .names)
6282 config files have normal looking names (not .names)
6277
6283
6278 * Version 0.0.6 Released first to Lucas and Archie as a test
6284 * Version 0.0.6 Released first to Lucas and Archie as a test
6279 run. Since it's the first 'semi-public' release, change version to
6285 run. Since it's the first 'semi-public' release, change version to
6280 > 0.0.6 for any changes now.
6286 > 0.0.6 for any changes now.
6281
6287
6282 * Stuff I had put in the ipplib.py changelog:
6288 * Stuff I had put in the ipplib.py changelog:
6283
6289
6284 Changes to InteractiveShell:
6290 Changes to InteractiveShell:
6285
6291
6286 - Made the usage message a parameter.
6292 - Made the usage message a parameter.
6287
6293
6288 - Require the name of the shell variable to be given. It's a bit
6294 - Require the name of the shell variable to be given. It's a bit
6289 of a hack, but allows the name 'shell' not to be hardwired in the
6295 of a hack, but allows the name 'shell' not to be hardwired in the
6290 magic (@) handler, which is problematic b/c it requires
6296 magic (@) handler, which is problematic b/c it requires
6291 polluting the global namespace with 'shell'. This in turn is
6297 polluting the global namespace with 'shell'. This in turn is
6292 fragile: if a user redefines a variable called shell, things
6298 fragile: if a user redefines a variable called shell, things
6293 break.
6299 break.
6294
6300
6295 - magic @: all functions available through @ need to be defined
6301 - magic @: all functions available through @ need to be defined
6296 as magic_<name>, even though they can be called simply as
6302 as magic_<name>, even though they can be called simply as
6297 @<name>. This allows the special command @magic to gather
6303 @<name>. This allows the special command @magic to gather
6298 information automatically about all existing magic functions,
6304 information automatically about all existing magic functions,
6299 even if they are run-time user extensions, by parsing the shell
6305 even if they are run-time user extensions, by parsing the shell
6300 instance __dict__ looking for special magic_ names.
6306 instance __dict__ looking for special magic_ names.
6301
6307
6302 - mainloop: added *two* local namespace parameters. This allows
6308 - mainloop: added *two* local namespace parameters. This allows
6303 the class to differentiate between parameters which were there
6309 the class to differentiate between parameters which were there
6304 before and after command line initialization was processed. This
6310 before and after command line initialization was processed. This
6305 way, later @who can show things loaded at startup by the
6311 way, later @who can show things loaded at startup by the
6306 user. This trick was necessary to make session saving/reloading
6312 user. This trick was necessary to make session saving/reloading
6307 really work: ideally after saving/exiting/reloading a session,
6313 really work: ideally after saving/exiting/reloading a session,
6308 *everything* should look the same, including the output of @who. I
6314 *everything* should look the same, including the output of @who. I
6309 was only able to make this work with this double namespace
6315 was only able to make this work with this double namespace
6310 trick.
6316 trick.
6311
6317
6312 - added a header to the logfile which allows (almost) full
6318 - added a header to the logfile which allows (almost) full
6313 session restoring.
6319 session restoring.
6314
6320
6315 - prepend lines beginning with @ or !, with a and log
6321 - prepend lines beginning with @ or !, with a and log
6316 them. Why? !lines: may be useful to know what you did @lines:
6322 them. Why? !lines: may be useful to know what you did @lines:
6317 they may affect session state. So when restoring a session, at
6323 they may affect session state. So when restoring a session, at
6318 least inform the user of their presence. I couldn't quite get
6324 least inform the user of their presence. I couldn't quite get
6319 them to properly re-execute, but at least the user is warned.
6325 them to properly re-execute, but at least the user is warned.
6320
6326
6321 * Started ChangeLog.
6327 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now