##// END OF EJS Templates
Fix http://www.scipy.net/roundup/ipython/issue55, a threading bug. It was...
fperez -
Show More
@@ -1,955 +1,956 b''
1 # -*- 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 1079 2006-01-24 21:52:31Z vivainio $"""
7 $Id: Shell.py 1297 2006-05-13 19:14:48Z fperez $"""
8
8
9 #*****************************************************************************
9 #*****************************************************************************
10 # 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,user_global_ns=user_global_ns,
54 self.IP = make_IPython(argv,user_ns=user_ns,user_global_ns=user_global_ns,
55 debug=debug,shell_class=shell_class)
55 debug=debug,shell_class=shell_class)
56
56
57 def mainloop(self,sys_exit=0,banner=None):
57 def mainloop(self,sys_exit=0,banner=None):
58 self.IP.mainloop(banner)
58 self.IP.mainloop(banner)
59 if sys_exit:
59 if sys_exit:
60 sys.exit()
60 sys.exit()
61
61
62 #-----------------------------------------------------------------------------
62 #-----------------------------------------------------------------------------
63 class IPShellEmbed:
63 class IPShellEmbed:
64 """Allow embedding an IPython shell into a running program.
64 """Allow embedding an IPython shell into a running program.
65
65
66 Instances of this class are callable, with the __call__ method being an
66 Instances of this class are callable, with the __call__ method being an
67 alias to the embed() method of an InteractiveShell instance.
67 alias to the embed() method of an InteractiveShell instance.
68
68
69 Usage (see also the example-embed.py file for a running example):
69 Usage (see also the example-embed.py file for a running example):
70
70
71 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
71 ipshell = IPShellEmbed([argv,banner,exit_msg,rc_override])
72
72
73 - argv: list containing valid command-line options for IPython, as they
73 - argv: list containing valid command-line options for IPython, as they
74 would appear in sys.argv[1:].
74 would appear in sys.argv[1:].
75
75
76 For example, the following command-line options:
76 For example, the following command-line options:
77
77
78 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
78 $ ipython -prompt_in1 'Input <\\#>' -colors LightBG
79
79
80 would be passed in the argv list as:
80 would be passed in the argv list as:
81
81
82 ['-prompt_in1','Input <\\#>','-colors','LightBG']
82 ['-prompt_in1','Input <\\#>','-colors','LightBG']
83
83
84 - banner: string which gets printed every time the interpreter starts.
84 - banner: string which gets printed every time the interpreter starts.
85
85
86 - exit_msg: string which gets printed every time the interpreter exits.
86 - exit_msg: string which gets printed every time the interpreter exits.
87
87
88 - rc_override: a dict or Struct of configuration options such as those
88 - rc_override: a dict or Struct of configuration options such as those
89 used by IPython. These options are read from your ~/.ipython/ipythonrc
89 used by IPython. These options are read from your ~/.ipython/ipythonrc
90 file when the Shell object is created. Passing an explicit rc_override
90 file when the Shell object is created. Passing an explicit rc_override
91 dict with any options you want allows you to override those values at
91 dict with any options you want allows you to override those values at
92 creation time without having to modify the file. This way you can create
92 creation time without having to modify the file. This way you can create
93 embeddable instances configured in any way you want without editing any
93 embeddable instances configured in any way you want without editing any
94 global files (thus keeping your interactive IPython configuration
94 global files (thus keeping your interactive IPython configuration
95 unchanged).
95 unchanged).
96
96
97 Then the ipshell instance can be called anywhere inside your code:
97 Then the ipshell instance can be called anywhere inside your code:
98
98
99 ipshell(header='') -> Opens up an IPython shell.
99 ipshell(header='') -> Opens up an IPython shell.
100
100
101 - header: string printed by the IPython shell upon startup. This can let
101 - header: string printed by the IPython shell upon startup. This can let
102 you know where in your code you are when dropping into the shell. Note
102 you know where in your code you are when dropping into the shell. Note
103 that 'banner' gets prepended to all calls, so header is used for
103 that 'banner' gets prepended to all calls, so header is used for
104 location-specific information.
104 location-specific information.
105
105
106 For more details, see the __call__ method below.
106 For more details, see the __call__ method below.
107
107
108 When the IPython shell is exited with Ctrl-D, normal program execution
108 When the IPython shell is exited with Ctrl-D, normal program execution
109 resumes.
109 resumes.
110
110
111 This functionality was inspired by a posting on comp.lang.python by cmkl
111 This functionality was inspired by a posting on comp.lang.python by cmkl
112 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
112 <cmkleffner@gmx.de> on Dec. 06/01 concerning similar uses of pyrepl, and
113 by the IDL stop/continue commands."""
113 by the IDL stop/continue commands."""
114
114
115 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None):
115 def __init__(self,argv=None,banner='',exit_msg=None,rc_override=None):
116 """Note that argv here is a string, NOT a list."""
116 """Note that argv here is a string, NOT a list."""
117 self.set_banner(banner)
117 self.set_banner(banner)
118 self.set_exit_msg(exit_msg)
118 self.set_exit_msg(exit_msg)
119 self.set_dummy_mode(0)
119 self.set_dummy_mode(0)
120
120
121 # sys.displayhook is a global, we need to save the user's original
121 # sys.displayhook is a global, we need to save the user's original
122 # Don't rely on __displayhook__, as the user may have changed that.
122 # Don't rely on __displayhook__, as the user may have changed that.
123 self.sys_displayhook_ori = sys.displayhook
123 self.sys_displayhook_ori = sys.displayhook
124
124
125 # save readline completer status
125 # save readline completer status
126 try:
126 try:
127 #print 'Save completer',sys.ipcompleter # dbg
127 #print 'Save completer',sys.ipcompleter # dbg
128 self.sys_ipcompleter_ori = sys.ipcompleter
128 self.sys_ipcompleter_ori = sys.ipcompleter
129 except:
129 except:
130 pass # not nested with IPython
130 pass # not nested with IPython
131
131
132 # FIXME. Passing user_ns breaks namespace handling.
132 # FIXME. Passing user_ns breaks namespace handling.
133 #self.IP = make_IPython(argv,user_ns=__main__.__dict__)
133 #self.IP = make_IPython(argv,user_ns=__main__.__dict__)
134 self.IP = make_IPython(argv,rc_override=rc_override,embedded=True)
134 self.IP = make_IPython(argv,rc_override=rc_override,embedded=True)
135
135
136 # copy our own displayhook also
136 # copy our own displayhook also
137 self.sys_displayhook_embed = sys.displayhook
137 self.sys_displayhook_embed = sys.displayhook
138 # and leave the system's display hook clean
138 # and leave the system's display hook clean
139 sys.displayhook = self.sys_displayhook_ori
139 sys.displayhook = self.sys_displayhook_ori
140 # don't use the ipython crash handler so that user exceptions aren't
140 # don't use the ipython crash handler so that user exceptions aren't
141 # trapped
141 # trapped
142 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
142 sys.excepthook = ultraTB.FormattedTB(color_scheme = self.IP.rc.colors,
143 mode = self.IP.rc.xmode,
143 mode = self.IP.rc.xmode,
144 call_pdb = self.IP.rc.pdb)
144 call_pdb = self.IP.rc.pdb)
145 self.restore_system_completer()
145 self.restore_system_completer()
146
146
147 def restore_system_completer(self):
147 def restore_system_completer(self):
148 """Restores the readline completer which was in place.
148 """Restores the readline completer which was in place.
149
149
150 This allows embedded IPython within IPython not to disrupt the
150 This allows embedded IPython within IPython not to disrupt the
151 parent's completion.
151 parent's completion.
152 """
152 """
153
153
154 try:
154 try:
155 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
155 self.IP.readline.set_completer(self.sys_ipcompleter_ori)
156 sys.ipcompleter = self.sys_ipcompleter_ori
156 sys.ipcompleter = self.sys_ipcompleter_ori
157 except:
157 except:
158 pass
158 pass
159
159
160 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
160 def __call__(self,header='',local_ns=None,global_ns=None,dummy=None):
161 """Activate the interactive interpreter.
161 """Activate the interactive interpreter.
162
162
163 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
163 __call__(self,header='',local_ns=None,global_ns,dummy=None) -> Start
164 the interpreter shell with the given local and global namespaces, and
164 the interpreter shell with the given local and global namespaces, and
165 optionally print a header string at startup.
165 optionally print a header string at startup.
166
166
167 The shell can be globally activated/deactivated using the
167 The shell can be globally activated/deactivated using the
168 set/get_dummy_mode methods. This allows you to turn off a shell used
168 set/get_dummy_mode methods. This allows you to turn off a shell used
169 for debugging globally.
169 for debugging globally.
170
170
171 However, *each* time you call the shell you can override the current
171 However, *each* time you call the shell you can override the current
172 state of dummy_mode with the optional keyword parameter 'dummy'. For
172 state of dummy_mode with the optional keyword parameter 'dummy'. For
173 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
173 example, if you set dummy mode on with IPShell.set_dummy_mode(1), you
174 can still have a specific call work by making it as IPShell(dummy=0).
174 can still have a specific call work by making it as IPShell(dummy=0).
175
175
176 The optional keyword parameter dummy controls whether the call
176 The optional keyword parameter dummy controls whether the call
177 actually does anything. """
177 actually does anything. """
178
178
179 # Allow the dummy parameter to override the global __dummy_mode
179 # Allow the dummy parameter to override the global __dummy_mode
180 if dummy or (dummy != 0 and self.__dummy_mode):
180 if dummy or (dummy != 0 and self.__dummy_mode):
181 return
181 return
182
182
183 # Set global subsystems (display,completions) to our values
183 # Set global subsystems (display,completions) to our values
184 sys.displayhook = self.sys_displayhook_embed
184 sys.displayhook = self.sys_displayhook_embed
185 if self.IP.has_readline:
185 if self.IP.has_readline:
186 self.IP.readline.set_completer(self.IP.Completer.complete)
186 self.IP.readline.set_completer(self.IP.Completer.complete)
187
187
188 if self.banner and header:
188 if self.banner and header:
189 format = '%s\n%s\n'
189 format = '%s\n%s\n'
190 else:
190 else:
191 format = '%s%s\n'
191 format = '%s%s\n'
192 banner = format % (self.banner,header)
192 banner = format % (self.banner,header)
193
193
194 # Call the embedding code with a stack depth of 1 so it can skip over
194 # Call the embedding code with a stack depth of 1 so it can skip over
195 # our call and get the original caller's namespaces.
195 # our call and get the original caller's namespaces.
196 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
196 self.IP.embed_mainloop(banner,local_ns,global_ns,stack_depth=1)
197
197
198 if self.exit_msg:
198 if self.exit_msg:
199 print self.exit_msg
199 print self.exit_msg
200
200
201 # Restore global systems (display, completion)
201 # Restore global systems (display, completion)
202 sys.displayhook = self.sys_displayhook_ori
202 sys.displayhook = self.sys_displayhook_ori
203 self.restore_system_completer()
203 self.restore_system_completer()
204
204
205 def set_dummy_mode(self,dummy):
205 def set_dummy_mode(self,dummy):
206 """Sets the embeddable shell's dummy mode parameter.
206 """Sets the embeddable shell's dummy mode parameter.
207
207
208 set_dummy_mode(dummy): dummy = 0 or 1.
208 set_dummy_mode(dummy): dummy = 0 or 1.
209
209
210 This parameter is persistent and makes calls to the embeddable shell
210 This parameter is persistent and makes calls to the embeddable shell
211 silently return without performing any action. This allows you to
211 silently return without performing any action. This allows you to
212 globally activate or deactivate a shell you're using with a single call.
212 globally activate or deactivate a shell you're using with a single call.
213
213
214 If you need to manually"""
214 If you need to manually"""
215
215
216 if dummy not in [0,1,False,True]:
216 if dummy not in [0,1,False,True]:
217 raise ValueError,'dummy parameter must be boolean'
217 raise ValueError,'dummy parameter must be boolean'
218 self.__dummy_mode = dummy
218 self.__dummy_mode = dummy
219
219
220 def get_dummy_mode(self):
220 def get_dummy_mode(self):
221 """Return the current value of the dummy mode parameter.
221 """Return the current value of the dummy mode parameter.
222 """
222 """
223 return self.__dummy_mode
223 return self.__dummy_mode
224
224
225 def set_banner(self,banner):
225 def set_banner(self,banner):
226 """Sets the global banner.
226 """Sets the global banner.
227
227
228 This banner gets prepended to every header printed when the shell
228 This banner gets prepended to every header printed when the shell
229 instance is called."""
229 instance is called."""
230
230
231 self.banner = banner
231 self.banner = banner
232
232
233 def set_exit_msg(self,exit_msg):
233 def set_exit_msg(self,exit_msg):
234 """Sets the global exit_msg.
234 """Sets the global exit_msg.
235
235
236 This exit message gets printed upon exiting every time the embedded
236 This exit message gets printed upon exiting every time the embedded
237 shell is called. It is None by default. """
237 shell is called. It is None by default. """
238
238
239 self.exit_msg = exit_msg
239 self.exit_msg = exit_msg
240
240
241 #-----------------------------------------------------------------------------
241 #-----------------------------------------------------------------------------
242 def sigint_handler (signum,stack_frame):
242 def sigint_handler (signum,stack_frame):
243 """Sigint handler for threaded apps.
243 """Sigint handler for threaded apps.
244
244
245 This is a horrible hack to pass information about SIGINT _without_ using
245 This is a horrible hack to pass information about SIGINT _without_ using
246 exceptions, since I haven't been able to properly manage cross-thread
246 exceptions, since I haven't been able to properly manage cross-thread
247 exceptions in GTK/WX. In fact, I don't think it can be done (or at least
247 exceptions in GTK/WX. In fact, I don't think it can be done (or at least
248 that's my understanding from a c.l.py thread where this was discussed)."""
248 that's my understanding from a c.l.py thread where this was discussed)."""
249
249
250 global KBINT
250 global KBINT
251
251
252 print '\nKeyboardInterrupt - Press <Enter> to continue.',
252 print '\nKeyboardInterrupt - Press <Enter> to continue.',
253 Term.cout.flush()
253 Term.cout.flush()
254 # Set global flag so that runsource can know that Ctrl-C was hit
254 # Set global flag so that runsource can know that Ctrl-C was hit
255 KBINT = True
255 KBINT = True
256
256
257 class MTInteractiveShell(InteractiveShell):
257 class MTInteractiveShell(InteractiveShell):
258 """Simple multi-threaded shell."""
258 """Simple multi-threaded shell."""
259
259
260 # Threading strategy taken from:
260 # Threading strategy taken from:
261 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
261 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by Brian
262 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
262 # McErlean and John Finlay. Modified with corrections by Antoon Pardon,
263 # from the pygtk mailing list, to avoid lockups with system calls.
263 # from the pygtk mailing list, to avoid lockups with system calls.
264
264
265 # class attribute to indicate whether the class supports threads or not.
265 # class attribute to indicate whether the class supports threads or not.
266 # Subclasses with thread support should override this as needed.
266 # Subclasses with thread support should override this as needed.
267 isthreaded = True
267 isthreaded = True
268
268
269 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
269 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
270 user_ns=None,user_global_ns=None,banner2='',**kw):
270 user_ns=None,user_global_ns=None,banner2='',**kw):
271 """Similar to the normal InteractiveShell, but with threading control"""
271 """Similar to the normal InteractiveShell, but with threading control"""
272
272
273 InteractiveShell.__init__(self,name,usage,rc,user_ns,
273 InteractiveShell.__init__(self,name,usage,rc,user_ns,
274 user_global_ns,banner2)
274 user_global_ns,banner2)
275
275
276 # Locking control variable. We need to use a norma lock, not an RLock
276 # Locking control variable. We need to use a norma lock, not an RLock
277 # here. I'm not exactly sure why, it seems to me like it should be
277 # here. I'm not exactly sure why, it seems to me like it should be
278 # the opposite, but we deadlock with an RLock. Puzzled...
278 # the opposite, but we deadlock with an RLock. Puzzled...
279 self.thread_ready = threading.Condition(threading.Lock())
279 self.thread_ready = threading.Condition(threading.Lock())
280
280
281 # A queue to hold the code to be executed. A scalar variable is NOT
281 # A queue to hold the code to be executed. A scalar variable is NOT
282 # enough, because uses like macros cause reentrancy.
282 # enough, because uses like macros cause reentrancy.
283 self.code_queue = Queue.Queue()
283 self.code_queue = Queue.Queue()
284
284
285 # Stuff to do at closing time
285 # Stuff to do at closing time
286 self._kill = False
286 self._kill = False
287 on_kill = kw.get('on_kill')
287 on_kill = kw.get('on_kill')
288 if on_kill is None:
288 if on_kill is None:
289 on_kill = []
289 on_kill = []
290 # Check that all things to kill are callable:
290 # Check that all things to kill are callable:
291 for t in on_kill:
291 for t in on_kill:
292 if not callable(t):
292 if not callable(t):
293 raise TypeError,'on_kill must be a list of callables'
293 raise TypeError,'on_kill must be a list of callables'
294 self.on_kill = on_kill
294 self.on_kill = on_kill
295
295
296 def runsource(self, source, filename="<input>", symbol="single"):
296 def runsource(self, source, filename="<input>", symbol="single"):
297 """Compile and run some source in the interpreter.
297 """Compile and run some source in the interpreter.
298
298
299 Modified version of code.py's runsource(), to handle threading issues.
299 Modified version of code.py's runsource(), to handle threading issues.
300 See the original for full docstring details."""
300 See the original for full docstring details."""
301
301
302 global KBINT
302 global KBINT
303
303
304 # If Ctrl-C was typed, we reset the flag and return right away
304 # If Ctrl-C was typed, we reset the flag and return right away
305 if KBINT:
305 if KBINT:
306 KBINT = False
306 KBINT = False
307 return False
307 return False
308
308
309 try:
309 try:
310 code = self.compile(source, filename, symbol)
310 code = self.compile(source, filename, symbol)
311 except (OverflowError, SyntaxError, ValueError):
311 except (OverflowError, SyntaxError, ValueError):
312 # Case 1
312 # Case 1
313 self.showsyntaxerror(filename)
313 self.showsyntaxerror(filename)
314 return False
314 return False
315
315
316 if code is None:
316 if code is None:
317 # Case 2
317 # Case 2
318 return True
318 return True
319
319
320 # Case 3
320 # Case 3
321 # Store code in queue, so the execution thread can handle it.
321 # Store code in queue, so the execution thread can handle it.
322
322
323 # Note that with macros and other applications, we MAY re-enter this
323 # Note that with macros and other applications, we MAY re-enter this
324 # section, so we have to acquire the lock with non-blocking semantics,
324 # section, so we have to acquire the lock with non-blocking semantics,
325 # else we deadlock.
325 # else we deadlock.
326 got_lock = self.thread_ready.acquire(False)
326 got_lock = self.thread_ready.acquire(False)
327 self.code_queue.put(code)
327 self.code_queue.put(code)
328 if got_lock:
328 if got_lock:
329 self.thread_ready.wait() # Wait until processed in timeout interval
329 self.thread_ready.wait() # Wait until processed in timeout interval
330 self.thread_ready.release()
330 self.thread_ready.release()
331
331
332 return False
332 return False
333
333
334 def runcode(self):
334 def runcode(self):
335 """Execute a code object.
335 """Execute a code object.
336
336
337 Multithreaded wrapper around IPython's runcode()."""
337 Multithreaded wrapper around IPython's runcode()."""
338
338
339 # lock thread-protected stuff
339 # lock thread-protected stuff
340 self.thread_ready.acquire(False)
340 got_lock = self.thread_ready.acquire(False)
341
341
342 # Install sigint handler
342 # Install sigint handler
343 try:
343 try:
344 signal.signal(signal.SIGINT, sigint_handler)
344 signal.signal(signal.SIGINT, sigint_handler)
345 except SystemError:
345 except SystemError:
346 # This happens under Windows, which seems to have all sorts
346 # This happens under Windows, which seems to have all sorts
347 # of problems with signal handling. Oh well...
347 # of problems with signal handling. Oh well...
348 pass
348 pass
349
349
350 if self._kill:
350 if self._kill:
351 print >>Term.cout, 'Closing threads...',
351 print >>Term.cout, 'Closing threads...',
352 Term.cout.flush()
352 Term.cout.flush()
353 for tokill in self.on_kill:
353 for tokill in self.on_kill:
354 tokill()
354 tokill()
355 print >>Term.cout, 'Done.'
355 print >>Term.cout, 'Done.'
356
356
357 # Flush queue of pending code by calling the run methood of the parent
357 # Flush queue of pending code by calling the run methood of the parent
358 # class with all items which may be in the queue.
358 # class with all items which may be in the queue.
359 while 1:
359 while 1:
360 try:
360 try:
361 code_to_run = self.code_queue.get_nowait()
361 code_to_run = self.code_queue.get_nowait()
362 except Queue.Empty:
362 except Queue.Empty:
363 break
363 break
364 self.thread_ready.notify()
364 self.thread_ready.notify()
365 InteractiveShell.runcode(self,code_to_run)
365 InteractiveShell.runcode(self,code_to_run)
366
366
367 # We're done with thread-protected variables
367 # We're done with thread-protected variables
368 if got_lock:
368 self.thread_ready.release()
369 self.thread_ready.release()
369 # This MUST return true for gtk threading to work
370 # This MUST return true for gtk threading to work
370 return True
371 return True
371
372
372 def kill (self):
373 def kill (self):
373 """Kill the thread, returning when it has been shut down."""
374 """Kill the thread, returning when it has been shut down."""
374 self.thread_ready.acquire(False)
375 self.thread_ready.acquire(False)
375 self._kill = True
376 self._kill = True
376 self.thread_ready.release()
377 self.thread_ready.release()
377
378
378 class MatplotlibShellBase:
379 class MatplotlibShellBase:
379 """Mixin class to provide the necessary modifications to regular IPython
380 """Mixin class to provide the necessary modifications to regular IPython
380 shell classes for matplotlib support.
381 shell classes for matplotlib support.
381
382
382 Given Python's MRO, this should be used as the FIRST class in the
383 Given Python's MRO, this should be used as the FIRST class in the
383 inheritance hierarchy, so that it overrides the relevant methods."""
384 inheritance hierarchy, so that it overrides the relevant methods."""
384
385
385 def _matplotlib_config(self,name):
386 def _matplotlib_config(self,name):
386 """Return items needed to setup the user's shell with matplotlib"""
387 """Return items needed to setup the user's shell with matplotlib"""
387
388
388 # Initialize matplotlib to interactive mode always
389 # Initialize matplotlib to interactive mode always
389 import matplotlib
390 import matplotlib
390 from matplotlib import backends
391 from matplotlib import backends
391 matplotlib.interactive(True)
392 matplotlib.interactive(True)
392
393
393 def use(arg):
394 def use(arg):
394 """IPython wrapper for matplotlib's backend switcher.
395 """IPython wrapper for matplotlib's backend switcher.
395
396
396 In interactive use, we can not allow switching to a different
397 In interactive use, we can not allow switching to a different
397 interactive backend, since thread conflicts will most likely crash
398 interactive backend, since thread conflicts will most likely crash
398 the python interpreter. This routine does a safety check first,
399 the python interpreter. This routine does a safety check first,
399 and refuses to perform a dangerous switch. It still allows
400 and refuses to perform a dangerous switch. It still allows
400 switching to non-interactive backends."""
401 switching to non-interactive backends."""
401
402
402 if arg in backends.interactive_bk and arg != self.mpl_backend:
403 if arg in backends.interactive_bk and arg != self.mpl_backend:
403 m=('invalid matplotlib backend switch.\n'
404 m=('invalid matplotlib backend switch.\n'
404 'This script attempted to switch to the interactive '
405 'This script attempted to switch to the interactive '
405 'backend: `%s`\n'
406 'backend: `%s`\n'
406 'Your current choice of interactive backend is: `%s`\n\n'
407 'Your current choice of interactive backend is: `%s`\n\n'
407 'Switching interactive matplotlib backends at runtime\n'
408 'Switching interactive matplotlib backends at runtime\n'
408 'would crash the python interpreter, '
409 'would crash the python interpreter, '
409 'and IPython has blocked it.\n\n'
410 'and IPython has blocked it.\n\n'
410 'You need to either change your choice of matplotlib backend\n'
411 'You need to either change your choice of matplotlib backend\n'
411 'by editing your .matplotlibrc file, or run this script as a \n'
412 'by editing your .matplotlibrc file, or run this script as a \n'
412 'standalone file from the command line, not using IPython.\n' %
413 'standalone file from the command line, not using IPython.\n' %
413 (arg,self.mpl_backend) )
414 (arg,self.mpl_backend) )
414 raise RuntimeError, m
415 raise RuntimeError, m
415 else:
416 else:
416 self.mpl_use(arg)
417 self.mpl_use(arg)
417 self.mpl_use._called = True
418 self.mpl_use._called = True
418
419
419 self.matplotlib = matplotlib
420 self.matplotlib = matplotlib
420 self.mpl_backend = matplotlib.rcParams['backend']
421 self.mpl_backend = matplotlib.rcParams['backend']
421
422
422 # we also need to block switching of interactive backends by use()
423 # we also need to block switching of interactive backends by use()
423 self.mpl_use = matplotlib.use
424 self.mpl_use = matplotlib.use
424 self.mpl_use._called = False
425 self.mpl_use._called = False
425 # overwrite the original matplotlib.use with our wrapper
426 # overwrite the original matplotlib.use with our wrapper
426 matplotlib.use = use
427 matplotlib.use = use
427
428
428 # This must be imported last in the matplotlib series, after
429 # This must be imported last in the matplotlib series, after
429 # backend/interactivity choices have been made
430 # backend/interactivity choices have been made
430 try:
431 try:
431 import matplotlib.pylab as pylab
432 import matplotlib.pylab as pylab
432 self.pylab = pylab
433 self.pylab = pylab
433 self.pylab_name = 'pylab'
434 self.pylab_name = 'pylab'
434 except ImportError:
435 except ImportError:
435 import matplotlib.matlab as matlab
436 import matplotlib.matlab as matlab
436 self.pylab = matlab
437 self.pylab = matlab
437 self.pylab_name = 'matlab'
438 self.pylab_name = 'matlab'
438
439
439 self.pylab.show._needmain = False
440 self.pylab.show._needmain = False
440 # 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.
441 # 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.
442 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)
443
444
444 # Build a user namespace initialized with matplotlib/matlab features.
445 # Build a user namespace initialized with matplotlib/matlab features.
445 user_ns = {'__name__':'__main__',
446 user_ns = {'__name__':'__main__',
446 '__builtins__' : __builtin__ }
447 '__builtins__' : __builtin__ }
447
448
448 # Be careful not to remove the final \n in the code string below, or
449 # Be careful not to remove the final \n in the code string below, or
449 # things will break badly with py22 (I think it's a python bug, 2.3 is
450 # things will break badly with py22 (I think it's a python bug, 2.3 is
450 # OK).
451 # OK).
451 pname = self.pylab_name # Python can't interpolate dotted var names
452 pname = self.pylab_name # Python can't interpolate dotted var names
452 exec ("import matplotlib\n"
453 exec ("import matplotlib\n"
453 "import matplotlib.%(pname)s as %(pname)s\n"
454 "import matplotlib.%(pname)s as %(pname)s\n"
454 "from matplotlib.%(pname)s import *\n" % locals()) in user_ns
455 "from matplotlib.%(pname)s import *\n" % locals()) in user_ns
455
456
456 # Build matplotlib info banner
457 # Build matplotlib info banner
457 b="""
458 b="""
458 Welcome to pylab, a matplotlib-based Python environment.
459 Welcome to pylab, a matplotlib-based Python environment.
459 For more information, type 'help(pylab)'.
460 For more information, type 'help(pylab)'.
460 """
461 """
461 return user_ns,b
462 return user_ns,b
462
463
463 def mplot_exec(self,fname,*where,**kw):
464 def mplot_exec(self,fname,*where,**kw):
464 """Execute a matplotlib script.
465 """Execute a matplotlib script.
465
466
466 This is a call to execfile(), but wrapped in safeties to properly
467 This is a call to execfile(), but wrapped in safeties to properly
467 handle interactive rendering and backend switching."""
468 handle interactive rendering and backend switching."""
468
469
469 #print '*** Matplotlib runner ***' # dbg
470 #print '*** Matplotlib runner ***' # dbg
470 # turn off rendering until end of script
471 # turn off rendering until end of script
471 isInteractive = self.matplotlib.rcParams['interactive']
472 isInteractive = self.matplotlib.rcParams['interactive']
472 self.matplotlib.interactive(False)
473 self.matplotlib.interactive(False)
473 self.safe_execfile(fname,*where,**kw)
474 self.safe_execfile(fname,*where,**kw)
474 self.matplotlib.interactive(isInteractive)
475 self.matplotlib.interactive(isInteractive)
475 # make rendering call now, if the user tried to do it
476 # make rendering call now, if the user tried to do it
476 if self.pylab.draw_if_interactive.called:
477 if self.pylab.draw_if_interactive.called:
477 self.pylab.draw()
478 self.pylab.draw()
478 self.pylab.draw_if_interactive.called = False
479 self.pylab.draw_if_interactive.called = False
479
480
480 # if a backend switch was performed, reverse it now
481 # if a backend switch was performed, reverse it now
481 if self.mpl_use._called:
482 if self.mpl_use._called:
482 self.matplotlib.rcParams['backend'] = self.mpl_backend
483 self.matplotlib.rcParams['backend'] = self.mpl_backend
483
484
484 def magic_run(self,parameter_s=''):
485 def magic_run(self,parameter_s=''):
485 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
486 Magic.magic_run(self,parameter_s,runner=self.mplot_exec)
486
487
487 # Fix the docstring so users see the original as well
488 # Fix the docstring so users see the original as well
488 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
489 magic_run.__doc__ = "%s\n%s" % (Magic.magic_run.__doc__,
489 "\n *** Modified %run for Matplotlib,"
490 "\n *** Modified %run for Matplotlib,"
490 " with proper interactive handling ***")
491 " with proper interactive handling ***")
491
492
492 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
493 # Now we provide 2 versions of a matplotlib-aware IPython base shells, single
493 # and multithreaded. Note that these are meant for internal use, the IPShell*
494 # and multithreaded. Note that these are meant for internal use, the IPShell*
494 # classes below are the ones meant for public consumption.
495 # classes below are the ones meant for public consumption.
495
496
496 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
497 class MatplotlibShell(MatplotlibShellBase,InteractiveShell):
497 """Single-threaded shell with matplotlib support."""
498 """Single-threaded shell with matplotlib support."""
498
499
499 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
500 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
500 user_ns=None,user_global_ns=None,**kw):
501 user_ns=None,user_global_ns=None,**kw):
501 user_ns,b2 = self._matplotlib_config(name)
502 user_ns,b2 = self._matplotlib_config(name)
502 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
503 InteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
503 banner2=b2,**kw)
504 banner2=b2,**kw)
504
505
505 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
506 class MatplotlibMTShell(MatplotlibShellBase,MTInteractiveShell):
506 """Multi-threaded shell with matplotlib support."""
507 """Multi-threaded shell with matplotlib support."""
507
508
508 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
509 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
509 user_ns=None,user_global_ns=None, **kw):
510 user_ns=None,user_global_ns=None, **kw):
510 user_ns,b2 = self._matplotlib_config(name)
511 user_ns,b2 = self._matplotlib_config(name)
511 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
512 MTInteractiveShell.__init__(self,name,usage,rc,user_ns,user_global_ns,
512 banner2=b2,**kw)
513 banner2=b2,**kw)
513
514
514 #-----------------------------------------------------------------------------
515 #-----------------------------------------------------------------------------
515 # Utility functions for the different GUI enabled IPShell* classes.
516 # Utility functions for the different GUI enabled IPShell* classes.
516
517
517 def get_tk():
518 def get_tk():
518 """Tries to import Tkinter and returns a withdrawn Tkinter root
519 """Tries to import Tkinter and returns a withdrawn Tkinter root
519 window. If Tkinter is already imported or not available, this
520 window. If Tkinter is already imported or not available, this
520 returns None. This function calls `hijack_tk` underneath.
521 returns None. This function calls `hijack_tk` underneath.
521 """
522 """
522 if not USE_TK or sys.modules.has_key('Tkinter'):
523 if not USE_TK or sys.modules.has_key('Tkinter'):
523 return None
524 return None
524 else:
525 else:
525 try:
526 try:
526 import Tkinter
527 import Tkinter
527 except ImportError:
528 except ImportError:
528 return None
529 return None
529 else:
530 else:
530 hijack_tk()
531 hijack_tk()
531 r = Tkinter.Tk()
532 r = Tkinter.Tk()
532 r.withdraw()
533 r.withdraw()
533 return r
534 return r
534
535
535 def hijack_tk():
536 def hijack_tk():
536 """Modifies Tkinter's mainloop with a dummy so when a module calls
537 """Modifies Tkinter's mainloop with a dummy so when a module calls
537 mainloop, it does not block.
538 mainloop, it does not block.
538
539
539 """
540 """
540 def misc_mainloop(self, n=0):
541 def misc_mainloop(self, n=0):
541 pass
542 pass
542 def tkinter_mainloop(n=0):
543 def tkinter_mainloop(n=0):
543 pass
544 pass
544
545
545 import Tkinter
546 import Tkinter
546 Tkinter.Misc.mainloop = misc_mainloop
547 Tkinter.Misc.mainloop = misc_mainloop
547 Tkinter.mainloop = tkinter_mainloop
548 Tkinter.mainloop = tkinter_mainloop
548
549
549 def update_tk(tk):
550 def update_tk(tk):
550 """Updates the Tkinter event loop. This is typically called from
551 """Updates the Tkinter event loop. This is typically called from
551 the respective WX or GTK mainloops.
552 the respective WX or GTK mainloops.
552 """
553 """
553 if tk:
554 if tk:
554 tk.update()
555 tk.update()
555
556
556 def hijack_wx():
557 def hijack_wx():
557 """Modifies wxPython's MainLoop with a dummy so user code does not
558 """Modifies wxPython's MainLoop with a dummy so user code does not
558 block IPython. The hijacked mainloop function is returned.
559 block IPython. The hijacked mainloop function is returned.
559 """
560 """
560 def dummy_mainloop(*args, **kw):
561 def dummy_mainloop(*args, **kw):
561 pass
562 pass
562 import wxPython
563 import wxPython
563 ver = wxPython.__version__
564 ver = wxPython.__version__
564 orig_mainloop = None
565 orig_mainloop = None
565 if ver[:3] >= '2.5':
566 if ver[:3] >= '2.5':
566 import wx
567 import wx
567 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
568 if hasattr(wx, '_core_'): core = getattr(wx, '_core_')
568 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
569 elif hasattr(wx, '_core'): core = getattr(wx, '_core')
569 else: raise AttributeError('Could not find wx core module')
570 else: raise AttributeError('Could not find wx core module')
570 orig_mainloop = core.PyApp_MainLoop
571 orig_mainloop = core.PyApp_MainLoop
571 core.PyApp_MainLoop = dummy_mainloop
572 core.PyApp_MainLoop = dummy_mainloop
572 elif ver[:3] == '2.4':
573 elif ver[:3] == '2.4':
573 orig_mainloop = wxPython.wxc.wxPyApp_MainLoop
574 orig_mainloop = wxPython.wxc.wxPyApp_MainLoop
574 wxPython.wxc.wxPyApp_MainLoop = dummy_mainloop
575 wxPython.wxc.wxPyApp_MainLoop = dummy_mainloop
575 else:
576 else:
576 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
577 warn("Unable to find either wxPython version 2.4 or >= 2.5.")
577 return orig_mainloop
578 return orig_mainloop
578
579
579 def hijack_gtk():
580 def hijack_gtk():
580 """Modifies pyGTK's mainloop with a dummy so user code does not
581 """Modifies pyGTK's mainloop with a dummy so user code does not
581 block IPython. This function returns the original `gtk.mainloop`
582 block IPython. This function returns the original `gtk.mainloop`
582 function that has been hijacked.
583 function that has been hijacked.
583 """
584 """
584 def dummy_mainloop(*args, **kw):
585 def dummy_mainloop(*args, **kw):
585 pass
586 pass
586 import gtk
587 import gtk
587 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
588 if gtk.pygtk_version >= (2,4,0): orig_mainloop = gtk.main
588 else: orig_mainloop = gtk.mainloop
589 else: orig_mainloop = gtk.mainloop
589 gtk.mainloop = dummy_mainloop
590 gtk.mainloop = dummy_mainloop
590 gtk.main = dummy_mainloop
591 gtk.main = dummy_mainloop
591 return orig_mainloop
592 return orig_mainloop
592
593
593 #-----------------------------------------------------------------------------
594 #-----------------------------------------------------------------------------
594 # The IPShell* classes below are the ones meant to be run by external code as
595 # The IPShell* classes below are the ones meant to be run by external code as
595 # IPython instances. Note that unless a specific threading strategy is
596 # IPython instances. Note that unless a specific threading strategy is
596 # desired, the factory function start() below should be used instead (it
597 # desired, the factory function start() below should be used instead (it
597 # selects the proper threaded class).
598 # selects the proper threaded class).
598
599
599 class IPShellGTK(threading.Thread):
600 class IPShellGTK(threading.Thread):
600 """Run a gtk mainloop() in a separate thread.
601 """Run a gtk mainloop() in a separate thread.
601
602
602 Python commands can be passed to the thread where they will be executed.
603 Python commands can be passed to the thread where they will be executed.
603 This is implemented by periodically checking for passed code using a
604 This is implemented by periodically checking for passed code using a
604 GTK timeout callback."""
605 GTK timeout callback."""
605
606
606 TIMEOUT = 100 # Millisecond interval between timeouts.
607 TIMEOUT = 100 # Millisecond interval between timeouts.
607
608
608 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
609 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
609 debug=1,shell_class=MTInteractiveShell):
610 debug=1,shell_class=MTInteractiveShell):
610
611
611 import gtk
612 import gtk
612
613
613 self.gtk = gtk
614 self.gtk = gtk
614 self.gtk_mainloop = hijack_gtk()
615 self.gtk_mainloop = hijack_gtk()
615
616
616 # Allows us to use both Tk and GTK.
617 # Allows us to use both Tk and GTK.
617 self.tk = get_tk()
618 self.tk = get_tk()
618
619
619 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
620 if gtk.pygtk_version >= (2,4,0): mainquit = self.gtk.main_quit
620 else: mainquit = self.gtk.mainquit
621 else: mainquit = self.gtk.mainquit
621
622
622 self.IP = make_IPython(argv,user_ns=user_ns,
623 self.IP = make_IPython(argv,user_ns=user_ns,
623 user_global_ns=user_global_ns,
624 user_global_ns=user_global_ns,
624 debug=debug,
625 debug=debug,
625 shell_class=shell_class,
626 shell_class=shell_class,
626 on_kill=[mainquit])
627 on_kill=[mainquit])
627
628
628 # HACK: slot for banner in self; it will be passed to the mainloop
629 # HACK: slot for banner in self; it will be passed to the mainloop
629 # method only and .run() needs it. The actual value will be set by
630 # method only and .run() needs it. The actual value will be set by
630 # .mainloop().
631 # .mainloop().
631 self._banner = None
632 self._banner = None
632
633
633 threading.Thread.__init__(self)
634 threading.Thread.__init__(self)
634
635
635 def run(self):
636 def run(self):
636 self.IP.mainloop(self._banner)
637 self.IP.mainloop(self._banner)
637 self.IP.kill()
638 self.IP.kill()
638
639
639 def mainloop(self,sys_exit=0,banner=None):
640 def mainloop(self,sys_exit=0,banner=None):
640
641
641 self._banner = banner
642 self._banner = banner
642
643
643 if self.gtk.pygtk_version >= (2,4,0):
644 if self.gtk.pygtk_version >= (2,4,0):
644 import gobject
645 import gobject
645 gobject.idle_add(self.on_timer)
646 gobject.idle_add(self.on_timer)
646 else:
647 else:
647 self.gtk.idle_add(self.on_timer)
648 self.gtk.idle_add(self.on_timer)
648
649
649 if sys.platform != 'win32':
650 if sys.platform != 'win32':
650 try:
651 try:
651 if self.gtk.gtk_version[0] >= 2:
652 if self.gtk.gtk_version[0] >= 2:
652 self.gtk.threads_init()
653 self.gtk.threads_init()
653 except AttributeError:
654 except AttributeError:
654 pass
655 pass
655 except RuntimeError:
656 except RuntimeError:
656 error('Your pyGTK likely has not been compiled with '
657 error('Your pyGTK likely has not been compiled with '
657 'threading support.\n'
658 'threading support.\n'
658 'The exception printout is below.\n'
659 'The exception printout is below.\n'
659 'You can either rebuild pyGTK with threads, or '
660 'You can either rebuild pyGTK with threads, or '
660 'try using \n'
661 'try using \n'
661 'matplotlib with a different backend (like Tk or WX).\n'
662 'matplotlib with a different backend (like Tk or WX).\n'
662 'Note that matplotlib will most likely not work in its '
663 'Note that matplotlib will most likely not work in its '
663 'current state!')
664 'current state!')
664 self.IP.InteractiveTB()
665 self.IP.InteractiveTB()
665 self.start()
666 self.start()
666 self.gtk.threads_enter()
667 self.gtk.threads_enter()
667 self.gtk_mainloop()
668 self.gtk_mainloop()
668 self.gtk.threads_leave()
669 self.gtk.threads_leave()
669 self.join()
670 self.join()
670
671
671 def on_timer(self):
672 def on_timer(self):
672 """Called when GTK is idle.
673 """Called when GTK is idle.
673
674
674 Must return True always, otherwise GTK stops calling it"""
675 Must return True always, otherwise GTK stops calling it"""
675
676
676 update_tk(self.tk)
677 update_tk(self.tk)
677 self.IP.runcode()
678 self.IP.runcode()
678 time.sleep(0.01)
679 time.sleep(0.01)
679 return True
680 return True
680
681
681 class IPShellWX(threading.Thread):
682 class IPShellWX(threading.Thread):
682 """Run a wx mainloop() in a separate thread.
683 """Run a wx mainloop() in a separate thread.
683
684
684 Python commands can be passed to the thread where they will be executed.
685 Python commands can be passed to the thread where they will be executed.
685 This is implemented by periodically checking for passed code using a
686 This is implemented by periodically checking for passed code using a
686 GTK timeout callback."""
687 GTK timeout callback."""
687
688
688 TIMEOUT = 100 # Millisecond interval between timeouts.
689 TIMEOUT = 100 # Millisecond interval between timeouts.
689
690
690 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
691 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
691 debug=1,shell_class=MTInteractiveShell):
692 debug=1,shell_class=MTInteractiveShell):
692
693
693 self.IP = make_IPython(argv,user_ns=user_ns,
694 self.IP = make_IPython(argv,user_ns=user_ns,
694 user_global_ns=user_global_ns,
695 user_global_ns=user_global_ns,
695 debug=debug,
696 debug=debug,
696 shell_class=shell_class,
697 shell_class=shell_class,
697 on_kill=[self.wxexit])
698 on_kill=[self.wxexit])
698
699
699 wantedwxversion=self.IP.rc.wxversion
700 wantedwxversion=self.IP.rc.wxversion
700 if wantedwxversion!="0":
701 if wantedwxversion!="0":
701 try:
702 try:
702 import wxversion
703 import wxversion
703 except ImportError:
704 except ImportError:
704 error('The wxversion module is needed for WX version selection')
705 error('The wxversion module is needed for WX version selection')
705 else:
706 else:
706 try:
707 try:
707 wxversion.select(wantedwxversion)
708 wxversion.select(wantedwxversion)
708 except:
709 except:
709 self.IP.InteractiveTB()
710 self.IP.InteractiveTB()
710 error('Requested wxPython version %s could not be loaded' %
711 error('Requested wxPython version %s could not be loaded' %
711 wantedwxversion)
712 wantedwxversion)
712
713
713 import wxPython.wx as wx
714 import wxPython.wx as wx
714
715
715 threading.Thread.__init__(self)
716 threading.Thread.__init__(self)
716 self.wx = wx
717 self.wx = wx
717 self.wx_mainloop = hijack_wx()
718 self.wx_mainloop = hijack_wx()
718
719
719 # Allows us to use both Tk and GTK.
720 # Allows us to use both Tk and GTK.
720 self.tk = get_tk()
721 self.tk = get_tk()
721
722
722
723
723 # HACK: slot for banner in self; it will be passed to the mainloop
724 # HACK: slot for banner in self; it will be passed to the mainloop
724 # method only and .run() needs it. The actual value will be set by
725 # method only and .run() needs it. The actual value will be set by
725 # .mainloop().
726 # .mainloop().
726 self._banner = None
727 self._banner = None
727
728
728 self.app = None
729 self.app = None
729
730
730 def wxexit(self, *args):
731 def wxexit(self, *args):
731 if self.app is not None:
732 if self.app is not None:
732 self.app.agent.timer.Stop()
733 self.app.agent.timer.Stop()
733 self.app.ExitMainLoop()
734 self.app.ExitMainLoop()
734
735
735 def run(self):
736 def run(self):
736 self.IP.mainloop(self._banner)
737 self.IP.mainloop(self._banner)
737 self.IP.kill()
738 self.IP.kill()
738
739
739 def mainloop(self,sys_exit=0,banner=None):
740 def mainloop(self,sys_exit=0,banner=None):
740
741
741 self._banner = banner
742 self._banner = banner
742
743
743 self.start()
744 self.start()
744
745
745 class TimerAgent(self.wx.wxMiniFrame):
746 class TimerAgent(self.wx.wxMiniFrame):
746 wx = self.wx
747 wx = self.wx
747 IP = self.IP
748 IP = self.IP
748 tk = self.tk
749 tk = self.tk
749 def __init__(self, parent, interval):
750 def __init__(self, parent, interval):
750 style = self.wx.wxDEFAULT_FRAME_STYLE | self.wx.wxTINY_CAPTION_HORIZ
751 style = self.wx.wxDEFAULT_FRAME_STYLE | self.wx.wxTINY_CAPTION_HORIZ
751 self.wx.wxMiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
752 self.wx.wxMiniFrame.__init__(self, parent, -1, ' ', pos=(200, 200),
752 size=(100, 100),style=style)
753 size=(100, 100),style=style)
753 self.Show(False)
754 self.Show(False)
754 self.interval = interval
755 self.interval = interval
755 self.timerId = self.wx.wxNewId()
756 self.timerId = self.wx.wxNewId()
756
757
757 def StartWork(self):
758 def StartWork(self):
758 self.timer = self.wx.wxTimer(self, self.timerId)
759 self.timer = self.wx.wxTimer(self, self.timerId)
759 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
760 self.wx.EVT_TIMER(self, self.timerId, self.OnTimer)
760 self.timer.Start(self.interval)
761 self.timer.Start(self.interval)
761
762
762 def OnTimer(self, event):
763 def OnTimer(self, event):
763 update_tk(self.tk)
764 update_tk(self.tk)
764 self.IP.runcode()
765 self.IP.runcode()
765
766
766 class App(self.wx.wxApp):
767 class App(self.wx.wxApp):
767 wx = self.wx
768 wx = self.wx
768 TIMEOUT = self.TIMEOUT
769 TIMEOUT = self.TIMEOUT
769 def OnInit(self):
770 def OnInit(self):
770 'Create the main window and insert the custom frame'
771 'Create the main window and insert the custom frame'
771 self.agent = TimerAgent(None, self.TIMEOUT)
772 self.agent = TimerAgent(None, self.TIMEOUT)
772 self.agent.Show(self.wx.false)
773 self.agent.Show(self.wx.false)
773 self.agent.StartWork()
774 self.agent.StartWork()
774 return self.wx.true
775 return self.wx.true
775
776
776 self.app = App(redirect=False)
777 self.app = App(redirect=False)
777 self.wx_mainloop(self.app)
778 self.wx_mainloop(self.app)
778 self.join()
779 self.join()
779
780
780
781
781 class IPShellQt(threading.Thread):
782 class IPShellQt(threading.Thread):
782 """Run a Qt event loop in a separate thread.
783 """Run a Qt event loop in a separate thread.
783
784
784 Python commands can be passed to the thread where they will be executed.
785 Python commands can be passed to the thread where they will be executed.
785 This is implemented by periodically checking for passed code using a
786 This is implemented by periodically checking for passed code using a
786 Qt timer / slot."""
787 Qt timer / slot."""
787
788
788 TIMEOUT = 100 # Millisecond interval between timeouts.
789 TIMEOUT = 100 # Millisecond interval between timeouts.
789
790
790 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
791 def __init__(self,argv=None,user_ns=None,user_global_ns=None,
791 debug=0,shell_class=MTInteractiveShell):
792 debug=0,shell_class=MTInteractiveShell):
792
793
793 import qt
794 import qt
794
795
795 class newQApplication:
796 class newQApplication:
796 def __init__( self ):
797 def __init__( self ):
797 self.QApplication = qt.QApplication
798 self.QApplication = qt.QApplication
798
799
799 def __call__( *args, **kwargs ):
800 def __call__( *args, **kwargs ):
800 return qt.qApp
801 return qt.qApp
801
802
802 def exec_loop( *args, **kwargs ):
803 def exec_loop( *args, **kwargs ):
803 pass
804 pass
804
805
805 def __getattr__( self, name ):
806 def __getattr__( self, name ):
806 return getattr( self.QApplication, name )
807 return getattr( self.QApplication, name )
807
808
808 qt.QApplication = newQApplication()
809 qt.QApplication = newQApplication()
809
810
810 # Allows us to use both Tk and QT.
811 # Allows us to use both Tk and QT.
811 self.tk = get_tk()
812 self.tk = get_tk()
812
813
813 self.IP = make_IPython(argv,user_ns=user_ns,
814 self.IP = make_IPython(argv,user_ns=user_ns,
814 user_global_ns=user_global_ns,
815 user_global_ns=user_global_ns,
815 debug=debug,
816 debug=debug,
816 shell_class=shell_class,
817 shell_class=shell_class,
817 on_kill=[qt.qApp.exit])
818 on_kill=[qt.qApp.exit])
818
819
819 # HACK: slot for banner in self; it will be passed to the mainloop
820 # HACK: slot for banner in self; it will be passed to the mainloop
820 # method only and .run() needs it. The actual value will be set by
821 # method only and .run() needs it. The actual value will be set by
821 # .mainloop().
822 # .mainloop().
822 self._banner = None
823 self._banner = None
823
824
824 threading.Thread.__init__(self)
825 threading.Thread.__init__(self)
825
826
826 def run(self):
827 def run(self):
827 self.IP.mainloop(self._banner)
828 self.IP.mainloop(self._banner)
828 self.IP.kill()
829 self.IP.kill()
829
830
830 def mainloop(self,sys_exit=0,banner=None):
831 def mainloop(self,sys_exit=0,banner=None):
831
832
832 import qt
833 import qt
833
834
834 self._banner = banner
835 self._banner = banner
835
836
836 if qt.QApplication.startingUp():
837 if qt.QApplication.startingUp():
837 a = qt.QApplication.QApplication(sys.argv)
838 a = qt.QApplication.QApplication(sys.argv)
838 self.timer = qt.QTimer()
839 self.timer = qt.QTimer()
839 qt.QObject.connect( self.timer, qt.SIGNAL( 'timeout()' ), self.on_timer )
840 qt.QObject.connect( self.timer, qt.SIGNAL( 'timeout()' ), self.on_timer )
840
841
841 self.start()
842 self.start()
842 self.timer.start( self.TIMEOUT, True )
843 self.timer.start( self.TIMEOUT, True )
843 while True:
844 while True:
844 if self.IP._kill: break
845 if self.IP._kill: break
845 qt.qApp.exec_loop()
846 qt.qApp.exec_loop()
846 self.join()
847 self.join()
847
848
848 def on_timer(self):
849 def on_timer(self):
849 update_tk(self.tk)
850 update_tk(self.tk)
850 result = self.IP.runcode()
851 result = self.IP.runcode()
851 self.timer.start( self.TIMEOUT, True )
852 self.timer.start( self.TIMEOUT, True )
852 return result
853 return result
853
854
854 # A set of matplotlib public IPython shell classes, for single-threaded
855 # A set of matplotlib public IPython shell classes, for single-threaded
855 # (Tk* and FLTK* backends) and multithreaded (GTK* and WX* backends) use.
856 # (Tk* and FLTK* backends) and multithreaded (GTK* and WX* backends) use.
856 class IPShellMatplotlib(IPShell):
857 class IPShellMatplotlib(IPShell):
857 """Subclass IPShell with MatplotlibShell as the internal shell.
858 """Subclass IPShell with MatplotlibShell as the internal shell.
858
859
859 Single-threaded class, meant for the Tk* and FLTK* backends.
860 Single-threaded class, meant for the Tk* and FLTK* backends.
860
861
861 Having this on a separate class simplifies the external driver code."""
862 Having this on a separate class simplifies the external driver code."""
862
863
863 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
864 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
864 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
865 IPShell.__init__(self,argv,user_ns,user_global_ns,debug,
865 shell_class=MatplotlibShell)
866 shell_class=MatplotlibShell)
866
867
867 class IPShellMatplotlibGTK(IPShellGTK):
868 class IPShellMatplotlibGTK(IPShellGTK):
868 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
869 """Subclass IPShellGTK with MatplotlibMTShell as the internal shell.
869
870
870 Multi-threaded class, meant for the GTK* backends."""
871 Multi-threaded class, meant for the GTK* backends."""
871
872
872 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
873 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
873 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
874 IPShellGTK.__init__(self,argv,user_ns,user_global_ns,debug,
874 shell_class=MatplotlibMTShell)
875 shell_class=MatplotlibMTShell)
875
876
876 class IPShellMatplotlibWX(IPShellWX):
877 class IPShellMatplotlibWX(IPShellWX):
877 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
878 """Subclass IPShellWX with MatplotlibMTShell as the internal shell.
878
879
879 Multi-threaded class, meant for the WX* backends."""
880 Multi-threaded class, meant for the WX* backends."""
880
881
881 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
882 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
882 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
883 IPShellWX.__init__(self,argv,user_ns,user_global_ns,debug,
883 shell_class=MatplotlibMTShell)
884 shell_class=MatplotlibMTShell)
884
885
885 class IPShellMatplotlibQt(IPShellQt):
886 class IPShellMatplotlibQt(IPShellQt):
886 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
887 """Subclass IPShellQt with MatplotlibMTShell as the internal shell.
887
888
888 Multi-threaded class, meant for the Qt* backends."""
889 Multi-threaded class, meant for the Qt* backends."""
889
890
890 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
891 def __init__(self,argv=None,user_ns=None,user_global_ns=None,debug=1):
891 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
892 IPShellQt.__init__(self,argv,user_ns,user_global_ns,debug,
892 shell_class=MatplotlibMTShell)
893 shell_class=MatplotlibMTShell)
893
894
894 #-----------------------------------------------------------------------------
895 #-----------------------------------------------------------------------------
895 # Factory functions to actually start the proper thread-aware shell
896 # Factory functions to actually start the proper thread-aware shell
896
897
897 def _matplotlib_shell_class():
898 def _matplotlib_shell_class():
898 """Factory function to handle shell class selection for matplotlib.
899 """Factory function to handle shell class selection for matplotlib.
899
900
900 The proper shell class to use depends on the matplotlib backend, since
901 The proper shell class to use depends on the matplotlib backend, since
901 each backend requires a different threading strategy."""
902 each backend requires a different threading strategy."""
902
903
903 try:
904 try:
904 import matplotlib
905 import matplotlib
905 except ImportError:
906 except ImportError:
906 error('matplotlib could NOT be imported! Starting normal IPython.')
907 error('matplotlib could NOT be imported! Starting normal IPython.')
907 sh_class = IPShell
908 sh_class = IPShell
908 else:
909 else:
909 backend = matplotlib.rcParams['backend']
910 backend = matplotlib.rcParams['backend']
910 if backend.startswith('GTK'):
911 if backend.startswith('GTK'):
911 sh_class = IPShellMatplotlibGTK
912 sh_class = IPShellMatplotlibGTK
912 elif backend.startswith('WX'):
913 elif backend.startswith('WX'):
913 sh_class = IPShellMatplotlibWX
914 sh_class = IPShellMatplotlibWX
914 elif backend.startswith('Qt'):
915 elif backend.startswith('Qt'):
915 sh_class = IPShellMatplotlibQt
916 sh_class = IPShellMatplotlibQt
916 else:
917 else:
917 sh_class = IPShellMatplotlib
918 sh_class = IPShellMatplotlib
918 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
919 #print 'Using %s with the %s backend.' % (sh_class,backend) # dbg
919 return sh_class
920 return sh_class
920
921
921 # This is the one which should be called by external code.
922 # This is the one which should be called by external code.
922 def start(user_ns = None):
923 def start(user_ns = None):
923 """Return a running shell instance, dealing with threading options.
924 """Return a running shell instance, dealing with threading options.
924
925
925 This is a factory function which will instantiate the proper IPython shell
926 This is a factory function which will instantiate the proper IPython shell
926 based on the user's threading choice. Such a selector is needed because
927 based on the user's threading choice. Such a selector is needed because
927 different GUI toolkits require different thread handling details."""
928 different GUI toolkits require different thread handling details."""
928
929
929 global USE_TK
930 global USE_TK
930 # Crude sys.argv hack to extract the threading options.
931 # Crude sys.argv hack to extract the threading options.
931 argv = sys.argv
932 argv = sys.argv
932 if len(argv) > 1:
933 if len(argv) > 1:
933 if len(argv) > 2:
934 if len(argv) > 2:
934 arg2 = argv[2]
935 arg2 = argv[2]
935 if arg2.endswith('-tk'):
936 if arg2.endswith('-tk'):
936 USE_TK = True
937 USE_TK = True
937 arg1 = argv[1]
938 arg1 = argv[1]
938 if arg1.endswith('-gthread'):
939 if arg1.endswith('-gthread'):
939 shell = IPShellGTK
940 shell = IPShellGTK
940 elif arg1.endswith( '-qthread' ):
941 elif arg1.endswith( '-qthread' ):
941 shell = IPShellQt
942 shell = IPShellQt
942 elif arg1.endswith('-wthread'):
943 elif arg1.endswith('-wthread'):
943 shell = IPShellWX
944 shell = IPShellWX
944 elif arg1.endswith('-pylab'):
945 elif arg1.endswith('-pylab'):
945 shell = _matplotlib_shell_class()
946 shell = _matplotlib_shell_class()
946 else:
947 else:
947 shell = IPShell
948 shell = IPShell
948 else:
949 else:
949 shell = IPShell
950 shell = IPShell
950 return shell(user_ns = user_ns)
951 return shell(user_ns = user_ns)
951
952
952 # Some aliases for backwards compatibility
953 # Some aliases for backwards compatibility
953 IPythonShell = IPShell
954 IPythonShell = IPShell
954 IPythonShellEmbed = IPShellEmbed
955 IPythonShellEmbed = IPShellEmbed
955 #************************ End of file <Shell.py> ***************************
956 #************************ End of file <Shell.py> ***************************
@@ -1,5317 +1,5324 b''
1 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython\Shell.py (MTInteractiveShell.runsource): Fix threading
4 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
5 was being released in a routine which hadn't checked if it had
6 been the one to acquire it.
7
1 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
8 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2
9
3 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
10 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
4
11
5 2006-04-11 Ville Vainio <vivainio@gmail.com>
12 2006-04-11 Ville Vainio <vivainio@gmail.com>
6
13
7 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
14 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
8 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
15 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
9 prefilters, allowing stuff like magics and aliases in the file.
16 prefilters, allowing stuff like magics and aliases in the file.
10
17
11 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
18 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
12 added. Supported now are "%clear in" and "%clear out" (clear input and
19 added. Supported now are "%clear in" and "%clear out" (clear input and
13 output history, respectively). Also fixed CachedOutput.flush to
20 output history, respectively). Also fixed CachedOutput.flush to
14 properly flush the output cache.
21 properly flush the output cache.
15
22
16 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
23 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
17 half-success (and fail explicitly).
24 half-success (and fail explicitly).
18
25
19 2006-03-28 Ville Vainio <vivainio@gmail.com>
26 2006-03-28 Ville Vainio <vivainio@gmail.com>
20
27
21 * iplib.py: Fix quoting of aliases so that only argless ones
28 * iplib.py: Fix quoting of aliases so that only argless ones
22 are quoted
29 are quoted
23
30
24 2006-03-28 Ville Vainio <vivainio@gmail.com>
31 2006-03-28 Ville Vainio <vivainio@gmail.com>
25
32
26 * iplib.py: Quote aliases with spaces in the name.
33 * iplib.py: Quote aliases with spaces in the name.
27 "c:\program files\blah\bin" is now legal alias target.
34 "c:\program files\blah\bin" is now legal alias target.
28
35
29 * ext_rehashdir.py: Space no longer allowed as arg
36 * ext_rehashdir.py: Space no longer allowed as arg
30 separator, since space is legal in path names.
37 separator, since space is legal in path names.
31
38
32 2006-03-16 Ville Vainio <vivainio@gmail.com>
39 2006-03-16 Ville Vainio <vivainio@gmail.com>
33
40
34 * upgrade_dir.py: Take path.py from Extensions, correcting
41 * upgrade_dir.py: Take path.py from Extensions, correcting
35 %upgrade magic
42 %upgrade magic
36
43
37 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
44 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
38
45
39 * hooks.py: Only enclose editor binary in quotes if legal and
46 * hooks.py: Only enclose editor binary in quotes if legal and
40 necessary (space in the name, and is an existing file). Fixes a bug
47 necessary (space in the name, and is an existing file). Fixes a bug
41 reported by Zachary Pincus.
48 reported by Zachary Pincus.
42
49
43 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
50 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
44
51
45 * Manual: thanks to a tip on proper color handling for Emacs, by
52 * Manual: thanks to a tip on proper color handling for Emacs, by
46 Eric J Haywiser <ejh1-AT-MIT.EDU>.
53 Eric J Haywiser <ejh1-AT-MIT.EDU>.
47
54
48 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
55 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
49 by applying the provided patch. Thanks to Liu Jin
56 by applying the provided patch. Thanks to Liu Jin
50 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
57 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
51 XEmacs/Linux, I'm trusting the submitter that it actually helps
58 XEmacs/Linux, I'm trusting the submitter that it actually helps
52 under win32/GNU Emacs. Will revisit if any problems are reported.
59 under win32/GNU Emacs. Will revisit if any problems are reported.
53
60
54 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
61 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
55
62
56 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
63 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
57 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
64 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
58
65
59 2006-03-12 Ville Vainio <vivainio@gmail.com>
66 2006-03-12 Ville Vainio <vivainio@gmail.com>
60
67
61 * Magic.py (magic_timeit): Added %timeit magic, contributed by
68 * Magic.py (magic_timeit): Added %timeit magic, contributed by
62 Torsten Marek.
69 Torsten Marek.
63
70
64 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
71 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
65
72
66 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
73 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
67 line ranges works again.
74 line ranges works again.
68
75
69 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
76 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
70
77
71 * IPython/iplib.py (showtraceback): add back sys.last_traceback
78 * IPython/iplib.py (showtraceback): add back sys.last_traceback
72 and friends, after a discussion with Zach Pincus on ipython-user.
79 and friends, after a discussion with Zach Pincus on ipython-user.
73 I'm not 100% sure, but after thinking aobut it quite a bit, it may
80 I'm not 100% sure, but after thinking aobut it quite a bit, it may
74 be OK. Testing with the multithreaded shells didn't reveal any
81 be OK. Testing with the multithreaded shells didn't reveal any
75 problems, but let's keep an eye out.
82 problems, but let's keep an eye out.
76
83
77 In the process, I fixed a few things which were calling
84 In the process, I fixed a few things which were calling
78 self.InteractiveTB() directly (like safe_execfile), which is a
85 self.InteractiveTB() directly (like safe_execfile), which is a
79 mistake: ALL exception reporting should be done by calling
86 mistake: ALL exception reporting should be done by calling
80 self.showtraceback(), which handles state and tab-completion and
87 self.showtraceback(), which handles state and tab-completion and
81 more.
88 more.
82
89
83 2006-03-01 Ville Vainio <vivainio@gmail.com>
90 2006-03-01 Ville Vainio <vivainio@gmail.com>
84
91
85 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
92 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
86 To use, do "from ipipe import *".
93 To use, do "from ipipe import *".
87
94
88 2006-02-24 Ville Vainio <vivainio@gmail.com>
95 2006-02-24 Ville Vainio <vivainio@gmail.com>
89
96
90 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
97 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
91 "cleanly" and safely than the older upgrade mechanism.
98 "cleanly" and safely than the older upgrade mechanism.
92
99
93 2006-02-21 Ville Vainio <vivainio@gmail.com>
100 2006-02-21 Ville Vainio <vivainio@gmail.com>
94
101
95 * Magic.py: %save works again.
102 * Magic.py: %save works again.
96
103
97 2006-02-15 Ville Vainio <vivainio@gmail.com>
104 2006-02-15 Ville Vainio <vivainio@gmail.com>
98
105
99 * Magic.py: %Pprint works again
106 * Magic.py: %Pprint works again
100
107
101 * Extensions/ipy_sane_defaults.py: Provide everything provided
108 * Extensions/ipy_sane_defaults.py: Provide everything provided
102 in default ipythonrc, to make it possible to have a completely empty
109 in default ipythonrc, to make it possible to have a completely empty
103 ipythonrc (and thus completely rc-file free configuration)
110 ipythonrc (and thus completely rc-file free configuration)
104
111
105
112
106 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
113 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
107
114
108 * IPython/hooks.py (editor): quote the call to the editor command,
115 * IPython/hooks.py (editor): quote the call to the editor command,
109 to allow commands with spaces in them. Problem noted by watching
116 to allow commands with spaces in them. Problem noted by watching
110 Ian Oswald's video about textpad under win32 at
117 Ian Oswald's video about textpad under win32 at
111 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
118 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
112
119
113 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
120 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
114 describing magics (we haven't used @ for a loong time).
121 describing magics (we haven't used @ for a loong time).
115
122
116 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
123 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
117 contributed by marienz to close
124 contributed by marienz to close
118 http://www.scipy.net/roundup/ipython/issue53.
125 http://www.scipy.net/roundup/ipython/issue53.
119
126
120 2006-02-10 Ville Vainio <vivainio@gmail.com>
127 2006-02-10 Ville Vainio <vivainio@gmail.com>
121
128
122 * genutils.py: getoutput now works in win32 too
129 * genutils.py: getoutput now works in win32 too
123
130
124 * completer.py: alias and magic completion only invoked
131 * completer.py: alias and magic completion only invoked
125 at the first "item" in the line, to avoid "cd %store"
132 at the first "item" in the line, to avoid "cd %store"
126 nonsense.
133 nonsense.
127
134
128 2006-02-09 Ville Vainio <vivainio@gmail.com>
135 2006-02-09 Ville Vainio <vivainio@gmail.com>
129
136
130 * test/*: Added a unit testing framework (finally).
137 * test/*: Added a unit testing framework (finally).
131 '%run runtests.py' to run test_*.
138 '%run runtests.py' to run test_*.
132
139
133 * ipapi.py: Exposed runlines and set_custom_exc
140 * ipapi.py: Exposed runlines and set_custom_exc
134
141
135 2006-02-07 Ville Vainio <vivainio@gmail.com>
142 2006-02-07 Ville Vainio <vivainio@gmail.com>
136
143
137 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
144 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
138 instead use "f(1 2)" as before.
145 instead use "f(1 2)" as before.
139
146
140 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
147 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
141
148
142 * IPython/demo.py (IPythonDemo): Add new classes to the demo
149 * IPython/demo.py (IPythonDemo): Add new classes to the demo
143 facilities, for demos processed by the IPython input filter
150 facilities, for demos processed by the IPython input filter
144 (IPythonDemo), and for running a script one-line-at-a-time as a
151 (IPythonDemo), and for running a script one-line-at-a-time as a
145 demo, both for pure Python (LineDemo) and for IPython-processed
152 demo, both for pure Python (LineDemo) and for IPython-processed
146 input (IPythonLineDemo). After a request by Dave Kohel, from the
153 input (IPythonLineDemo). After a request by Dave Kohel, from the
147 SAGE team.
154 SAGE team.
148 (Demo.edit): added and edit() method to the demo objects, to edit
155 (Demo.edit): added and edit() method to the demo objects, to edit
149 the in-memory copy of the last executed block.
156 the in-memory copy of the last executed block.
150
157
151 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
158 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
152 processing to %edit, %macro and %save. These commands can now be
159 processing to %edit, %macro and %save. These commands can now be
153 invoked on the unprocessed input as it was typed by the user
160 invoked on the unprocessed input as it was typed by the user
154 (without any prefilters applied). After requests by the SAGE team
161 (without any prefilters applied). After requests by the SAGE team
155 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
162 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
156
163
157 2006-02-01 Ville Vainio <vivainio@gmail.com>
164 2006-02-01 Ville Vainio <vivainio@gmail.com>
158
165
159 * setup.py, eggsetup.py: easy_install ipython==dev works
166 * setup.py, eggsetup.py: easy_install ipython==dev works
160 correctly now (on Linux)
167 correctly now (on Linux)
161
168
162 * ipy_user_conf,ipmaker: user config changes, removed spurious
169 * ipy_user_conf,ipmaker: user config changes, removed spurious
163 warnings
170 warnings
164
171
165 * iplib: if rc.banner is string, use it as is.
172 * iplib: if rc.banner is string, use it as is.
166
173
167 * Magic: %pycat accepts a string argument and pages it's contents.
174 * Magic: %pycat accepts a string argument and pages it's contents.
168
175
169
176
170 2006-01-30 Ville Vainio <vivainio@gmail.com>
177 2006-01-30 Ville Vainio <vivainio@gmail.com>
171
178
172 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
179 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
173 Now %store and bookmarks work through PickleShare, meaning that
180 Now %store and bookmarks work through PickleShare, meaning that
174 concurrent access is possible and all ipython sessions see the
181 concurrent access is possible and all ipython sessions see the
175 same database situation all the time, instead of snapshot of
182 same database situation all the time, instead of snapshot of
176 the situation when the session was started. Hence, %bookmark
183 the situation when the session was started. Hence, %bookmark
177 results are immediately accessible from othes sessions. The database
184 results are immediately accessible from othes sessions. The database
178 is also available for use by user extensions. See:
185 is also available for use by user extensions. See:
179 http://www.python.org/pypi/pickleshare
186 http://www.python.org/pypi/pickleshare
180
187
181 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
188 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
182
189
183 * aliases can now be %store'd
190 * aliases can now be %store'd
184
191
185 * path.py move to Extensions so that pickleshare does not need
192 * path.py move to Extensions so that pickleshare does not need
186 IPython-specific import. Extensions added to pythonpath right
193 IPython-specific import. Extensions added to pythonpath right
187 at __init__.
194 at __init__.
188
195
189 * iplib.py: ipalias deprecated/redundant; aliases are converted and
196 * iplib.py: ipalias deprecated/redundant; aliases are converted and
190 called with _ip.system and the pre-transformed command string.
197 called with _ip.system and the pre-transformed command string.
191
198
192 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
199 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
193
200
194 * IPython/iplib.py (interact): Fix that we were not catching
201 * IPython/iplib.py (interact): Fix that we were not catching
195 KeyboardInterrupt exceptions properly. I'm not quite sure why the
202 KeyboardInterrupt exceptions properly. I'm not quite sure why the
196 logic here had to change, but it's fixed now.
203 logic here had to change, but it's fixed now.
197
204
198 2006-01-29 Ville Vainio <vivainio@gmail.com>
205 2006-01-29 Ville Vainio <vivainio@gmail.com>
199
206
200 * iplib.py: Try to import pyreadline on Windows.
207 * iplib.py: Try to import pyreadline on Windows.
201
208
202 2006-01-27 Ville Vainio <vivainio@gmail.com>
209 2006-01-27 Ville Vainio <vivainio@gmail.com>
203
210
204 * iplib.py: Expose ipapi as _ip in builtin namespace.
211 * iplib.py: Expose ipapi as _ip in builtin namespace.
205 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
212 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
206 and ip_set_hook (-> _ip.set_hook) redundant. % and !
213 and ip_set_hook (-> _ip.set_hook) redundant. % and !
207 syntax now produce _ip.* variant of the commands.
214 syntax now produce _ip.* variant of the commands.
208
215
209 * "_ip.options().autoedit_syntax = 2" automatically throws
216 * "_ip.options().autoedit_syntax = 2" automatically throws
210 user to editor for syntax error correction without prompting.
217 user to editor for syntax error correction without prompting.
211
218
212 2006-01-27 Ville Vainio <vivainio@gmail.com>
219 2006-01-27 Ville Vainio <vivainio@gmail.com>
213
220
214 * ipmaker.py: Give "realistic" sys.argv for scripts (without
221 * ipmaker.py: Give "realistic" sys.argv for scripts (without
215 'ipython' at argv[0]) executed through command line.
222 'ipython' at argv[0]) executed through command line.
216 NOTE: this DEPRECATES calling ipython with multiple scripts
223 NOTE: this DEPRECATES calling ipython with multiple scripts
217 ("ipython a.py b.py c.py")
224 ("ipython a.py b.py c.py")
218
225
219 * iplib.py, hooks.py: Added configurable input prefilter,
226 * iplib.py, hooks.py: Added configurable input prefilter,
220 named 'input_prefilter'. See ext_rescapture.py for example
227 named 'input_prefilter'. See ext_rescapture.py for example
221 usage.
228 usage.
222
229
223 * ext_rescapture.py, Magic.py: Better system command output capture
230 * ext_rescapture.py, Magic.py: Better system command output capture
224 through 'var = !ls' (deprecates user-visible %sc). Same notation
231 through 'var = !ls' (deprecates user-visible %sc). Same notation
225 applies for magics, 'var = %alias' assigns alias list to var.
232 applies for magics, 'var = %alias' assigns alias list to var.
226
233
227 * ipapi.py: added meta() for accessing extension-usable data store.
234 * ipapi.py: added meta() for accessing extension-usable data store.
228
235
229 * iplib.py: added InteractiveShell.getapi(). New magics should be
236 * iplib.py: added InteractiveShell.getapi(). New magics should be
230 written doing self.getapi() instead of using the shell directly.
237 written doing self.getapi() instead of using the shell directly.
231
238
232 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
239 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
233 %store foo >> ~/myfoo.txt to store variables to files (in clean
240 %store foo >> ~/myfoo.txt to store variables to files (in clean
234 textual form, not a restorable pickle).
241 textual form, not a restorable pickle).
235
242
236 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
243 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
237
244
238 * usage.py, Magic.py: added %quickref
245 * usage.py, Magic.py: added %quickref
239
246
240 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
247 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
241
248
242 * GetoptErrors when invoking magics etc. with wrong args
249 * GetoptErrors when invoking magics etc. with wrong args
243 are now more helpful:
250 are now more helpful:
244 GetoptError: option -l not recognized (allowed: "qb" )
251 GetoptError: option -l not recognized (allowed: "qb" )
245
252
246 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
253 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
247
254
248 * IPython/demo.py (Demo.show): Flush stdout after each block, so
255 * IPython/demo.py (Demo.show): Flush stdout after each block, so
249 computationally intensive blocks don't appear to stall the demo.
256 computationally intensive blocks don't appear to stall the demo.
250
257
251 2006-01-24 Ville Vainio <vivainio@gmail.com>
258 2006-01-24 Ville Vainio <vivainio@gmail.com>
252
259
253 * iplib.py, hooks.py: 'result_display' hook can return a non-None
260 * iplib.py, hooks.py: 'result_display' hook can return a non-None
254 value to manipulate resulting history entry.
261 value to manipulate resulting history entry.
255
262
256 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
263 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
257 to instance methods of IPApi class, to make extending an embedded
264 to instance methods of IPApi class, to make extending an embedded
258 IPython feasible. See ext_rehashdir.py for example usage.
265 IPython feasible. See ext_rehashdir.py for example usage.
259
266
260 * Merged 1071-1076 from banches/0.7.1
267 * Merged 1071-1076 from banches/0.7.1
261
268
262
269
263 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
270 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
264
271
265 * tools/release (daystamp): Fix build tools to use the new
272 * tools/release (daystamp): Fix build tools to use the new
266 eggsetup.py script to build lightweight eggs.
273 eggsetup.py script to build lightweight eggs.
267
274
268 * Applied changesets 1062 and 1064 before 0.7.1 release.
275 * Applied changesets 1062 and 1064 before 0.7.1 release.
269
276
270 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
277 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
271 see the raw input history (without conversions like %ls ->
278 see the raw input history (without conversions like %ls ->
272 ipmagic("ls")). After a request from W. Stein, SAGE
279 ipmagic("ls")). After a request from W. Stein, SAGE
273 (http://modular.ucsd.edu/sage) developer. This information is
280 (http://modular.ucsd.edu/sage) developer. This information is
274 stored in the input_hist_raw attribute of the IPython instance, so
281 stored in the input_hist_raw attribute of the IPython instance, so
275 developers can access it if needed (it's an InputList instance).
282 developers can access it if needed (it's an InputList instance).
276
283
277 * Versionstring = 0.7.2.svn
284 * Versionstring = 0.7.2.svn
278
285
279 * eggsetup.py: A separate script for constructing eggs, creates
286 * eggsetup.py: A separate script for constructing eggs, creates
280 proper launch scripts even on Windows (an .exe file in
287 proper launch scripts even on Windows (an .exe file in
281 \python24\scripts).
288 \python24\scripts).
282
289
283 * ipapi.py: launch_new_instance, launch entry point needed for the
290 * ipapi.py: launch_new_instance, launch entry point needed for the
284 egg.
291 egg.
285
292
286 2006-01-23 Ville Vainio <vivainio@gmail.com>
293 2006-01-23 Ville Vainio <vivainio@gmail.com>
287
294
288 * Added %cpaste magic for pasting python code
295 * Added %cpaste magic for pasting python code
289
296
290 2006-01-22 Ville Vainio <vivainio@gmail.com>
297 2006-01-22 Ville Vainio <vivainio@gmail.com>
291
298
292 * Merge from branches/0.7.1 into trunk, revs 1052-1057
299 * Merge from branches/0.7.1 into trunk, revs 1052-1057
293
300
294 * Versionstring = 0.7.2.svn
301 * Versionstring = 0.7.2.svn
295
302
296 * eggsetup.py: A separate script for constructing eggs, creates
303 * eggsetup.py: A separate script for constructing eggs, creates
297 proper launch scripts even on Windows (an .exe file in
304 proper launch scripts even on Windows (an .exe file in
298 \python24\scripts).
305 \python24\scripts).
299
306
300 * ipapi.py: launch_new_instance, launch entry point needed for the
307 * ipapi.py: launch_new_instance, launch entry point needed for the
301 egg.
308 egg.
302
309
303 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
310 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
304
311
305 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
312 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
306 %pfile foo would print the file for foo even if it was a binary.
313 %pfile foo would print the file for foo even if it was a binary.
307 Now, extensions '.so' and '.dll' are skipped.
314 Now, extensions '.so' and '.dll' are skipped.
308
315
309 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
316 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
310 bug, where macros would fail in all threaded modes. I'm not 100%
317 bug, where macros would fail in all threaded modes. I'm not 100%
311 sure, so I'm going to put out an rc instead of making a release
318 sure, so I'm going to put out an rc instead of making a release
312 today, and wait for feedback for at least a few days.
319 today, and wait for feedback for at least a few days.
313
320
314 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
321 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
315 it...) the handling of pasting external code with autoindent on.
322 it...) the handling of pasting external code with autoindent on.
316 To get out of a multiline input, the rule will appear for most
323 To get out of a multiline input, the rule will appear for most
317 users unchanged: two blank lines or change the indent level
324 users unchanged: two blank lines or change the indent level
318 proposed by IPython. But there is a twist now: you can
325 proposed by IPython. But there is a twist now: you can
319 add/subtract only *one or two spaces*. If you add/subtract three
326 add/subtract only *one or two spaces*. If you add/subtract three
320 or more (unless you completely delete the line), IPython will
327 or more (unless you completely delete the line), IPython will
321 accept that line, and you'll need to enter a second one of pure
328 accept that line, and you'll need to enter a second one of pure
322 whitespace. I know it sounds complicated, but I can't find a
329 whitespace. I know it sounds complicated, but I can't find a
323 different solution that covers all the cases, with the right
330 different solution that covers all the cases, with the right
324 heuristics. Hopefully in actual use, nobody will really notice
331 heuristics. Hopefully in actual use, nobody will really notice
325 all these strange rules and things will 'just work'.
332 all these strange rules and things will 'just work'.
326
333
327 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
334 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
328
335
329 * IPython/iplib.py (interact): catch exceptions which can be
336 * IPython/iplib.py (interact): catch exceptions which can be
330 triggered asynchronously by signal handlers. Thanks to an
337 triggered asynchronously by signal handlers. Thanks to an
331 automatic crash report, submitted by Colin Kingsley
338 automatic crash report, submitted by Colin Kingsley
332 <tercel-AT-gentoo.org>.
339 <tercel-AT-gentoo.org>.
333
340
334 2006-01-20 Ville Vainio <vivainio@gmail.com>
341 2006-01-20 Ville Vainio <vivainio@gmail.com>
335
342
336 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
343 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
337 (%rehashdir, very useful, try it out) of how to extend ipython
344 (%rehashdir, very useful, try it out) of how to extend ipython
338 with new magics. Also added Extensions dir to pythonpath to make
345 with new magics. Also added Extensions dir to pythonpath to make
339 importing extensions easy.
346 importing extensions easy.
340
347
341 * %store now complains when trying to store interactively declared
348 * %store now complains when trying to store interactively declared
342 classes / instances of those classes.
349 classes / instances of those classes.
343
350
344 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
351 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
345 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
352 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
346 if they exist, and ipy_user_conf.py with some defaults is created for
353 if they exist, and ipy_user_conf.py with some defaults is created for
347 the user.
354 the user.
348
355
349 * Startup rehashing done by the config file, not InterpreterExec.
356 * Startup rehashing done by the config file, not InterpreterExec.
350 This means system commands are available even without selecting the
357 This means system commands are available even without selecting the
351 pysh profile. It's the sensible default after all.
358 pysh profile. It's the sensible default after all.
352
359
353 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
360 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
354
361
355 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
362 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
356 multiline code with autoindent on working. But I am really not
363 multiline code with autoindent on working. But I am really not
357 sure, so this needs more testing. Will commit a debug-enabled
364 sure, so this needs more testing. Will commit a debug-enabled
358 version for now, while I test it some more, so that Ville and
365 version for now, while I test it some more, so that Ville and
359 others may also catch any problems. Also made
366 others may also catch any problems. Also made
360 self.indent_current_str() a method, to ensure that there's no
367 self.indent_current_str() a method, to ensure that there's no
361 chance of the indent space count and the corresponding string
368 chance of the indent space count and the corresponding string
362 falling out of sync. All code needing the string should just call
369 falling out of sync. All code needing the string should just call
363 the method.
370 the method.
364
371
365 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
372 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
366
373
367 * IPython/Magic.py (magic_edit): fix check for when users don't
374 * IPython/Magic.py (magic_edit): fix check for when users don't
368 save their output files, the try/except was in the wrong section.
375 save their output files, the try/except was in the wrong section.
369
376
370 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
377 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
371
378
372 * IPython/Magic.py (magic_run): fix __file__ global missing from
379 * IPython/Magic.py (magic_run): fix __file__ global missing from
373 script's namespace when executed via %run. After a report by
380 script's namespace when executed via %run. After a report by
374 Vivian.
381 Vivian.
375
382
376 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
383 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
377 when using python 2.4. The parent constructor changed in 2.4, and
384 when using python 2.4. The parent constructor changed in 2.4, and
378 we need to track it directly (we can't call it, as it messes up
385 we need to track it directly (we can't call it, as it messes up
379 readline and tab-completion inside our pdb would stop working).
386 readline and tab-completion inside our pdb would stop working).
380 After a bug report by R. Bernstein <rocky-AT-panix.com>.
387 After a bug report by R. Bernstein <rocky-AT-panix.com>.
381
388
382 2006-01-16 Ville Vainio <vivainio@gmail.com>
389 2006-01-16 Ville Vainio <vivainio@gmail.com>
383
390
384 * Ipython/magic.py:Reverted back to old %edit functionality
391 * Ipython/magic.py:Reverted back to old %edit functionality
385 that returns file contents on exit.
392 that returns file contents on exit.
386
393
387 * IPython/path.py: Added Jason Orendorff's "path" module to
394 * IPython/path.py: Added Jason Orendorff's "path" module to
388 IPython tree, http://www.jorendorff.com/articles/python/path/.
395 IPython tree, http://www.jorendorff.com/articles/python/path/.
389 You can get path objects conveniently through %sc, and !!, e.g.:
396 You can get path objects conveniently through %sc, and !!, e.g.:
390 sc files=ls
397 sc files=ls
391 for p in files.paths: # or files.p
398 for p in files.paths: # or files.p
392 print p,p.mtime
399 print p,p.mtime
393
400
394 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
401 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
395 now work again without considering the exclusion regexp -
402 now work again without considering the exclusion regexp -
396 hence, things like ',foo my/path' turn to 'foo("my/path")'
403 hence, things like ',foo my/path' turn to 'foo("my/path")'
397 instead of syntax error.
404 instead of syntax error.
398
405
399
406
400 2006-01-14 Ville Vainio <vivainio@gmail.com>
407 2006-01-14 Ville Vainio <vivainio@gmail.com>
401
408
402 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
409 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
403 ipapi decorators for python 2.4 users, options() provides access to rc
410 ipapi decorators for python 2.4 users, options() provides access to rc
404 data.
411 data.
405
412
406 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
413 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
407 as path separators (even on Linux ;-). Space character after
414 as path separators (even on Linux ;-). Space character after
408 backslash (as yielded by tab completer) is still space;
415 backslash (as yielded by tab completer) is still space;
409 "%cd long\ name" works as expected.
416 "%cd long\ name" works as expected.
410
417
411 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
418 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
412 as "chain of command", with priority. API stays the same,
419 as "chain of command", with priority. API stays the same,
413 TryNext exception raised by a hook function signals that
420 TryNext exception raised by a hook function signals that
414 current hook failed and next hook should try handling it, as
421 current hook failed and next hook should try handling it, as
415 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
422 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
416 requested configurable display hook, which is now implemented.
423 requested configurable display hook, which is now implemented.
417
424
418 2006-01-13 Ville Vainio <vivainio@gmail.com>
425 2006-01-13 Ville Vainio <vivainio@gmail.com>
419
426
420 * IPython/platutils*.py: platform specific utility functions,
427 * IPython/platutils*.py: platform specific utility functions,
421 so far only set_term_title is implemented (change terminal
428 so far only set_term_title is implemented (change terminal
422 label in windowing systems). %cd now changes the title to
429 label in windowing systems). %cd now changes the title to
423 current dir.
430 current dir.
424
431
425 * IPython/Release.py: Added myself to "authors" list,
432 * IPython/Release.py: Added myself to "authors" list,
426 had to create new files.
433 had to create new files.
427
434
428 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
435 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
429 shell escape; not a known bug but had potential to be one in the
436 shell escape; not a known bug but had potential to be one in the
430 future.
437 future.
431
438
432 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
439 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
433 extension API for IPython! See the module for usage example. Fix
440 extension API for IPython! See the module for usage example. Fix
434 OInspect for docstring-less magic functions.
441 OInspect for docstring-less magic functions.
435
442
436
443
437 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
444 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
438
445
439 * IPython/iplib.py (raw_input): temporarily deactivate all
446 * IPython/iplib.py (raw_input): temporarily deactivate all
440 attempts at allowing pasting of code with autoindent on. It
447 attempts at allowing pasting of code with autoindent on. It
441 introduced bugs (reported by Prabhu) and I can't seem to find a
448 introduced bugs (reported by Prabhu) and I can't seem to find a
442 robust combination which works in all cases. Will have to revisit
449 robust combination which works in all cases. Will have to revisit
443 later.
450 later.
444
451
445 * IPython/genutils.py: remove isspace() function. We've dropped
452 * IPython/genutils.py: remove isspace() function. We've dropped
446 2.2 compatibility, so it's OK to use the string method.
453 2.2 compatibility, so it's OK to use the string method.
447
454
448 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
455 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
449
456
450 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
457 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
451 matching what NOT to autocall on, to include all python binary
458 matching what NOT to autocall on, to include all python binary
452 operators (including things like 'and', 'or', 'is' and 'in').
459 operators (including things like 'and', 'or', 'is' and 'in').
453 Prompted by a bug report on 'foo & bar', but I realized we had
460 Prompted by a bug report on 'foo & bar', but I realized we had
454 many more potential bug cases with other operators. The regexp is
461 many more potential bug cases with other operators. The regexp is
455 self.re_exclude_auto, it's fairly commented.
462 self.re_exclude_auto, it's fairly commented.
456
463
457 2006-01-12 Ville Vainio <vivainio@gmail.com>
464 2006-01-12 Ville Vainio <vivainio@gmail.com>
458
465
459 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
466 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
460 Prettified and hardened string/backslash quoting with ipsystem(),
467 Prettified and hardened string/backslash quoting with ipsystem(),
461 ipalias() and ipmagic(). Now even \ characters are passed to
468 ipalias() and ipmagic(). Now even \ characters are passed to
462 %magics, !shell escapes and aliases exactly as they are in the
469 %magics, !shell escapes and aliases exactly as they are in the
463 ipython command line. Should improve backslash experience,
470 ipython command line. Should improve backslash experience,
464 particularly in Windows (path delimiter for some commands that
471 particularly in Windows (path delimiter for some commands that
465 won't understand '/'), but Unix benefits as well (regexps). %cd
472 won't understand '/'), but Unix benefits as well (regexps). %cd
466 magic still doesn't support backslash path delimiters, though. Also
473 magic still doesn't support backslash path delimiters, though. Also
467 deleted all pretense of supporting multiline command strings in
474 deleted all pretense of supporting multiline command strings in
468 !system or %magic commands. Thanks to Jerry McRae for suggestions.
475 !system or %magic commands. Thanks to Jerry McRae for suggestions.
469
476
470 * doc/build_doc_instructions.txt added. Documentation on how to
477 * doc/build_doc_instructions.txt added. Documentation on how to
471 use doc/update_manual.py, added yesterday. Both files contributed
478 use doc/update_manual.py, added yesterday. Both files contributed
472 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
479 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
473 doc/*.sh for deprecation at a later date.
480 doc/*.sh for deprecation at a later date.
474
481
475 * /ipython.py Added ipython.py to root directory for
482 * /ipython.py Added ipython.py to root directory for
476 zero-installation (tar xzvf ipython.tgz; cd ipython; python
483 zero-installation (tar xzvf ipython.tgz; cd ipython; python
477 ipython.py) and development convenience (no need to kee doing
484 ipython.py) and development convenience (no need to kee doing
478 "setup.py install" between changes).
485 "setup.py install" between changes).
479
486
480 * Made ! and !! shell escapes work (again) in multiline expressions:
487 * Made ! and !! shell escapes work (again) in multiline expressions:
481 if 1:
488 if 1:
482 !ls
489 !ls
483 !!ls
490 !!ls
484
491
485 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
492 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
486
493
487 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
494 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
488 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
495 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
489 module in case-insensitive installation. Was causing crashes
496 module in case-insensitive installation. Was causing crashes
490 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
497 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
491
498
492 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
499 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
493 <marienz-AT-gentoo.org>, closes
500 <marienz-AT-gentoo.org>, closes
494 http://www.scipy.net/roundup/ipython/issue51.
501 http://www.scipy.net/roundup/ipython/issue51.
495
502
496 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
503 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
497
504
498 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
505 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
499 problem of excessive CPU usage under *nix and keyboard lag under
506 problem of excessive CPU usage under *nix and keyboard lag under
500 win32.
507 win32.
501
508
502 2006-01-10 *** Released version 0.7.0
509 2006-01-10 *** Released version 0.7.0
503
510
504 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
511 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
505
512
506 * IPython/Release.py (revision): tag version number to 0.7.0,
513 * IPython/Release.py (revision): tag version number to 0.7.0,
507 ready for release.
514 ready for release.
508
515
509 * IPython/Magic.py (magic_edit): Add print statement to %edit so
516 * IPython/Magic.py (magic_edit): Add print statement to %edit so
510 it informs the user of the name of the temp. file used. This can
517 it informs the user of the name of the temp. file used. This can
511 help if you decide later to reuse that same file, so you know
518 help if you decide later to reuse that same file, so you know
512 where to copy the info from.
519 where to copy the info from.
513
520
514 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
521 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
515
522
516 * setup_bdist_egg.py: little script to build an egg. Added
523 * setup_bdist_egg.py: little script to build an egg. Added
517 support in the release tools as well.
524 support in the release tools as well.
518
525
519 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
526 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
520
527
521 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
528 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
522 version selection (new -wxversion command line and ipythonrc
529 version selection (new -wxversion command line and ipythonrc
523 parameter). Patch contributed by Arnd Baecker
530 parameter). Patch contributed by Arnd Baecker
524 <arnd.baecker-AT-web.de>.
531 <arnd.baecker-AT-web.de>.
525
532
526 * IPython/iplib.py (embed_mainloop): fix tab-completion in
533 * IPython/iplib.py (embed_mainloop): fix tab-completion in
527 embedded instances, for variables defined at the interactive
534 embedded instances, for variables defined at the interactive
528 prompt of the embedded ipython. Reported by Arnd.
535 prompt of the embedded ipython. Reported by Arnd.
529
536
530 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
537 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
531 it can be used as a (stateful) toggle, or with a direct parameter.
538 it can be used as a (stateful) toggle, or with a direct parameter.
532
539
533 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
540 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
534 could be triggered in certain cases and cause the traceback
541 could be triggered in certain cases and cause the traceback
535 printer not to work.
542 printer not to work.
536
543
537 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
544 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
538
545
539 * IPython/iplib.py (_should_recompile): Small fix, closes
546 * IPython/iplib.py (_should_recompile): Small fix, closes
540 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
547 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
541
548
542 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
549 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
543
550
544 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
551 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
545 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
552 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
546 Moad for help with tracking it down.
553 Moad for help with tracking it down.
547
554
548 * IPython/iplib.py (handle_auto): fix autocall handling for
555 * IPython/iplib.py (handle_auto): fix autocall handling for
549 objects which support BOTH __getitem__ and __call__ (so that f [x]
556 objects which support BOTH __getitem__ and __call__ (so that f [x]
550 is left alone, instead of becoming f([x]) automatically).
557 is left alone, instead of becoming f([x]) automatically).
551
558
552 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
559 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
553 Ville's patch.
560 Ville's patch.
554
561
555 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
562 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
556
563
557 * IPython/iplib.py (handle_auto): changed autocall semantics to
564 * IPython/iplib.py (handle_auto): changed autocall semantics to
558 include 'smart' mode, where the autocall transformation is NOT
565 include 'smart' mode, where the autocall transformation is NOT
559 applied if there are no arguments on the line. This allows you to
566 applied if there are no arguments on the line. This allows you to
560 just type 'foo' if foo is a callable to see its internal form,
567 just type 'foo' if foo is a callable to see its internal form,
561 instead of having it called with no arguments (typically a
568 instead of having it called with no arguments (typically a
562 mistake). The old 'full' autocall still exists: for that, you
569 mistake). The old 'full' autocall still exists: for that, you
563 need to set the 'autocall' parameter to 2 in your ipythonrc file.
570 need to set the 'autocall' parameter to 2 in your ipythonrc file.
564
571
565 * IPython/completer.py (Completer.attr_matches): add
572 * IPython/completer.py (Completer.attr_matches): add
566 tab-completion support for Enthoughts' traits. After a report by
573 tab-completion support for Enthoughts' traits. After a report by
567 Arnd and a patch by Prabhu.
574 Arnd and a patch by Prabhu.
568
575
569 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
576 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
570
577
571 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
578 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
572 Schmolck's patch to fix inspect.getinnerframes().
579 Schmolck's patch to fix inspect.getinnerframes().
573
580
574 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
581 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
575 for embedded instances, regarding handling of namespaces and items
582 for embedded instances, regarding handling of namespaces and items
576 added to the __builtin__ one. Multiple embedded instances and
583 added to the __builtin__ one. Multiple embedded instances and
577 recursive embeddings should work better now (though I'm not sure
584 recursive embeddings should work better now (though I'm not sure
578 I've got all the corner cases fixed, that code is a bit of a brain
585 I've got all the corner cases fixed, that code is a bit of a brain
579 twister).
586 twister).
580
587
581 * IPython/Magic.py (magic_edit): added support to edit in-memory
588 * IPython/Magic.py (magic_edit): added support to edit in-memory
582 macros (automatically creates the necessary temp files). %edit
589 macros (automatically creates the necessary temp files). %edit
583 also doesn't return the file contents anymore, it's just noise.
590 also doesn't return the file contents anymore, it's just noise.
584
591
585 * IPython/completer.py (Completer.attr_matches): revert change to
592 * IPython/completer.py (Completer.attr_matches): revert change to
586 complete only on attributes listed in __all__. I realized it
593 complete only on attributes listed in __all__. I realized it
587 cripples the tab-completion system as a tool for exploring the
594 cripples the tab-completion system as a tool for exploring the
588 internals of unknown libraries (it renders any non-__all__
595 internals of unknown libraries (it renders any non-__all__
589 attribute off-limits). I got bit by this when trying to see
596 attribute off-limits). I got bit by this when trying to see
590 something inside the dis module.
597 something inside the dis module.
591
598
592 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
599 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
593
600
594 * IPython/iplib.py (InteractiveShell.__init__): add .meta
601 * IPython/iplib.py (InteractiveShell.__init__): add .meta
595 namespace for users and extension writers to hold data in. This
602 namespace for users and extension writers to hold data in. This
596 follows the discussion in
603 follows the discussion in
597 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
604 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
598
605
599 * IPython/completer.py (IPCompleter.complete): small patch to help
606 * IPython/completer.py (IPCompleter.complete): small patch to help
600 tab-completion under Emacs, after a suggestion by John Barnard
607 tab-completion under Emacs, after a suggestion by John Barnard
601 <barnarj-AT-ccf.org>.
608 <barnarj-AT-ccf.org>.
602
609
603 * IPython/Magic.py (Magic.extract_input_slices): added support for
610 * IPython/Magic.py (Magic.extract_input_slices): added support for
604 the slice notation in magics to use N-M to represent numbers N...M
611 the slice notation in magics to use N-M to represent numbers N...M
605 (closed endpoints). This is used by %macro and %save.
612 (closed endpoints). This is used by %macro and %save.
606
613
607 * IPython/completer.py (Completer.attr_matches): for modules which
614 * IPython/completer.py (Completer.attr_matches): for modules which
608 define __all__, complete only on those. After a patch by Jeffrey
615 define __all__, complete only on those. After a patch by Jeffrey
609 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
616 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
610 speed up this routine.
617 speed up this routine.
611
618
612 * IPython/Logger.py (Logger.log): fix a history handling bug. I
619 * IPython/Logger.py (Logger.log): fix a history handling bug. I
613 don't know if this is the end of it, but the behavior now is
620 don't know if this is the end of it, but the behavior now is
614 certainly much more correct. Note that coupled with macros,
621 certainly much more correct. Note that coupled with macros,
615 slightly surprising (at first) behavior may occur: a macro will in
622 slightly surprising (at first) behavior may occur: a macro will in
616 general expand to multiple lines of input, so upon exiting, the
623 general expand to multiple lines of input, so upon exiting, the
617 in/out counters will both be bumped by the corresponding amount
624 in/out counters will both be bumped by the corresponding amount
618 (as if the macro's contents had been typed interactively). Typing
625 (as if the macro's contents had been typed interactively). Typing
619 %hist will reveal the intermediate (silently processed) lines.
626 %hist will reveal the intermediate (silently processed) lines.
620
627
621 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
628 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
622 pickle to fail (%run was overwriting __main__ and not restoring
629 pickle to fail (%run was overwriting __main__ and not restoring
623 it, but pickle relies on __main__ to operate).
630 it, but pickle relies on __main__ to operate).
624
631
625 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
632 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
626 using properties, but forgot to make the main InteractiveShell
633 using properties, but forgot to make the main InteractiveShell
627 class a new-style class. Properties fail silently, and
634 class a new-style class. Properties fail silently, and
628 misteriously, with old-style class (getters work, but
635 misteriously, with old-style class (getters work, but
629 setters don't do anything).
636 setters don't do anything).
630
637
631 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
638 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
632
639
633 * IPython/Magic.py (magic_history): fix history reporting bug (I
640 * IPython/Magic.py (magic_history): fix history reporting bug (I
634 know some nasties are still there, I just can't seem to find a
641 know some nasties are still there, I just can't seem to find a
635 reproducible test case to track them down; the input history is
642 reproducible test case to track them down; the input history is
636 falling out of sync...)
643 falling out of sync...)
637
644
638 * IPython/iplib.py (handle_shell_escape): fix bug where both
645 * IPython/iplib.py (handle_shell_escape): fix bug where both
639 aliases and system accesses where broken for indented code (such
646 aliases and system accesses where broken for indented code (such
640 as loops).
647 as loops).
641
648
642 * IPython/genutils.py (shell): fix small but critical bug for
649 * IPython/genutils.py (shell): fix small but critical bug for
643 win32 system access.
650 win32 system access.
644
651
645 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
652 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
646
653
647 * IPython/iplib.py (showtraceback): remove use of the
654 * IPython/iplib.py (showtraceback): remove use of the
648 sys.last_{type/value/traceback} structures, which are non
655 sys.last_{type/value/traceback} structures, which are non
649 thread-safe.
656 thread-safe.
650 (_prefilter): change control flow to ensure that we NEVER
657 (_prefilter): change control flow to ensure that we NEVER
651 introspect objects when autocall is off. This will guarantee that
658 introspect objects when autocall is off. This will guarantee that
652 having an input line of the form 'x.y', where access to attribute
659 having an input line of the form 'x.y', where access to attribute
653 'y' has side effects, doesn't trigger the side effect TWICE. It
660 'y' has side effects, doesn't trigger the side effect TWICE. It
654 is important to note that, with autocall on, these side effects
661 is important to note that, with autocall on, these side effects
655 can still happen.
662 can still happen.
656 (ipsystem): new builtin, to complete the ip{magic/alias/system}
663 (ipsystem): new builtin, to complete the ip{magic/alias/system}
657 trio. IPython offers these three kinds of special calls which are
664 trio. IPython offers these three kinds of special calls which are
658 not python code, and it's a good thing to have their call method
665 not python code, and it's a good thing to have their call method
659 be accessible as pure python functions (not just special syntax at
666 be accessible as pure python functions (not just special syntax at
660 the command line). It gives us a better internal implementation
667 the command line). It gives us a better internal implementation
661 structure, as well as exposing these for user scripting more
668 structure, as well as exposing these for user scripting more
662 cleanly.
669 cleanly.
663
670
664 * IPython/macro.py (Macro.__init__): moved macros to a standalone
671 * IPython/macro.py (Macro.__init__): moved macros to a standalone
665 file. Now that they'll be more likely to be used with the
672 file. Now that they'll be more likely to be used with the
666 persistance system (%store), I want to make sure their module path
673 persistance system (%store), I want to make sure their module path
667 doesn't change in the future, so that we don't break things for
674 doesn't change in the future, so that we don't break things for
668 users' persisted data.
675 users' persisted data.
669
676
670 * IPython/iplib.py (autoindent_update): move indentation
677 * IPython/iplib.py (autoindent_update): move indentation
671 management into the _text_ processing loop, not the keyboard
678 management into the _text_ processing loop, not the keyboard
672 interactive one. This is necessary to correctly process non-typed
679 interactive one. This is necessary to correctly process non-typed
673 multiline input (such as macros).
680 multiline input (such as macros).
674
681
675 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
682 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
676 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
683 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
677 which was producing problems in the resulting manual.
684 which was producing problems in the resulting manual.
678 (magic_whos): improve reporting of instances (show their class,
685 (magic_whos): improve reporting of instances (show their class,
679 instead of simply printing 'instance' which isn't terribly
686 instead of simply printing 'instance' which isn't terribly
680 informative).
687 informative).
681
688
682 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
689 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
683 (minor mods) to support network shares under win32.
690 (minor mods) to support network shares under win32.
684
691
685 * IPython/winconsole.py (get_console_size): add new winconsole
692 * IPython/winconsole.py (get_console_size): add new winconsole
686 module and fixes to page_dumb() to improve its behavior under
693 module and fixes to page_dumb() to improve its behavior under
687 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
694 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
688
695
689 * IPython/Magic.py (Macro): simplified Macro class to just
696 * IPython/Magic.py (Macro): simplified Macro class to just
690 subclass list. We've had only 2.2 compatibility for a very long
697 subclass list. We've had only 2.2 compatibility for a very long
691 time, yet I was still avoiding subclassing the builtin types. No
698 time, yet I was still avoiding subclassing the builtin types. No
692 more (I'm also starting to use properties, though I won't shift to
699 more (I'm also starting to use properties, though I won't shift to
693 2.3-specific features quite yet).
700 2.3-specific features quite yet).
694 (magic_store): added Ville's patch for lightweight variable
701 (magic_store): added Ville's patch for lightweight variable
695 persistence, after a request on the user list by Matt Wilkie
702 persistence, after a request on the user list by Matt Wilkie
696 <maphew-AT-gmail.com>. The new %store magic's docstring has full
703 <maphew-AT-gmail.com>. The new %store magic's docstring has full
697 details.
704 details.
698
705
699 * IPython/iplib.py (InteractiveShell.post_config_initialization):
706 * IPython/iplib.py (InteractiveShell.post_config_initialization):
700 changed the default logfile name from 'ipython.log' to
707 changed the default logfile name from 'ipython.log' to
701 'ipython_log.py'. These logs are real python files, and now that
708 'ipython_log.py'. These logs are real python files, and now that
702 we have much better multiline support, people are more likely to
709 we have much better multiline support, people are more likely to
703 want to use them as such. Might as well name them correctly.
710 want to use them as such. Might as well name them correctly.
704
711
705 * IPython/Magic.py: substantial cleanup. While we can't stop
712 * IPython/Magic.py: substantial cleanup. While we can't stop
706 using magics as mixins, due to the existing customizations 'out
713 using magics as mixins, due to the existing customizations 'out
707 there' which rely on the mixin naming conventions, at least I
714 there' which rely on the mixin naming conventions, at least I
708 cleaned out all cross-class name usage. So once we are OK with
715 cleaned out all cross-class name usage. So once we are OK with
709 breaking compatibility, the two systems can be separated.
716 breaking compatibility, the two systems can be separated.
710
717
711 * IPython/Logger.py: major cleanup. This one is NOT a mixin
718 * IPython/Logger.py: major cleanup. This one is NOT a mixin
712 anymore, and the class is a fair bit less hideous as well. New
719 anymore, and the class is a fair bit less hideous as well. New
713 features were also introduced: timestamping of input, and logging
720 features were also introduced: timestamping of input, and logging
714 of output results. These are user-visible with the -t and -o
721 of output results. These are user-visible with the -t and -o
715 options to %logstart. Closes
722 options to %logstart. Closes
716 http://www.scipy.net/roundup/ipython/issue11 and a request by
723 http://www.scipy.net/roundup/ipython/issue11 and a request by
717 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
724 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
718
725
719 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
726 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
720
727
721 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
728 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
722 better hadnle backslashes in paths. See the thread 'More Windows
729 better hadnle backslashes in paths. See the thread 'More Windows
723 questions part 2 - \/ characters revisited' on the iypthon user
730 questions part 2 - \/ characters revisited' on the iypthon user
724 list:
731 list:
725 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
732 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
726
733
727 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
734 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
728
735
729 (InteractiveShell.__init__): change threaded shells to not use the
736 (InteractiveShell.__init__): change threaded shells to not use the
730 ipython crash handler. This was causing more problems than not,
737 ipython crash handler. This was causing more problems than not,
731 as exceptions in the main thread (GUI code, typically) would
738 as exceptions in the main thread (GUI code, typically) would
732 always show up as a 'crash', when they really weren't.
739 always show up as a 'crash', when they really weren't.
733
740
734 The colors and exception mode commands (%colors/%xmode) have been
741 The colors and exception mode commands (%colors/%xmode) have been
735 synchronized to also take this into account, so users can get
742 synchronized to also take this into account, so users can get
736 verbose exceptions for their threaded code as well. I also added
743 verbose exceptions for their threaded code as well. I also added
737 support for activating pdb inside this exception handler as well,
744 support for activating pdb inside this exception handler as well,
738 so now GUI authors can use IPython's enhanced pdb at runtime.
745 so now GUI authors can use IPython's enhanced pdb at runtime.
739
746
740 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
747 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
741 true by default, and add it to the shipped ipythonrc file. Since
748 true by default, and add it to the shipped ipythonrc file. Since
742 this asks the user before proceeding, I think it's OK to make it
749 this asks the user before proceeding, I think it's OK to make it
743 true by default.
750 true by default.
744
751
745 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
752 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
746 of the previous special-casing of input in the eval loop. I think
753 of the previous special-casing of input in the eval loop. I think
747 this is cleaner, as they really are commands and shouldn't have
754 this is cleaner, as they really are commands and shouldn't have
748 a special role in the middle of the core code.
755 a special role in the middle of the core code.
749
756
750 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
757 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
751
758
752 * IPython/iplib.py (edit_syntax_error): added support for
759 * IPython/iplib.py (edit_syntax_error): added support for
753 automatically reopening the editor if the file had a syntax error
760 automatically reopening the editor if the file had a syntax error
754 in it. Thanks to scottt who provided the patch at:
761 in it. Thanks to scottt who provided the patch at:
755 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
762 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
756 version committed).
763 version committed).
757
764
758 * IPython/iplib.py (handle_normal): add suport for multi-line
765 * IPython/iplib.py (handle_normal): add suport for multi-line
759 input with emtpy lines. This fixes
766 input with emtpy lines. This fixes
760 http://www.scipy.net/roundup/ipython/issue43 and a similar
767 http://www.scipy.net/roundup/ipython/issue43 and a similar
761 discussion on the user list.
768 discussion on the user list.
762
769
763 WARNING: a behavior change is necessarily introduced to support
770 WARNING: a behavior change is necessarily introduced to support
764 blank lines: now a single blank line with whitespace does NOT
771 blank lines: now a single blank line with whitespace does NOT
765 break the input loop, which means that when autoindent is on, by
772 break the input loop, which means that when autoindent is on, by
766 default hitting return on the next (indented) line does NOT exit.
773 default hitting return on the next (indented) line does NOT exit.
767
774
768 Instead, to exit a multiline input you can either have:
775 Instead, to exit a multiline input you can either have:
769
776
770 - TWO whitespace lines (just hit return again), or
777 - TWO whitespace lines (just hit return again), or
771 - a single whitespace line of a different length than provided
778 - a single whitespace line of a different length than provided
772 by the autoindent (add or remove a space).
779 by the autoindent (add or remove a space).
773
780
774 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
781 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
775 module to better organize all readline-related functionality.
782 module to better organize all readline-related functionality.
776 I've deleted FlexCompleter and put all completion clases here.
783 I've deleted FlexCompleter and put all completion clases here.
777
784
778 * IPython/iplib.py (raw_input): improve indentation management.
785 * IPython/iplib.py (raw_input): improve indentation management.
779 It is now possible to paste indented code with autoindent on, and
786 It is now possible to paste indented code with autoindent on, and
780 the code is interpreted correctly (though it still looks bad on
787 the code is interpreted correctly (though it still looks bad on
781 screen, due to the line-oriented nature of ipython).
788 screen, due to the line-oriented nature of ipython).
782 (MagicCompleter.complete): change behavior so that a TAB key on an
789 (MagicCompleter.complete): change behavior so that a TAB key on an
783 otherwise empty line actually inserts a tab, instead of completing
790 otherwise empty line actually inserts a tab, instead of completing
784 on the entire global namespace. This makes it easier to use the
791 on the entire global namespace. This makes it easier to use the
785 TAB key for indentation. After a request by Hans Meine
792 TAB key for indentation. After a request by Hans Meine
786 <hans_meine-AT-gmx.net>
793 <hans_meine-AT-gmx.net>
787 (_prefilter): add support so that typing plain 'exit' or 'quit'
794 (_prefilter): add support so that typing plain 'exit' or 'quit'
788 does a sensible thing. Originally I tried to deviate as little as
795 does a sensible thing. Originally I tried to deviate as little as
789 possible from the default python behavior, but even that one may
796 possible from the default python behavior, but even that one may
790 change in this direction (thread on python-dev to that effect).
797 change in this direction (thread on python-dev to that effect).
791 Regardless, ipython should do the right thing even if CPython's
798 Regardless, ipython should do the right thing even if CPython's
792 '>>>' prompt doesn't.
799 '>>>' prompt doesn't.
793 (InteractiveShell): removed subclassing code.InteractiveConsole
800 (InteractiveShell): removed subclassing code.InteractiveConsole
794 class. By now we'd overridden just about all of its methods: I've
801 class. By now we'd overridden just about all of its methods: I've
795 copied the remaining two over, and now ipython is a standalone
802 copied the remaining two over, and now ipython is a standalone
796 class. This will provide a clearer picture for the chainsaw
803 class. This will provide a clearer picture for the chainsaw
797 branch refactoring.
804 branch refactoring.
798
805
799 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
806 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
800
807
801 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
808 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
802 failures for objects which break when dir() is called on them.
809 failures for objects which break when dir() is called on them.
803
810
804 * IPython/FlexCompleter.py (Completer.__init__): Added support for
811 * IPython/FlexCompleter.py (Completer.__init__): Added support for
805 distinct local and global namespaces in the completer API. This
812 distinct local and global namespaces in the completer API. This
806 change allows us top properly handle completion with distinct
813 change allows us top properly handle completion with distinct
807 scopes, including in embedded instances (this had never really
814 scopes, including in embedded instances (this had never really
808 worked correctly).
815 worked correctly).
809
816
810 Note: this introduces a change in the constructor for
817 Note: this introduces a change in the constructor for
811 MagicCompleter, as a new global_namespace parameter is now the
818 MagicCompleter, as a new global_namespace parameter is now the
812 second argument (the others were bumped one position).
819 second argument (the others were bumped one position).
813
820
814 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
821 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
815
822
816 * IPython/iplib.py (embed_mainloop): fix tab-completion in
823 * IPython/iplib.py (embed_mainloop): fix tab-completion in
817 embedded instances (which can be done now thanks to Vivian's
824 embedded instances (which can be done now thanks to Vivian's
818 frame-handling fixes for pdb).
825 frame-handling fixes for pdb).
819 (InteractiveShell.__init__): Fix namespace handling problem in
826 (InteractiveShell.__init__): Fix namespace handling problem in
820 embedded instances. We were overwriting __main__ unconditionally,
827 embedded instances. We were overwriting __main__ unconditionally,
821 and this should only be done for 'full' (non-embedded) IPython;
828 and this should only be done for 'full' (non-embedded) IPython;
822 embedded instances must respect the caller's __main__. Thanks to
829 embedded instances must respect the caller's __main__. Thanks to
823 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
830 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
824
831
825 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
832 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
826
833
827 * setup.py: added download_url to setup(). This registers the
834 * setup.py: added download_url to setup(). This registers the
828 download address at PyPI, which is not only useful to humans
835 download address at PyPI, which is not only useful to humans
829 browsing the site, but is also picked up by setuptools (the Eggs
836 browsing the site, but is also picked up by setuptools (the Eggs
830 machinery). Thanks to Ville and R. Kern for the info/discussion
837 machinery). Thanks to Ville and R. Kern for the info/discussion
831 on this.
838 on this.
832
839
833 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
840 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
834
841
835 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
842 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
836 This brings a lot of nice functionality to the pdb mode, which now
843 This brings a lot of nice functionality to the pdb mode, which now
837 has tab-completion, syntax highlighting, and better stack handling
844 has tab-completion, syntax highlighting, and better stack handling
838 than before. Many thanks to Vivian De Smedt
845 than before. Many thanks to Vivian De Smedt
839 <vivian-AT-vdesmedt.com> for the original patches.
846 <vivian-AT-vdesmedt.com> for the original patches.
840
847
841 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
848 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
842
849
843 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
850 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
844 sequence to consistently accept the banner argument. The
851 sequence to consistently accept the banner argument. The
845 inconsistency was tripping SAGE, thanks to Gary Zablackis
852 inconsistency was tripping SAGE, thanks to Gary Zablackis
846 <gzabl-AT-yahoo.com> for the report.
853 <gzabl-AT-yahoo.com> for the report.
847
854
848 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
855 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
849
856
850 * IPython/iplib.py (InteractiveShell.post_config_initialization):
857 * IPython/iplib.py (InteractiveShell.post_config_initialization):
851 Fix bug where a naked 'alias' call in the ipythonrc file would
858 Fix bug where a naked 'alias' call in the ipythonrc file would
852 cause a crash. Bug reported by Jorgen Stenarson.
859 cause a crash. Bug reported by Jorgen Stenarson.
853
860
854 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
861 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
855
862
856 * IPython/ipmaker.py (make_IPython): cleanups which should improve
863 * IPython/ipmaker.py (make_IPython): cleanups which should improve
857 startup time.
864 startup time.
858
865
859 * IPython/iplib.py (runcode): my globals 'fix' for embedded
866 * IPython/iplib.py (runcode): my globals 'fix' for embedded
860 instances had introduced a bug with globals in normal code. Now
867 instances had introduced a bug with globals in normal code. Now
861 it's working in all cases.
868 it's working in all cases.
862
869
863 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
870 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
864 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
871 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
865 has been introduced to set the default case sensitivity of the
872 has been introduced to set the default case sensitivity of the
866 searches. Users can still select either mode at runtime on a
873 searches. Users can still select either mode at runtime on a
867 per-search basis.
874 per-search basis.
868
875
869 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
876 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
870
877
871 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
878 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
872 attributes in wildcard searches for subclasses. Modified version
879 attributes in wildcard searches for subclasses. Modified version
873 of a patch by Jorgen.
880 of a patch by Jorgen.
874
881
875 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
882 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
876
883
877 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
884 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
878 embedded instances. I added a user_global_ns attribute to the
885 embedded instances. I added a user_global_ns attribute to the
879 InteractiveShell class to handle this.
886 InteractiveShell class to handle this.
880
887
881 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
888 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
882
889
883 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
890 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
884 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
891 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
885 (reported under win32, but may happen also in other platforms).
892 (reported under win32, but may happen also in other platforms).
886 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
893 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
887
894
888 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
895 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
889
896
890 * IPython/Magic.py (magic_psearch): new support for wildcard
897 * IPython/Magic.py (magic_psearch): new support for wildcard
891 patterns. Now, typing ?a*b will list all names which begin with a
898 patterns. Now, typing ?a*b will list all names which begin with a
892 and end in b, for example. The %psearch magic has full
899 and end in b, for example. The %psearch magic has full
893 docstrings. Many thanks to JΓΆrgen Stenarson
900 docstrings. Many thanks to JΓΆrgen Stenarson
894 <jorgen.stenarson-AT-bostream.nu>, author of the patches
901 <jorgen.stenarson-AT-bostream.nu>, author of the patches
895 implementing this functionality.
902 implementing this functionality.
896
903
897 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
904 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
898
905
899 * Manual: fixed long-standing annoyance of double-dashes (as in
906 * Manual: fixed long-standing annoyance of double-dashes (as in
900 --prefix=~, for example) being stripped in the HTML version. This
907 --prefix=~, for example) being stripped in the HTML version. This
901 is a latex2html bug, but a workaround was provided. Many thanks
908 is a latex2html bug, but a workaround was provided. Many thanks
902 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
909 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
903 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
910 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
904 rolling. This seemingly small issue had tripped a number of users
911 rolling. This seemingly small issue had tripped a number of users
905 when first installing, so I'm glad to see it gone.
912 when first installing, so I'm glad to see it gone.
906
913
907 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
914 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
908
915
909 * IPython/Extensions/numeric_formats.py: fix missing import,
916 * IPython/Extensions/numeric_formats.py: fix missing import,
910 reported by Stephen Walton.
917 reported by Stephen Walton.
911
918
912 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
919 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
913
920
914 * IPython/demo.py: finish demo module, fully documented now.
921 * IPython/demo.py: finish demo module, fully documented now.
915
922
916 * IPython/genutils.py (file_read): simple little utility to read a
923 * IPython/genutils.py (file_read): simple little utility to read a
917 file and ensure it's closed afterwards.
924 file and ensure it's closed afterwards.
918
925
919 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
926 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
920
927
921 * IPython/demo.py (Demo.__init__): added support for individually
928 * IPython/demo.py (Demo.__init__): added support for individually
922 tagging blocks for automatic execution.
929 tagging blocks for automatic execution.
923
930
924 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
931 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
925 syntax-highlighted python sources, requested by John.
932 syntax-highlighted python sources, requested by John.
926
933
927 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
934 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
928
935
929 * IPython/demo.py (Demo.again): fix bug where again() blocks after
936 * IPython/demo.py (Demo.again): fix bug where again() blocks after
930 finishing.
937 finishing.
931
938
932 * IPython/genutils.py (shlex_split): moved from Magic to here,
939 * IPython/genutils.py (shlex_split): moved from Magic to here,
933 where all 2.2 compatibility stuff lives. I needed it for demo.py.
940 where all 2.2 compatibility stuff lives. I needed it for demo.py.
934
941
935 * IPython/demo.py (Demo.__init__): added support for silent
942 * IPython/demo.py (Demo.__init__): added support for silent
936 blocks, improved marks as regexps, docstrings written.
943 blocks, improved marks as regexps, docstrings written.
937 (Demo.__init__): better docstring, added support for sys.argv.
944 (Demo.__init__): better docstring, added support for sys.argv.
938
945
939 * IPython/genutils.py (marquee): little utility used by the demo
946 * IPython/genutils.py (marquee): little utility used by the demo
940 code, handy in general.
947 code, handy in general.
941
948
942 * IPython/demo.py (Demo.__init__): new class for interactive
949 * IPython/demo.py (Demo.__init__): new class for interactive
943 demos. Not documented yet, I just wrote it in a hurry for
950 demos. Not documented yet, I just wrote it in a hurry for
944 scipy'05. Will docstring later.
951 scipy'05. Will docstring later.
945
952
946 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
953 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
947
954
948 * IPython/Shell.py (sigint_handler): Drastic simplification which
955 * IPython/Shell.py (sigint_handler): Drastic simplification which
949 also seems to make Ctrl-C work correctly across threads! This is
956 also seems to make Ctrl-C work correctly across threads! This is
950 so simple, that I can't beleive I'd missed it before. Needs more
957 so simple, that I can't beleive I'd missed it before. Needs more
951 testing, though.
958 testing, though.
952 (KBINT): Never mind, revert changes. I'm sure I'd tried something
959 (KBINT): Never mind, revert changes. I'm sure I'd tried something
953 like this before...
960 like this before...
954
961
955 * IPython/genutils.py (get_home_dir): add protection against
962 * IPython/genutils.py (get_home_dir): add protection against
956 non-dirs in win32 registry.
963 non-dirs in win32 registry.
957
964
958 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
965 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
959 bug where dict was mutated while iterating (pysh crash).
966 bug where dict was mutated while iterating (pysh crash).
960
967
961 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
968 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
962
969
963 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
970 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
964 spurious newlines added by this routine. After a report by
971 spurious newlines added by this routine. After a report by
965 F. Mantegazza.
972 F. Mantegazza.
966
973
967 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
974 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
968
975
969 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
976 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
970 calls. These were a leftover from the GTK 1.x days, and can cause
977 calls. These were a leftover from the GTK 1.x days, and can cause
971 problems in certain cases (after a report by John Hunter).
978 problems in certain cases (after a report by John Hunter).
972
979
973 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
980 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
974 os.getcwd() fails at init time. Thanks to patch from David Remahl
981 os.getcwd() fails at init time. Thanks to patch from David Remahl
975 <chmod007-AT-mac.com>.
982 <chmod007-AT-mac.com>.
976 (InteractiveShell.__init__): prevent certain special magics from
983 (InteractiveShell.__init__): prevent certain special magics from
977 being shadowed by aliases. Closes
984 being shadowed by aliases. Closes
978 http://www.scipy.net/roundup/ipython/issue41.
985 http://www.scipy.net/roundup/ipython/issue41.
979
986
980 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
987 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
981
988
982 * IPython/iplib.py (InteractiveShell.complete): Added new
989 * IPython/iplib.py (InteractiveShell.complete): Added new
983 top-level completion method to expose the completion mechanism
990 top-level completion method to expose the completion mechanism
984 beyond readline-based environments.
991 beyond readline-based environments.
985
992
986 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
993 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
987
994
988 * tools/ipsvnc (svnversion): fix svnversion capture.
995 * tools/ipsvnc (svnversion): fix svnversion capture.
989
996
990 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
997 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
991 attribute to self, which was missing. Before, it was set by a
998 attribute to self, which was missing. Before, it was set by a
992 routine which in certain cases wasn't being called, so the
999 routine which in certain cases wasn't being called, so the
993 instance could end up missing the attribute. This caused a crash.
1000 instance could end up missing the attribute. This caused a crash.
994 Closes http://www.scipy.net/roundup/ipython/issue40.
1001 Closes http://www.scipy.net/roundup/ipython/issue40.
995
1002
996 2005-08-16 Fernando Perez <fperez@colorado.edu>
1003 2005-08-16 Fernando Perez <fperez@colorado.edu>
997
1004
998 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1005 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
999 contains non-string attribute. Closes
1006 contains non-string attribute. Closes
1000 http://www.scipy.net/roundup/ipython/issue38.
1007 http://www.scipy.net/roundup/ipython/issue38.
1001
1008
1002 2005-08-14 Fernando Perez <fperez@colorado.edu>
1009 2005-08-14 Fernando Perez <fperez@colorado.edu>
1003
1010
1004 * tools/ipsvnc: Minor improvements, to add changeset info.
1011 * tools/ipsvnc: Minor improvements, to add changeset info.
1005
1012
1006 2005-08-12 Fernando Perez <fperez@colorado.edu>
1013 2005-08-12 Fernando Perez <fperez@colorado.edu>
1007
1014
1008 * IPython/iplib.py (runsource): remove self.code_to_run_src
1015 * IPython/iplib.py (runsource): remove self.code_to_run_src
1009 attribute. I realized this is nothing more than
1016 attribute. I realized this is nothing more than
1010 '\n'.join(self.buffer), and having the same data in two different
1017 '\n'.join(self.buffer), and having the same data in two different
1011 places is just asking for synchronization bugs. This may impact
1018 places is just asking for synchronization bugs. This may impact
1012 people who have custom exception handlers, so I need to warn
1019 people who have custom exception handlers, so I need to warn
1013 ipython-dev about it (F. Mantegazza may use them).
1020 ipython-dev about it (F. Mantegazza may use them).
1014
1021
1015 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1022 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1016
1023
1017 * IPython/genutils.py: fix 2.2 compatibility (generators)
1024 * IPython/genutils.py: fix 2.2 compatibility (generators)
1018
1025
1019 2005-07-18 Fernando Perez <fperez@colorado.edu>
1026 2005-07-18 Fernando Perez <fperez@colorado.edu>
1020
1027
1021 * IPython/genutils.py (get_home_dir): fix to help users with
1028 * IPython/genutils.py (get_home_dir): fix to help users with
1022 invalid $HOME under win32.
1029 invalid $HOME under win32.
1023
1030
1024 2005-07-17 Fernando Perez <fperez@colorado.edu>
1031 2005-07-17 Fernando Perez <fperez@colorado.edu>
1025
1032
1026 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1033 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1027 some old hacks and clean up a bit other routines; code should be
1034 some old hacks and clean up a bit other routines; code should be
1028 simpler and a bit faster.
1035 simpler and a bit faster.
1029
1036
1030 * IPython/iplib.py (interact): removed some last-resort attempts
1037 * IPython/iplib.py (interact): removed some last-resort attempts
1031 to survive broken stdout/stderr. That code was only making it
1038 to survive broken stdout/stderr. That code was only making it
1032 harder to abstract out the i/o (necessary for gui integration),
1039 harder to abstract out the i/o (necessary for gui integration),
1033 and the crashes it could prevent were extremely rare in practice
1040 and the crashes it could prevent were extremely rare in practice
1034 (besides being fully user-induced in a pretty violent manner).
1041 (besides being fully user-induced in a pretty violent manner).
1035
1042
1036 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1043 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1037 Nothing major yet, but the code is simpler to read; this should
1044 Nothing major yet, but the code is simpler to read; this should
1038 make it easier to do more serious modifications in the future.
1045 make it easier to do more serious modifications in the future.
1039
1046
1040 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1047 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1041 which broke in .15 (thanks to a report by Ville).
1048 which broke in .15 (thanks to a report by Ville).
1042
1049
1043 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1050 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1044 be quite correct, I know next to nothing about unicode). This
1051 be quite correct, I know next to nothing about unicode). This
1045 will allow unicode strings to be used in prompts, amongst other
1052 will allow unicode strings to be used in prompts, amongst other
1046 cases. It also will prevent ipython from crashing when unicode
1053 cases. It also will prevent ipython from crashing when unicode
1047 shows up unexpectedly in many places. If ascii encoding fails, we
1054 shows up unexpectedly in many places. If ascii encoding fails, we
1048 assume utf_8. Currently the encoding is not a user-visible
1055 assume utf_8. Currently the encoding is not a user-visible
1049 setting, though it could be made so if there is demand for it.
1056 setting, though it could be made so if there is demand for it.
1050
1057
1051 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1058 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1052
1059
1053 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1060 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1054
1061
1055 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1062 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1056
1063
1057 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1064 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1058 code can work transparently for 2.2/2.3.
1065 code can work transparently for 2.2/2.3.
1059
1066
1060 2005-07-16 Fernando Perez <fperez@colorado.edu>
1067 2005-07-16 Fernando Perez <fperez@colorado.edu>
1061
1068
1062 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1069 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1063 out of the color scheme table used for coloring exception
1070 out of the color scheme table used for coloring exception
1064 tracebacks. This allows user code to add new schemes at runtime.
1071 tracebacks. This allows user code to add new schemes at runtime.
1065 This is a minimally modified version of the patch at
1072 This is a minimally modified version of the patch at
1066 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1073 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1067 for the contribution.
1074 for the contribution.
1068
1075
1069 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1076 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1070 slightly modified version of the patch in
1077 slightly modified version of the patch in
1071 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1078 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1072 to remove the previous try/except solution (which was costlier).
1079 to remove the previous try/except solution (which was costlier).
1073 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1080 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1074
1081
1075 2005-06-08 Fernando Perez <fperez@colorado.edu>
1082 2005-06-08 Fernando Perez <fperez@colorado.edu>
1076
1083
1077 * IPython/iplib.py (write/write_err): Add methods to abstract all
1084 * IPython/iplib.py (write/write_err): Add methods to abstract all
1078 I/O a bit more.
1085 I/O a bit more.
1079
1086
1080 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1087 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1081 warning, reported by Aric Hagberg, fix by JD Hunter.
1088 warning, reported by Aric Hagberg, fix by JD Hunter.
1082
1089
1083 2005-06-02 *** Released version 0.6.15
1090 2005-06-02 *** Released version 0.6.15
1084
1091
1085 2005-06-01 Fernando Perez <fperez@colorado.edu>
1092 2005-06-01 Fernando Perez <fperez@colorado.edu>
1086
1093
1087 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1094 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1088 tab-completion of filenames within open-quoted strings. Note that
1095 tab-completion of filenames within open-quoted strings. Note that
1089 this requires that in ~/.ipython/ipythonrc, users change the
1096 this requires that in ~/.ipython/ipythonrc, users change the
1090 readline delimiters configuration to read:
1097 readline delimiters configuration to read:
1091
1098
1092 readline_remove_delims -/~
1099 readline_remove_delims -/~
1093
1100
1094
1101
1095 2005-05-31 *** Released version 0.6.14
1102 2005-05-31 *** Released version 0.6.14
1096
1103
1097 2005-05-29 Fernando Perez <fperez@colorado.edu>
1104 2005-05-29 Fernando Perez <fperez@colorado.edu>
1098
1105
1099 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1106 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1100 with files not on the filesystem. Reported by Eliyahu Sandler
1107 with files not on the filesystem. Reported by Eliyahu Sandler
1101 <eli@gondolin.net>
1108 <eli@gondolin.net>
1102
1109
1103 2005-05-22 Fernando Perez <fperez@colorado.edu>
1110 2005-05-22 Fernando Perez <fperez@colorado.edu>
1104
1111
1105 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1112 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1106 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1113 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1107
1114
1108 2005-05-19 Fernando Perez <fperez@colorado.edu>
1115 2005-05-19 Fernando Perez <fperez@colorado.edu>
1109
1116
1110 * IPython/iplib.py (safe_execfile): close a file which could be
1117 * IPython/iplib.py (safe_execfile): close a file which could be
1111 left open (causing problems in win32, which locks open files).
1118 left open (causing problems in win32, which locks open files).
1112 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1119 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1113
1120
1114 2005-05-18 Fernando Perez <fperez@colorado.edu>
1121 2005-05-18 Fernando Perez <fperez@colorado.edu>
1115
1122
1116 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1123 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1117 keyword arguments correctly to safe_execfile().
1124 keyword arguments correctly to safe_execfile().
1118
1125
1119 2005-05-13 Fernando Perez <fperez@colorado.edu>
1126 2005-05-13 Fernando Perez <fperez@colorado.edu>
1120
1127
1121 * ipython.1: Added info about Qt to manpage, and threads warning
1128 * ipython.1: Added info about Qt to manpage, and threads warning
1122 to usage page (invoked with --help).
1129 to usage page (invoked with --help).
1123
1130
1124 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1131 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1125 new matcher (it goes at the end of the priority list) to do
1132 new matcher (it goes at the end of the priority list) to do
1126 tab-completion on named function arguments. Submitted by George
1133 tab-completion on named function arguments. Submitted by George
1127 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1134 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1128 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1135 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1129 for more details.
1136 for more details.
1130
1137
1131 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1138 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1132 SystemExit exceptions in the script being run. Thanks to a report
1139 SystemExit exceptions in the script being run. Thanks to a report
1133 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1140 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1134 producing very annoying behavior when running unit tests.
1141 producing very annoying behavior when running unit tests.
1135
1142
1136 2005-05-12 Fernando Perez <fperez@colorado.edu>
1143 2005-05-12 Fernando Perez <fperez@colorado.edu>
1137
1144
1138 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1145 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1139 which I'd broken (again) due to a changed regexp. In the process,
1146 which I'd broken (again) due to a changed regexp. In the process,
1140 added ';' as an escape to auto-quote the whole line without
1147 added ';' as an escape to auto-quote the whole line without
1141 splitting its arguments. Thanks to a report by Jerry McRae
1148 splitting its arguments. Thanks to a report by Jerry McRae
1142 <qrs0xyc02-AT-sneakemail.com>.
1149 <qrs0xyc02-AT-sneakemail.com>.
1143
1150
1144 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1151 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1145 possible crashes caused by a TokenError. Reported by Ed Schofield
1152 possible crashes caused by a TokenError. Reported by Ed Schofield
1146 <schofield-AT-ftw.at>.
1153 <schofield-AT-ftw.at>.
1147
1154
1148 2005-05-06 Fernando Perez <fperez@colorado.edu>
1155 2005-05-06 Fernando Perez <fperez@colorado.edu>
1149
1156
1150 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1157 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1151
1158
1152 2005-04-29 Fernando Perez <fperez@colorado.edu>
1159 2005-04-29 Fernando Perez <fperez@colorado.edu>
1153
1160
1154 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1161 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1155 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1162 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1156 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1163 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1157 which provides support for Qt interactive usage (similar to the
1164 which provides support for Qt interactive usage (similar to the
1158 existing one for WX and GTK). This had been often requested.
1165 existing one for WX and GTK). This had been often requested.
1159
1166
1160 2005-04-14 *** Released version 0.6.13
1167 2005-04-14 *** Released version 0.6.13
1161
1168
1162 2005-04-08 Fernando Perez <fperez@colorado.edu>
1169 2005-04-08 Fernando Perez <fperez@colorado.edu>
1163
1170
1164 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1171 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1165 from _ofind, which gets called on almost every input line. Now,
1172 from _ofind, which gets called on almost every input line. Now,
1166 we only try to get docstrings if they are actually going to be
1173 we only try to get docstrings if they are actually going to be
1167 used (the overhead of fetching unnecessary docstrings can be
1174 used (the overhead of fetching unnecessary docstrings can be
1168 noticeable for certain objects, such as Pyro proxies).
1175 noticeable for certain objects, such as Pyro proxies).
1169
1176
1170 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1177 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1171 for completers. For some reason I had been passing them the state
1178 for completers. For some reason I had been passing them the state
1172 variable, which completers never actually need, and was in
1179 variable, which completers never actually need, and was in
1173 conflict with the rlcompleter API. Custom completers ONLY need to
1180 conflict with the rlcompleter API. Custom completers ONLY need to
1174 take the text parameter.
1181 take the text parameter.
1175
1182
1176 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1183 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1177 work correctly in pysh. I've also moved all the logic which used
1184 work correctly in pysh. I've also moved all the logic which used
1178 to be in pysh.py here, which will prevent problems with future
1185 to be in pysh.py here, which will prevent problems with future
1179 upgrades. However, this time I must warn users to update their
1186 upgrades. However, this time I must warn users to update their
1180 pysh profile to include the line
1187 pysh profile to include the line
1181
1188
1182 import_all IPython.Extensions.InterpreterExec
1189 import_all IPython.Extensions.InterpreterExec
1183
1190
1184 because otherwise things won't work for them. They MUST also
1191 because otherwise things won't work for them. They MUST also
1185 delete pysh.py and the line
1192 delete pysh.py and the line
1186
1193
1187 execfile pysh.py
1194 execfile pysh.py
1188
1195
1189 from their ipythonrc-pysh.
1196 from their ipythonrc-pysh.
1190
1197
1191 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1198 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1192 robust in the face of objects whose dir() returns non-strings
1199 robust in the face of objects whose dir() returns non-strings
1193 (which it shouldn't, but some broken libs like ITK do). Thanks to
1200 (which it shouldn't, but some broken libs like ITK do). Thanks to
1194 a patch by John Hunter (implemented differently, though). Also
1201 a patch by John Hunter (implemented differently, though). Also
1195 minor improvements by using .extend instead of + on lists.
1202 minor improvements by using .extend instead of + on lists.
1196
1203
1197 * pysh.py:
1204 * pysh.py:
1198
1205
1199 2005-04-06 Fernando Perez <fperez@colorado.edu>
1206 2005-04-06 Fernando Perez <fperez@colorado.edu>
1200
1207
1201 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1208 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1202 by default, so that all users benefit from it. Those who don't
1209 by default, so that all users benefit from it. Those who don't
1203 want it can still turn it off.
1210 want it can still turn it off.
1204
1211
1205 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1212 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1206 config file, I'd forgotten about this, so users were getting it
1213 config file, I'd forgotten about this, so users were getting it
1207 off by default.
1214 off by default.
1208
1215
1209 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1216 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1210 consistency. Now magics can be called in multiline statements,
1217 consistency. Now magics can be called in multiline statements,
1211 and python variables can be expanded in magic calls via $var.
1218 and python variables can be expanded in magic calls via $var.
1212 This makes the magic system behave just like aliases or !system
1219 This makes the magic system behave just like aliases or !system
1213 calls.
1220 calls.
1214
1221
1215 2005-03-28 Fernando Perez <fperez@colorado.edu>
1222 2005-03-28 Fernando Perez <fperez@colorado.edu>
1216
1223
1217 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1224 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1218 expensive string additions for building command. Add support for
1225 expensive string additions for building command. Add support for
1219 trailing ';' when autocall is used.
1226 trailing ';' when autocall is used.
1220
1227
1221 2005-03-26 Fernando Perez <fperez@colorado.edu>
1228 2005-03-26 Fernando Perez <fperez@colorado.edu>
1222
1229
1223 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1230 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1224 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1231 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1225 ipython.el robust against prompts with any number of spaces
1232 ipython.el robust against prompts with any number of spaces
1226 (including 0) after the ':' character.
1233 (including 0) after the ':' character.
1227
1234
1228 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1235 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1229 continuation prompt, which misled users to think the line was
1236 continuation prompt, which misled users to think the line was
1230 already indented. Closes debian Bug#300847, reported to me by
1237 already indented. Closes debian Bug#300847, reported to me by
1231 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1238 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1232
1239
1233 2005-03-23 Fernando Perez <fperez@colorado.edu>
1240 2005-03-23 Fernando Perez <fperez@colorado.edu>
1234
1241
1235 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1242 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1236 properly aligned if they have embedded newlines.
1243 properly aligned if they have embedded newlines.
1237
1244
1238 * IPython/iplib.py (runlines): Add a public method to expose
1245 * IPython/iplib.py (runlines): Add a public method to expose
1239 IPython's code execution machinery, so that users can run strings
1246 IPython's code execution machinery, so that users can run strings
1240 as if they had been typed at the prompt interactively.
1247 as if they had been typed at the prompt interactively.
1241 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1248 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1242 methods which can call the system shell, but with python variable
1249 methods which can call the system shell, but with python variable
1243 expansion. The three such methods are: __IPYTHON__.system,
1250 expansion. The three such methods are: __IPYTHON__.system,
1244 .getoutput and .getoutputerror. These need to be documented in a
1251 .getoutput and .getoutputerror. These need to be documented in a
1245 'public API' section (to be written) of the manual.
1252 'public API' section (to be written) of the manual.
1246
1253
1247 2005-03-20 Fernando Perez <fperez@colorado.edu>
1254 2005-03-20 Fernando Perez <fperez@colorado.edu>
1248
1255
1249 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1256 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1250 for custom exception handling. This is quite powerful, and it
1257 for custom exception handling. This is quite powerful, and it
1251 allows for user-installable exception handlers which can trap
1258 allows for user-installable exception handlers which can trap
1252 custom exceptions at runtime and treat them separately from
1259 custom exceptions at runtime and treat them separately from
1253 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1260 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1254 Mantegazza <mantegazza-AT-ill.fr>.
1261 Mantegazza <mantegazza-AT-ill.fr>.
1255 (InteractiveShell.set_custom_completer): public API function to
1262 (InteractiveShell.set_custom_completer): public API function to
1256 add new completers at runtime.
1263 add new completers at runtime.
1257
1264
1258 2005-03-19 Fernando Perez <fperez@colorado.edu>
1265 2005-03-19 Fernando Perez <fperez@colorado.edu>
1259
1266
1260 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1267 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1261 allow objects which provide their docstrings via non-standard
1268 allow objects which provide their docstrings via non-standard
1262 mechanisms (like Pyro proxies) to still be inspected by ipython's
1269 mechanisms (like Pyro proxies) to still be inspected by ipython's
1263 ? system.
1270 ? system.
1264
1271
1265 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1272 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1266 automatic capture system. I tried quite hard to make it work
1273 automatic capture system. I tried quite hard to make it work
1267 reliably, and simply failed. I tried many combinations with the
1274 reliably, and simply failed. I tried many combinations with the
1268 subprocess module, but eventually nothing worked in all needed
1275 subprocess module, but eventually nothing worked in all needed
1269 cases (not blocking stdin for the child, duplicating stdout
1276 cases (not blocking stdin for the child, duplicating stdout
1270 without blocking, etc). The new %sc/%sx still do capture to these
1277 without blocking, etc). The new %sc/%sx still do capture to these
1271 magical list/string objects which make shell use much more
1278 magical list/string objects which make shell use much more
1272 conveninent, so not all is lost.
1279 conveninent, so not all is lost.
1273
1280
1274 XXX - FIX MANUAL for the change above!
1281 XXX - FIX MANUAL for the change above!
1275
1282
1276 (runsource): I copied code.py's runsource() into ipython to modify
1283 (runsource): I copied code.py's runsource() into ipython to modify
1277 it a bit. Now the code object and source to be executed are
1284 it a bit. Now the code object and source to be executed are
1278 stored in ipython. This makes this info accessible to third-party
1285 stored in ipython. This makes this info accessible to third-party
1279 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1286 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1280 Mantegazza <mantegazza-AT-ill.fr>.
1287 Mantegazza <mantegazza-AT-ill.fr>.
1281
1288
1282 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1289 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1283 history-search via readline (like C-p/C-n). I'd wanted this for a
1290 history-search via readline (like C-p/C-n). I'd wanted this for a
1284 long time, but only recently found out how to do it. For users
1291 long time, but only recently found out how to do it. For users
1285 who already have their ipythonrc files made and want this, just
1292 who already have their ipythonrc files made and want this, just
1286 add:
1293 add:
1287
1294
1288 readline_parse_and_bind "\e[A": history-search-backward
1295 readline_parse_and_bind "\e[A": history-search-backward
1289 readline_parse_and_bind "\e[B": history-search-forward
1296 readline_parse_and_bind "\e[B": history-search-forward
1290
1297
1291 2005-03-18 Fernando Perez <fperez@colorado.edu>
1298 2005-03-18 Fernando Perez <fperez@colorado.edu>
1292
1299
1293 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1300 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1294 LSString and SList classes which allow transparent conversions
1301 LSString and SList classes which allow transparent conversions
1295 between list mode and whitespace-separated string.
1302 between list mode and whitespace-separated string.
1296 (magic_r): Fix recursion problem in %r.
1303 (magic_r): Fix recursion problem in %r.
1297
1304
1298 * IPython/genutils.py (LSString): New class to be used for
1305 * IPython/genutils.py (LSString): New class to be used for
1299 automatic storage of the results of all alias/system calls in _o
1306 automatic storage of the results of all alias/system calls in _o
1300 and _e (stdout/err). These provide a .l/.list attribute which
1307 and _e (stdout/err). These provide a .l/.list attribute which
1301 does automatic splitting on newlines. This means that for most
1308 does automatic splitting on newlines. This means that for most
1302 uses, you'll never need to do capturing of output with %sc/%sx
1309 uses, you'll never need to do capturing of output with %sc/%sx
1303 anymore, since ipython keeps this always done for you. Note that
1310 anymore, since ipython keeps this always done for you. Note that
1304 only the LAST results are stored, the _o/e variables are
1311 only the LAST results are stored, the _o/e variables are
1305 overwritten on each call. If you need to save their contents
1312 overwritten on each call. If you need to save their contents
1306 further, simply bind them to any other name.
1313 further, simply bind them to any other name.
1307
1314
1308 2005-03-17 Fernando Perez <fperez@colorado.edu>
1315 2005-03-17 Fernando Perez <fperez@colorado.edu>
1309
1316
1310 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1317 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1311 prompt namespace handling.
1318 prompt namespace handling.
1312
1319
1313 2005-03-16 Fernando Perez <fperez@colorado.edu>
1320 2005-03-16 Fernando Perez <fperez@colorado.edu>
1314
1321
1315 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1322 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1316 classic prompts to be '>>> ' (final space was missing, and it
1323 classic prompts to be '>>> ' (final space was missing, and it
1317 trips the emacs python mode).
1324 trips the emacs python mode).
1318 (BasePrompt.__str__): Added safe support for dynamic prompt
1325 (BasePrompt.__str__): Added safe support for dynamic prompt
1319 strings. Now you can set your prompt string to be '$x', and the
1326 strings. Now you can set your prompt string to be '$x', and the
1320 value of x will be printed from your interactive namespace. The
1327 value of x will be printed from your interactive namespace. The
1321 interpolation syntax includes the full Itpl support, so
1328 interpolation syntax includes the full Itpl support, so
1322 ${foo()+x+bar()} is a valid prompt string now, and the function
1329 ${foo()+x+bar()} is a valid prompt string now, and the function
1323 calls will be made at runtime.
1330 calls will be made at runtime.
1324
1331
1325 2005-03-15 Fernando Perez <fperez@colorado.edu>
1332 2005-03-15 Fernando Perez <fperez@colorado.edu>
1326
1333
1327 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1334 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1328 avoid name clashes in pylab. %hist still works, it just forwards
1335 avoid name clashes in pylab. %hist still works, it just forwards
1329 the call to %history.
1336 the call to %history.
1330
1337
1331 2005-03-02 *** Released version 0.6.12
1338 2005-03-02 *** Released version 0.6.12
1332
1339
1333 2005-03-02 Fernando Perez <fperez@colorado.edu>
1340 2005-03-02 Fernando Perez <fperez@colorado.edu>
1334
1341
1335 * IPython/iplib.py (handle_magic): log magic calls properly as
1342 * IPython/iplib.py (handle_magic): log magic calls properly as
1336 ipmagic() function calls.
1343 ipmagic() function calls.
1337
1344
1338 * IPython/Magic.py (magic_time): Improved %time to support
1345 * IPython/Magic.py (magic_time): Improved %time to support
1339 statements and provide wall-clock as well as CPU time.
1346 statements and provide wall-clock as well as CPU time.
1340
1347
1341 2005-02-27 Fernando Perez <fperez@colorado.edu>
1348 2005-02-27 Fernando Perez <fperez@colorado.edu>
1342
1349
1343 * IPython/hooks.py: New hooks module, to expose user-modifiable
1350 * IPython/hooks.py: New hooks module, to expose user-modifiable
1344 IPython functionality in a clean manner. For now only the editor
1351 IPython functionality in a clean manner. For now only the editor
1345 hook is actually written, and other thigns which I intend to turn
1352 hook is actually written, and other thigns which I intend to turn
1346 into proper hooks aren't yet there. The display and prefilter
1353 into proper hooks aren't yet there. The display and prefilter
1347 stuff, for example, should be hooks. But at least now the
1354 stuff, for example, should be hooks. But at least now the
1348 framework is in place, and the rest can be moved here with more
1355 framework is in place, and the rest can be moved here with more
1349 time later. IPython had had a .hooks variable for a long time for
1356 time later. IPython had had a .hooks variable for a long time for
1350 this purpose, but I'd never actually used it for anything.
1357 this purpose, but I'd never actually used it for anything.
1351
1358
1352 2005-02-26 Fernando Perez <fperez@colorado.edu>
1359 2005-02-26 Fernando Perez <fperez@colorado.edu>
1353
1360
1354 * IPython/ipmaker.py (make_IPython): make the default ipython
1361 * IPython/ipmaker.py (make_IPython): make the default ipython
1355 directory be called _ipython under win32, to follow more the
1362 directory be called _ipython under win32, to follow more the
1356 naming peculiarities of that platform (where buggy software like
1363 naming peculiarities of that platform (where buggy software like
1357 Visual Sourcesafe breaks with .named directories). Reported by
1364 Visual Sourcesafe breaks with .named directories). Reported by
1358 Ville Vainio.
1365 Ville Vainio.
1359
1366
1360 2005-02-23 Fernando Perez <fperez@colorado.edu>
1367 2005-02-23 Fernando Perez <fperez@colorado.edu>
1361
1368
1362 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1369 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1363 auto_aliases for win32 which were causing problems. Users can
1370 auto_aliases for win32 which were causing problems. Users can
1364 define the ones they personally like.
1371 define the ones they personally like.
1365
1372
1366 2005-02-21 Fernando Perez <fperez@colorado.edu>
1373 2005-02-21 Fernando Perez <fperez@colorado.edu>
1367
1374
1368 * IPython/Magic.py (magic_time): new magic to time execution of
1375 * IPython/Magic.py (magic_time): new magic to time execution of
1369 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1376 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1370
1377
1371 2005-02-19 Fernando Perez <fperez@colorado.edu>
1378 2005-02-19 Fernando Perez <fperez@colorado.edu>
1372
1379
1373 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1380 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1374 into keys (for prompts, for example).
1381 into keys (for prompts, for example).
1375
1382
1376 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1383 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1377 prompts in case users want them. This introduces a small behavior
1384 prompts in case users want them. This introduces a small behavior
1378 change: ipython does not automatically add a space to all prompts
1385 change: ipython does not automatically add a space to all prompts
1379 anymore. To get the old prompts with a space, users should add it
1386 anymore. To get the old prompts with a space, users should add it
1380 manually to their ipythonrc file, so for example prompt_in1 should
1387 manually to their ipythonrc file, so for example prompt_in1 should
1381 now read 'In [\#]: ' instead of 'In [\#]:'.
1388 now read 'In [\#]: ' instead of 'In [\#]:'.
1382 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1389 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1383 file) to control left-padding of secondary prompts.
1390 file) to control left-padding of secondary prompts.
1384
1391
1385 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1392 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1386 the profiler can't be imported. Fix for Debian, which removed
1393 the profiler can't be imported. Fix for Debian, which removed
1387 profile.py because of License issues. I applied a slightly
1394 profile.py because of License issues. I applied a slightly
1388 modified version of the original Debian patch at
1395 modified version of the original Debian patch at
1389 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1396 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1390
1397
1391 2005-02-17 Fernando Perez <fperez@colorado.edu>
1398 2005-02-17 Fernando Perez <fperez@colorado.edu>
1392
1399
1393 * IPython/genutils.py (native_line_ends): Fix bug which would
1400 * IPython/genutils.py (native_line_ends): Fix bug which would
1394 cause improper line-ends under win32 b/c I was not opening files
1401 cause improper line-ends under win32 b/c I was not opening files
1395 in binary mode. Bug report and fix thanks to Ville.
1402 in binary mode. Bug report and fix thanks to Ville.
1396
1403
1397 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1404 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1398 trying to catch spurious foo[1] autocalls. My fix actually broke
1405 trying to catch spurious foo[1] autocalls. My fix actually broke
1399 ',/' autoquote/call with explicit escape (bad regexp).
1406 ',/' autoquote/call with explicit escape (bad regexp).
1400
1407
1401 2005-02-15 *** Released version 0.6.11
1408 2005-02-15 *** Released version 0.6.11
1402
1409
1403 2005-02-14 Fernando Perez <fperez@colorado.edu>
1410 2005-02-14 Fernando Perez <fperez@colorado.edu>
1404
1411
1405 * IPython/background_jobs.py: New background job management
1412 * IPython/background_jobs.py: New background job management
1406 subsystem. This is implemented via a new set of classes, and
1413 subsystem. This is implemented via a new set of classes, and
1407 IPython now provides a builtin 'jobs' object for background job
1414 IPython now provides a builtin 'jobs' object for background job
1408 execution. A convenience %bg magic serves as a lightweight
1415 execution. A convenience %bg magic serves as a lightweight
1409 frontend for starting the more common type of calls. This was
1416 frontend for starting the more common type of calls. This was
1410 inspired by discussions with B. Granger and the BackgroundCommand
1417 inspired by discussions with B. Granger and the BackgroundCommand
1411 class described in the book Python Scripting for Computational
1418 class described in the book Python Scripting for Computational
1412 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1419 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1413 (although ultimately no code from this text was used, as IPython's
1420 (although ultimately no code from this text was used, as IPython's
1414 system is a separate implementation).
1421 system is a separate implementation).
1415
1422
1416 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1423 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1417 to control the completion of single/double underscore names
1424 to control the completion of single/double underscore names
1418 separately. As documented in the example ipytonrc file, the
1425 separately. As documented in the example ipytonrc file, the
1419 readline_omit__names variable can now be set to 2, to omit even
1426 readline_omit__names variable can now be set to 2, to omit even
1420 single underscore names. Thanks to a patch by Brian Wong
1427 single underscore names. Thanks to a patch by Brian Wong
1421 <BrianWong-AT-AirgoNetworks.Com>.
1428 <BrianWong-AT-AirgoNetworks.Com>.
1422 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1429 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1423 be autocalled as foo([1]) if foo were callable. A problem for
1430 be autocalled as foo([1]) if foo were callable. A problem for
1424 things which are both callable and implement __getitem__.
1431 things which are both callable and implement __getitem__.
1425 (init_readline): Fix autoindentation for win32. Thanks to a patch
1432 (init_readline): Fix autoindentation for win32. Thanks to a patch
1426 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1433 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1427
1434
1428 2005-02-12 Fernando Perez <fperez@colorado.edu>
1435 2005-02-12 Fernando Perez <fperez@colorado.edu>
1429
1436
1430 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1437 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1431 which I had written long ago to sort out user error messages which
1438 which I had written long ago to sort out user error messages which
1432 may occur during startup. This seemed like a good idea initially,
1439 may occur during startup. This seemed like a good idea initially,
1433 but it has proven a disaster in retrospect. I don't want to
1440 but it has proven a disaster in retrospect. I don't want to
1434 change much code for now, so my fix is to set the internal 'debug'
1441 change much code for now, so my fix is to set the internal 'debug'
1435 flag to true everywhere, whose only job was precisely to control
1442 flag to true everywhere, whose only job was precisely to control
1436 this subsystem. This closes issue 28 (as well as avoiding all
1443 this subsystem. This closes issue 28 (as well as avoiding all
1437 sorts of strange hangups which occur from time to time).
1444 sorts of strange hangups which occur from time to time).
1438
1445
1439 2005-02-07 Fernando Perez <fperez@colorado.edu>
1446 2005-02-07 Fernando Perez <fperez@colorado.edu>
1440
1447
1441 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1448 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1442 previous call produced a syntax error.
1449 previous call produced a syntax error.
1443
1450
1444 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1451 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1445 classes without constructor.
1452 classes without constructor.
1446
1453
1447 2005-02-06 Fernando Perez <fperez@colorado.edu>
1454 2005-02-06 Fernando Perez <fperez@colorado.edu>
1448
1455
1449 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1456 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1450 completions with the results of each matcher, so we return results
1457 completions with the results of each matcher, so we return results
1451 to the user from all namespaces. This breaks with ipython
1458 to the user from all namespaces. This breaks with ipython
1452 tradition, but I think it's a nicer behavior. Now you get all
1459 tradition, but I think it's a nicer behavior. Now you get all
1453 possible completions listed, from all possible namespaces (python,
1460 possible completions listed, from all possible namespaces (python,
1454 filesystem, magics...) After a request by John Hunter
1461 filesystem, magics...) After a request by John Hunter
1455 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1462 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1456
1463
1457 2005-02-05 Fernando Perez <fperez@colorado.edu>
1464 2005-02-05 Fernando Perez <fperez@colorado.edu>
1458
1465
1459 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1466 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1460 the call had quote characters in it (the quotes were stripped).
1467 the call had quote characters in it (the quotes were stripped).
1461
1468
1462 2005-01-31 Fernando Perez <fperez@colorado.edu>
1469 2005-01-31 Fernando Perez <fperez@colorado.edu>
1463
1470
1464 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1471 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1465 Itpl.itpl() to make the code more robust against psyco
1472 Itpl.itpl() to make the code more robust against psyco
1466 optimizations.
1473 optimizations.
1467
1474
1468 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1475 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1469 of causing an exception. Quicker, cleaner.
1476 of causing an exception. Quicker, cleaner.
1470
1477
1471 2005-01-28 Fernando Perez <fperez@colorado.edu>
1478 2005-01-28 Fernando Perez <fperez@colorado.edu>
1472
1479
1473 * scripts/ipython_win_post_install.py (install): hardcode
1480 * scripts/ipython_win_post_install.py (install): hardcode
1474 sys.prefix+'python.exe' as the executable path. It turns out that
1481 sys.prefix+'python.exe' as the executable path. It turns out that
1475 during the post-installation run, sys.executable resolves to the
1482 during the post-installation run, sys.executable resolves to the
1476 name of the binary installer! I should report this as a distutils
1483 name of the binary installer! I should report this as a distutils
1477 bug, I think. I updated the .10 release with this tiny fix, to
1484 bug, I think. I updated the .10 release with this tiny fix, to
1478 avoid annoying the lists further.
1485 avoid annoying the lists further.
1479
1486
1480 2005-01-27 *** Released version 0.6.10
1487 2005-01-27 *** Released version 0.6.10
1481
1488
1482 2005-01-27 Fernando Perez <fperez@colorado.edu>
1489 2005-01-27 Fernando Perez <fperez@colorado.edu>
1483
1490
1484 * IPython/numutils.py (norm): Added 'inf' as optional name for
1491 * IPython/numutils.py (norm): Added 'inf' as optional name for
1485 L-infinity norm, included references to mathworld.com for vector
1492 L-infinity norm, included references to mathworld.com for vector
1486 norm definitions.
1493 norm definitions.
1487 (amin/amax): added amin/amax for array min/max. Similar to what
1494 (amin/amax): added amin/amax for array min/max. Similar to what
1488 pylab ships with after the recent reorganization of names.
1495 pylab ships with after the recent reorganization of names.
1489 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1496 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1490
1497
1491 * ipython.el: committed Alex's recent fixes and improvements.
1498 * ipython.el: committed Alex's recent fixes and improvements.
1492 Tested with python-mode from CVS, and it looks excellent. Since
1499 Tested with python-mode from CVS, and it looks excellent. Since
1493 python-mode hasn't released anything in a while, I'm temporarily
1500 python-mode hasn't released anything in a while, I'm temporarily
1494 putting a copy of today's CVS (v 4.70) of python-mode in:
1501 putting a copy of today's CVS (v 4.70) of python-mode in:
1495 http://ipython.scipy.org/tmp/python-mode.el
1502 http://ipython.scipy.org/tmp/python-mode.el
1496
1503
1497 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1504 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1498 sys.executable for the executable name, instead of assuming it's
1505 sys.executable for the executable name, instead of assuming it's
1499 called 'python.exe' (the post-installer would have produced broken
1506 called 'python.exe' (the post-installer would have produced broken
1500 setups on systems with a differently named python binary).
1507 setups on systems with a differently named python binary).
1501
1508
1502 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1509 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1503 references to os.linesep, to make the code more
1510 references to os.linesep, to make the code more
1504 platform-independent. This is also part of the win32 coloring
1511 platform-independent. This is also part of the win32 coloring
1505 fixes.
1512 fixes.
1506
1513
1507 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1514 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1508 lines, which actually cause coloring bugs because the length of
1515 lines, which actually cause coloring bugs because the length of
1509 the line is very difficult to correctly compute with embedded
1516 the line is very difficult to correctly compute with embedded
1510 escapes. This was the source of all the coloring problems under
1517 escapes. This was the source of all the coloring problems under
1511 Win32. I think that _finally_, Win32 users have a properly
1518 Win32. I think that _finally_, Win32 users have a properly
1512 working ipython in all respects. This would never have happened
1519 working ipython in all respects. This would never have happened
1513 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1520 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1514
1521
1515 2005-01-26 *** Released version 0.6.9
1522 2005-01-26 *** Released version 0.6.9
1516
1523
1517 2005-01-25 Fernando Perez <fperez@colorado.edu>
1524 2005-01-25 Fernando Perez <fperez@colorado.edu>
1518
1525
1519 * setup.py: finally, we have a true Windows installer, thanks to
1526 * setup.py: finally, we have a true Windows installer, thanks to
1520 the excellent work of Viktor Ransmayr
1527 the excellent work of Viktor Ransmayr
1521 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1528 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1522 Windows users. The setup routine is quite a bit cleaner thanks to
1529 Windows users. The setup routine is quite a bit cleaner thanks to
1523 this, and the post-install script uses the proper functions to
1530 this, and the post-install script uses the proper functions to
1524 allow a clean de-installation using the standard Windows Control
1531 allow a clean de-installation using the standard Windows Control
1525 Panel.
1532 Panel.
1526
1533
1527 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1534 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1528 environment variable under all OSes (including win32) if
1535 environment variable under all OSes (including win32) if
1529 available. This will give consistency to win32 users who have set
1536 available. This will give consistency to win32 users who have set
1530 this variable for any reason. If os.environ['HOME'] fails, the
1537 this variable for any reason. If os.environ['HOME'] fails, the
1531 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1538 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1532
1539
1533 2005-01-24 Fernando Perez <fperez@colorado.edu>
1540 2005-01-24 Fernando Perez <fperez@colorado.edu>
1534
1541
1535 * IPython/numutils.py (empty_like): add empty_like(), similar to
1542 * IPython/numutils.py (empty_like): add empty_like(), similar to
1536 zeros_like() but taking advantage of the new empty() Numeric routine.
1543 zeros_like() but taking advantage of the new empty() Numeric routine.
1537
1544
1538 2005-01-23 *** Released version 0.6.8
1545 2005-01-23 *** Released version 0.6.8
1539
1546
1540 2005-01-22 Fernando Perez <fperez@colorado.edu>
1547 2005-01-22 Fernando Perez <fperez@colorado.edu>
1541
1548
1542 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1549 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1543 automatic show() calls. After discussing things with JDH, it
1550 automatic show() calls. After discussing things with JDH, it
1544 turns out there are too many corner cases where this can go wrong.
1551 turns out there are too many corner cases where this can go wrong.
1545 It's best not to try to be 'too smart', and simply have ipython
1552 It's best not to try to be 'too smart', and simply have ipython
1546 reproduce as much as possible the default behavior of a normal
1553 reproduce as much as possible the default behavior of a normal
1547 python shell.
1554 python shell.
1548
1555
1549 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1556 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1550 line-splitting regexp and _prefilter() to avoid calling getattr()
1557 line-splitting regexp and _prefilter() to avoid calling getattr()
1551 on assignments. This closes
1558 on assignments. This closes
1552 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1559 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1553 readline uses getattr(), so a simple <TAB> keypress is still
1560 readline uses getattr(), so a simple <TAB> keypress is still
1554 enough to trigger getattr() calls on an object.
1561 enough to trigger getattr() calls on an object.
1555
1562
1556 2005-01-21 Fernando Perez <fperez@colorado.edu>
1563 2005-01-21 Fernando Perez <fperez@colorado.edu>
1557
1564
1558 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1565 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1559 docstring under pylab so it doesn't mask the original.
1566 docstring under pylab so it doesn't mask the original.
1560
1567
1561 2005-01-21 *** Released version 0.6.7
1568 2005-01-21 *** Released version 0.6.7
1562
1569
1563 2005-01-21 Fernando Perez <fperez@colorado.edu>
1570 2005-01-21 Fernando Perez <fperez@colorado.edu>
1564
1571
1565 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1572 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1566 signal handling for win32 users in multithreaded mode.
1573 signal handling for win32 users in multithreaded mode.
1567
1574
1568 2005-01-17 Fernando Perez <fperez@colorado.edu>
1575 2005-01-17 Fernando Perez <fperez@colorado.edu>
1569
1576
1570 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1577 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1571 instances with no __init__. After a crash report by Norbert Nemec
1578 instances with no __init__. After a crash report by Norbert Nemec
1572 <Norbert-AT-nemec-online.de>.
1579 <Norbert-AT-nemec-online.de>.
1573
1580
1574 2005-01-14 Fernando Perez <fperez@colorado.edu>
1581 2005-01-14 Fernando Perez <fperez@colorado.edu>
1575
1582
1576 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1583 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1577 names for verbose exceptions, when multiple dotted names and the
1584 names for verbose exceptions, when multiple dotted names and the
1578 'parent' object were present on the same line.
1585 'parent' object were present on the same line.
1579
1586
1580 2005-01-11 Fernando Perez <fperez@colorado.edu>
1587 2005-01-11 Fernando Perez <fperez@colorado.edu>
1581
1588
1582 * IPython/genutils.py (flag_calls): new utility to trap and flag
1589 * IPython/genutils.py (flag_calls): new utility to trap and flag
1583 calls in functions. I need it to clean up matplotlib support.
1590 calls in functions. I need it to clean up matplotlib support.
1584 Also removed some deprecated code in genutils.
1591 Also removed some deprecated code in genutils.
1585
1592
1586 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1593 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1587 that matplotlib scripts called with %run, which don't call show()
1594 that matplotlib scripts called with %run, which don't call show()
1588 themselves, still have their plotting windows open.
1595 themselves, still have their plotting windows open.
1589
1596
1590 2005-01-05 Fernando Perez <fperez@colorado.edu>
1597 2005-01-05 Fernando Perez <fperez@colorado.edu>
1591
1598
1592 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1599 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1593 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1600 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1594
1601
1595 2004-12-19 Fernando Perez <fperez@colorado.edu>
1602 2004-12-19 Fernando Perez <fperez@colorado.edu>
1596
1603
1597 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1604 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1598 parent_runcode, which was an eyesore. The same result can be
1605 parent_runcode, which was an eyesore. The same result can be
1599 obtained with Python's regular superclass mechanisms.
1606 obtained with Python's regular superclass mechanisms.
1600
1607
1601 2004-12-17 Fernando Perez <fperez@colorado.edu>
1608 2004-12-17 Fernando Perez <fperez@colorado.edu>
1602
1609
1603 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1610 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1604 reported by Prabhu.
1611 reported by Prabhu.
1605 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1612 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1606 sys.stderr) instead of explicitly calling sys.stderr. This helps
1613 sys.stderr) instead of explicitly calling sys.stderr. This helps
1607 maintain our I/O abstractions clean, for future GUI embeddings.
1614 maintain our I/O abstractions clean, for future GUI embeddings.
1608
1615
1609 * IPython/genutils.py (info): added new utility for sys.stderr
1616 * IPython/genutils.py (info): added new utility for sys.stderr
1610 unified info message handling (thin wrapper around warn()).
1617 unified info message handling (thin wrapper around warn()).
1611
1618
1612 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1619 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1613 composite (dotted) names on verbose exceptions.
1620 composite (dotted) names on verbose exceptions.
1614 (VerboseTB.nullrepr): harden against another kind of errors which
1621 (VerboseTB.nullrepr): harden against another kind of errors which
1615 Python's inspect module can trigger, and which were crashing
1622 Python's inspect module can trigger, and which were crashing
1616 IPython. Thanks to a report by Marco Lombardi
1623 IPython. Thanks to a report by Marco Lombardi
1617 <mlombard-AT-ma010192.hq.eso.org>.
1624 <mlombard-AT-ma010192.hq.eso.org>.
1618
1625
1619 2004-12-13 *** Released version 0.6.6
1626 2004-12-13 *** Released version 0.6.6
1620
1627
1621 2004-12-12 Fernando Perez <fperez@colorado.edu>
1628 2004-12-12 Fernando Perez <fperez@colorado.edu>
1622
1629
1623 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1630 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1624 generated by pygtk upon initialization if it was built without
1631 generated by pygtk upon initialization if it was built without
1625 threads (for matplotlib users). After a crash reported by
1632 threads (for matplotlib users). After a crash reported by
1626 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1633 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1627
1634
1628 * IPython/ipmaker.py (make_IPython): fix small bug in the
1635 * IPython/ipmaker.py (make_IPython): fix small bug in the
1629 import_some parameter for multiple imports.
1636 import_some parameter for multiple imports.
1630
1637
1631 * IPython/iplib.py (ipmagic): simplified the interface of
1638 * IPython/iplib.py (ipmagic): simplified the interface of
1632 ipmagic() to take a single string argument, just as it would be
1639 ipmagic() to take a single string argument, just as it would be
1633 typed at the IPython cmd line.
1640 typed at the IPython cmd line.
1634 (ipalias): Added new ipalias() with an interface identical to
1641 (ipalias): Added new ipalias() with an interface identical to
1635 ipmagic(). This completes exposing a pure python interface to the
1642 ipmagic(). This completes exposing a pure python interface to the
1636 alias and magic system, which can be used in loops or more complex
1643 alias and magic system, which can be used in loops or more complex
1637 code where IPython's automatic line mangling is not active.
1644 code where IPython's automatic line mangling is not active.
1638
1645
1639 * IPython/genutils.py (timing): changed interface of timing to
1646 * IPython/genutils.py (timing): changed interface of timing to
1640 simply run code once, which is the most common case. timings()
1647 simply run code once, which is the most common case. timings()
1641 remains unchanged, for the cases where you want multiple runs.
1648 remains unchanged, for the cases where you want multiple runs.
1642
1649
1643 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1650 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1644 bug where Python2.2 crashes with exec'ing code which does not end
1651 bug where Python2.2 crashes with exec'ing code which does not end
1645 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1652 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1646 before.
1653 before.
1647
1654
1648 2004-12-10 Fernando Perez <fperez@colorado.edu>
1655 2004-12-10 Fernando Perez <fperez@colorado.edu>
1649
1656
1650 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1657 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1651 -t to -T, to accomodate the new -t flag in %run (the %run and
1658 -t to -T, to accomodate the new -t flag in %run (the %run and
1652 %prun options are kind of intermixed, and it's not easy to change
1659 %prun options are kind of intermixed, and it's not easy to change
1653 this with the limitations of python's getopt).
1660 this with the limitations of python's getopt).
1654
1661
1655 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1662 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1656 the execution of scripts. It's not as fine-tuned as timeit.py,
1663 the execution of scripts. It's not as fine-tuned as timeit.py,
1657 but it works from inside ipython (and under 2.2, which lacks
1664 but it works from inside ipython (and under 2.2, which lacks
1658 timeit.py). Optionally a number of runs > 1 can be given for
1665 timeit.py). Optionally a number of runs > 1 can be given for
1659 timing very short-running code.
1666 timing very short-running code.
1660
1667
1661 * IPython/genutils.py (uniq_stable): new routine which returns a
1668 * IPython/genutils.py (uniq_stable): new routine which returns a
1662 list of unique elements in any iterable, but in stable order of
1669 list of unique elements in any iterable, but in stable order of
1663 appearance. I needed this for the ultraTB fixes, and it's a handy
1670 appearance. I needed this for the ultraTB fixes, and it's a handy
1664 utility.
1671 utility.
1665
1672
1666 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1673 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1667 dotted names in Verbose exceptions. This had been broken since
1674 dotted names in Verbose exceptions. This had been broken since
1668 the very start, now x.y will properly be printed in a Verbose
1675 the very start, now x.y will properly be printed in a Verbose
1669 traceback, instead of x being shown and y appearing always as an
1676 traceback, instead of x being shown and y appearing always as an
1670 'undefined global'. Getting this to work was a bit tricky,
1677 'undefined global'. Getting this to work was a bit tricky,
1671 because by default python tokenizers are stateless. Saved by
1678 because by default python tokenizers are stateless. Saved by
1672 python's ability to easily add a bit of state to an arbitrary
1679 python's ability to easily add a bit of state to an arbitrary
1673 function (without needing to build a full-blown callable object).
1680 function (without needing to build a full-blown callable object).
1674
1681
1675 Also big cleanup of this code, which had horrendous runtime
1682 Also big cleanup of this code, which had horrendous runtime
1676 lookups of zillions of attributes for colorization. Moved all
1683 lookups of zillions of attributes for colorization. Moved all
1677 this code into a few templates, which make it cleaner and quicker.
1684 this code into a few templates, which make it cleaner and quicker.
1678
1685
1679 Printout quality was also improved for Verbose exceptions: one
1686 Printout quality was also improved for Verbose exceptions: one
1680 variable per line, and memory addresses are printed (this can be
1687 variable per line, and memory addresses are printed (this can be
1681 quite handy in nasty debugging situations, which is what Verbose
1688 quite handy in nasty debugging situations, which is what Verbose
1682 is for).
1689 is for).
1683
1690
1684 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1691 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1685 the command line as scripts to be loaded by embedded instances.
1692 the command line as scripts to be loaded by embedded instances.
1686 Doing so has the potential for an infinite recursion if there are
1693 Doing so has the potential for an infinite recursion if there are
1687 exceptions thrown in the process. This fixes a strange crash
1694 exceptions thrown in the process. This fixes a strange crash
1688 reported by Philippe MULLER <muller-AT-irit.fr>.
1695 reported by Philippe MULLER <muller-AT-irit.fr>.
1689
1696
1690 2004-12-09 Fernando Perez <fperez@colorado.edu>
1697 2004-12-09 Fernando Perez <fperez@colorado.edu>
1691
1698
1692 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1699 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1693 to reflect new names in matplotlib, which now expose the
1700 to reflect new names in matplotlib, which now expose the
1694 matlab-compatible interface via a pylab module instead of the
1701 matlab-compatible interface via a pylab module instead of the
1695 'matlab' name. The new code is backwards compatible, so users of
1702 'matlab' name. The new code is backwards compatible, so users of
1696 all matplotlib versions are OK. Patch by J. Hunter.
1703 all matplotlib versions are OK. Patch by J. Hunter.
1697
1704
1698 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1705 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1699 of __init__ docstrings for instances (class docstrings are already
1706 of __init__ docstrings for instances (class docstrings are already
1700 automatically printed). Instances with customized docstrings
1707 automatically printed). Instances with customized docstrings
1701 (indep. of the class) are also recognized and all 3 separate
1708 (indep. of the class) are also recognized and all 3 separate
1702 docstrings are printed (instance, class, constructor). After some
1709 docstrings are printed (instance, class, constructor). After some
1703 comments/suggestions by J. Hunter.
1710 comments/suggestions by J. Hunter.
1704
1711
1705 2004-12-05 Fernando Perez <fperez@colorado.edu>
1712 2004-12-05 Fernando Perez <fperez@colorado.edu>
1706
1713
1707 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1714 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1708 warnings when tab-completion fails and triggers an exception.
1715 warnings when tab-completion fails and triggers an exception.
1709
1716
1710 2004-12-03 Fernando Perez <fperez@colorado.edu>
1717 2004-12-03 Fernando Perez <fperez@colorado.edu>
1711
1718
1712 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1719 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1713 be triggered when using 'run -p'. An incorrect option flag was
1720 be triggered when using 'run -p'. An incorrect option flag was
1714 being set ('d' instead of 'D').
1721 being set ('d' instead of 'D').
1715 (manpage): fix missing escaped \- sign.
1722 (manpage): fix missing escaped \- sign.
1716
1723
1717 2004-11-30 *** Released version 0.6.5
1724 2004-11-30 *** Released version 0.6.5
1718
1725
1719 2004-11-30 Fernando Perez <fperez@colorado.edu>
1726 2004-11-30 Fernando Perez <fperez@colorado.edu>
1720
1727
1721 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1728 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1722 setting with -d option.
1729 setting with -d option.
1723
1730
1724 * setup.py (docfiles): Fix problem where the doc glob I was using
1731 * setup.py (docfiles): Fix problem where the doc glob I was using
1725 was COMPLETELY BROKEN. It was giving the right files by pure
1732 was COMPLETELY BROKEN. It was giving the right files by pure
1726 accident, but failed once I tried to include ipython.el. Note:
1733 accident, but failed once I tried to include ipython.el. Note:
1727 glob() does NOT allow you to do exclusion on multiple endings!
1734 glob() does NOT allow you to do exclusion on multiple endings!
1728
1735
1729 2004-11-29 Fernando Perez <fperez@colorado.edu>
1736 2004-11-29 Fernando Perez <fperez@colorado.edu>
1730
1737
1731 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1738 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1732 the manpage as the source. Better formatting & consistency.
1739 the manpage as the source. Better formatting & consistency.
1733
1740
1734 * IPython/Magic.py (magic_run): Added new -d option, to run
1741 * IPython/Magic.py (magic_run): Added new -d option, to run
1735 scripts under the control of the python pdb debugger. Note that
1742 scripts under the control of the python pdb debugger. Note that
1736 this required changing the %prun option -d to -D, to avoid a clash
1743 this required changing the %prun option -d to -D, to avoid a clash
1737 (since %run must pass options to %prun, and getopt is too dumb to
1744 (since %run must pass options to %prun, and getopt is too dumb to
1738 handle options with string values with embedded spaces). Thanks
1745 handle options with string values with embedded spaces). Thanks
1739 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1746 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1740 (magic_who_ls): added type matching to %who and %whos, so that one
1747 (magic_who_ls): added type matching to %who and %whos, so that one
1741 can filter their output to only include variables of certain
1748 can filter their output to only include variables of certain
1742 types. Another suggestion by Matthew.
1749 types. Another suggestion by Matthew.
1743 (magic_whos): Added memory summaries in kb and Mb for arrays.
1750 (magic_whos): Added memory summaries in kb and Mb for arrays.
1744 (magic_who): Improve formatting (break lines every 9 vars).
1751 (magic_who): Improve formatting (break lines every 9 vars).
1745
1752
1746 2004-11-28 Fernando Perez <fperez@colorado.edu>
1753 2004-11-28 Fernando Perez <fperez@colorado.edu>
1747
1754
1748 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1755 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1749 cache when empty lines were present.
1756 cache when empty lines were present.
1750
1757
1751 2004-11-24 Fernando Perez <fperez@colorado.edu>
1758 2004-11-24 Fernando Perez <fperez@colorado.edu>
1752
1759
1753 * IPython/usage.py (__doc__): document the re-activated threading
1760 * IPython/usage.py (__doc__): document the re-activated threading
1754 options for WX and GTK.
1761 options for WX and GTK.
1755
1762
1756 2004-11-23 Fernando Perez <fperez@colorado.edu>
1763 2004-11-23 Fernando Perez <fperez@colorado.edu>
1757
1764
1758 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1765 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1759 the -wthread and -gthread options, along with a new -tk one to try
1766 the -wthread and -gthread options, along with a new -tk one to try
1760 and coordinate Tk threading with wx/gtk. The tk support is very
1767 and coordinate Tk threading with wx/gtk. The tk support is very
1761 platform dependent, since it seems to require Tcl and Tk to be
1768 platform dependent, since it seems to require Tcl and Tk to be
1762 built with threads (Fedora1/2 appears NOT to have it, but in
1769 built with threads (Fedora1/2 appears NOT to have it, but in
1763 Prabhu's Debian boxes it works OK). But even with some Tk
1770 Prabhu's Debian boxes it works OK). But even with some Tk
1764 limitations, this is a great improvement.
1771 limitations, this is a great improvement.
1765
1772
1766 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1773 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1767 info in user prompts. Patch by Prabhu.
1774 info in user prompts. Patch by Prabhu.
1768
1775
1769 2004-11-18 Fernando Perez <fperez@colorado.edu>
1776 2004-11-18 Fernando Perez <fperez@colorado.edu>
1770
1777
1771 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1778 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1772 EOFErrors and bail, to avoid infinite loops if a non-terminating
1779 EOFErrors and bail, to avoid infinite loops if a non-terminating
1773 file is fed into ipython. Patch submitted in issue 19 by user,
1780 file is fed into ipython. Patch submitted in issue 19 by user,
1774 many thanks.
1781 many thanks.
1775
1782
1776 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1783 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1777 autoquote/parens in continuation prompts, which can cause lots of
1784 autoquote/parens in continuation prompts, which can cause lots of
1778 problems. Closes roundup issue 20.
1785 problems. Closes roundup issue 20.
1779
1786
1780 2004-11-17 Fernando Perez <fperez@colorado.edu>
1787 2004-11-17 Fernando Perez <fperez@colorado.edu>
1781
1788
1782 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1789 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1783 reported as debian bug #280505. I'm not sure my local changelog
1790 reported as debian bug #280505. I'm not sure my local changelog
1784 entry has the proper debian format (Jack?).
1791 entry has the proper debian format (Jack?).
1785
1792
1786 2004-11-08 *** Released version 0.6.4
1793 2004-11-08 *** Released version 0.6.4
1787
1794
1788 2004-11-08 Fernando Perez <fperez@colorado.edu>
1795 2004-11-08 Fernando Perez <fperez@colorado.edu>
1789
1796
1790 * IPython/iplib.py (init_readline): Fix exit message for Windows
1797 * IPython/iplib.py (init_readline): Fix exit message for Windows
1791 when readline is active. Thanks to a report by Eric Jones
1798 when readline is active. Thanks to a report by Eric Jones
1792 <eric-AT-enthought.com>.
1799 <eric-AT-enthought.com>.
1793
1800
1794 2004-11-07 Fernando Perez <fperez@colorado.edu>
1801 2004-11-07 Fernando Perez <fperez@colorado.edu>
1795
1802
1796 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1803 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1797 sometimes seen by win2k/cygwin users.
1804 sometimes seen by win2k/cygwin users.
1798
1805
1799 2004-11-06 Fernando Perez <fperez@colorado.edu>
1806 2004-11-06 Fernando Perez <fperez@colorado.edu>
1800
1807
1801 * IPython/iplib.py (interact): Change the handling of %Exit from
1808 * IPython/iplib.py (interact): Change the handling of %Exit from
1802 trying to propagate a SystemExit to an internal ipython flag.
1809 trying to propagate a SystemExit to an internal ipython flag.
1803 This is less elegant than using Python's exception mechanism, but
1810 This is less elegant than using Python's exception mechanism, but
1804 I can't get that to work reliably with threads, so under -pylab
1811 I can't get that to work reliably with threads, so under -pylab
1805 %Exit was hanging IPython. Cross-thread exception handling is
1812 %Exit was hanging IPython. Cross-thread exception handling is
1806 really a bitch. Thaks to a bug report by Stephen Walton
1813 really a bitch. Thaks to a bug report by Stephen Walton
1807 <stephen.walton-AT-csun.edu>.
1814 <stephen.walton-AT-csun.edu>.
1808
1815
1809 2004-11-04 Fernando Perez <fperez@colorado.edu>
1816 2004-11-04 Fernando Perez <fperez@colorado.edu>
1810
1817
1811 * IPython/iplib.py (raw_input_original): store a pointer to the
1818 * IPython/iplib.py (raw_input_original): store a pointer to the
1812 true raw_input to harden against code which can modify it
1819 true raw_input to harden against code which can modify it
1813 (wx.py.PyShell does this and would otherwise crash ipython).
1820 (wx.py.PyShell does this and would otherwise crash ipython).
1814 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1821 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1815
1822
1816 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1823 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1817 Ctrl-C problem, which does not mess up the input line.
1824 Ctrl-C problem, which does not mess up the input line.
1818
1825
1819 2004-11-03 Fernando Perez <fperez@colorado.edu>
1826 2004-11-03 Fernando Perez <fperez@colorado.edu>
1820
1827
1821 * IPython/Release.py: Changed licensing to BSD, in all files.
1828 * IPython/Release.py: Changed licensing to BSD, in all files.
1822 (name): lowercase name for tarball/RPM release.
1829 (name): lowercase name for tarball/RPM release.
1823
1830
1824 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1831 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1825 use throughout ipython.
1832 use throughout ipython.
1826
1833
1827 * IPython/Magic.py (Magic._ofind): Switch to using the new
1834 * IPython/Magic.py (Magic._ofind): Switch to using the new
1828 OInspect.getdoc() function.
1835 OInspect.getdoc() function.
1829
1836
1830 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1837 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1831 of the line currently being canceled via Ctrl-C. It's extremely
1838 of the line currently being canceled via Ctrl-C. It's extremely
1832 ugly, but I don't know how to do it better (the problem is one of
1839 ugly, but I don't know how to do it better (the problem is one of
1833 handling cross-thread exceptions).
1840 handling cross-thread exceptions).
1834
1841
1835 2004-10-28 Fernando Perez <fperez@colorado.edu>
1842 2004-10-28 Fernando Perez <fperez@colorado.edu>
1836
1843
1837 * IPython/Shell.py (signal_handler): add signal handlers to trap
1844 * IPython/Shell.py (signal_handler): add signal handlers to trap
1838 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1845 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1839 report by Francesc Alted.
1846 report by Francesc Alted.
1840
1847
1841 2004-10-21 Fernando Perez <fperez@colorado.edu>
1848 2004-10-21 Fernando Perez <fperez@colorado.edu>
1842
1849
1843 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1850 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1844 to % for pysh syntax extensions.
1851 to % for pysh syntax extensions.
1845
1852
1846 2004-10-09 Fernando Perez <fperez@colorado.edu>
1853 2004-10-09 Fernando Perez <fperez@colorado.edu>
1847
1854
1848 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1855 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1849 arrays to print a more useful summary, without calling str(arr).
1856 arrays to print a more useful summary, without calling str(arr).
1850 This avoids the problem of extremely lengthy computations which
1857 This avoids the problem of extremely lengthy computations which
1851 occur if arr is large, and appear to the user as a system lockup
1858 occur if arr is large, and appear to the user as a system lockup
1852 with 100% cpu activity. After a suggestion by Kristian Sandberg
1859 with 100% cpu activity. After a suggestion by Kristian Sandberg
1853 <Kristian.Sandberg@colorado.edu>.
1860 <Kristian.Sandberg@colorado.edu>.
1854 (Magic.__init__): fix bug in global magic escapes not being
1861 (Magic.__init__): fix bug in global magic escapes not being
1855 correctly set.
1862 correctly set.
1856
1863
1857 2004-10-08 Fernando Perez <fperez@colorado.edu>
1864 2004-10-08 Fernando Perez <fperez@colorado.edu>
1858
1865
1859 * IPython/Magic.py (__license__): change to absolute imports of
1866 * IPython/Magic.py (__license__): change to absolute imports of
1860 ipython's own internal packages, to start adapting to the absolute
1867 ipython's own internal packages, to start adapting to the absolute
1861 import requirement of PEP-328.
1868 import requirement of PEP-328.
1862
1869
1863 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1870 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1864 files, and standardize author/license marks through the Release
1871 files, and standardize author/license marks through the Release
1865 module instead of having per/file stuff (except for files with
1872 module instead of having per/file stuff (except for files with
1866 particular licenses, like the MIT/PSF-licensed codes).
1873 particular licenses, like the MIT/PSF-licensed codes).
1867
1874
1868 * IPython/Debugger.py: remove dead code for python 2.1
1875 * IPython/Debugger.py: remove dead code for python 2.1
1869
1876
1870 2004-10-04 Fernando Perez <fperez@colorado.edu>
1877 2004-10-04 Fernando Perez <fperez@colorado.edu>
1871
1878
1872 * IPython/iplib.py (ipmagic): New function for accessing magics
1879 * IPython/iplib.py (ipmagic): New function for accessing magics
1873 via a normal python function call.
1880 via a normal python function call.
1874
1881
1875 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1882 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1876 from '@' to '%', to accomodate the new @decorator syntax of python
1883 from '@' to '%', to accomodate the new @decorator syntax of python
1877 2.4.
1884 2.4.
1878
1885
1879 2004-09-29 Fernando Perez <fperez@colorado.edu>
1886 2004-09-29 Fernando Perez <fperez@colorado.edu>
1880
1887
1881 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1888 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1882 matplotlib.use to prevent running scripts which try to switch
1889 matplotlib.use to prevent running scripts which try to switch
1883 interactive backends from within ipython. This will just crash
1890 interactive backends from within ipython. This will just crash
1884 the python interpreter, so we can't allow it (but a detailed error
1891 the python interpreter, so we can't allow it (but a detailed error
1885 is given to the user).
1892 is given to the user).
1886
1893
1887 2004-09-28 Fernando Perez <fperez@colorado.edu>
1894 2004-09-28 Fernando Perez <fperez@colorado.edu>
1888
1895
1889 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1896 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1890 matplotlib-related fixes so that using @run with non-matplotlib
1897 matplotlib-related fixes so that using @run with non-matplotlib
1891 scripts doesn't pop up spurious plot windows. This requires
1898 scripts doesn't pop up spurious plot windows. This requires
1892 matplotlib >= 0.63, where I had to make some changes as well.
1899 matplotlib >= 0.63, where I had to make some changes as well.
1893
1900
1894 * IPython/ipmaker.py (make_IPython): update version requirement to
1901 * IPython/ipmaker.py (make_IPython): update version requirement to
1895 python 2.2.
1902 python 2.2.
1896
1903
1897 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1904 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1898 banner arg for embedded customization.
1905 banner arg for embedded customization.
1899
1906
1900 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1907 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1901 explicit uses of __IP as the IPython's instance name. Now things
1908 explicit uses of __IP as the IPython's instance name. Now things
1902 are properly handled via the shell.name value. The actual code
1909 are properly handled via the shell.name value. The actual code
1903 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1910 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1904 is much better than before. I'll clean things completely when the
1911 is much better than before. I'll clean things completely when the
1905 magic stuff gets a real overhaul.
1912 magic stuff gets a real overhaul.
1906
1913
1907 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1914 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1908 minor changes to debian dir.
1915 minor changes to debian dir.
1909
1916
1910 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1917 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1911 pointer to the shell itself in the interactive namespace even when
1918 pointer to the shell itself in the interactive namespace even when
1912 a user-supplied dict is provided. This is needed for embedding
1919 a user-supplied dict is provided. This is needed for embedding
1913 purposes (found by tests with Michel Sanner).
1920 purposes (found by tests with Michel Sanner).
1914
1921
1915 2004-09-27 Fernando Perez <fperez@colorado.edu>
1922 2004-09-27 Fernando Perez <fperez@colorado.edu>
1916
1923
1917 * IPython/UserConfig/ipythonrc: remove []{} from
1924 * IPython/UserConfig/ipythonrc: remove []{} from
1918 readline_remove_delims, so that things like [modname.<TAB> do
1925 readline_remove_delims, so that things like [modname.<TAB> do
1919 proper completion. This disables [].TAB, but that's a less common
1926 proper completion. This disables [].TAB, but that's a less common
1920 case than module names in list comprehensions, for example.
1927 case than module names in list comprehensions, for example.
1921 Thanks to a report by Andrea Riciputi.
1928 Thanks to a report by Andrea Riciputi.
1922
1929
1923 2004-09-09 Fernando Perez <fperez@colorado.edu>
1930 2004-09-09 Fernando Perez <fperez@colorado.edu>
1924
1931
1925 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1932 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1926 blocking problems in win32 and osx. Fix by John.
1933 blocking problems in win32 and osx. Fix by John.
1927
1934
1928 2004-09-08 Fernando Perez <fperez@colorado.edu>
1935 2004-09-08 Fernando Perez <fperez@colorado.edu>
1929
1936
1930 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1937 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1931 for Win32 and OSX. Fix by John Hunter.
1938 for Win32 and OSX. Fix by John Hunter.
1932
1939
1933 2004-08-30 *** Released version 0.6.3
1940 2004-08-30 *** Released version 0.6.3
1934
1941
1935 2004-08-30 Fernando Perez <fperez@colorado.edu>
1942 2004-08-30 Fernando Perez <fperez@colorado.edu>
1936
1943
1937 * setup.py (isfile): Add manpages to list of dependent files to be
1944 * setup.py (isfile): Add manpages to list of dependent files to be
1938 updated.
1945 updated.
1939
1946
1940 2004-08-27 Fernando Perez <fperez@colorado.edu>
1947 2004-08-27 Fernando Perez <fperez@colorado.edu>
1941
1948
1942 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1949 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1943 for now. They don't really work with standalone WX/GTK code
1950 for now. They don't really work with standalone WX/GTK code
1944 (though matplotlib IS working fine with both of those backends).
1951 (though matplotlib IS working fine with both of those backends).
1945 This will neeed much more testing. I disabled most things with
1952 This will neeed much more testing. I disabled most things with
1946 comments, so turning it back on later should be pretty easy.
1953 comments, so turning it back on later should be pretty easy.
1947
1954
1948 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1955 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1949 autocalling of expressions like r'foo', by modifying the line
1956 autocalling of expressions like r'foo', by modifying the line
1950 split regexp. Closes
1957 split regexp. Closes
1951 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1958 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1952 Riley <ipythonbugs-AT-sabi.net>.
1959 Riley <ipythonbugs-AT-sabi.net>.
1953 (InteractiveShell.mainloop): honor --nobanner with banner
1960 (InteractiveShell.mainloop): honor --nobanner with banner
1954 extensions.
1961 extensions.
1955
1962
1956 * IPython/Shell.py: Significant refactoring of all classes, so
1963 * IPython/Shell.py: Significant refactoring of all classes, so
1957 that we can really support ALL matplotlib backends and threading
1964 that we can really support ALL matplotlib backends and threading
1958 models (John spotted a bug with Tk which required this). Now we
1965 models (John spotted a bug with Tk which required this). Now we
1959 should support single-threaded, WX-threads and GTK-threads, both
1966 should support single-threaded, WX-threads and GTK-threads, both
1960 for generic code and for matplotlib.
1967 for generic code and for matplotlib.
1961
1968
1962 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1969 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1963 -pylab, to simplify things for users. Will also remove the pylab
1970 -pylab, to simplify things for users. Will also remove the pylab
1964 profile, since now all of matplotlib configuration is directly
1971 profile, since now all of matplotlib configuration is directly
1965 handled here. This also reduces startup time.
1972 handled here. This also reduces startup time.
1966
1973
1967 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1974 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1968 shell wasn't being correctly called. Also in IPShellWX.
1975 shell wasn't being correctly called. Also in IPShellWX.
1969
1976
1970 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1977 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1971 fine-tune banner.
1978 fine-tune banner.
1972
1979
1973 * IPython/numutils.py (spike): Deprecate these spike functions,
1980 * IPython/numutils.py (spike): Deprecate these spike functions,
1974 delete (long deprecated) gnuplot_exec handler.
1981 delete (long deprecated) gnuplot_exec handler.
1975
1982
1976 2004-08-26 Fernando Perez <fperez@colorado.edu>
1983 2004-08-26 Fernando Perez <fperez@colorado.edu>
1977
1984
1978 * ipython.1: Update for threading options, plus some others which
1985 * ipython.1: Update for threading options, plus some others which
1979 were missing.
1986 were missing.
1980
1987
1981 * IPython/ipmaker.py (__call__): Added -wthread option for
1988 * IPython/ipmaker.py (__call__): Added -wthread option for
1982 wxpython thread handling. Make sure threading options are only
1989 wxpython thread handling. Make sure threading options are only
1983 valid at the command line.
1990 valid at the command line.
1984
1991
1985 * scripts/ipython: moved shell selection into a factory function
1992 * scripts/ipython: moved shell selection into a factory function
1986 in Shell.py, to keep the starter script to a minimum.
1993 in Shell.py, to keep the starter script to a minimum.
1987
1994
1988 2004-08-25 Fernando Perez <fperez@colorado.edu>
1995 2004-08-25 Fernando Perez <fperez@colorado.edu>
1989
1996
1990 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1997 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1991 John. Along with some recent changes he made to matplotlib, the
1998 John. Along with some recent changes he made to matplotlib, the
1992 next versions of both systems should work very well together.
1999 next versions of both systems should work very well together.
1993
2000
1994 2004-08-24 Fernando Perez <fperez@colorado.edu>
2001 2004-08-24 Fernando Perez <fperez@colorado.edu>
1995
2002
1996 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2003 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1997 tried to switch the profiling to using hotshot, but I'm getting
2004 tried to switch the profiling to using hotshot, but I'm getting
1998 strange errors from prof.runctx() there. I may be misreading the
2005 strange errors from prof.runctx() there. I may be misreading the
1999 docs, but it looks weird. For now the profiling code will
2006 docs, but it looks weird. For now the profiling code will
2000 continue to use the standard profiler.
2007 continue to use the standard profiler.
2001
2008
2002 2004-08-23 Fernando Perez <fperez@colorado.edu>
2009 2004-08-23 Fernando Perez <fperez@colorado.edu>
2003
2010
2004 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2011 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2005 threaded shell, by John Hunter. It's not quite ready yet, but
2012 threaded shell, by John Hunter. It's not quite ready yet, but
2006 close.
2013 close.
2007
2014
2008 2004-08-22 Fernando Perez <fperez@colorado.edu>
2015 2004-08-22 Fernando Perez <fperez@colorado.edu>
2009
2016
2010 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2017 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2011 in Magic and ultraTB.
2018 in Magic and ultraTB.
2012
2019
2013 * ipython.1: document threading options in manpage.
2020 * ipython.1: document threading options in manpage.
2014
2021
2015 * scripts/ipython: Changed name of -thread option to -gthread,
2022 * scripts/ipython: Changed name of -thread option to -gthread,
2016 since this is GTK specific. I want to leave the door open for a
2023 since this is GTK specific. I want to leave the door open for a
2017 -wthread option for WX, which will most likely be necessary. This
2024 -wthread option for WX, which will most likely be necessary. This
2018 change affects usage and ipmaker as well.
2025 change affects usage and ipmaker as well.
2019
2026
2020 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2027 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2021 handle the matplotlib shell issues. Code by John Hunter
2028 handle the matplotlib shell issues. Code by John Hunter
2022 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2029 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2023 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2030 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2024 broken (and disabled for end users) for now, but it puts the
2031 broken (and disabled for end users) for now, but it puts the
2025 infrastructure in place.
2032 infrastructure in place.
2026
2033
2027 2004-08-21 Fernando Perez <fperez@colorado.edu>
2034 2004-08-21 Fernando Perez <fperez@colorado.edu>
2028
2035
2029 * ipythonrc-pylab: Add matplotlib support.
2036 * ipythonrc-pylab: Add matplotlib support.
2030
2037
2031 * matplotlib_config.py: new files for matplotlib support, part of
2038 * matplotlib_config.py: new files for matplotlib support, part of
2032 the pylab profile.
2039 the pylab profile.
2033
2040
2034 * IPython/usage.py (__doc__): documented the threading options.
2041 * IPython/usage.py (__doc__): documented the threading options.
2035
2042
2036 2004-08-20 Fernando Perez <fperez@colorado.edu>
2043 2004-08-20 Fernando Perez <fperez@colorado.edu>
2037
2044
2038 * ipython: Modified the main calling routine to handle the -thread
2045 * ipython: Modified the main calling routine to handle the -thread
2039 and -mpthread options. This needs to be done as a top-level hack,
2046 and -mpthread options. This needs to be done as a top-level hack,
2040 because it determines which class to instantiate for IPython
2047 because it determines which class to instantiate for IPython
2041 itself.
2048 itself.
2042
2049
2043 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2050 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2044 classes to support multithreaded GTK operation without blocking,
2051 classes to support multithreaded GTK operation without blocking,
2045 and matplotlib with all backends. This is a lot of still very
2052 and matplotlib with all backends. This is a lot of still very
2046 experimental code, and threads are tricky. So it may still have a
2053 experimental code, and threads are tricky. So it may still have a
2047 few rough edges... This code owes a lot to
2054 few rough edges... This code owes a lot to
2048 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2055 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2049 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2056 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2050 to John Hunter for all the matplotlib work.
2057 to John Hunter for all the matplotlib work.
2051
2058
2052 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2059 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2053 options for gtk thread and matplotlib support.
2060 options for gtk thread and matplotlib support.
2054
2061
2055 2004-08-16 Fernando Perez <fperez@colorado.edu>
2062 2004-08-16 Fernando Perez <fperez@colorado.edu>
2056
2063
2057 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2064 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2058 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2065 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2059 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2066 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2060
2067
2061 2004-08-11 Fernando Perez <fperez@colorado.edu>
2068 2004-08-11 Fernando Perez <fperez@colorado.edu>
2062
2069
2063 * setup.py (isfile): Fix build so documentation gets updated for
2070 * setup.py (isfile): Fix build so documentation gets updated for
2064 rpms (it was only done for .tgz builds).
2071 rpms (it was only done for .tgz builds).
2065
2072
2066 2004-08-10 Fernando Perez <fperez@colorado.edu>
2073 2004-08-10 Fernando Perez <fperez@colorado.edu>
2067
2074
2068 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2075 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2069
2076
2070 * iplib.py : Silence syntax error exceptions in tab-completion.
2077 * iplib.py : Silence syntax error exceptions in tab-completion.
2071
2078
2072 2004-08-05 Fernando Perez <fperez@colorado.edu>
2079 2004-08-05 Fernando Perez <fperez@colorado.edu>
2073
2080
2074 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2081 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2075 'color off' mark for continuation prompts. This was causing long
2082 'color off' mark for continuation prompts. This was causing long
2076 continuation lines to mis-wrap.
2083 continuation lines to mis-wrap.
2077
2084
2078 2004-08-01 Fernando Perez <fperez@colorado.edu>
2085 2004-08-01 Fernando Perez <fperez@colorado.edu>
2079
2086
2080 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2087 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2081 for building ipython to be a parameter. All this is necessary
2088 for building ipython to be a parameter. All this is necessary
2082 right now to have a multithreaded version, but this insane
2089 right now to have a multithreaded version, but this insane
2083 non-design will be cleaned up soon. For now, it's a hack that
2090 non-design will be cleaned up soon. For now, it's a hack that
2084 works.
2091 works.
2085
2092
2086 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2093 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2087 args in various places. No bugs so far, but it's a dangerous
2094 args in various places. No bugs so far, but it's a dangerous
2088 practice.
2095 practice.
2089
2096
2090 2004-07-31 Fernando Perez <fperez@colorado.edu>
2097 2004-07-31 Fernando Perez <fperez@colorado.edu>
2091
2098
2092 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2099 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2093 fix completion of files with dots in their names under most
2100 fix completion of files with dots in their names under most
2094 profiles (pysh was OK because the completion order is different).
2101 profiles (pysh was OK because the completion order is different).
2095
2102
2096 2004-07-27 Fernando Perez <fperez@colorado.edu>
2103 2004-07-27 Fernando Perez <fperez@colorado.edu>
2097
2104
2098 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2105 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2099 keywords manually, b/c the one in keyword.py was removed in python
2106 keywords manually, b/c the one in keyword.py was removed in python
2100 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2107 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2101 This is NOT a bug under python 2.3 and earlier.
2108 This is NOT a bug under python 2.3 and earlier.
2102
2109
2103 2004-07-26 Fernando Perez <fperez@colorado.edu>
2110 2004-07-26 Fernando Perez <fperez@colorado.edu>
2104
2111
2105 * IPython/ultraTB.py (VerboseTB.text): Add another
2112 * IPython/ultraTB.py (VerboseTB.text): Add another
2106 linecache.checkcache() call to try to prevent inspect.py from
2113 linecache.checkcache() call to try to prevent inspect.py from
2107 crashing under python 2.3. I think this fixes
2114 crashing under python 2.3. I think this fixes
2108 http://www.scipy.net/roundup/ipython/issue17.
2115 http://www.scipy.net/roundup/ipython/issue17.
2109
2116
2110 2004-07-26 *** Released version 0.6.2
2117 2004-07-26 *** Released version 0.6.2
2111
2118
2112 2004-07-26 Fernando Perez <fperez@colorado.edu>
2119 2004-07-26 Fernando Perez <fperez@colorado.edu>
2113
2120
2114 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2121 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2115 fail for any number.
2122 fail for any number.
2116 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2123 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2117 empty bookmarks.
2124 empty bookmarks.
2118
2125
2119 2004-07-26 *** Released version 0.6.1
2126 2004-07-26 *** Released version 0.6.1
2120
2127
2121 2004-07-26 Fernando Perez <fperez@colorado.edu>
2128 2004-07-26 Fernando Perez <fperez@colorado.edu>
2122
2129
2123 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2130 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2124
2131
2125 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2132 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2126 escaping '()[]{}' in filenames.
2133 escaping '()[]{}' in filenames.
2127
2134
2128 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2135 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2129 Python 2.2 users who lack a proper shlex.split.
2136 Python 2.2 users who lack a proper shlex.split.
2130
2137
2131 2004-07-19 Fernando Perez <fperez@colorado.edu>
2138 2004-07-19 Fernando Perez <fperez@colorado.edu>
2132
2139
2133 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2140 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2134 for reading readline's init file. I follow the normal chain:
2141 for reading readline's init file. I follow the normal chain:
2135 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2142 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2136 report by Mike Heeter. This closes
2143 report by Mike Heeter. This closes
2137 http://www.scipy.net/roundup/ipython/issue16.
2144 http://www.scipy.net/roundup/ipython/issue16.
2138
2145
2139 2004-07-18 Fernando Perez <fperez@colorado.edu>
2146 2004-07-18 Fernando Perez <fperez@colorado.edu>
2140
2147
2141 * IPython/iplib.py (__init__): Add better handling of '\' under
2148 * IPython/iplib.py (__init__): Add better handling of '\' under
2142 Win32 for filenames. After a patch by Ville.
2149 Win32 for filenames. After a patch by Ville.
2143
2150
2144 2004-07-17 Fernando Perez <fperez@colorado.edu>
2151 2004-07-17 Fernando Perez <fperez@colorado.edu>
2145
2152
2146 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2153 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2147 autocalling would be triggered for 'foo is bar' if foo is
2154 autocalling would be triggered for 'foo is bar' if foo is
2148 callable. I also cleaned up the autocall detection code to use a
2155 callable. I also cleaned up the autocall detection code to use a
2149 regexp, which is faster. Bug reported by Alexander Schmolck.
2156 regexp, which is faster. Bug reported by Alexander Schmolck.
2150
2157
2151 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2158 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2152 '?' in them would confuse the help system. Reported by Alex
2159 '?' in them would confuse the help system. Reported by Alex
2153 Schmolck.
2160 Schmolck.
2154
2161
2155 2004-07-16 Fernando Perez <fperez@colorado.edu>
2162 2004-07-16 Fernando Perez <fperez@colorado.edu>
2156
2163
2157 * IPython/GnuplotInteractive.py (__all__): added plot2.
2164 * IPython/GnuplotInteractive.py (__all__): added plot2.
2158
2165
2159 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2166 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2160 plotting dictionaries, lists or tuples of 1d arrays.
2167 plotting dictionaries, lists or tuples of 1d arrays.
2161
2168
2162 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2169 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2163 optimizations.
2170 optimizations.
2164
2171
2165 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2172 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2166 the information which was there from Janko's original IPP code:
2173 the information which was there from Janko's original IPP code:
2167
2174
2168 03.05.99 20:53 porto.ifm.uni-kiel.de
2175 03.05.99 20:53 porto.ifm.uni-kiel.de
2169 --Started changelog.
2176 --Started changelog.
2170 --make clear do what it say it does
2177 --make clear do what it say it does
2171 --added pretty output of lines from inputcache
2178 --added pretty output of lines from inputcache
2172 --Made Logger a mixin class, simplifies handling of switches
2179 --Made Logger a mixin class, simplifies handling of switches
2173 --Added own completer class. .string<TAB> expands to last history
2180 --Added own completer class. .string<TAB> expands to last history
2174 line which starts with string. The new expansion is also present
2181 line which starts with string. The new expansion is also present
2175 with Ctrl-r from the readline library. But this shows, who this
2182 with Ctrl-r from the readline library. But this shows, who this
2176 can be done for other cases.
2183 can be done for other cases.
2177 --Added convention that all shell functions should accept a
2184 --Added convention that all shell functions should accept a
2178 parameter_string This opens the door for different behaviour for
2185 parameter_string This opens the door for different behaviour for
2179 each function. @cd is a good example of this.
2186 each function. @cd is a good example of this.
2180
2187
2181 04.05.99 12:12 porto.ifm.uni-kiel.de
2188 04.05.99 12:12 porto.ifm.uni-kiel.de
2182 --added logfile rotation
2189 --added logfile rotation
2183 --added new mainloop method which freezes first the namespace
2190 --added new mainloop method which freezes first the namespace
2184
2191
2185 07.05.99 21:24 porto.ifm.uni-kiel.de
2192 07.05.99 21:24 porto.ifm.uni-kiel.de
2186 --added the docreader classes. Now there is a help system.
2193 --added the docreader classes. Now there is a help system.
2187 -This is only a first try. Currently it's not easy to put new
2194 -This is only a first try. Currently it's not easy to put new
2188 stuff in the indices. But this is the way to go. Info would be
2195 stuff in the indices. But this is the way to go. Info would be
2189 better, but HTML is every where and not everybody has an info
2196 better, but HTML is every where and not everybody has an info
2190 system installed and it's not so easy to change html-docs to info.
2197 system installed and it's not so easy to change html-docs to info.
2191 --added global logfile option
2198 --added global logfile option
2192 --there is now a hook for object inspection method pinfo needs to
2199 --there is now a hook for object inspection method pinfo needs to
2193 be provided for this. Can be reached by two '??'.
2200 be provided for this. Can be reached by two '??'.
2194
2201
2195 08.05.99 20:51 porto.ifm.uni-kiel.de
2202 08.05.99 20:51 porto.ifm.uni-kiel.de
2196 --added a README
2203 --added a README
2197 --bug in rc file. Something has changed so functions in the rc
2204 --bug in rc file. Something has changed so functions in the rc
2198 file need to reference the shell and not self. Not clear if it's a
2205 file need to reference the shell and not self. Not clear if it's a
2199 bug or feature.
2206 bug or feature.
2200 --changed rc file for new behavior
2207 --changed rc file for new behavior
2201
2208
2202 2004-07-15 Fernando Perez <fperez@colorado.edu>
2209 2004-07-15 Fernando Perez <fperez@colorado.edu>
2203
2210
2204 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2211 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2205 cache was falling out of sync in bizarre manners when multi-line
2212 cache was falling out of sync in bizarre manners when multi-line
2206 input was present. Minor optimizations and cleanup.
2213 input was present. Minor optimizations and cleanup.
2207
2214
2208 (Logger): Remove old Changelog info for cleanup. This is the
2215 (Logger): Remove old Changelog info for cleanup. This is the
2209 information which was there from Janko's original code:
2216 information which was there from Janko's original code:
2210
2217
2211 Changes to Logger: - made the default log filename a parameter
2218 Changes to Logger: - made the default log filename a parameter
2212
2219
2213 - put a check for lines beginning with !@? in log(). Needed
2220 - put a check for lines beginning with !@? in log(). Needed
2214 (even if the handlers properly log their lines) for mid-session
2221 (even if the handlers properly log their lines) for mid-session
2215 logging activation to work properly. Without this, lines logged
2222 logging activation to work properly. Without this, lines logged
2216 in mid session, which get read from the cache, would end up
2223 in mid session, which get read from the cache, would end up
2217 'bare' (with !@? in the open) in the log. Now they are caught
2224 'bare' (with !@? in the open) in the log. Now they are caught
2218 and prepended with a #.
2225 and prepended with a #.
2219
2226
2220 * IPython/iplib.py (InteractiveShell.init_readline): added check
2227 * IPython/iplib.py (InteractiveShell.init_readline): added check
2221 in case MagicCompleter fails to be defined, so we don't crash.
2228 in case MagicCompleter fails to be defined, so we don't crash.
2222
2229
2223 2004-07-13 Fernando Perez <fperez@colorado.edu>
2230 2004-07-13 Fernando Perez <fperez@colorado.edu>
2224
2231
2225 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2226 of EPS if the requested filename ends in '.eps'.
2233 of EPS if the requested filename ends in '.eps'.
2227
2234
2228 2004-07-04 Fernando Perez <fperez@colorado.edu>
2235 2004-07-04 Fernando Perez <fperez@colorado.edu>
2229
2236
2230 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2237 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2231 escaping of quotes when calling the shell.
2238 escaping of quotes when calling the shell.
2232
2239
2233 2004-07-02 Fernando Perez <fperez@colorado.edu>
2240 2004-07-02 Fernando Perez <fperez@colorado.edu>
2234
2241
2235 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2242 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2236 gettext not working because we were clobbering '_'. Fixes
2243 gettext not working because we were clobbering '_'. Fixes
2237 http://www.scipy.net/roundup/ipython/issue6.
2244 http://www.scipy.net/roundup/ipython/issue6.
2238
2245
2239 2004-07-01 Fernando Perez <fperez@colorado.edu>
2246 2004-07-01 Fernando Perez <fperez@colorado.edu>
2240
2247
2241 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2248 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2242 into @cd. Patch by Ville.
2249 into @cd. Patch by Ville.
2243
2250
2244 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2251 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2245 new function to store things after ipmaker runs. Patch by Ville.
2252 new function to store things after ipmaker runs. Patch by Ville.
2246 Eventually this will go away once ipmaker is removed and the class
2253 Eventually this will go away once ipmaker is removed and the class
2247 gets cleaned up, but for now it's ok. Key functionality here is
2254 gets cleaned up, but for now it's ok. Key functionality here is
2248 the addition of the persistent storage mechanism, a dict for
2255 the addition of the persistent storage mechanism, a dict for
2249 keeping data across sessions (for now just bookmarks, but more can
2256 keeping data across sessions (for now just bookmarks, but more can
2250 be implemented later).
2257 be implemented later).
2251
2258
2252 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2259 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2253 persistent across sections. Patch by Ville, I modified it
2260 persistent across sections. Patch by Ville, I modified it
2254 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2261 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2255 added a '-l' option to list all bookmarks.
2262 added a '-l' option to list all bookmarks.
2256
2263
2257 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2264 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2258 center for cleanup. Registered with atexit.register(). I moved
2265 center for cleanup. Registered with atexit.register(). I moved
2259 here the old exit_cleanup(). After a patch by Ville.
2266 here the old exit_cleanup(). After a patch by Ville.
2260
2267
2261 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2268 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2262 characters in the hacked shlex_split for python 2.2.
2269 characters in the hacked shlex_split for python 2.2.
2263
2270
2264 * IPython/iplib.py (file_matches): more fixes to filenames with
2271 * IPython/iplib.py (file_matches): more fixes to filenames with
2265 whitespace in them. It's not perfect, but limitations in python's
2272 whitespace in them. It's not perfect, but limitations in python's
2266 readline make it impossible to go further.
2273 readline make it impossible to go further.
2267
2274
2268 2004-06-29 Fernando Perez <fperez@colorado.edu>
2275 2004-06-29 Fernando Perez <fperez@colorado.edu>
2269
2276
2270 * IPython/iplib.py (file_matches): escape whitespace correctly in
2277 * IPython/iplib.py (file_matches): escape whitespace correctly in
2271 filename completions. Bug reported by Ville.
2278 filename completions. Bug reported by Ville.
2272
2279
2273 2004-06-28 Fernando Perez <fperez@colorado.edu>
2280 2004-06-28 Fernando Perez <fperez@colorado.edu>
2274
2281
2275 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2282 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2276 the history file will be called 'history-PROFNAME' (or just
2283 the history file will be called 'history-PROFNAME' (or just
2277 'history' if no profile is loaded). I was getting annoyed at
2284 'history' if no profile is loaded). I was getting annoyed at
2278 getting my Numerical work history clobbered by pysh sessions.
2285 getting my Numerical work history clobbered by pysh sessions.
2279
2286
2280 * IPython/iplib.py (InteractiveShell.__init__): Internal
2287 * IPython/iplib.py (InteractiveShell.__init__): Internal
2281 getoutputerror() function so that we can honor the system_verbose
2288 getoutputerror() function so that we can honor the system_verbose
2282 flag for _all_ system calls. I also added escaping of #
2289 flag for _all_ system calls. I also added escaping of #
2283 characters here to avoid confusing Itpl.
2290 characters here to avoid confusing Itpl.
2284
2291
2285 * IPython/Magic.py (shlex_split): removed call to shell in
2292 * IPython/Magic.py (shlex_split): removed call to shell in
2286 parse_options and replaced it with shlex.split(). The annoying
2293 parse_options and replaced it with shlex.split(). The annoying
2287 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2294 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2288 to backport it from 2.3, with several frail hacks (the shlex
2295 to backport it from 2.3, with several frail hacks (the shlex
2289 module is rather limited in 2.2). Thanks to a suggestion by Ville
2296 module is rather limited in 2.2). Thanks to a suggestion by Ville
2290 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2297 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2291 problem.
2298 problem.
2292
2299
2293 (Magic.magic_system_verbose): new toggle to print the actual
2300 (Magic.magic_system_verbose): new toggle to print the actual
2294 system calls made by ipython. Mainly for debugging purposes.
2301 system calls made by ipython. Mainly for debugging purposes.
2295
2302
2296 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2303 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2297 doesn't support persistence. Reported (and fix suggested) by
2304 doesn't support persistence. Reported (and fix suggested) by
2298 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2305 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2299
2306
2300 2004-06-26 Fernando Perez <fperez@colorado.edu>
2307 2004-06-26 Fernando Perez <fperez@colorado.edu>
2301
2308
2302 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2309 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2303 continue prompts.
2310 continue prompts.
2304
2311
2305 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2312 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2306 function (basically a big docstring) and a few more things here to
2313 function (basically a big docstring) and a few more things here to
2307 speedup startup. pysh.py is now very lightweight. We want because
2314 speedup startup. pysh.py is now very lightweight. We want because
2308 it gets execfile'd, while InterpreterExec gets imported, so
2315 it gets execfile'd, while InterpreterExec gets imported, so
2309 byte-compilation saves time.
2316 byte-compilation saves time.
2310
2317
2311 2004-06-25 Fernando Perez <fperez@colorado.edu>
2318 2004-06-25 Fernando Perez <fperez@colorado.edu>
2312
2319
2313 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2320 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2314 -NUM', which was recently broken.
2321 -NUM', which was recently broken.
2315
2322
2316 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2323 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2317 in multi-line input (but not !!, which doesn't make sense there).
2324 in multi-line input (but not !!, which doesn't make sense there).
2318
2325
2319 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2326 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2320 It's just too useful, and people can turn it off in the less
2327 It's just too useful, and people can turn it off in the less
2321 common cases where it's a problem.
2328 common cases where it's a problem.
2322
2329
2323 2004-06-24 Fernando Perez <fperez@colorado.edu>
2330 2004-06-24 Fernando Perez <fperez@colorado.edu>
2324
2331
2325 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2332 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2326 special syntaxes (like alias calling) is now allied in multi-line
2333 special syntaxes (like alias calling) is now allied in multi-line
2327 input. This is still _very_ experimental, but it's necessary for
2334 input. This is still _very_ experimental, but it's necessary for
2328 efficient shell usage combining python looping syntax with system
2335 efficient shell usage combining python looping syntax with system
2329 calls. For now it's restricted to aliases, I don't think it
2336 calls. For now it's restricted to aliases, I don't think it
2330 really even makes sense to have this for magics.
2337 really even makes sense to have this for magics.
2331
2338
2332 2004-06-23 Fernando Perez <fperez@colorado.edu>
2339 2004-06-23 Fernando Perez <fperez@colorado.edu>
2333
2340
2334 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2341 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2335 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2342 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2336
2343
2337 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2344 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2338 extensions under Windows (after code sent by Gary Bishop). The
2345 extensions under Windows (after code sent by Gary Bishop). The
2339 extensions considered 'executable' are stored in IPython's rc
2346 extensions considered 'executable' are stored in IPython's rc
2340 structure as win_exec_ext.
2347 structure as win_exec_ext.
2341
2348
2342 * IPython/genutils.py (shell): new function, like system() but
2349 * IPython/genutils.py (shell): new function, like system() but
2343 without return value. Very useful for interactive shell work.
2350 without return value. Very useful for interactive shell work.
2344
2351
2345 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2352 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2346 delete aliases.
2353 delete aliases.
2347
2354
2348 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2355 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2349 sure that the alias table doesn't contain python keywords.
2356 sure that the alias table doesn't contain python keywords.
2350
2357
2351 2004-06-21 Fernando Perez <fperez@colorado.edu>
2358 2004-06-21 Fernando Perez <fperez@colorado.edu>
2352
2359
2353 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2360 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2354 non-existent items are found in $PATH. Reported by Thorsten.
2361 non-existent items are found in $PATH. Reported by Thorsten.
2355
2362
2356 2004-06-20 Fernando Perez <fperez@colorado.edu>
2363 2004-06-20 Fernando Perez <fperez@colorado.edu>
2357
2364
2358 * IPython/iplib.py (complete): modified the completer so that the
2365 * IPython/iplib.py (complete): modified the completer so that the
2359 order of priorities can be easily changed at runtime.
2366 order of priorities can be easily changed at runtime.
2360
2367
2361 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2368 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2362 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2369 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2363
2370
2364 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2371 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2365 expand Python variables prepended with $ in all system calls. The
2372 expand Python variables prepended with $ in all system calls. The
2366 same was done to InteractiveShell.handle_shell_escape. Now all
2373 same was done to InteractiveShell.handle_shell_escape. Now all
2367 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2374 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2368 expansion of python variables and expressions according to the
2375 expansion of python variables and expressions according to the
2369 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2376 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2370
2377
2371 Though PEP-215 has been rejected, a similar (but simpler) one
2378 Though PEP-215 has been rejected, a similar (but simpler) one
2372 seems like it will go into Python 2.4, PEP-292 -
2379 seems like it will go into Python 2.4, PEP-292 -
2373 http://www.python.org/peps/pep-0292.html.
2380 http://www.python.org/peps/pep-0292.html.
2374
2381
2375 I'll keep the full syntax of PEP-215, since IPython has since the
2382 I'll keep the full syntax of PEP-215, since IPython has since the
2376 start used Ka-Ping Yee's reference implementation discussed there
2383 start used Ka-Ping Yee's reference implementation discussed there
2377 (Itpl), and I actually like the powerful semantics it offers.
2384 (Itpl), and I actually like the powerful semantics it offers.
2378
2385
2379 In order to access normal shell variables, the $ has to be escaped
2386 In order to access normal shell variables, the $ has to be escaped
2380 via an extra $. For example:
2387 via an extra $. For example:
2381
2388
2382 In [7]: PATH='a python variable'
2389 In [7]: PATH='a python variable'
2383
2390
2384 In [8]: !echo $PATH
2391 In [8]: !echo $PATH
2385 a python variable
2392 a python variable
2386
2393
2387 In [9]: !echo $$PATH
2394 In [9]: !echo $$PATH
2388 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2395 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2389
2396
2390 (Magic.parse_options): escape $ so the shell doesn't evaluate
2397 (Magic.parse_options): escape $ so the shell doesn't evaluate
2391 things prematurely.
2398 things prematurely.
2392
2399
2393 * IPython/iplib.py (InteractiveShell.call_alias): added the
2400 * IPython/iplib.py (InteractiveShell.call_alias): added the
2394 ability for aliases to expand python variables via $.
2401 ability for aliases to expand python variables via $.
2395
2402
2396 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2403 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2397 system, now there's a @rehash/@rehashx pair of magics. These work
2404 system, now there's a @rehash/@rehashx pair of magics. These work
2398 like the csh rehash command, and can be invoked at any time. They
2405 like the csh rehash command, and can be invoked at any time. They
2399 build a table of aliases to everything in the user's $PATH
2406 build a table of aliases to everything in the user's $PATH
2400 (@rehash uses everything, @rehashx is slower but only adds
2407 (@rehash uses everything, @rehashx is slower but only adds
2401 executable files). With this, the pysh.py-based shell profile can
2408 executable files). With this, the pysh.py-based shell profile can
2402 now simply call rehash upon startup, and full access to all
2409 now simply call rehash upon startup, and full access to all
2403 programs in the user's path is obtained.
2410 programs in the user's path is obtained.
2404
2411
2405 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2412 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2406 functionality is now fully in place. I removed the old dynamic
2413 functionality is now fully in place. I removed the old dynamic
2407 code generation based approach, in favor of a much lighter one
2414 code generation based approach, in favor of a much lighter one
2408 based on a simple dict. The advantage is that this allows me to
2415 based on a simple dict. The advantage is that this allows me to
2409 now have thousands of aliases with negligible cost (unthinkable
2416 now have thousands of aliases with negligible cost (unthinkable
2410 with the old system).
2417 with the old system).
2411
2418
2412 2004-06-19 Fernando Perez <fperez@colorado.edu>
2419 2004-06-19 Fernando Perez <fperez@colorado.edu>
2413
2420
2414 * IPython/iplib.py (__init__): extended MagicCompleter class to
2421 * IPython/iplib.py (__init__): extended MagicCompleter class to
2415 also complete (last in priority) on user aliases.
2422 also complete (last in priority) on user aliases.
2416
2423
2417 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2424 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2418 call to eval.
2425 call to eval.
2419 (ItplNS.__init__): Added a new class which functions like Itpl,
2426 (ItplNS.__init__): Added a new class which functions like Itpl,
2420 but allows configuring the namespace for the evaluation to occur
2427 but allows configuring the namespace for the evaluation to occur
2421 in.
2428 in.
2422
2429
2423 2004-06-18 Fernando Perez <fperez@colorado.edu>
2430 2004-06-18 Fernando Perez <fperez@colorado.edu>
2424
2431
2425 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2432 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2426 better message when 'exit' or 'quit' are typed (a common newbie
2433 better message when 'exit' or 'quit' are typed (a common newbie
2427 confusion).
2434 confusion).
2428
2435
2429 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2436 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2430 check for Windows users.
2437 check for Windows users.
2431
2438
2432 * IPython/iplib.py (InteractiveShell.user_setup): removed
2439 * IPython/iplib.py (InteractiveShell.user_setup): removed
2433 disabling of colors for Windows. I'll test at runtime and issue a
2440 disabling of colors for Windows. I'll test at runtime and issue a
2434 warning if Gary's readline isn't found, as to nudge users to
2441 warning if Gary's readline isn't found, as to nudge users to
2435 download it.
2442 download it.
2436
2443
2437 2004-06-16 Fernando Perez <fperez@colorado.edu>
2444 2004-06-16 Fernando Perez <fperez@colorado.edu>
2438
2445
2439 * IPython/genutils.py (Stream.__init__): changed to print errors
2446 * IPython/genutils.py (Stream.__init__): changed to print errors
2440 to sys.stderr. I had a circular dependency here. Now it's
2447 to sys.stderr. I had a circular dependency here. Now it's
2441 possible to run ipython as IDLE's shell (consider this pre-alpha,
2448 possible to run ipython as IDLE's shell (consider this pre-alpha,
2442 since true stdout things end up in the starting terminal instead
2449 since true stdout things end up in the starting terminal instead
2443 of IDLE's out).
2450 of IDLE's out).
2444
2451
2445 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2452 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2446 users who haven't # updated their prompt_in2 definitions. Remove
2453 users who haven't # updated their prompt_in2 definitions. Remove
2447 eventually.
2454 eventually.
2448 (multiple_replace): added credit to original ASPN recipe.
2455 (multiple_replace): added credit to original ASPN recipe.
2449
2456
2450 2004-06-15 Fernando Perez <fperez@colorado.edu>
2457 2004-06-15 Fernando Perez <fperez@colorado.edu>
2451
2458
2452 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2459 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2453 list of auto-defined aliases.
2460 list of auto-defined aliases.
2454
2461
2455 2004-06-13 Fernando Perez <fperez@colorado.edu>
2462 2004-06-13 Fernando Perez <fperez@colorado.edu>
2456
2463
2457 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2464 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2458 install was really requested (so setup.py can be used for other
2465 install was really requested (so setup.py can be used for other
2459 things under Windows).
2466 things under Windows).
2460
2467
2461 2004-06-10 Fernando Perez <fperez@colorado.edu>
2468 2004-06-10 Fernando Perez <fperez@colorado.edu>
2462
2469
2463 * IPython/Logger.py (Logger.create_log): Manually remove any old
2470 * IPython/Logger.py (Logger.create_log): Manually remove any old
2464 backup, since os.remove may fail under Windows. Fixes bug
2471 backup, since os.remove may fail under Windows. Fixes bug
2465 reported by Thorsten.
2472 reported by Thorsten.
2466
2473
2467 2004-06-09 Fernando Perez <fperez@colorado.edu>
2474 2004-06-09 Fernando Perez <fperez@colorado.edu>
2468
2475
2469 * examples/example-embed.py: fixed all references to %n (replaced
2476 * examples/example-embed.py: fixed all references to %n (replaced
2470 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2477 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2471 for all examples and the manual as well.
2478 for all examples and the manual as well.
2472
2479
2473 2004-06-08 Fernando Perez <fperez@colorado.edu>
2480 2004-06-08 Fernando Perez <fperez@colorado.edu>
2474
2481
2475 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2482 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2476 alignment and color management. All 3 prompt subsystems now
2483 alignment and color management. All 3 prompt subsystems now
2477 inherit from BasePrompt.
2484 inherit from BasePrompt.
2478
2485
2479 * tools/release: updates for windows installer build and tag rpms
2486 * tools/release: updates for windows installer build and tag rpms
2480 with python version (since paths are fixed).
2487 with python version (since paths are fixed).
2481
2488
2482 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2489 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2483 which will become eventually obsolete. Also fixed the default
2490 which will become eventually obsolete. Also fixed the default
2484 prompt_in2 to use \D, so at least new users start with the correct
2491 prompt_in2 to use \D, so at least new users start with the correct
2485 defaults.
2492 defaults.
2486 WARNING: Users with existing ipythonrc files will need to apply
2493 WARNING: Users with existing ipythonrc files will need to apply
2487 this fix manually!
2494 this fix manually!
2488
2495
2489 * setup.py: make windows installer (.exe). This is finally the
2496 * setup.py: make windows installer (.exe). This is finally the
2490 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2497 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2491 which I hadn't included because it required Python 2.3 (or recent
2498 which I hadn't included because it required Python 2.3 (or recent
2492 distutils).
2499 distutils).
2493
2500
2494 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2501 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2495 usage of new '\D' escape.
2502 usage of new '\D' escape.
2496
2503
2497 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2504 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2498 lacks os.getuid())
2505 lacks os.getuid())
2499 (CachedOutput.set_colors): Added the ability to turn coloring
2506 (CachedOutput.set_colors): Added the ability to turn coloring
2500 on/off with @colors even for manually defined prompt colors. It
2507 on/off with @colors even for manually defined prompt colors. It
2501 uses a nasty global, but it works safely and via the generic color
2508 uses a nasty global, but it works safely and via the generic color
2502 handling mechanism.
2509 handling mechanism.
2503 (Prompt2.__init__): Introduced new escape '\D' for continuation
2510 (Prompt2.__init__): Introduced new escape '\D' for continuation
2504 prompts. It represents the counter ('\#') as dots.
2511 prompts. It represents the counter ('\#') as dots.
2505 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2512 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2506 need to update their ipythonrc files and replace '%n' with '\D' in
2513 need to update their ipythonrc files and replace '%n' with '\D' in
2507 their prompt_in2 settings everywhere. Sorry, but there's
2514 their prompt_in2 settings everywhere. Sorry, but there's
2508 otherwise no clean way to get all prompts to properly align. The
2515 otherwise no clean way to get all prompts to properly align. The
2509 ipythonrc shipped with IPython has been updated.
2516 ipythonrc shipped with IPython has been updated.
2510
2517
2511 2004-06-07 Fernando Perez <fperez@colorado.edu>
2518 2004-06-07 Fernando Perez <fperez@colorado.edu>
2512
2519
2513 * setup.py (isfile): Pass local_icons option to latex2html, so the
2520 * setup.py (isfile): Pass local_icons option to latex2html, so the
2514 resulting HTML file is self-contained. Thanks to
2521 resulting HTML file is self-contained. Thanks to
2515 dryice-AT-liu.com.cn for the tip.
2522 dryice-AT-liu.com.cn for the tip.
2516
2523
2517 * pysh.py: I created a new profile 'shell', which implements a
2524 * pysh.py: I created a new profile 'shell', which implements a
2518 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2525 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2519 system shell, nor will it become one anytime soon. It's mainly
2526 system shell, nor will it become one anytime soon. It's mainly
2520 meant to illustrate the use of the new flexible bash-like prompts.
2527 meant to illustrate the use of the new flexible bash-like prompts.
2521 I guess it could be used by hardy souls for true shell management,
2528 I guess it could be used by hardy souls for true shell management,
2522 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2529 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2523 profile. This uses the InterpreterExec extension provided by
2530 profile. This uses the InterpreterExec extension provided by
2524 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2531 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2525
2532
2526 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2533 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2527 auto-align itself with the length of the previous input prompt
2534 auto-align itself with the length of the previous input prompt
2528 (taking into account the invisible color escapes).
2535 (taking into account the invisible color escapes).
2529 (CachedOutput.__init__): Large restructuring of this class. Now
2536 (CachedOutput.__init__): Large restructuring of this class. Now
2530 all three prompts (primary1, primary2, output) are proper objects,
2537 all three prompts (primary1, primary2, output) are proper objects,
2531 managed by the 'parent' CachedOutput class. The code is still a
2538 managed by the 'parent' CachedOutput class. The code is still a
2532 bit hackish (all prompts share state via a pointer to the cache),
2539 bit hackish (all prompts share state via a pointer to the cache),
2533 but it's overall far cleaner than before.
2540 but it's overall far cleaner than before.
2534
2541
2535 * IPython/genutils.py (getoutputerror): modified to add verbose,
2542 * IPython/genutils.py (getoutputerror): modified to add verbose,
2536 debug and header options. This makes the interface of all getout*
2543 debug and header options. This makes the interface of all getout*
2537 functions uniform.
2544 functions uniform.
2538 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2545 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2539
2546
2540 * IPython/Magic.py (Magic.default_option): added a function to
2547 * IPython/Magic.py (Magic.default_option): added a function to
2541 allow registering default options for any magic command. This
2548 allow registering default options for any magic command. This
2542 makes it easy to have profiles which customize the magics globally
2549 makes it easy to have profiles which customize the magics globally
2543 for a certain use. The values set through this function are
2550 for a certain use. The values set through this function are
2544 picked up by the parse_options() method, which all magics should
2551 picked up by the parse_options() method, which all magics should
2545 use to parse their options.
2552 use to parse their options.
2546
2553
2547 * IPython/genutils.py (warn): modified the warnings framework to
2554 * IPython/genutils.py (warn): modified the warnings framework to
2548 use the Term I/O class. I'm trying to slowly unify all of
2555 use the Term I/O class. I'm trying to slowly unify all of
2549 IPython's I/O operations to pass through Term.
2556 IPython's I/O operations to pass through Term.
2550
2557
2551 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2558 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2552 the secondary prompt to correctly match the length of the primary
2559 the secondary prompt to correctly match the length of the primary
2553 one for any prompt. Now multi-line code will properly line up
2560 one for any prompt. Now multi-line code will properly line up
2554 even for path dependent prompts, such as the new ones available
2561 even for path dependent prompts, such as the new ones available
2555 via the prompt_specials.
2562 via the prompt_specials.
2556
2563
2557 2004-06-06 Fernando Perez <fperez@colorado.edu>
2564 2004-06-06 Fernando Perez <fperez@colorado.edu>
2558
2565
2559 * IPython/Prompts.py (prompt_specials): Added the ability to have
2566 * IPython/Prompts.py (prompt_specials): Added the ability to have
2560 bash-like special sequences in the prompts, which get
2567 bash-like special sequences in the prompts, which get
2561 automatically expanded. Things like hostname, current working
2568 automatically expanded. Things like hostname, current working
2562 directory and username are implemented already, but it's easy to
2569 directory and username are implemented already, but it's easy to
2563 add more in the future. Thanks to a patch by W.J. van der Laan
2570 add more in the future. Thanks to a patch by W.J. van der Laan
2564 <gnufnork-AT-hetdigitalegat.nl>
2571 <gnufnork-AT-hetdigitalegat.nl>
2565 (prompt_specials): Added color support for prompt strings, so
2572 (prompt_specials): Added color support for prompt strings, so
2566 users can define arbitrary color setups for their prompts.
2573 users can define arbitrary color setups for their prompts.
2567
2574
2568 2004-06-05 Fernando Perez <fperez@colorado.edu>
2575 2004-06-05 Fernando Perez <fperez@colorado.edu>
2569
2576
2570 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2577 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2571 code to load Gary Bishop's readline and configure it
2578 code to load Gary Bishop's readline and configure it
2572 automatically. Thanks to Gary for help on this.
2579 automatically. Thanks to Gary for help on this.
2573
2580
2574 2004-06-01 Fernando Perez <fperez@colorado.edu>
2581 2004-06-01 Fernando Perez <fperez@colorado.edu>
2575
2582
2576 * IPython/Logger.py (Logger.create_log): fix bug for logging
2583 * IPython/Logger.py (Logger.create_log): fix bug for logging
2577 with no filename (previous fix was incomplete).
2584 with no filename (previous fix was incomplete).
2578
2585
2579 2004-05-25 Fernando Perez <fperez@colorado.edu>
2586 2004-05-25 Fernando Perez <fperez@colorado.edu>
2580
2587
2581 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2588 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2582 parens would get passed to the shell.
2589 parens would get passed to the shell.
2583
2590
2584 2004-05-20 Fernando Perez <fperez@colorado.edu>
2591 2004-05-20 Fernando Perez <fperez@colorado.edu>
2585
2592
2586 * IPython/Magic.py (Magic.magic_prun): changed default profile
2593 * IPython/Magic.py (Magic.magic_prun): changed default profile
2587 sort order to 'time' (the more common profiling need).
2594 sort order to 'time' (the more common profiling need).
2588
2595
2589 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2596 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2590 so that source code shown is guaranteed in sync with the file on
2597 so that source code shown is guaranteed in sync with the file on
2591 disk (also changed in psource). Similar fix to the one for
2598 disk (also changed in psource). Similar fix to the one for
2592 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2599 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2593 <yann.ledu-AT-noos.fr>.
2600 <yann.ledu-AT-noos.fr>.
2594
2601
2595 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2602 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2596 with a single option would not be correctly parsed. Closes
2603 with a single option would not be correctly parsed. Closes
2597 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2604 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2598 introduced in 0.6.0 (on 2004-05-06).
2605 introduced in 0.6.0 (on 2004-05-06).
2599
2606
2600 2004-05-13 *** Released version 0.6.0
2607 2004-05-13 *** Released version 0.6.0
2601
2608
2602 2004-05-13 Fernando Perez <fperez@colorado.edu>
2609 2004-05-13 Fernando Perez <fperez@colorado.edu>
2603
2610
2604 * debian/: Added debian/ directory to CVS, so that debian support
2611 * debian/: Added debian/ directory to CVS, so that debian support
2605 is publicly accessible. The debian package is maintained by Jack
2612 is publicly accessible. The debian package is maintained by Jack
2606 Moffit <jack-AT-xiph.org>.
2613 Moffit <jack-AT-xiph.org>.
2607
2614
2608 * Documentation: included the notes about an ipython-based system
2615 * Documentation: included the notes about an ipython-based system
2609 shell (the hypothetical 'pysh') into the new_design.pdf document,
2616 shell (the hypothetical 'pysh') into the new_design.pdf document,
2610 so that these ideas get distributed to users along with the
2617 so that these ideas get distributed to users along with the
2611 official documentation.
2618 official documentation.
2612
2619
2613 2004-05-10 Fernando Perez <fperez@colorado.edu>
2620 2004-05-10 Fernando Perez <fperez@colorado.edu>
2614
2621
2615 * IPython/Logger.py (Logger.create_log): fix recently introduced
2622 * IPython/Logger.py (Logger.create_log): fix recently introduced
2616 bug (misindented line) where logstart would fail when not given an
2623 bug (misindented line) where logstart would fail when not given an
2617 explicit filename.
2624 explicit filename.
2618
2625
2619 2004-05-09 Fernando Perez <fperez@colorado.edu>
2626 2004-05-09 Fernando Perez <fperez@colorado.edu>
2620
2627
2621 * IPython/Magic.py (Magic.parse_options): skip system call when
2628 * IPython/Magic.py (Magic.parse_options): skip system call when
2622 there are no options to look for. Faster, cleaner for the common
2629 there are no options to look for. Faster, cleaner for the common
2623 case.
2630 case.
2624
2631
2625 * Documentation: many updates to the manual: describing Windows
2632 * Documentation: many updates to the manual: describing Windows
2626 support better, Gnuplot updates, credits, misc small stuff. Also
2633 support better, Gnuplot updates, credits, misc small stuff. Also
2627 updated the new_design doc a bit.
2634 updated the new_design doc a bit.
2628
2635
2629 2004-05-06 *** Released version 0.6.0.rc1
2636 2004-05-06 *** Released version 0.6.0.rc1
2630
2637
2631 2004-05-06 Fernando Perez <fperez@colorado.edu>
2638 2004-05-06 Fernando Perez <fperez@colorado.edu>
2632
2639
2633 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2640 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2634 operations to use the vastly more efficient list/''.join() method.
2641 operations to use the vastly more efficient list/''.join() method.
2635 (FormattedTB.text): Fix
2642 (FormattedTB.text): Fix
2636 http://www.scipy.net/roundup/ipython/issue12 - exception source
2643 http://www.scipy.net/roundup/ipython/issue12 - exception source
2637 extract not updated after reload. Thanks to Mike Salib
2644 extract not updated after reload. Thanks to Mike Salib
2638 <msalib-AT-mit.edu> for pinning the source of the problem.
2645 <msalib-AT-mit.edu> for pinning the source of the problem.
2639 Fortunately, the solution works inside ipython and doesn't require
2646 Fortunately, the solution works inside ipython and doesn't require
2640 any changes to python proper.
2647 any changes to python proper.
2641
2648
2642 * IPython/Magic.py (Magic.parse_options): Improved to process the
2649 * IPython/Magic.py (Magic.parse_options): Improved to process the
2643 argument list as a true shell would (by actually using the
2650 argument list as a true shell would (by actually using the
2644 underlying system shell). This way, all @magics automatically get
2651 underlying system shell). This way, all @magics automatically get
2645 shell expansion for variables. Thanks to a comment by Alex
2652 shell expansion for variables. Thanks to a comment by Alex
2646 Schmolck.
2653 Schmolck.
2647
2654
2648 2004-04-04 Fernando Perez <fperez@colorado.edu>
2655 2004-04-04 Fernando Perez <fperez@colorado.edu>
2649
2656
2650 * IPython/iplib.py (InteractiveShell.interact): Added a special
2657 * IPython/iplib.py (InteractiveShell.interact): Added a special
2651 trap for a debugger quit exception, which is basically impossible
2658 trap for a debugger quit exception, which is basically impossible
2652 to handle by normal mechanisms, given what pdb does to the stack.
2659 to handle by normal mechanisms, given what pdb does to the stack.
2653 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2660 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2654
2661
2655 2004-04-03 Fernando Perez <fperez@colorado.edu>
2662 2004-04-03 Fernando Perez <fperez@colorado.edu>
2656
2663
2657 * IPython/genutils.py (Term): Standardized the names of the Term
2664 * IPython/genutils.py (Term): Standardized the names of the Term
2658 class streams to cin/cout/cerr, following C++ naming conventions
2665 class streams to cin/cout/cerr, following C++ naming conventions
2659 (I can't use in/out/err because 'in' is not a valid attribute
2666 (I can't use in/out/err because 'in' is not a valid attribute
2660 name).
2667 name).
2661
2668
2662 * IPython/iplib.py (InteractiveShell.interact): don't increment
2669 * IPython/iplib.py (InteractiveShell.interact): don't increment
2663 the prompt if there's no user input. By Daniel 'Dang' Griffith
2670 the prompt if there's no user input. By Daniel 'Dang' Griffith
2664 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2671 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2665 Francois Pinard.
2672 Francois Pinard.
2666
2673
2667 2004-04-02 Fernando Perez <fperez@colorado.edu>
2674 2004-04-02 Fernando Perez <fperez@colorado.edu>
2668
2675
2669 * IPython/genutils.py (Stream.__init__): Modified to survive at
2676 * IPython/genutils.py (Stream.__init__): Modified to survive at
2670 least importing in contexts where stdin/out/err aren't true file
2677 least importing in contexts where stdin/out/err aren't true file
2671 objects, such as PyCrust (they lack fileno() and mode). However,
2678 objects, such as PyCrust (they lack fileno() and mode). However,
2672 the recovery facilities which rely on these things existing will
2679 the recovery facilities which rely on these things existing will
2673 not work.
2680 not work.
2674
2681
2675 2004-04-01 Fernando Perez <fperez@colorado.edu>
2682 2004-04-01 Fernando Perez <fperez@colorado.edu>
2676
2683
2677 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2684 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2678 use the new getoutputerror() function, so it properly
2685 use the new getoutputerror() function, so it properly
2679 distinguishes stdout/err.
2686 distinguishes stdout/err.
2680
2687
2681 * IPython/genutils.py (getoutputerror): added a function to
2688 * IPython/genutils.py (getoutputerror): added a function to
2682 capture separately the standard output and error of a command.
2689 capture separately the standard output and error of a command.
2683 After a comment from dang on the mailing lists. This code is
2690 After a comment from dang on the mailing lists. This code is
2684 basically a modified version of commands.getstatusoutput(), from
2691 basically a modified version of commands.getstatusoutput(), from
2685 the standard library.
2692 the standard library.
2686
2693
2687 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2694 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2688 '!!' as a special syntax (shorthand) to access @sx.
2695 '!!' as a special syntax (shorthand) to access @sx.
2689
2696
2690 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2697 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2691 command and return its output as a list split on '\n'.
2698 command and return its output as a list split on '\n'.
2692
2699
2693 2004-03-31 Fernando Perez <fperez@colorado.edu>
2700 2004-03-31 Fernando Perez <fperez@colorado.edu>
2694
2701
2695 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2702 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2696 method to dictionaries used as FakeModule instances if they lack
2703 method to dictionaries used as FakeModule instances if they lack
2697 it. At least pydoc in python2.3 breaks for runtime-defined
2704 it. At least pydoc in python2.3 breaks for runtime-defined
2698 functions without this hack. At some point I need to _really_
2705 functions without this hack. At some point I need to _really_
2699 understand what FakeModule is doing, because it's a gross hack.
2706 understand what FakeModule is doing, because it's a gross hack.
2700 But it solves Arnd's problem for now...
2707 But it solves Arnd's problem for now...
2701
2708
2702 2004-02-27 Fernando Perez <fperez@colorado.edu>
2709 2004-02-27 Fernando Perez <fperez@colorado.edu>
2703
2710
2704 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2711 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2705 mode would behave erratically. Also increased the number of
2712 mode would behave erratically. Also increased the number of
2706 possible logs in rotate mod to 999. Thanks to Rod Holland
2713 possible logs in rotate mod to 999. Thanks to Rod Holland
2707 <rhh@StructureLABS.com> for the report and fixes.
2714 <rhh@StructureLABS.com> for the report and fixes.
2708
2715
2709 2004-02-26 Fernando Perez <fperez@colorado.edu>
2716 2004-02-26 Fernando Perez <fperez@colorado.edu>
2710
2717
2711 * IPython/genutils.py (page): Check that the curses module really
2718 * IPython/genutils.py (page): Check that the curses module really
2712 has the initscr attribute before trying to use it. For some
2719 has the initscr attribute before trying to use it. For some
2713 reason, the Solaris curses module is missing this. I think this
2720 reason, the Solaris curses module is missing this. I think this
2714 should be considered a Solaris python bug, but I'm not sure.
2721 should be considered a Solaris python bug, but I'm not sure.
2715
2722
2716 2004-01-17 Fernando Perez <fperez@colorado.edu>
2723 2004-01-17 Fernando Perez <fperez@colorado.edu>
2717
2724
2718 * IPython/genutils.py (Stream.__init__): Changes to try to make
2725 * IPython/genutils.py (Stream.__init__): Changes to try to make
2719 ipython robust against stdin/out/err being closed by the user.
2726 ipython robust against stdin/out/err being closed by the user.
2720 This is 'user error' (and blocks a normal python session, at least
2727 This is 'user error' (and blocks a normal python session, at least
2721 the stdout case). However, Ipython should be able to survive such
2728 the stdout case). However, Ipython should be able to survive such
2722 instances of abuse as gracefully as possible. To simplify the
2729 instances of abuse as gracefully as possible. To simplify the
2723 coding and maintain compatibility with Gary Bishop's Term
2730 coding and maintain compatibility with Gary Bishop's Term
2724 contributions, I've made use of classmethods for this. I think
2731 contributions, I've made use of classmethods for this. I think
2725 this introduces a dependency on python 2.2.
2732 this introduces a dependency on python 2.2.
2726
2733
2727 2004-01-13 Fernando Perez <fperez@colorado.edu>
2734 2004-01-13 Fernando Perez <fperez@colorado.edu>
2728
2735
2729 * IPython/numutils.py (exp_safe): simplified the code a bit and
2736 * IPython/numutils.py (exp_safe): simplified the code a bit and
2730 removed the need for importing the kinds module altogether.
2737 removed the need for importing the kinds module altogether.
2731
2738
2732 2004-01-06 Fernando Perez <fperez@colorado.edu>
2739 2004-01-06 Fernando Perez <fperez@colorado.edu>
2733
2740
2734 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2741 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2735 a magic function instead, after some community feedback. No
2742 a magic function instead, after some community feedback. No
2736 special syntax will exist for it, but its name is deliberately
2743 special syntax will exist for it, but its name is deliberately
2737 very short.
2744 very short.
2738
2745
2739 2003-12-20 Fernando Perez <fperez@colorado.edu>
2746 2003-12-20 Fernando Perez <fperez@colorado.edu>
2740
2747
2741 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2748 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2742 new functionality, to automagically assign the result of a shell
2749 new functionality, to automagically assign the result of a shell
2743 command to a variable. I'll solicit some community feedback on
2750 command to a variable. I'll solicit some community feedback on
2744 this before making it permanent.
2751 this before making it permanent.
2745
2752
2746 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2753 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2747 requested about callables for which inspect couldn't obtain a
2754 requested about callables for which inspect couldn't obtain a
2748 proper argspec. Thanks to a crash report sent by Etienne
2755 proper argspec. Thanks to a crash report sent by Etienne
2749 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2756 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2750
2757
2751 2003-12-09 Fernando Perez <fperez@colorado.edu>
2758 2003-12-09 Fernando Perez <fperez@colorado.edu>
2752
2759
2753 * IPython/genutils.py (page): patch for the pager to work across
2760 * IPython/genutils.py (page): patch for the pager to work across
2754 various versions of Windows. By Gary Bishop.
2761 various versions of Windows. By Gary Bishop.
2755
2762
2756 2003-12-04 Fernando Perez <fperez@colorado.edu>
2763 2003-12-04 Fernando Perez <fperez@colorado.edu>
2757
2764
2758 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2765 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2759 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2766 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2760 While I tested this and it looks ok, there may still be corner
2767 While I tested this and it looks ok, there may still be corner
2761 cases I've missed.
2768 cases I've missed.
2762
2769
2763 2003-12-01 Fernando Perez <fperez@colorado.edu>
2770 2003-12-01 Fernando Perez <fperez@colorado.edu>
2764
2771
2765 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2772 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2766 where a line like 'p,q=1,2' would fail because the automagic
2773 where a line like 'p,q=1,2' would fail because the automagic
2767 system would be triggered for @p.
2774 system would be triggered for @p.
2768
2775
2769 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2776 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2770 cleanups, code unmodified.
2777 cleanups, code unmodified.
2771
2778
2772 * IPython/genutils.py (Term): added a class for IPython to handle
2779 * IPython/genutils.py (Term): added a class for IPython to handle
2773 output. In most cases it will just be a proxy for stdout/err, but
2780 output. In most cases it will just be a proxy for stdout/err, but
2774 having this allows modifications to be made for some platforms,
2781 having this allows modifications to be made for some platforms,
2775 such as handling color escapes under Windows. All of this code
2782 such as handling color escapes under Windows. All of this code
2776 was contributed by Gary Bishop, with minor modifications by me.
2783 was contributed by Gary Bishop, with minor modifications by me.
2777 The actual changes affect many files.
2784 The actual changes affect many files.
2778
2785
2779 2003-11-30 Fernando Perez <fperez@colorado.edu>
2786 2003-11-30 Fernando Perez <fperez@colorado.edu>
2780
2787
2781 * IPython/iplib.py (file_matches): new completion code, courtesy
2788 * IPython/iplib.py (file_matches): new completion code, courtesy
2782 of Jeff Collins. This enables filename completion again under
2789 of Jeff Collins. This enables filename completion again under
2783 python 2.3, which disabled it at the C level.
2790 python 2.3, which disabled it at the C level.
2784
2791
2785 2003-11-11 Fernando Perez <fperez@colorado.edu>
2792 2003-11-11 Fernando Perez <fperez@colorado.edu>
2786
2793
2787 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2794 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2788 for Numeric.array(map(...)), but often convenient.
2795 for Numeric.array(map(...)), but often convenient.
2789
2796
2790 2003-11-05 Fernando Perez <fperez@colorado.edu>
2797 2003-11-05 Fernando Perez <fperez@colorado.edu>
2791
2798
2792 * IPython/numutils.py (frange): Changed a call from int() to
2799 * IPython/numutils.py (frange): Changed a call from int() to
2793 int(round()) to prevent a problem reported with arange() in the
2800 int(round()) to prevent a problem reported with arange() in the
2794 numpy list.
2801 numpy list.
2795
2802
2796 2003-10-06 Fernando Perez <fperez@colorado.edu>
2803 2003-10-06 Fernando Perez <fperez@colorado.edu>
2797
2804
2798 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2805 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2799 prevent crashes if sys lacks an argv attribute (it happens with
2806 prevent crashes if sys lacks an argv attribute (it happens with
2800 embedded interpreters which build a bare-bones sys module).
2807 embedded interpreters which build a bare-bones sys module).
2801 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2808 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2802
2809
2803 2003-09-24 Fernando Perez <fperez@colorado.edu>
2810 2003-09-24 Fernando Perez <fperez@colorado.edu>
2804
2811
2805 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2812 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2806 to protect against poorly written user objects where __getattr__
2813 to protect against poorly written user objects where __getattr__
2807 raises exceptions other than AttributeError. Thanks to a bug
2814 raises exceptions other than AttributeError. Thanks to a bug
2808 report by Oliver Sander <osander-AT-gmx.de>.
2815 report by Oliver Sander <osander-AT-gmx.de>.
2809
2816
2810 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2817 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2811 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2818 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2812
2819
2813 2003-09-09 Fernando Perez <fperez@colorado.edu>
2820 2003-09-09 Fernando Perez <fperez@colorado.edu>
2814
2821
2815 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2822 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2816 unpacking a list whith a callable as first element would
2823 unpacking a list whith a callable as first element would
2817 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2824 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2818 Collins.
2825 Collins.
2819
2826
2820 2003-08-25 *** Released version 0.5.0
2827 2003-08-25 *** Released version 0.5.0
2821
2828
2822 2003-08-22 Fernando Perez <fperez@colorado.edu>
2829 2003-08-22 Fernando Perez <fperez@colorado.edu>
2823
2830
2824 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2831 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2825 improperly defined user exceptions. Thanks to feedback from Mark
2832 improperly defined user exceptions. Thanks to feedback from Mark
2826 Russell <mrussell-AT-verio.net>.
2833 Russell <mrussell-AT-verio.net>.
2827
2834
2828 2003-08-20 Fernando Perez <fperez@colorado.edu>
2835 2003-08-20 Fernando Perez <fperez@colorado.edu>
2829
2836
2830 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2837 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2831 printing so that it would print multi-line string forms starting
2838 printing so that it would print multi-line string forms starting
2832 with a new line. This way the formatting is better respected for
2839 with a new line. This way the formatting is better respected for
2833 objects which work hard to make nice string forms.
2840 objects which work hard to make nice string forms.
2834
2841
2835 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2842 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2836 autocall would overtake data access for objects with both
2843 autocall would overtake data access for objects with both
2837 __getitem__ and __call__.
2844 __getitem__ and __call__.
2838
2845
2839 2003-08-19 *** Released version 0.5.0-rc1
2846 2003-08-19 *** Released version 0.5.0-rc1
2840
2847
2841 2003-08-19 Fernando Perez <fperez@colorado.edu>
2848 2003-08-19 Fernando Perez <fperez@colorado.edu>
2842
2849
2843 * IPython/deep_reload.py (load_tail): single tiny change here
2850 * IPython/deep_reload.py (load_tail): single tiny change here
2844 seems to fix the long-standing bug of dreload() failing to work
2851 seems to fix the long-standing bug of dreload() failing to work
2845 for dotted names. But this module is pretty tricky, so I may have
2852 for dotted names. But this module is pretty tricky, so I may have
2846 missed some subtlety. Needs more testing!.
2853 missed some subtlety. Needs more testing!.
2847
2854
2848 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2855 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2849 exceptions which have badly implemented __str__ methods.
2856 exceptions which have badly implemented __str__ methods.
2850 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2857 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2851 which I've been getting reports about from Python 2.3 users. I
2858 which I've been getting reports about from Python 2.3 users. I
2852 wish I had a simple test case to reproduce the problem, so I could
2859 wish I had a simple test case to reproduce the problem, so I could
2853 either write a cleaner workaround or file a bug report if
2860 either write a cleaner workaround or file a bug report if
2854 necessary.
2861 necessary.
2855
2862
2856 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2863 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2857 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2864 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2858 a bug report by Tjabo Kloppenburg.
2865 a bug report by Tjabo Kloppenburg.
2859
2866
2860 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2867 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2861 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2868 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2862 seems rather unstable. Thanks to a bug report by Tjabo
2869 seems rather unstable. Thanks to a bug report by Tjabo
2863 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2870 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2864
2871
2865 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2872 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2866 this out soon because of the critical fixes in the inner loop for
2873 this out soon because of the critical fixes in the inner loop for
2867 generators.
2874 generators.
2868
2875
2869 * IPython/Magic.py (Magic.getargspec): removed. This (and
2876 * IPython/Magic.py (Magic.getargspec): removed. This (and
2870 _get_def) have been obsoleted by OInspect for a long time, I
2877 _get_def) have been obsoleted by OInspect for a long time, I
2871 hadn't noticed that they were dead code.
2878 hadn't noticed that they were dead code.
2872 (Magic._ofind): restored _ofind functionality for a few literals
2879 (Magic._ofind): restored _ofind functionality for a few literals
2873 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2880 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2874 for things like "hello".capitalize?, since that would require a
2881 for things like "hello".capitalize?, since that would require a
2875 potentially dangerous eval() again.
2882 potentially dangerous eval() again.
2876
2883
2877 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2884 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2878 logic a bit more to clean up the escapes handling and minimize the
2885 logic a bit more to clean up the escapes handling and minimize the
2879 use of _ofind to only necessary cases. The interactive 'feel' of
2886 use of _ofind to only necessary cases. The interactive 'feel' of
2880 IPython should have improved quite a bit with the changes in
2887 IPython should have improved quite a bit with the changes in
2881 _prefilter and _ofind (besides being far safer than before).
2888 _prefilter and _ofind (besides being far safer than before).
2882
2889
2883 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2890 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2884 obscure, never reported). Edit would fail to find the object to
2891 obscure, never reported). Edit would fail to find the object to
2885 edit under some circumstances.
2892 edit under some circumstances.
2886 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2893 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2887 which were causing double-calling of generators. Those eval calls
2894 which were causing double-calling of generators. Those eval calls
2888 were _very_ dangerous, since code with side effects could be
2895 were _very_ dangerous, since code with side effects could be
2889 triggered. As they say, 'eval is evil'... These were the
2896 triggered. As they say, 'eval is evil'... These were the
2890 nastiest evals in IPython. Besides, _ofind is now far simpler,
2897 nastiest evals in IPython. Besides, _ofind is now far simpler,
2891 and it should also be quite a bit faster. Its use of inspect is
2898 and it should also be quite a bit faster. Its use of inspect is
2892 also safer, so perhaps some of the inspect-related crashes I've
2899 also safer, so perhaps some of the inspect-related crashes I've
2893 seen lately with Python 2.3 might be taken care of. That will
2900 seen lately with Python 2.3 might be taken care of. That will
2894 need more testing.
2901 need more testing.
2895
2902
2896 2003-08-17 Fernando Perez <fperez@colorado.edu>
2903 2003-08-17 Fernando Perez <fperez@colorado.edu>
2897
2904
2898 * IPython/iplib.py (InteractiveShell._prefilter): significant
2905 * IPython/iplib.py (InteractiveShell._prefilter): significant
2899 simplifications to the logic for handling user escapes. Faster
2906 simplifications to the logic for handling user escapes. Faster
2900 and simpler code.
2907 and simpler code.
2901
2908
2902 2003-08-14 Fernando Perez <fperez@colorado.edu>
2909 2003-08-14 Fernando Perez <fperez@colorado.edu>
2903
2910
2904 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2911 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2905 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2912 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2906 but it should be quite a bit faster. And the recursive version
2913 but it should be quite a bit faster. And the recursive version
2907 generated O(log N) intermediate storage for all rank>1 arrays,
2914 generated O(log N) intermediate storage for all rank>1 arrays,
2908 even if they were contiguous.
2915 even if they were contiguous.
2909 (l1norm): Added this function.
2916 (l1norm): Added this function.
2910 (norm): Added this function for arbitrary norms (including
2917 (norm): Added this function for arbitrary norms (including
2911 l-infinity). l1 and l2 are still special cases for convenience
2918 l-infinity). l1 and l2 are still special cases for convenience
2912 and speed.
2919 and speed.
2913
2920
2914 2003-08-03 Fernando Perez <fperez@colorado.edu>
2921 2003-08-03 Fernando Perez <fperez@colorado.edu>
2915
2922
2916 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2923 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2917 exceptions, which now raise PendingDeprecationWarnings in Python
2924 exceptions, which now raise PendingDeprecationWarnings in Python
2918 2.3. There were some in Magic and some in Gnuplot2.
2925 2.3. There were some in Magic and some in Gnuplot2.
2919
2926
2920 2003-06-30 Fernando Perez <fperez@colorado.edu>
2927 2003-06-30 Fernando Perez <fperez@colorado.edu>
2921
2928
2922 * IPython/genutils.py (page): modified to call curses only for
2929 * IPython/genutils.py (page): modified to call curses only for
2923 terminals where TERM=='xterm'. After problems under many other
2930 terminals where TERM=='xterm'. After problems under many other
2924 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2931 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2925
2932
2926 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2933 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2927 would be triggered when readline was absent. This was just an old
2934 would be triggered when readline was absent. This was just an old
2928 debugging statement I'd forgotten to take out.
2935 debugging statement I'd forgotten to take out.
2929
2936
2930 2003-06-20 Fernando Perez <fperez@colorado.edu>
2937 2003-06-20 Fernando Perez <fperez@colorado.edu>
2931
2938
2932 * IPython/genutils.py (clock): modified to return only user time
2939 * IPython/genutils.py (clock): modified to return only user time
2933 (not counting system time), after a discussion on scipy. While
2940 (not counting system time), after a discussion on scipy. While
2934 system time may be a useful quantity occasionally, it may much
2941 system time may be a useful quantity occasionally, it may much
2935 more easily be skewed by occasional swapping or other similar
2942 more easily be skewed by occasional swapping or other similar
2936 activity.
2943 activity.
2937
2944
2938 2003-06-05 Fernando Perez <fperez@colorado.edu>
2945 2003-06-05 Fernando Perez <fperez@colorado.edu>
2939
2946
2940 * IPython/numutils.py (identity): new function, for building
2947 * IPython/numutils.py (identity): new function, for building
2941 arbitrary rank Kronecker deltas (mostly backwards compatible with
2948 arbitrary rank Kronecker deltas (mostly backwards compatible with
2942 Numeric.identity)
2949 Numeric.identity)
2943
2950
2944 2003-06-03 Fernando Perez <fperez@colorado.edu>
2951 2003-06-03 Fernando Perez <fperez@colorado.edu>
2945
2952
2946 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2953 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2947 arguments passed to magics with spaces, to allow trailing '\' to
2954 arguments passed to magics with spaces, to allow trailing '\' to
2948 work normally (mainly for Windows users).
2955 work normally (mainly for Windows users).
2949
2956
2950 2003-05-29 Fernando Perez <fperez@colorado.edu>
2957 2003-05-29 Fernando Perez <fperez@colorado.edu>
2951
2958
2952 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2959 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2953 instead of pydoc.help. This fixes a bizarre behavior where
2960 instead of pydoc.help. This fixes a bizarre behavior where
2954 printing '%s' % locals() would trigger the help system. Now
2961 printing '%s' % locals() would trigger the help system. Now
2955 ipython behaves like normal python does.
2962 ipython behaves like normal python does.
2956
2963
2957 Note that if one does 'from pydoc import help', the bizarre
2964 Note that if one does 'from pydoc import help', the bizarre
2958 behavior returns, but this will also happen in normal python, so
2965 behavior returns, but this will also happen in normal python, so
2959 it's not an ipython bug anymore (it has to do with how pydoc.help
2966 it's not an ipython bug anymore (it has to do with how pydoc.help
2960 is implemented).
2967 is implemented).
2961
2968
2962 2003-05-22 Fernando Perez <fperez@colorado.edu>
2969 2003-05-22 Fernando Perez <fperez@colorado.edu>
2963
2970
2964 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2971 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2965 return [] instead of None when nothing matches, also match to end
2972 return [] instead of None when nothing matches, also match to end
2966 of line. Patch by Gary Bishop.
2973 of line. Patch by Gary Bishop.
2967
2974
2968 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2975 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2969 protection as before, for files passed on the command line. This
2976 protection as before, for files passed on the command line. This
2970 prevents the CrashHandler from kicking in if user files call into
2977 prevents the CrashHandler from kicking in if user files call into
2971 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2978 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2972 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2979 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2973
2980
2974 2003-05-20 *** Released version 0.4.0
2981 2003-05-20 *** Released version 0.4.0
2975
2982
2976 2003-05-20 Fernando Perez <fperez@colorado.edu>
2983 2003-05-20 Fernando Perez <fperez@colorado.edu>
2977
2984
2978 * setup.py: added support for manpages. It's a bit hackish b/c of
2985 * setup.py: added support for manpages. It's a bit hackish b/c of
2979 a bug in the way the bdist_rpm distutils target handles gzipped
2986 a bug in the way the bdist_rpm distutils target handles gzipped
2980 manpages, but it works. After a patch by Jack.
2987 manpages, but it works. After a patch by Jack.
2981
2988
2982 2003-05-19 Fernando Perez <fperez@colorado.edu>
2989 2003-05-19 Fernando Perez <fperez@colorado.edu>
2983
2990
2984 * IPython/numutils.py: added a mockup of the kinds module, since
2991 * IPython/numutils.py: added a mockup of the kinds module, since
2985 it was recently removed from Numeric. This way, numutils will
2992 it was recently removed from Numeric. This way, numutils will
2986 work for all users even if they are missing kinds.
2993 work for all users even if they are missing kinds.
2987
2994
2988 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2995 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2989 failure, which can occur with SWIG-wrapped extensions. After a
2996 failure, which can occur with SWIG-wrapped extensions. After a
2990 crash report from Prabhu.
2997 crash report from Prabhu.
2991
2998
2992 2003-05-16 Fernando Perez <fperez@colorado.edu>
2999 2003-05-16 Fernando Perez <fperez@colorado.edu>
2993
3000
2994 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3001 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2995 protect ipython from user code which may call directly
3002 protect ipython from user code which may call directly
2996 sys.excepthook (this looks like an ipython crash to the user, even
3003 sys.excepthook (this looks like an ipython crash to the user, even
2997 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3004 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2998 This is especially important to help users of WxWindows, but may
3005 This is especially important to help users of WxWindows, but may
2999 also be useful in other cases.
3006 also be useful in other cases.
3000
3007
3001 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3008 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3002 an optional tb_offset to be specified, and to preserve exception
3009 an optional tb_offset to be specified, and to preserve exception
3003 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3010 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3004
3011
3005 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3012 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3006
3013
3007 2003-05-15 Fernando Perez <fperez@colorado.edu>
3014 2003-05-15 Fernando Perez <fperez@colorado.edu>
3008
3015
3009 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3016 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3010 installing for a new user under Windows.
3017 installing for a new user under Windows.
3011
3018
3012 2003-05-12 Fernando Perez <fperez@colorado.edu>
3019 2003-05-12 Fernando Perez <fperez@colorado.edu>
3013
3020
3014 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3021 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3015 handler for Emacs comint-based lines. Currently it doesn't do
3022 handler for Emacs comint-based lines. Currently it doesn't do
3016 much (but importantly, it doesn't update the history cache). In
3023 much (but importantly, it doesn't update the history cache). In
3017 the future it may be expanded if Alex needs more functionality
3024 the future it may be expanded if Alex needs more functionality
3018 there.
3025 there.
3019
3026
3020 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3027 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3021 info to crash reports.
3028 info to crash reports.
3022
3029
3023 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3030 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3024 just like Python's -c. Also fixed crash with invalid -color
3031 just like Python's -c. Also fixed crash with invalid -color
3025 option value at startup. Thanks to Will French
3032 option value at startup. Thanks to Will French
3026 <wfrench-AT-bestweb.net> for the bug report.
3033 <wfrench-AT-bestweb.net> for the bug report.
3027
3034
3028 2003-05-09 Fernando Perez <fperez@colorado.edu>
3035 2003-05-09 Fernando Perez <fperez@colorado.edu>
3029
3036
3030 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3037 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3031 to EvalDict (it's a mapping, after all) and simplified its code
3038 to EvalDict (it's a mapping, after all) and simplified its code
3032 quite a bit, after a nice discussion on c.l.py where Gustavo
3039 quite a bit, after a nice discussion on c.l.py where Gustavo
3033 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3040 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3034
3041
3035 2003-04-30 Fernando Perez <fperez@colorado.edu>
3042 2003-04-30 Fernando Perez <fperez@colorado.edu>
3036
3043
3037 * IPython/genutils.py (timings_out): modified it to reduce its
3044 * IPython/genutils.py (timings_out): modified it to reduce its
3038 overhead in the common reps==1 case.
3045 overhead in the common reps==1 case.
3039
3046
3040 2003-04-29 Fernando Perez <fperez@colorado.edu>
3047 2003-04-29 Fernando Perez <fperez@colorado.edu>
3041
3048
3042 * IPython/genutils.py (timings_out): Modified to use the resource
3049 * IPython/genutils.py (timings_out): Modified to use the resource
3043 module, which avoids the wraparound problems of time.clock().
3050 module, which avoids the wraparound problems of time.clock().
3044
3051
3045 2003-04-17 *** Released version 0.2.15pre4
3052 2003-04-17 *** Released version 0.2.15pre4
3046
3053
3047 2003-04-17 Fernando Perez <fperez@colorado.edu>
3054 2003-04-17 Fernando Perez <fperez@colorado.edu>
3048
3055
3049 * setup.py (scriptfiles): Split windows-specific stuff over to a
3056 * setup.py (scriptfiles): Split windows-specific stuff over to a
3050 separate file, in an attempt to have a Windows GUI installer.
3057 separate file, in an attempt to have a Windows GUI installer.
3051 That didn't work, but part of the groundwork is done.
3058 That didn't work, but part of the groundwork is done.
3052
3059
3053 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3060 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3054 indent/unindent with 4 spaces. Particularly useful in combination
3061 indent/unindent with 4 spaces. Particularly useful in combination
3055 with the new auto-indent option.
3062 with the new auto-indent option.
3056
3063
3057 2003-04-16 Fernando Perez <fperez@colorado.edu>
3064 2003-04-16 Fernando Perez <fperez@colorado.edu>
3058
3065
3059 * IPython/Magic.py: various replacements of self.rc for
3066 * IPython/Magic.py: various replacements of self.rc for
3060 self.shell.rc. A lot more remains to be done to fully disentangle
3067 self.shell.rc. A lot more remains to be done to fully disentangle
3061 this class from the main Shell class.
3068 this class from the main Shell class.
3062
3069
3063 * IPython/GnuplotRuntime.py: added checks for mouse support so
3070 * IPython/GnuplotRuntime.py: added checks for mouse support so
3064 that we don't try to enable it if the current gnuplot doesn't
3071 that we don't try to enable it if the current gnuplot doesn't
3065 really support it. Also added checks so that we don't try to
3072 really support it. Also added checks so that we don't try to
3066 enable persist under Windows (where Gnuplot doesn't recognize the
3073 enable persist under Windows (where Gnuplot doesn't recognize the
3067 option).
3074 option).
3068
3075
3069 * IPython/iplib.py (InteractiveShell.interact): Added optional
3076 * IPython/iplib.py (InteractiveShell.interact): Added optional
3070 auto-indenting code, after a patch by King C. Shu
3077 auto-indenting code, after a patch by King C. Shu
3071 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3078 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3072 get along well with pasting indented code. If I ever figure out
3079 get along well with pasting indented code. If I ever figure out
3073 how to make that part go well, it will become on by default.
3080 how to make that part go well, it will become on by default.
3074
3081
3075 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3082 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3076 crash ipython if there was an unmatched '%' in the user's prompt
3083 crash ipython if there was an unmatched '%' in the user's prompt
3077 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3084 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3078
3085
3079 * IPython/iplib.py (InteractiveShell.interact): removed the
3086 * IPython/iplib.py (InteractiveShell.interact): removed the
3080 ability to ask the user whether he wants to crash or not at the
3087 ability to ask the user whether he wants to crash or not at the
3081 'last line' exception handler. Calling functions at that point
3088 'last line' exception handler. Calling functions at that point
3082 changes the stack, and the error reports would have incorrect
3089 changes the stack, and the error reports would have incorrect
3083 tracebacks.
3090 tracebacks.
3084
3091
3085 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3092 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3086 pass through a peger a pretty-printed form of any object. After a
3093 pass through a peger a pretty-printed form of any object. After a
3087 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3094 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3088
3095
3089 2003-04-14 Fernando Perez <fperez@colorado.edu>
3096 2003-04-14 Fernando Perez <fperez@colorado.edu>
3090
3097
3091 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3098 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3092 all files in ~ would be modified at first install (instead of
3099 all files in ~ would be modified at first install (instead of
3093 ~/.ipython). This could be potentially disastrous, as the
3100 ~/.ipython). This could be potentially disastrous, as the
3094 modification (make line-endings native) could damage binary files.
3101 modification (make line-endings native) could damage binary files.
3095
3102
3096 2003-04-10 Fernando Perez <fperez@colorado.edu>
3103 2003-04-10 Fernando Perez <fperez@colorado.edu>
3097
3104
3098 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3105 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3099 handle only lines which are invalid python. This now means that
3106 handle only lines which are invalid python. This now means that
3100 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3107 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3101 for the bug report.
3108 for the bug report.
3102
3109
3103 2003-04-01 Fernando Perez <fperez@colorado.edu>
3110 2003-04-01 Fernando Perez <fperez@colorado.edu>
3104
3111
3105 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3112 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3106 where failing to set sys.last_traceback would crash pdb.pm().
3113 where failing to set sys.last_traceback would crash pdb.pm().
3107 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3114 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3108 report.
3115 report.
3109
3116
3110 2003-03-25 Fernando Perez <fperez@colorado.edu>
3117 2003-03-25 Fernando Perez <fperez@colorado.edu>
3111
3118
3112 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3119 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3113 before printing it (it had a lot of spurious blank lines at the
3120 before printing it (it had a lot of spurious blank lines at the
3114 end).
3121 end).
3115
3122
3116 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3123 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3117 output would be sent 21 times! Obviously people don't use this
3124 output would be sent 21 times! Obviously people don't use this
3118 too often, or I would have heard about it.
3125 too often, or I would have heard about it.
3119
3126
3120 2003-03-24 Fernando Perez <fperez@colorado.edu>
3127 2003-03-24 Fernando Perez <fperez@colorado.edu>
3121
3128
3122 * setup.py (scriptfiles): renamed the data_files parameter from
3129 * setup.py (scriptfiles): renamed the data_files parameter from
3123 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3130 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3124 for the patch.
3131 for the patch.
3125
3132
3126 2003-03-20 Fernando Perez <fperez@colorado.edu>
3133 2003-03-20 Fernando Perez <fperez@colorado.edu>
3127
3134
3128 * IPython/genutils.py (error): added error() and fatal()
3135 * IPython/genutils.py (error): added error() and fatal()
3129 functions.
3136 functions.
3130
3137
3131 2003-03-18 *** Released version 0.2.15pre3
3138 2003-03-18 *** Released version 0.2.15pre3
3132
3139
3133 2003-03-18 Fernando Perez <fperez@colorado.edu>
3140 2003-03-18 Fernando Perez <fperez@colorado.edu>
3134
3141
3135 * setupext/install_data_ext.py
3142 * setupext/install_data_ext.py
3136 (install_data_ext.initialize_options): Class contributed by Jack
3143 (install_data_ext.initialize_options): Class contributed by Jack
3137 Moffit for fixing the old distutils hack. He is sending this to
3144 Moffit for fixing the old distutils hack. He is sending this to
3138 the distutils folks so in the future we may not need it as a
3145 the distutils folks so in the future we may not need it as a
3139 private fix.
3146 private fix.
3140
3147
3141 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3148 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3142 changes for Debian packaging. See his patch for full details.
3149 changes for Debian packaging. See his patch for full details.
3143 The old distutils hack of making the ipythonrc* files carry a
3150 The old distutils hack of making the ipythonrc* files carry a
3144 bogus .py extension is gone, at last. Examples were moved to a
3151 bogus .py extension is gone, at last. Examples were moved to a
3145 separate subdir under doc/, and the separate executable scripts
3152 separate subdir under doc/, and the separate executable scripts
3146 now live in their own directory. Overall a great cleanup. The
3153 now live in their own directory. Overall a great cleanup. The
3147 manual was updated to use the new files, and setup.py has been
3154 manual was updated to use the new files, and setup.py has been
3148 fixed for this setup.
3155 fixed for this setup.
3149
3156
3150 * IPython/PyColorize.py (Parser.usage): made non-executable and
3157 * IPython/PyColorize.py (Parser.usage): made non-executable and
3151 created a pycolor wrapper around it to be included as a script.
3158 created a pycolor wrapper around it to be included as a script.
3152
3159
3153 2003-03-12 *** Released version 0.2.15pre2
3160 2003-03-12 *** Released version 0.2.15pre2
3154
3161
3155 2003-03-12 Fernando Perez <fperez@colorado.edu>
3162 2003-03-12 Fernando Perez <fperez@colorado.edu>
3156
3163
3157 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3164 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3158 long-standing problem with garbage characters in some terminals.
3165 long-standing problem with garbage characters in some terminals.
3159 The issue was really that the \001 and \002 escapes must _only_ be
3166 The issue was really that the \001 and \002 escapes must _only_ be
3160 passed to input prompts (which call readline), but _never_ to
3167 passed to input prompts (which call readline), but _never_ to
3161 normal text to be printed on screen. I changed ColorANSI to have
3168 normal text to be printed on screen. I changed ColorANSI to have
3162 two classes: TermColors and InputTermColors, each with the
3169 two classes: TermColors and InputTermColors, each with the
3163 appropriate escapes for input prompts or normal text. The code in
3170 appropriate escapes for input prompts or normal text. The code in
3164 Prompts.py got slightly more complicated, but this very old and
3171 Prompts.py got slightly more complicated, but this very old and
3165 annoying bug is finally fixed.
3172 annoying bug is finally fixed.
3166
3173
3167 All the credit for nailing down the real origin of this problem
3174 All the credit for nailing down the real origin of this problem
3168 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3175 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3169 *Many* thanks to him for spending quite a bit of effort on this.
3176 *Many* thanks to him for spending quite a bit of effort on this.
3170
3177
3171 2003-03-05 *** Released version 0.2.15pre1
3178 2003-03-05 *** Released version 0.2.15pre1
3172
3179
3173 2003-03-03 Fernando Perez <fperez@colorado.edu>
3180 2003-03-03 Fernando Perez <fperez@colorado.edu>
3174
3181
3175 * IPython/FakeModule.py: Moved the former _FakeModule to a
3182 * IPython/FakeModule.py: Moved the former _FakeModule to a
3176 separate file, because it's also needed by Magic (to fix a similar
3183 separate file, because it's also needed by Magic (to fix a similar
3177 pickle-related issue in @run).
3184 pickle-related issue in @run).
3178
3185
3179 2003-03-02 Fernando Perez <fperez@colorado.edu>
3186 2003-03-02 Fernando Perez <fperez@colorado.edu>
3180
3187
3181 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3188 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3182 the autocall option at runtime.
3189 the autocall option at runtime.
3183 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3190 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3184 across Magic.py to start separating Magic from InteractiveShell.
3191 across Magic.py to start separating Magic from InteractiveShell.
3185 (Magic._ofind): Fixed to return proper namespace for dotted
3192 (Magic._ofind): Fixed to return proper namespace for dotted
3186 names. Before, a dotted name would always return 'not currently
3193 names. Before, a dotted name would always return 'not currently
3187 defined', because it would find the 'parent'. s.x would be found,
3194 defined', because it would find the 'parent'. s.x would be found,
3188 but since 'x' isn't defined by itself, it would get confused.
3195 but since 'x' isn't defined by itself, it would get confused.
3189 (Magic.magic_run): Fixed pickling problems reported by Ralf
3196 (Magic.magic_run): Fixed pickling problems reported by Ralf
3190 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3197 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3191 that I'd used when Mike Heeter reported similar issues at the
3198 that I'd used when Mike Heeter reported similar issues at the
3192 top-level, but now for @run. It boils down to injecting the
3199 top-level, but now for @run. It boils down to injecting the
3193 namespace where code is being executed with something that looks
3200 namespace where code is being executed with something that looks
3194 enough like a module to fool pickle.dump(). Since a pickle stores
3201 enough like a module to fool pickle.dump(). Since a pickle stores
3195 a named reference to the importing module, we need this for
3202 a named reference to the importing module, we need this for
3196 pickles to save something sensible.
3203 pickles to save something sensible.
3197
3204
3198 * IPython/ipmaker.py (make_IPython): added an autocall option.
3205 * IPython/ipmaker.py (make_IPython): added an autocall option.
3199
3206
3200 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3207 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3201 the auto-eval code. Now autocalling is an option, and the code is
3208 the auto-eval code. Now autocalling is an option, and the code is
3202 also vastly safer. There is no more eval() involved at all.
3209 also vastly safer. There is no more eval() involved at all.
3203
3210
3204 2003-03-01 Fernando Perez <fperez@colorado.edu>
3211 2003-03-01 Fernando Perez <fperez@colorado.edu>
3205
3212
3206 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3213 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3207 dict with named keys instead of a tuple.
3214 dict with named keys instead of a tuple.
3208
3215
3209 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3216 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3210
3217
3211 * setup.py (make_shortcut): Fixed message about directories
3218 * setup.py (make_shortcut): Fixed message about directories
3212 created during Windows installation (the directories were ok, just
3219 created during Windows installation (the directories were ok, just
3213 the printed message was misleading). Thanks to Chris Liechti
3220 the printed message was misleading). Thanks to Chris Liechti
3214 <cliechti-AT-gmx.net> for the heads up.
3221 <cliechti-AT-gmx.net> for the heads up.
3215
3222
3216 2003-02-21 Fernando Perez <fperez@colorado.edu>
3223 2003-02-21 Fernando Perez <fperez@colorado.edu>
3217
3224
3218 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3225 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3219 of ValueError exception when checking for auto-execution. This
3226 of ValueError exception when checking for auto-execution. This
3220 one is raised by things like Numeric arrays arr.flat when the
3227 one is raised by things like Numeric arrays arr.flat when the
3221 array is non-contiguous.
3228 array is non-contiguous.
3222
3229
3223 2003-01-31 Fernando Perez <fperez@colorado.edu>
3230 2003-01-31 Fernando Perez <fperez@colorado.edu>
3224
3231
3225 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3232 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3226 not return any value at all (even though the command would get
3233 not return any value at all (even though the command would get
3227 executed).
3234 executed).
3228 (xsys): Flush stdout right after printing the command to ensure
3235 (xsys): Flush stdout right after printing the command to ensure
3229 proper ordering of commands and command output in the total
3236 proper ordering of commands and command output in the total
3230 output.
3237 output.
3231 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3238 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3232 system/getoutput as defaults. The old ones are kept for
3239 system/getoutput as defaults. The old ones are kept for
3233 compatibility reasons, so no code which uses this library needs
3240 compatibility reasons, so no code which uses this library needs
3234 changing.
3241 changing.
3235
3242
3236 2003-01-27 *** Released version 0.2.14
3243 2003-01-27 *** Released version 0.2.14
3237
3244
3238 2003-01-25 Fernando Perez <fperez@colorado.edu>
3245 2003-01-25 Fernando Perez <fperez@colorado.edu>
3239
3246
3240 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3247 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3241 functions defined in previous edit sessions could not be re-edited
3248 functions defined in previous edit sessions could not be re-edited
3242 (because the temp files were immediately removed). Now temp files
3249 (because the temp files were immediately removed). Now temp files
3243 are removed only at IPython's exit.
3250 are removed only at IPython's exit.
3244 (Magic.magic_run): Improved @run to perform shell-like expansions
3251 (Magic.magic_run): Improved @run to perform shell-like expansions
3245 on its arguments (~users and $VARS). With this, @run becomes more
3252 on its arguments (~users and $VARS). With this, @run becomes more
3246 like a normal command-line.
3253 like a normal command-line.
3247
3254
3248 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3255 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3249 bugs related to embedding and cleaned up that code. A fairly
3256 bugs related to embedding and cleaned up that code. A fairly
3250 important one was the impossibility to access the global namespace
3257 important one was the impossibility to access the global namespace
3251 through the embedded IPython (only local variables were visible).
3258 through the embedded IPython (only local variables were visible).
3252
3259
3253 2003-01-14 Fernando Perez <fperez@colorado.edu>
3260 2003-01-14 Fernando Perez <fperez@colorado.edu>
3254
3261
3255 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3262 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3256 auto-calling to be a bit more conservative. Now it doesn't get
3263 auto-calling to be a bit more conservative. Now it doesn't get
3257 triggered if any of '!=()<>' are in the rest of the input line, to
3264 triggered if any of '!=()<>' are in the rest of the input line, to
3258 allow comparing callables. Thanks to Alex for the heads up.
3265 allow comparing callables. Thanks to Alex for the heads up.
3259
3266
3260 2003-01-07 Fernando Perez <fperez@colorado.edu>
3267 2003-01-07 Fernando Perez <fperez@colorado.edu>
3261
3268
3262 * IPython/genutils.py (page): fixed estimation of the number of
3269 * IPython/genutils.py (page): fixed estimation of the number of
3263 lines in a string to be paged to simply count newlines. This
3270 lines in a string to be paged to simply count newlines. This
3264 prevents over-guessing due to embedded escape sequences. A better
3271 prevents over-guessing due to embedded escape sequences. A better
3265 long-term solution would involve stripping out the control chars
3272 long-term solution would involve stripping out the control chars
3266 for the count, but it's potentially so expensive I just don't
3273 for the count, but it's potentially so expensive I just don't
3267 think it's worth doing.
3274 think it's worth doing.
3268
3275
3269 2002-12-19 *** Released version 0.2.14pre50
3276 2002-12-19 *** Released version 0.2.14pre50
3270
3277
3271 2002-12-19 Fernando Perez <fperez@colorado.edu>
3278 2002-12-19 Fernando Perez <fperez@colorado.edu>
3272
3279
3273 * tools/release (version): Changed release scripts to inform
3280 * tools/release (version): Changed release scripts to inform
3274 Andrea and build a NEWS file with a list of recent changes.
3281 Andrea and build a NEWS file with a list of recent changes.
3275
3282
3276 * IPython/ColorANSI.py (__all__): changed terminal detection
3283 * IPython/ColorANSI.py (__all__): changed terminal detection
3277 code. Seems to work better for xterms without breaking
3284 code. Seems to work better for xterms without breaking
3278 konsole. Will need more testing to determine if WinXP and Mac OSX
3285 konsole. Will need more testing to determine if WinXP and Mac OSX
3279 also work ok.
3286 also work ok.
3280
3287
3281 2002-12-18 *** Released version 0.2.14pre49
3288 2002-12-18 *** Released version 0.2.14pre49
3282
3289
3283 2002-12-18 Fernando Perez <fperez@colorado.edu>
3290 2002-12-18 Fernando Perez <fperez@colorado.edu>
3284
3291
3285 * Docs: added new info about Mac OSX, from Andrea.
3292 * Docs: added new info about Mac OSX, from Andrea.
3286
3293
3287 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3294 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3288 allow direct plotting of python strings whose format is the same
3295 allow direct plotting of python strings whose format is the same
3289 of gnuplot data files.
3296 of gnuplot data files.
3290
3297
3291 2002-12-16 Fernando Perez <fperez@colorado.edu>
3298 2002-12-16 Fernando Perez <fperez@colorado.edu>
3292
3299
3293 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3300 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3294 value of exit question to be acknowledged.
3301 value of exit question to be acknowledged.
3295
3302
3296 2002-12-03 Fernando Perez <fperez@colorado.edu>
3303 2002-12-03 Fernando Perez <fperez@colorado.edu>
3297
3304
3298 * IPython/ipmaker.py: removed generators, which had been added
3305 * IPython/ipmaker.py: removed generators, which had been added
3299 by mistake in an earlier debugging run. This was causing trouble
3306 by mistake in an earlier debugging run. This was causing trouble
3300 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3307 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3301 for pointing this out.
3308 for pointing this out.
3302
3309
3303 2002-11-17 Fernando Perez <fperez@colorado.edu>
3310 2002-11-17 Fernando Perez <fperez@colorado.edu>
3304
3311
3305 * Manual: updated the Gnuplot section.
3312 * Manual: updated the Gnuplot section.
3306
3313
3307 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3314 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3308 a much better split of what goes in Runtime and what goes in
3315 a much better split of what goes in Runtime and what goes in
3309 Interactive.
3316 Interactive.
3310
3317
3311 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3318 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3312 being imported from iplib.
3319 being imported from iplib.
3313
3320
3314 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3321 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3315 for command-passing. Now the global Gnuplot instance is called
3322 for command-passing. Now the global Gnuplot instance is called
3316 'gp' instead of 'g', which was really a far too fragile and
3323 'gp' instead of 'g', which was really a far too fragile and
3317 common name.
3324 common name.
3318
3325
3319 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3326 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3320 bounding boxes generated by Gnuplot for square plots.
3327 bounding boxes generated by Gnuplot for square plots.
3321
3328
3322 * IPython/genutils.py (popkey): new function added. I should
3329 * IPython/genutils.py (popkey): new function added. I should
3323 suggest this on c.l.py as a dict method, it seems useful.
3330 suggest this on c.l.py as a dict method, it seems useful.
3324
3331
3325 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3332 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3326 to transparently handle PostScript generation. MUCH better than
3333 to transparently handle PostScript generation. MUCH better than
3327 the previous plot_eps/replot_eps (which I removed now). The code
3334 the previous plot_eps/replot_eps (which I removed now). The code
3328 is also fairly clean and well documented now (including
3335 is also fairly clean and well documented now (including
3329 docstrings).
3336 docstrings).
3330
3337
3331 2002-11-13 Fernando Perez <fperez@colorado.edu>
3338 2002-11-13 Fernando Perez <fperez@colorado.edu>
3332
3339
3333 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3340 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3334 (inconsistent with options).
3341 (inconsistent with options).
3335
3342
3336 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3343 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3337 manually disabled, I don't know why. Fixed it.
3344 manually disabled, I don't know why. Fixed it.
3338 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3345 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3339 eps output.
3346 eps output.
3340
3347
3341 2002-11-12 Fernando Perez <fperez@colorado.edu>
3348 2002-11-12 Fernando Perez <fperez@colorado.edu>
3342
3349
3343 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3350 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3344 don't propagate up to caller. Fixes crash reported by François
3351 don't propagate up to caller. Fixes crash reported by François
3345 Pinard.
3352 Pinard.
3346
3353
3347 2002-11-09 Fernando Perez <fperez@colorado.edu>
3354 2002-11-09 Fernando Perez <fperez@colorado.edu>
3348
3355
3349 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3356 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3350 history file for new users.
3357 history file for new users.
3351 (make_IPython): fixed bug where initial install would leave the
3358 (make_IPython): fixed bug where initial install would leave the
3352 user running in the .ipython dir.
3359 user running in the .ipython dir.
3353 (make_IPython): fixed bug where config dir .ipython would be
3360 (make_IPython): fixed bug where config dir .ipython would be
3354 created regardless of the given -ipythondir option. Thanks to Cory
3361 created regardless of the given -ipythondir option. Thanks to Cory
3355 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3362 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3356
3363
3357 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3364 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3358 type confirmations. Will need to use it in all of IPython's code
3365 type confirmations. Will need to use it in all of IPython's code
3359 consistently.
3366 consistently.
3360
3367
3361 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3368 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3362 context to print 31 lines instead of the default 5. This will make
3369 context to print 31 lines instead of the default 5. This will make
3363 the crash reports extremely detailed in case the problem is in
3370 the crash reports extremely detailed in case the problem is in
3364 libraries I don't have access to.
3371 libraries I don't have access to.
3365
3372
3366 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3373 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3367 line of defense' code to still crash, but giving users fair
3374 line of defense' code to still crash, but giving users fair
3368 warning. I don't want internal errors to go unreported: if there's
3375 warning. I don't want internal errors to go unreported: if there's
3369 an internal problem, IPython should crash and generate a full
3376 an internal problem, IPython should crash and generate a full
3370 report.
3377 report.
3371
3378
3372 2002-11-08 Fernando Perez <fperez@colorado.edu>
3379 2002-11-08 Fernando Perez <fperez@colorado.edu>
3373
3380
3374 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3381 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3375 otherwise uncaught exceptions which can appear if people set
3382 otherwise uncaught exceptions which can appear if people set
3376 sys.stdout to something badly broken. Thanks to a crash report
3383 sys.stdout to something badly broken. Thanks to a crash report
3377 from henni-AT-mail.brainbot.com.
3384 from henni-AT-mail.brainbot.com.
3378
3385
3379 2002-11-04 Fernando Perez <fperez@colorado.edu>
3386 2002-11-04 Fernando Perez <fperez@colorado.edu>
3380
3387
3381 * IPython/iplib.py (InteractiveShell.interact): added
3388 * IPython/iplib.py (InteractiveShell.interact): added
3382 __IPYTHON__active to the builtins. It's a flag which goes on when
3389 __IPYTHON__active to the builtins. It's a flag which goes on when
3383 the interaction starts and goes off again when it stops. This
3390 the interaction starts and goes off again when it stops. This
3384 allows embedding code to detect being inside IPython. Before this
3391 allows embedding code to detect being inside IPython. Before this
3385 was done via __IPYTHON__, but that only shows that an IPython
3392 was done via __IPYTHON__, but that only shows that an IPython
3386 instance has been created.
3393 instance has been created.
3387
3394
3388 * IPython/Magic.py (Magic.magic_env): I realized that in a
3395 * IPython/Magic.py (Magic.magic_env): I realized that in a
3389 UserDict, instance.data holds the data as a normal dict. So I
3396 UserDict, instance.data holds the data as a normal dict. So I
3390 modified @env to return os.environ.data instead of rebuilding a
3397 modified @env to return os.environ.data instead of rebuilding a
3391 dict by hand.
3398 dict by hand.
3392
3399
3393 2002-11-02 Fernando Perez <fperez@colorado.edu>
3400 2002-11-02 Fernando Perez <fperez@colorado.edu>
3394
3401
3395 * IPython/genutils.py (warn): changed so that level 1 prints no
3402 * IPython/genutils.py (warn): changed so that level 1 prints no
3396 header. Level 2 is now the default (with 'WARNING' header, as
3403 header. Level 2 is now the default (with 'WARNING' header, as
3397 before). I think I tracked all places where changes were needed in
3404 before). I think I tracked all places where changes were needed in
3398 IPython, but outside code using the old level numbering may have
3405 IPython, but outside code using the old level numbering may have
3399 broken.
3406 broken.
3400
3407
3401 * IPython/iplib.py (InteractiveShell.runcode): added this to
3408 * IPython/iplib.py (InteractiveShell.runcode): added this to
3402 handle the tracebacks in SystemExit traps correctly. The previous
3409 handle the tracebacks in SystemExit traps correctly. The previous
3403 code (through interact) was printing more of the stack than
3410 code (through interact) was printing more of the stack than
3404 necessary, showing IPython internal code to the user.
3411 necessary, showing IPython internal code to the user.
3405
3412
3406 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3413 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3407 default. Now that the default at the confirmation prompt is yes,
3414 default. Now that the default at the confirmation prompt is yes,
3408 it's not so intrusive. François' argument that ipython sessions
3415 it's not so intrusive. François' argument that ipython sessions
3409 tend to be complex enough not to lose them from an accidental C-d,
3416 tend to be complex enough not to lose them from an accidental C-d,
3410 is a valid one.
3417 is a valid one.
3411
3418
3412 * IPython/iplib.py (InteractiveShell.interact): added a
3419 * IPython/iplib.py (InteractiveShell.interact): added a
3413 showtraceback() call to the SystemExit trap, and modified the exit
3420 showtraceback() call to the SystemExit trap, and modified the exit
3414 confirmation to have yes as the default.
3421 confirmation to have yes as the default.
3415
3422
3416 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3423 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3417 this file. It's been gone from the code for a long time, this was
3424 this file. It's been gone from the code for a long time, this was
3418 simply leftover junk.
3425 simply leftover junk.
3419
3426
3420 2002-11-01 Fernando Perez <fperez@colorado.edu>
3427 2002-11-01 Fernando Perez <fperez@colorado.edu>
3421
3428
3422 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3429 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3423 added. If set, IPython now traps EOF and asks for
3430 added. If set, IPython now traps EOF and asks for
3424 confirmation. After a request by François Pinard.
3431 confirmation. After a request by François Pinard.
3425
3432
3426 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3433 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3427 of @abort, and with a new (better) mechanism for handling the
3434 of @abort, and with a new (better) mechanism for handling the
3428 exceptions.
3435 exceptions.
3429
3436
3430 2002-10-27 Fernando Perez <fperez@colorado.edu>
3437 2002-10-27 Fernando Perez <fperez@colorado.edu>
3431
3438
3432 * IPython/usage.py (__doc__): updated the --help information and
3439 * IPython/usage.py (__doc__): updated the --help information and
3433 the ipythonrc file to indicate that -log generates
3440 the ipythonrc file to indicate that -log generates
3434 ./ipython.log. Also fixed the corresponding info in @logstart.
3441 ./ipython.log. Also fixed the corresponding info in @logstart.
3435 This and several other fixes in the manuals thanks to reports by
3442 This and several other fixes in the manuals thanks to reports by
3436 François Pinard <pinard-AT-iro.umontreal.ca>.
3443 François Pinard <pinard-AT-iro.umontreal.ca>.
3437
3444
3438 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3445 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3439 refer to @logstart (instead of @log, which doesn't exist).
3446 refer to @logstart (instead of @log, which doesn't exist).
3440
3447
3441 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3448 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3442 AttributeError crash. Thanks to Christopher Armstrong
3449 AttributeError crash. Thanks to Christopher Armstrong
3443 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3450 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3444 introduced recently (in 0.2.14pre37) with the fix to the eval
3451 introduced recently (in 0.2.14pre37) with the fix to the eval
3445 problem mentioned below.
3452 problem mentioned below.
3446
3453
3447 2002-10-17 Fernando Perez <fperez@colorado.edu>
3454 2002-10-17 Fernando Perez <fperez@colorado.edu>
3448
3455
3449 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3456 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3450 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3457 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3451
3458
3452 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3459 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3453 this function to fix a problem reported by Alex Schmolck. He saw
3460 this function to fix a problem reported by Alex Schmolck. He saw
3454 it with list comprehensions and generators, which were getting
3461 it with list comprehensions and generators, which were getting
3455 called twice. The real problem was an 'eval' call in testing for
3462 called twice. The real problem was an 'eval' call in testing for
3456 automagic which was evaluating the input line silently.
3463 automagic which was evaluating the input line silently.
3457
3464
3458 This is a potentially very nasty bug, if the input has side
3465 This is a potentially very nasty bug, if the input has side
3459 effects which must not be repeated. The code is much cleaner now,
3466 effects which must not be repeated. The code is much cleaner now,
3460 without any blanket 'except' left and with a regexp test for
3467 without any blanket 'except' left and with a regexp test for
3461 actual function names.
3468 actual function names.
3462
3469
3463 But an eval remains, which I'm not fully comfortable with. I just
3470 But an eval remains, which I'm not fully comfortable with. I just
3464 don't know how to find out if an expression could be a callable in
3471 don't know how to find out if an expression could be a callable in
3465 the user's namespace without doing an eval on the string. However
3472 the user's namespace without doing an eval on the string. However
3466 that string is now much more strictly checked so that no code
3473 that string is now much more strictly checked so that no code
3467 slips by, so the eval should only happen for things that can
3474 slips by, so the eval should only happen for things that can
3468 really be only function/method names.
3475 really be only function/method names.
3469
3476
3470 2002-10-15 Fernando Perez <fperez@colorado.edu>
3477 2002-10-15 Fernando Perez <fperez@colorado.edu>
3471
3478
3472 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3479 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3473 OSX information to main manual, removed README_Mac_OSX file from
3480 OSX information to main manual, removed README_Mac_OSX file from
3474 distribution. Also updated credits for recent additions.
3481 distribution. Also updated credits for recent additions.
3475
3482
3476 2002-10-10 Fernando Perez <fperez@colorado.edu>
3483 2002-10-10 Fernando Perez <fperez@colorado.edu>
3477
3484
3478 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3485 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3479 terminal-related issues. Many thanks to Andrea Riciputi
3486 terminal-related issues. Many thanks to Andrea Riciputi
3480 <andrea.riciputi-AT-libero.it> for writing it.
3487 <andrea.riciputi-AT-libero.it> for writing it.
3481
3488
3482 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3489 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3483 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3490 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3484
3491
3485 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3492 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3486 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3493 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3487 <syver-en-AT-online.no> who both submitted patches for this problem.
3494 <syver-en-AT-online.no> who both submitted patches for this problem.
3488
3495
3489 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3496 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3490 global embedding to make sure that things don't overwrite user
3497 global embedding to make sure that things don't overwrite user
3491 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3498 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3492
3499
3493 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3500 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3494 compatibility. Thanks to Hayden Callow
3501 compatibility. Thanks to Hayden Callow
3495 <h.callow-AT-elec.canterbury.ac.nz>
3502 <h.callow-AT-elec.canterbury.ac.nz>
3496
3503
3497 2002-10-04 Fernando Perez <fperez@colorado.edu>
3504 2002-10-04 Fernando Perez <fperez@colorado.edu>
3498
3505
3499 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3506 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3500 Gnuplot.File objects.
3507 Gnuplot.File objects.
3501
3508
3502 2002-07-23 Fernando Perez <fperez@colorado.edu>
3509 2002-07-23 Fernando Perez <fperez@colorado.edu>
3503
3510
3504 * IPython/genutils.py (timing): Added timings() and timing() for
3511 * IPython/genutils.py (timing): Added timings() and timing() for
3505 quick access to the most commonly needed data, the execution
3512 quick access to the most commonly needed data, the execution
3506 times. Old timing() renamed to timings_out().
3513 times. Old timing() renamed to timings_out().
3507
3514
3508 2002-07-18 Fernando Perez <fperez@colorado.edu>
3515 2002-07-18 Fernando Perez <fperez@colorado.edu>
3509
3516
3510 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3517 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3511 bug with nested instances disrupting the parent's tab completion.
3518 bug with nested instances disrupting the parent's tab completion.
3512
3519
3513 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3520 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3514 all_completions code to begin the emacs integration.
3521 all_completions code to begin the emacs integration.
3515
3522
3516 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3523 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3517 argument to allow titling individual arrays when plotting.
3524 argument to allow titling individual arrays when plotting.
3518
3525
3519 2002-07-15 Fernando Perez <fperez@colorado.edu>
3526 2002-07-15 Fernando Perez <fperez@colorado.edu>
3520
3527
3521 * setup.py (make_shortcut): changed to retrieve the value of
3528 * setup.py (make_shortcut): changed to retrieve the value of
3522 'Program Files' directory from the registry (this value changes in
3529 'Program Files' directory from the registry (this value changes in
3523 non-english versions of Windows). Thanks to Thomas Fanslau
3530 non-english versions of Windows). Thanks to Thomas Fanslau
3524 <tfanslau-AT-gmx.de> for the report.
3531 <tfanslau-AT-gmx.de> for the report.
3525
3532
3526 2002-07-10 Fernando Perez <fperez@colorado.edu>
3533 2002-07-10 Fernando Perez <fperez@colorado.edu>
3527
3534
3528 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3535 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3529 a bug in pdb, which crashes if a line with only whitespace is
3536 a bug in pdb, which crashes if a line with only whitespace is
3530 entered. Bug report submitted to sourceforge.
3537 entered. Bug report submitted to sourceforge.
3531
3538
3532 2002-07-09 Fernando Perez <fperez@colorado.edu>
3539 2002-07-09 Fernando Perez <fperez@colorado.edu>
3533
3540
3534 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3541 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3535 reporting exceptions (it's a bug in inspect.py, I just set a
3542 reporting exceptions (it's a bug in inspect.py, I just set a
3536 workaround).
3543 workaround).
3537
3544
3538 2002-07-08 Fernando Perez <fperez@colorado.edu>
3545 2002-07-08 Fernando Perez <fperez@colorado.edu>
3539
3546
3540 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3547 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3541 __IPYTHON__ in __builtins__ to show up in user_ns.
3548 __IPYTHON__ in __builtins__ to show up in user_ns.
3542
3549
3543 2002-07-03 Fernando Perez <fperez@colorado.edu>
3550 2002-07-03 Fernando Perez <fperez@colorado.edu>
3544
3551
3545 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3552 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3546 name from @gp_set_instance to @gp_set_default.
3553 name from @gp_set_instance to @gp_set_default.
3547
3554
3548 * IPython/ipmaker.py (make_IPython): default editor value set to
3555 * IPython/ipmaker.py (make_IPython): default editor value set to
3549 '0' (a string), to match the rc file. Otherwise will crash when
3556 '0' (a string), to match the rc file. Otherwise will crash when
3550 .strip() is called on it.
3557 .strip() is called on it.
3551
3558
3552
3559
3553 2002-06-28 Fernando Perez <fperez@colorado.edu>
3560 2002-06-28 Fernando Perez <fperez@colorado.edu>
3554
3561
3555 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3562 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3556 of files in current directory when a file is executed via
3563 of files in current directory when a file is executed via
3557 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3564 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3558
3565
3559 * setup.py (manfiles): fix for rpm builds, submitted by RA
3566 * setup.py (manfiles): fix for rpm builds, submitted by RA
3560 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3567 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3561
3568
3562 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3569 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3563 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3570 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3564 string!). A. Schmolck caught this one.
3571 string!). A. Schmolck caught this one.
3565
3572
3566 2002-06-27 Fernando Perez <fperez@colorado.edu>
3573 2002-06-27 Fernando Perez <fperez@colorado.edu>
3567
3574
3568 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3575 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3569 defined files at the cmd line. __name__ wasn't being set to
3576 defined files at the cmd line. __name__ wasn't being set to
3570 __main__.
3577 __main__.
3571
3578
3572 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3579 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3573 regular lists and tuples besides Numeric arrays.
3580 regular lists and tuples besides Numeric arrays.
3574
3581
3575 * IPython/Prompts.py (CachedOutput.__call__): Added output
3582 * IPython/Prompts.py (CachedOutput.__call__): Added output
3576 supression for input ending with ';'. Similar to Mathematica and
3583 supression for input ending with ';'. Similar to Mathematica and
3577 Matlab. The _* vars and Out[] list are still updated, just like
3584 Matlab. The _* vars and Out[] list are still updated, just like
3578 Mathematica behaves.
3585 Mathematica behaves.
3579
3586
3580 2002-06-25 Fernando Perez <fperez@colorado.edu>
3587 2002-06-25 Fernando Perez <fperez@colorado.edu>
3581
3588
3582 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3589 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3583 .ini extensions for profiels under Windows.
3590 .ini extensions for profiels under Windows.
3584
3591
3585 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3592 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3586 string form. Fix contributed by Alexander Schmolck
3593 string form. Fix contributed by Alexander Schmolck
3587 <a.schmolck-AT-gmx.net>
3594 <a.schmolck-AT-gmx.net>
3588
3595
3589 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3596 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3590 pre-configured Gnuplot instance.
3597 pre-configured Gnuplot instance.
3591
3598
3592 2002-06-21 Fernando Perez <fperez@colorado.edu>
3599 2002-06-21 Fernando Perez <fperez@colorado.edu>
3593
3600
3594 * IPython/numutils.py (exp_safe): new function, works around the
3601 * IPython/numutils.py (exp_safe): new function, works around the
3595 underflow problems in Numeric.
3602 underflow problems in Numeric.
3596 (log2): New fn. Safe log in base 2: returns exact integer answer
3603 (log2): New fn. Safe log in base 2: returns exact integer answer
3597 for exact integer powers of 2.
3604 for exact integer powers of 2.
3598
3605
3599 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3606 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3600 properly.
3607 properly.
3601
3608
3602 2002-06-20 Fernando Perez <fperez@colorado.edu>
3609 2002-06-20 Fernando Perez <fperez@colorado.edu>
3603
3610
3604 * IPython/genutils.py (timing): new function like
3611 * IPython/genutils.py (timing): new function like
3605 Mathematica's. Similar to time_test, but returns more info.
3612 Mathematica's. Similar to time_test, but returns more info.
3606
3613
3607 2002-06-18 Fernando Perez <fperez@colorado.edu>
3614 2002-06-18 Fernando Perez <fperez@colorado.edu>
3608
3615
3609 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3616 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3610 according to Mike Heeter's suggestions.
3617 according to Mike Heeter's suggestions.
3611
3618
3612 2002-06-16 Fernando Perez <fperez@colorado.edu>
3619 2002-06-16 Fernando Perez <fperez@colorado.edu>
3613
3620
3614 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3621 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3615 system. GnuplotMagic is gone as a user-directory option. New files
3622 system. GnuplotMagic is gone as a user-directory option. New files
3616 make it easier to use all the gnuplot stuff both from external
3623 make it easier to use all the gnuplot stuff both from external
3617 programs as well as from IPython. Had to rewrite part of
3624 programs as well as from IPython. Had to rewrite part of
3618 hardcopy() b/c of a strange bug: often the ps files simply don't
3625 hardcopy() b/c of a strange bug: often the ps files simply don't
3619 get created, and require a repeat of the command (often several
3626 get created, and require a repeat of the command (often several
3620 times).
3627 times).
3621
3628
3622 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3629 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3623 resolve output channel at call time, so that if sys.stderr has
3630 resolve output channel at call time, so that if sys.stderr has
3624 been redirected by user this gets honored.
3631 been redirected by user this gets honored.
3625
3632
3626 2002-06-13 Fernando Perez <fperez@colorado.edu>
3633 2002-06-13 Fernando Perez <fperez@colorado.edu>
3627
3634
3628 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3635 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3629 IPShell. Kept a copy with the old names to avoid breaking people's
3636 IPShell. Kept a copy with the old names to avoid breaking people's
3630 embedded code.
3637 embedded code.
3631
3638
3632 * IPython/ipython: simplified it to the bare minimum after
3639 * IPython/ipython: simplified it to the bare minimum after
3633 Holger's suggestions. Added info about how to use it in
3640 Holger's suggestions. Added info about how to use it in
3634 PYTHONSTARTUP.
3641 PYTHONSTARTUP.
3635
3642
3636 * IPython/Shell.py (IPythonShell): changed the options passing
3643 * IPython/Shell.py (IPythonShell): changed the options passing
3637 from a string with funky %s replacements to a straight list. Maybe
3644 from a string with funky %s replacements to a straight list. Maybe
3638 a bit more typing, but it follows sys.argv conventions, so there's
3645 a bit more typing, but it follows sys.argv conventions, so there's
3639 less special-casing to remember.
3646 less special-casing to remember.
3640
3647
3641 2002-06-12 Fernando Perez <fperez@colorado.edu>
3648 2002-06-12 Fernando Perez <fperez@colorado.edu>
3642
3649
3643 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3650 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3644 command. Thanks to a suggestion by Mike Heeter.
3651 command. Thanks to a suggestion by Mike Heeter.
3645 (Magic.magic_pfile): added behavior to look at filenames if given
3652 (Magic.magic_pfile): added behavior to look at filenames if given
3646 arg is not a defined object.
3653 arg is not a defined object.
3647 (Magic.magic_save): New @save function to save code snippets. Also
3654 (Magic.magic_save): New @save function to save code snippets. Also
3648 a Mike Heeter idea.
3655 a Mike Heeter idea.
3649
3656
3650 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3657 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3651 plot() and replot(). Much more convenient now, especially for
3658 plot() and replot(). Much more convenient now, especially for
3652 interactive use.
3659 interactive use.
3653
3660
3654 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3661 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3655 filenames.
3662 filenames.
3656
3663
3657 2002-06-02 Fernando Perez <fperez@colorado.edu>
3664 2002-06-02 Fernando Perez <fperez@colorado.edu>
3658
3665
3659 * IPython/Struct.py (Struct.__init__): modified to admit
3666 * IPython/Struct.py (Struct.__init__): modified to admit
3660 initialization via another struct.
3667 initialization via another struct.
3661
3668
3662 * IPython/genutils.py (SystemExec.__init__): New stateful
3669 * IPython/genutils.py (SystemExec.__init__): New stateful
3663 interface to xsys and bq. Useful for writing system scripts.
3670 interface to xsys and bq. Useful for writing system scripts.
3664
3671
3665 2002-05-30 Fernando Perez <fperez@colorado.edu>
3672 2002-05-30 Fernando Perez <fperez@colorado.edu>
3666
3673
3667 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3674 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3668 documents. This will make the user download smaller (it's getting
3675 documents. This will make the user download smaller (it's getting
3669 too big).
3676 too big).
3670
3677
3671 2002-05-29 Fernando Perez <fperez@colorado.edu>
3678 2002-05-29 Fernando Perez <fperez@colorado.edu>
3672
3679
3673 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3680 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3674 fix problems with shelve and pickle. Seems to work, but I don't
3681 fix problems with shelve and pickle. Seems to work, but I don't
3675 know if corner cases break it. Thanks to Mike Heeter
3682 know if corner cases break it. Thanks to Mike Heeter
3676 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3683 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3677
3684
3678 2002-05-24 Fernando Perez <fperez@colorado.edu>
3685 2002-05-24 Fernando Perez <fperez@colorado.edu>
3679
3686
3680 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3687 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3681 macros having broken.
3688 macros having broken.
3682
3689
3683 2002-05-21 Fernando Perez <fperez@colorado.edu>
3690 2002-05-21 Fernando Perez <fperez@colorado.edu>
3684
3691
3685 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3692 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3686 introduced logging bug: all history before logging started was
3693 introduced logging bug: all history before logging started was
3687 being written one character per line! This came from the redesign
3694 being written one character per line! This came from the redesign
3688 of the input history as a special list which slices to strings,
3695 of the input history as a special list which slices to strings,
3689 not to lists.
3696 not to lists.
3690
3697
3691 2002-05-20 Fernando Perez <fperez@colorado.edu>
3698 2002-05-20 Fernando Perez <fperez@colorado.edu>
3692
3699
3693 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3700 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3694 be an attribute of all classes in this module. The design of these
3701 be an attribute of all classes in this module. The design of these
3695 classes needs some serious overhauling.
3702 classes needs some serious overhauling.
3696
3703
3697 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3704 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3698 which was ignoring '_' in option names.
3705 which was ignoring '_' in option names.
3699
3706
3700 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3707 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3701 'Verbose_novars' to 'Context' and made it the new default. It's a
3708 'Verbose_novars' to 'Context' and made it the new default. It's a
3702 bit more readable and also safer than verbose.
3709 bit more readable and also safer than verbose.
3703
3710
3704 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3711 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3705 triple-quoted strings.
3712 triple-quoted strings.
3706
3713
3707 * IPython/OInspect.py (__all__): new module exposing the object
3714 * IPython/OInspect.py (__all__): new module exposing the object
3708 introspection facilities. Now the corresponding magics are dummy
3715 introspection facilities. Now the corresponding magics are dummy
3709 wrappers around this. Having this module will make it much easier
3716 wrappers around this. Having this module will make it much easier
3710 to put these functions into our modified pdb.
3717 to put these functions into our modified pdb.
3711 This new object inspector system uses the new colorizing module,
3718 This new object inspector system uses the new colorizing module,
3712 so source code and other things are nicely syntax highlighted.
3719 so source code and other things are nicely syntax highlighted.
3713
3720
3714 2002-05-18 Fernando Perez <fperez@colorado.edu>
3721 2002-05-18 Fernando Perez <fperez@colorado.edu>
3715
3722
3716 * IPython/ColorANSI.py: Split the coloring tools into a separate
3723 * IPython/ColorANSI.py: Split the coloring tools into a separate
3717 module so I can use them in other code easier (they were part of
3724 module so I can use them in other code easier (they were part of
3718 ultraTB).
3725 ultraTB).
3719
3726
3720 2002-05-17 Fernando Perez <fperez@colorado.edu>
3727 2002-05-17 Fernando Perez <fperez@colorado.edu>
3721
3728
3722 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3729 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3723 fixed it to set the global 'g' also to the called instance, as
3730 fixed it to set the global 'g' also to the called instance, as
3724 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3731 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3725 user's 'g' variables).
3732 user's 'g' variables).
3726
3733
3727 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3734 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3728 global variables (aliases to _ih,_oh) so that users which expect
3735 global variables (aliases to _ih,_oh) so that users which expect
3729 In[5] or Out[7] to work aren't unpleasantly surprised.
3736 In[5] or Out[7] to work aren't unpleasantly surprised.
3730 (InputList.__getslice__): new class to allow executing slices of
3737 (InputList.__getslice__): new class to allow executing slices of
3731 input history directly. Very simple class, complements the use of
3738 input history directly. Very simple class, complements the use of
3732 macros.
3739 macros.
3733
3740
3734 2002-05-16 Fernando Perez <fperez@colorado.edu>
3741 2002-05-16 Fernando Perez <fperez@colorado.edu>
3735
3742
3736 * setup.py (docdirbase): make doc directory be just doc/IPython
3743 * setup.py (docdirbase): make doc directory be just doc/IPython
3737 without version numbers, it will reduce clutter for users.
3744 without version numbers, it will reduce clutter for users.
3738
3745
3739 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3746 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3740 execfile call to prevent possible memory leak. See for details:
3747 execfile call to prevent possible memory leak. See for details:
3741 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3748 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3742
3749
3743 2002-05-15 Fernando Perez <fperez@colorado.edu>
3750 2002-05-15 Fernando Perez <fperez@colorado.edu>
3744
3751
3745 * IPython/Magic.py (Magic.magic_psource): made the object
3752 * IPython/Magic.py (Magic.magic_psource): made the object
3746 introspection names be more standard: pdoc, pdef, pfile and
3753 introspection names be more standard: pdoc, pdef, pfile and
3747 psource. They all print/page their output, and it makes
3754 psource. They all print/page their output, and it makes
3748 remembering them easier. Kept old names for compatibility as
3755 remembering them easier. Kept old names for compatibility as
3749 aliases.
3756 aliases.
3750
3757
3751 2002-05-14 Fernando Perez <fperez@colorado.edu>
3758 2002-05-14 Fernando Perez <fperez@colorado.edu>
3752
3759
3753 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3760 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3754 what the mouse problem was. The trick is to use gnuplot with temp
3761 what the mouse problem was. The trick is to use gnuplot with temp
3755 files and NOT with pipes (for data communication), because having
3762 files and NOT with pipes (for data communication), because having
3756 both pipes and the mouse on is bad news.
3763 both pipes and the mouse on is bad news.
3757
3764
3758 2002-05-13 Fernando Perez <fperez@colorado.edu>
3765 2002-05-13 Fernando Perez <fperez@colorado.edu>
3759
3766
3760 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3767 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3761 bug. Information would be reported about builtins even when
3768 bug. Information would be reported about builtins even when
3762 user-defined functions overrode them.
3769 user-defined functions overrode them.
3763
3770
3764 2002-05-11 Fernando Perez <fperez@colorado.edu>
3771 2002-05-11 Fernando Perez <fperez@colorado.edu>
3765
3772
3766 * IPython/__init__.py (__all__): removed FlexCompleter from
3773 * IPython/__init__.py (__all__): removed FlexCompleter from
3767 __all__ so that things don't fail in platforms without readline.
3774 __all__ so that things don't fail in platforms without readline.
3768
3775
3769 2002-05-10 Fernando Perez <fperez@colorado.edu>
3776 2002-05-10 Fernando Perez <fperez@colorado.edu>
3770
3777
3771 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3778 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3772 it requires Numeric, effectively making Numeric a dependency for
3779 it requires Numeric, effectively making Numeric a dependency for
3773 IPython.
3780 IPython.
3774
3781
3775 * Released 0.2.13
3782 * Released 0.2.13
3776
3783
3777 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3784 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3778 profiler interface. Now all the major options from the profiler
3785 profiler interface. Now all the major options from the profiler
3779 module are directly supported in IPython, both for single
3786 module are directly supported in IPython, both for single
3780 expressions (@prun) and for full programs (@run -p).
3787 expressions (@prun) and for full programs (@run -p).
3781
3788
3782 2002-05-09 Fernando Perez <fperez@colorado.edu>
3789 2002-05-09 Fernando Perez <fperez@colorado.edu>
3783
3790
3784 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3791 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3785 magic properly formatted for screen.
3792 magic properly formatted for screen.
3786
3793
3787 * setup.py (make_shortcut): Changed things to put pdf version in
3794 * setup.py (make_shortcut): Changed things to put pdf version in
3788 doc/ instead of doc/manual (had to change lyxport a bit).
3795 doc/ instead of doc/manual (had to change lyxport a bit).
3789
3796
3790 * IPython/Magic.py (Profile.string_stats): made profile runs go
3797 * IPython/Magic.py (Profile.string_stats): made profile runs go
3791 through pager (they are long and a pager allows searching, saving,
3798 through pager (they are long and a pager allows searching, saving,
3792 etc.)
3799 etc.)
3793
3800
3794 2002-05-08 Fernando Perez <fperez@colorado.edu>
3801 2002-05-08 Fernando Perez <fperez@colorado.edu>
3795
3802
3796 * Released 0.2.12
3803 * Released 0.2.12
3797
3804
3798 2002-05-06 Fernando Perez <fperez@colorado.edu>
3805 2002-05-06 Fernando Perez <fperez@colorado.edu>
3799
3806
3800 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3807 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3801 introduced); 'hist n1 n2' was broken.
3808 introduced); 'hist n1 n2' was broken.
3802 (Magic.magic_pdb): added optional on/off arguments to @pdb
3809 (Magic.magic_pdb): added optional on/off arguments to @pdb
3803 (Magic.magic_run): added option -i to @run, which executes code in
3810 (Magic.magic_run): added option -i to @run, which executes code in
3804 the IPython namespace instead of a clean one. Also added @irun as
3811 the IPython namespace instead of a clean one. Also added @irun as
3805 an alias to @run -i.
3812 an alias to @run -i.
3806
3813
3807 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3814 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3808 fixed (it didn't really do anything, the namespaces were wrong).
3815 fixed (it didn't really do anything, the namespaces were wrong).
3809
3816
3810 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3817 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3811
3818
3812 * IPython/__init__.py (__all__): Fixed package namespace, now
3819 * IPython/__init__.py (__all__): Fixed package namespace, now
3813 'import IPython' does give access to IPython.<all> as
3820 'import IPython' does give access to IPython.<all> as
3814 expected. Also renamed __release__ to Release.
3821 expected. Also renamed __release__ to Release.
3815
3822
3816 * IPython/Debugger.py (__license__): created new Pdb class which
3823 * IPython/Debugger.py (__license__): created new Pdb class which
3817 functions like a drop-in for the normal pdb.Pdb but does NOT
3824 functions like a drop-in for the normal pdb.Pdb but does NOT
3818 import readline by default. This way it doesn't muck up IPython's
3825 import readline by default. This way it doesn't muck up IPython's
3819 readline handling, and now tab-completion finally works in the
3826 readline handling, and now tab-completion finally works in the
3820 debugger -- sort of. It completes things globally visible, but the
3827 debugger -- sort of. It completes things globally visible, but the
3821 completer doesn't track the stack as pdb walks it. That's a bit
3828 completer doesn't track the stack as pdb walks it. That's a bit
3822 tricky, and I'll have to implement it later.
3829 tricky, and I'll have to implement it later.
3823
3830
3824 2002-05-05 Fernando Perez <fperez@colorado.edu>
3831 2002-05-05 Fernando Perez <fperez@colorado.edu>
3825
3832
3826 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3833 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3827 magic docstrings when printed via ? (explicit \'s were being
3834 magic docstrings when printed via ? (explicit \'s were being
3828 printed).
3835 printed).
3829
3836
3830 * IPython/ipmaker.py (make_IPython): fixed namespace
3837 * IPython/ipmaker.py (make_IPython): fixed namespace
3831 identification bug. Now variables loaded via logs or command-line
3838 identification bug. Now variables loaded via logs or command-line
3832 files are recognized in the interactive namespace by @who.
3839 files are recognized in the interactive namespace by @who.
3833
3840
3834 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3841 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3835 log replay system stemming from the string form of Structs.
3842 log replay system stemming from the string form of Structs.
3836
3843
3837 * IPython/Magic.py (Macro.__init__): improved macros to properly
3844 * IPython/Magic.py (Macro.__init__): improved macros to properly
3838 handle magic commands in them.
3845 handle magic commands in them.
3839 (Magic.magic_logstart): usernames are now expanded so 'logstart
3846 (Magic.magic_logstart): usernames are now expanded so 'logstart
3840 ~/mylog' now works.
3847 ~/mylog' now works.
3841
3848
3842 * IPython/iplib.py (complete): fixed bug where paths starting with
3849 * IPython/iplib.py (complete): fixed bug where paths starting with
3843 '/' would be completed as magic names.
3850 '/' would be completed as magic names.
3844
3851
3845 2002-05-04 Fernando Perez <fperez@colorado.edu>
3852 2002-05-04 Fernando Perez <fperez@colorado.edu>
3846
3853
3847 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3854 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3848 allow running full programs under the profiler's control.
3855 allow running full programs under the profiler's control.
3849
3856
3850 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3857 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3851 mode to report exceptions verbosely but without formatting
3858 mode to report exceptions verbosely but without formatting
3852 variables. This addresses the issue of ipython 'freezing' (it's
3859 variables. This addresses the issue of ipython 'freezing' (it's
3853 not frozen, but caught in an expensive formatting loop) when huge
3860 not frozen, but caught in an expensive formatting loop) when huge
3854 variables are in the context of an exception.
3861 variables are in the context of an exception.
3855 (VerboseTB.text): Added '--->' markers at line where exception was
3862 (VerboseTB.text): Added '--->' markers at line where exception was
3856 triggered. Much clearer to read, especially in NoColor modes.
3863 triggered. Much clearer to read, especially in NoColor modes.
3857
3864
3858 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3865 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3859 implemented in reverse when changing to the new parse_options().
3866 implemented in reverse when changing to the new parse_options().
3860
3867
3861 2002-05-03 Fernando Perez <fperez@colorado.edu>
3868 2002-05-03 Fernando Perez <fperez@colorado.edu>
3862
3869
3863 * IPython/Magic.py (Magic.parse_options): new function so that
3870 * IPython/Magic.py (Magic.parse_options): new function so that
3864 magics can parse options easier.
3871 magics can parse options easier.
3865 (Magic.magic_prun): new function similar to profile.run(),
3872 (Magic.magic_prun): new function similar to profile.run(),
3866 suggested by Chris Hart.
3873 suggested by Chris Hart.
3867 (Magic.magic_cd): fixed behavior so that it only changes if
3874 (Magic.magic_cd): fixed behavior so that it only changes if
3868 directory actually is in history.
3875 directory actually is in history.
3869
3876
3870 * IPython/usage.py (__doc__): added information about potential
3877 * IPython/usage.py (__doc__): added information about potential
3871 slowness of Verbose exception mode when there are huge data
3878 slowness of Verbose exception mode when there are huge data
3872 structures to be formatted (thanks to Archie Paulson).
3879 structures to be formatted (thanks to Archie Paulson).
3873
3880
3874 * IPython/ipmaker.py (make_IPython): Changed default logging
3881 * IPython/ipmaker.py (make_IPython): Changed default logging
3875 (when simply called with -log) to use curr_dir/ipython.log in
3882 (when simply called with -log) to use curr_dir/ipython.log in
3876 rotate mode. Fixed crash which was occuring with -log before
3883 rotate mode. Fixed crash which was occuring with -log before
3877 (thanks to Jim Boyle).
3884 (thanks to Jim Boyle).
3878
3885
3879 2002-05-01 Fernando Perez <fperez@colorado.edu>
3886 2002-05-01 Fernando Perez <fperez@colorado.edu>
3880
3887
3881 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3888 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3882 was nasty -- though somewhat of a corner case).
3889 was nasty -- though somewhat of a corner case).
3883
3890
3884 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3891 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3885 text (was a bug).
3892 text (was a bug).
3886
3893
3887 2002-04-30 Fernando Perez <fperez@colorado.edu>
3894 2002-04-30 Fernando Perez <fperez@colorado.edu>
3888
3895
3889 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3896 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3890 a print after ^D or ^C from the user so that the In[] prompt
3897 a print after ^D or ^C from the user so that the In[] prompt
3891 doesn't over-run the gnuplot one.
3898 doesn't over-run the gnuplot one.
3892
3899
3893 2002-04-29 Fernando Perez <fperez@colorado.edu>
3900 2002-04-29 Fernando Perez <fperez@colorado.edu>
3894
3901
3895 * Released 0.2.10
3902 * Released 0.2.10
3896
3903
3897 * IPython/__release__.py (version): get date dynamically.
3904 * IPython/__release__.py (version): get date dynamically.
3898
3905
3899 * Misc. documentation updates thanks to Arnd's comments. Also ran
3906 * Misc. documentation updates thanks to Arnd's comments. Also ran
3900 a full spellcheck on the manual (hadn't been done in a while).
3907 a full spellcheck on the manual (hadn't been done in a while).
3901
3908
3902 2002-04-27 Fernando Perez <fperez@colorado.edu>
3909 2002-04-27 Fernando Perez <fperez@colorado.edu>
3903
3910
3904 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3911 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3905 starting a log in mid-session would reset the input history list.
3912 starting a log in mid-session would reset the input history list.
3906
3913
3907 2002-04-26 Fernando Perez <fperez@colorado.edu>
3914 2002-04-26 Fernando Perez <fperez@colorado.edu>
3908
3915
3909 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3916 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3910 all files were being included in an update. Now anything in
3917 all files were being included in an update. Now anything in
3911 UserConfig that matches [A-Za-z]*.py will go (this excludes
3918 UserConfig that matches [A-Za-z]*.py will go (this excludes
3912 __init__.py)
3919 __init__.py)
3913
3920
3914 2002-04-25 Fernando Perez <fperez@colorado.edu>
3921 2002-04-25 Fernando Perez <fperez@colorado.edu>
3915
3922
3916 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3923 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3917 to __builtins__ so that any form of embedded or imported code can
3924 to __builtins__ so that any form of embedded or imported code can
3918 test for being inside IPython.
3925 test for being inside IPython.
3919
3926
3920 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3927 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3921 changed to GnuplotMagic because it's now an importable module,
3928 changed to GnuplotMagic because it's now an importable module,
3922 this makes the name follow that of the standard Gnuplot module.
3929 this makes the name follow that of the standard Gnuplot module.
3923 GnuplotMagic can now be loaded at any time in mid-session.
3930 GnuplotMagic can now be loaded at any time in mid-session.
3924
3931
3925 2002-04-24 Fernando Perez <fperez@colorado.edu>
3932 2002-04-24 Fernando Perez <fperez@colorado.edu>
3926
3933
3927 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3934 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3928 the globals (IPython has its own namespace) and the
3935 the globals (IPython has its own namespace) and the
3929 PhysicalQuantity stuff is much better anyway.
3936 PhysicalQuantity stuff is much better anyway.
3930
3937
3931 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3938 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3932 embedding example to standard user directory for
3939 embedding example to standard user directory for
3933 distribution. Also put it in the manual.
3940 distribution. Also put it in the manual.
3934
3941
3935 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3942 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3936 instance as first argument (so it doesn't rely on some obscure
3943 instance as first argument (so it doesn't rely on some obscure
3937 hidden global).
3944 hidden global).
3938
3945
3939 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3946 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3940 delimiters. While it prevents ().TAB from working, it allows
3947 delimiters. While it prevents ().TAB from working, it allows
3941 completions in open (... expressions. This is by far a more common
3948 completions in open (... expressions. This is by far a more common
3942 case.
3949 case.
3943
3950
3944 2002-04-23 Fernando Perez <fperez@colorado.edu>
3951 2002-04-23 Fernando Perez <fperez@colorado.edu>
3945
3952
3946 * IPython/Extensions/InterpreterPasteInput.py: new
3953 * IPython/Extensions/InterpreterPasteInput.py: new
3947 syntax-processing module for pasting lines with >>> or ... at the
3954 syntax-processing module for pasting lines with >>> or ... at the
3948 start.
3955 start.
3949
3956
3950 * IPython/Extensions/PhysicalQ_Interactive.py
3957 * IPython/Extensions/PhysicalQ_Interactive.py
3951 (PhysicalQuantityInteractive.__int__): fixed to work with either
3958 (PhysicalQuantityInteractive.__int__): fixed to work with either
3952 Numeric or math.
3959 Numeric or math.
3953
3960
3954 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3961 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3955 provided profiles. Now we have:
3962 provided profiles. Now we have:
3956 -math -> math module as * and cmath with its own namespace.
3963 -math -> math module as * and cmath with its own namespace.
3957 -numeric -> Numeric as *, plus gnuplot & grace
3964 -numeric -> Numeric as *, plus gnuplot & grace
3958 -physics -> same as before
3965 -physics -> same as before
3959
3966
3960 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3967 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3961 user-defined magics wouldn't be found by @magic if they were
3968 user-defined magics wouldn't be found by @magic if they were
3962 defined as class methods. Also cleaned up the namespace search
3969 defined as class methods. Also cleaned up the namespace search
3963 logic and the string building (to use %s instead of many repeated
3970 logic and the string building (to use %s instead of many repeated
3964 string adds).
3971 string adds).
3965
3972
3966 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3973 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3967 of user-defined magics to operate with class methods (cleaner, in
3974 of user-defined magics to operate with class methods (cleaner, in
3968 line with the gnuplot code).
3975 line with the gnuplot code).
3969
3976
3970 2002-04-22 Fernando Perez <fperez@colorado.edu>
3977 2002-04-22 Fernando Perez <fperez@colorado.edu>
3971
3978
3972 * setup.py: updated dependency list so that manual is updated when
3979 * setup.py: updated dependency list so that manual is updated when
3973 all included files change.
3980 all included files change.
3974
3981
3975 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3982 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3976 the delimiter removal option (the fix is ugly right now).
3983 the delimiter removal option (the fix is ugly right now).
3977
3984
3978 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3985 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3979 all of the math profile (quicker loading, no conflict between
3986 all of the math profile (quicker loading, no conflict between
3980 g-9.8 and g-gnuplot).
3987 g-9.8 and g-gnuplot).
3981
3988
3982 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3989 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3983 name of post-mortem files to IPython_crash_report.txt.
3990 name of post-mortem files to IPython_crash_report.txt.
3984
3991
3985 * Cleanup/update of the docs. Added all the new readline info and
3992 * Cleanup/update of the docs. Added all the new readline info and
3986 formatted all lists as 'real lists'.
3993 formatted all lists as 'real lists'.
3987
3994
3988 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3995 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3989 tab-completion options, since the full readline parse_and_bind is
3996 tab-completion options, since the full readline parse_and_bind is
3990 now accessible.
3997 now accessible.
3991
3998
3992 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3999 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3993 handling of readline options. Now users can specify any string to
4000 handling of readline options. Now users can specify any string to
3994 be passed to parse_and_bind(), as well as the delimiters to be
4001 be passed to parse_and_bind(), as well as the delimiters to be
3995 removed.
4002 removed.
3996 (InteractiveShell.__init__): Added __name__ to the global
4003 (InteractiveShell.__init__): Added __name__ to the global
3997 namespace so that things like Itpl which rely on its existence
4004 namespace so that things like Itpl which rely on its existence
3998 don't crash.
4005 don't crash.
3999 (InteractiveShell._prefilter): Defined the default with a _ so
4006 (InteractiveShell._prefilter): Defined the default with a _ so
4000 that prefilter() is easier to override, while the default one
4007 that prefilter() is easier to override, while the default one
4001 remains available.
4008 remains available.
4002
4009
4003 2002-04-18 Fernando Perez <fperez@colorado.edu>
4010 2002-04-18 Fernando Perez <fperez@colorado.edu>
4004
4011
4005 * Added information about pdb in the docs.
4012 * Added information about pdb in the docs.
4006
4013
4007 2002-04-17 Fernando Perez <fperez@colorado.edu>
4014 2002-04-17 Fernando Perez <fperez@colorado.edu>
4008
4015
4009 * IPython/ipmaker.py (make_IPython): added rc_override option to
4016 * IPython/ipmaker.py (make_IPython): added rc_override option to
4010 allow passing config options at creation time which may override
4017 allow passing config options at creation time which may override
4011 anything set in the config files or command line. This is
4018 anything set in the config files or command line. This is
4012 particularly useful for configuring embedded instances.
4019 particularly useful for configuring embedded instances.
4013
4020
4014 2002-04-15 Fernando Perez <fperez@colorado.edu>
4021 2002-04-15 Fernando Perez <fperez@colorado.edu>
4015
4022
4016 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4023 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4017 crash embedded instances because of the input cache falling out of
4024 crash embedded instances because of the input cache falling out of
4018 sync with the output counter.
4025 sync with the output counter.
4019
4026
4020 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4027 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4021 mode which calls pdb after an uncaught exception in IPython itself.
4028 mode which calls pdb after an uncaught exception in IPython itself.
4022
4029
4023 2002-04-14 Fernando Perez <fperez@colorado.edu>
4030 2002-04-14 Fernando Perez <fperez@colorado.edu>
4024
4031
4025 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4032 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4026 readline, fix it back after each call.
4033 readline, fix it back after each call.
4027
4034
4028 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4035 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4029 method to force all access via __call__(), which guarantees that
4036 method to force all access via __call__(), which guarantees that
4030 traceback references are properly deleted.
4037 traceback references are properly deleted.
4031
4038
4032 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4039 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4033 improve printing when pprint is in use.
4040 improve printing when pprint is in use.
4034
4041
4035 2002-04-13 Fernando Perez <fperez@colorado.edu>
4042 2002-04-13 Fernando Perez <fperez@colorado.edu>
4036
4043
4037 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4044 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4038 exceptions aren't caught anymore. If the user triggers one, he
4045 exceptions aren't caught anymore. If the user triggers one, he
4039 should know why he's doing it and it should go all the way up,
4046 should know why he's doing it and it should go all the way up,
4040 just like any other exception. So now @abort will fully kill the
4047 just like any other exception. So now @abort will fully kill the
4041 embedded interpreter and the embedding code (unless that happens
4048 embedded interpreter and the embedding code (unless that happens
4042 to catch SystemExit).
4049 to catch SystemExit).
4043
4050
4044 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4051 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4045 and a debugger() method to invoke the interactive pdb debugger
4052 and a debugger() method to invoke the interactive pdb debugger
4046 after printing exception information. Also added the corresponding
4053 after printing exception information. Also added the corresponding
4047 -pdb option and @pdb magic to control this feature, and updated
4054 -pdb option and @pdb magic to control this feature, and updated
4048 the docs. After a suggestion from Christopher Hart
4055 the docs. After a suggestion from Christopher Hart
4049 (hart-AT-caltech.edu).
4056 (hart-AT-caltech.edu).
4050
4057
4051 2002-04-12 Fernando Perez <fperez@colorado.edu>
4058 2002-04-12 Fernando Perez <fperez@colorado.edu>
4052
4059
4053 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4060 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4054 the exception handlers defined by the user (not the CrashHandler)
4061 the exception handlers defined by the user (not the CrashHandler)
4055 so that user exceptions don't trigger an ipython bug report.
4062 so that user exceptions don't trigger an ipython bug report.
4056
4063
4057 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4064 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4058 configurable (it should have always been so).
4065 configurable (it should have always been so).
4059
4066
4060 2002-03-26 Fernando Perez <fperez@colorado.edu>
4067 2002-03-26 Fernando Perez <fperez@colorado.edu>
4061
4068
4062 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4069 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4063 and there to fix embedding namespace issues. This should all be
4070 and there to fix embedding namespace issues. This should all be
4064 done in a more elegant way.
4071 done in a more elegant way.
4065
4072
4066 2002-03-25 Fernando Perez <fperez@colorado.edu>
4073 2002-03-25 Fernando Perez <fperez@colorado.edu>
4067
4074
4068 * IPython/genutils.py (get_home_dir): Try to make it work under
4075 * IPython/genutils.py (get_home_dir): Try to make it work under
4069 win9x also.
4076 win9x also.
4070
4077
4071 2002-03-20 Fernando Perez <fperez@colorado.edu>
4078 2002-03-20 Fernando Perez <fperez@colorado.edu>
4072
4079
4073 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4080 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4074 sys.displayhook untouched upon __init__.
4081 sys.displayhook untouched upon __init__.
4075
4082
4076 2002-03-19 Fernando Perez <fperez@colorado.edu>
4083 2002-03-19 Fernando Perez <fperez@colorado.edu>
4077
4084
4078 * Released 0.2.9 (for embedding bug, basically).
4085 * Released 0.2.9 (for embedding bug, basically).
4079
4086
4080 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4087 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4081 exceptions so that enclosing shell's state can be restored.
4088 exceptions so that enclosing shell's state can be restored.
4082
4089
4083 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4090 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4084 naming conventions in the .ipython/ dir.
4091 naming conventions in the .ipython/ dir.
4085
4092
4086 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4093 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4087 from delimiters list so filenames with - in them get expanded.
4094 from delimiters list so filenames with - in them get expanded.
4088
4095
4089 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4096 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4090 sys.displayhook not being properly restored after an embedded call.
4097 sys.displayhook not being properly restored after an embedded call.
4091
4098
4092 2002-03-18 Fernando Perez <fperez@colorado.edu>
4099 2002-03-18 Fernando Perez <fperez@colorado.edu>
4093
4100
4094 * Released 0.2.8
4101 * Released 0.2.8
4095
4102
4096 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4103 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4097 some files weren't being included in a -upgrade.
4104 some files weren't being included in a -upgrade.
4098 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4105 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4099 on' so that the first tab completes.
4106 on' so that the first tab completes.
4100 (InteractiveShell.handle_magic): fixed bug with spaces around
4107 (InteractiveShell.handle_magic): fixed bug with spaces around
4101 quotes breaking many magic commands.
4108 quotes breaking many magic commands.
4102
4109
4103 * setup.py: added note about ignoring the syntax error messages at
4110 * setup.py: added note about ignoring the syntax error messages at
4104 installation.
4111 installation.
4105
4112
4106 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4113 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4107 streamlining the gnuplot interface, now there's only one magic @gp.
4114 streamlining the gnuplot interface, now there's only one magic @gp.
4108
4115
4109 2002-03-17 Fernando Perez <fperez@colorado.edu>
4116 2002-03-17 Fernando Perez <fperez@colorado.edu>
4110
4117
4111 * IPython/UserConfig/magic_gnuplot.py: new name for the
4118 * IPython/UserConfig/magic_gnuplot.py: new name for the
4112 example-magic_pm.py file. Much enhanced system, now with a shell
4119 example-magic_pm.py file. Much enhanced system, now with a shell
4113 for communicating directly with gnuplot, one command at a time.
4120 for communicating directly with gnuplot, one command at a time.
4114
4121
4115 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4122 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4116 setting __name__=='__main__'.
4123 setting __name__=='__main__'.
4117
4124
4118 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4125 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4119 mini-shell for accessing gnuplot from inside ipython. Should
4126 mini-shell for accessing gnuplot from inside ipython. Should
4120 extend it later for grace access too. Inspired by Arnd's
4127 extend it later for grace access too. Inspired by Arnd's
4121 suggestion.
4128 suggestion.
4122
4129
4123 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4130 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4124 calling magic functions with () in their arguments. Thanks to Arnd
4131 calling magic functions with () in their arguments. Thanks to Arnd
4125 Baecker for pointing this to me.
4132 Baecker for pointing this to me.
4126
4133
4127 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4134 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4128 infinitely for integer or complex arrays (only worked with floats).
4135 infinitely for integer or complex arrays (only worked with floats).
4129
4136
4130 2002-03-16 Fernando Perez <fperez@colorado.edu>
4137 2002-03-16 Fernando Perez <fperez@colorado.edu>
4131
4138
4132 * setup.py: Merged setup and setup_windows into a single script
4139 * setup.py: Merged setup and setup_windows into a single script
4133 which properly handles things for windows users.
4140 which properly handles things for windows users.
4134
4141
4135 2002-03-15 Fernando Perez <fperez@colorado.edu>
4142 2002-03-15 Fernando Perez <fperez@colorado.edu>
4136
4143
4137 * Big change to the manual: now the magics are all automatically
4144 * Big change to the manual: now the magics are all automatically
4138 documented. This information is generated from their docstrings
4145 documented. This information is generated from their docstrings
4139 and put in a latex file included by the manual lyx file. This way
4146 and put in a latex file included by the manual lyx file. This way
4140 we get always up to date information for the magics. The manual
4147 we get always up to date information for the magics. The manual
4141 now also has proper version information, also auto-synced.
4148 now also has proper version information, also auto-synced.
4142
4149
4143 For this to work, an undocumented --magic_docstrings option was added.
4150 For this to work, an undocumented --magic_docstrings option was added.
4144
4151
4145 2002-03-13 Fernando Perez <fperez@colorado.edu>
4152 2002-03-13 Fernando Perez <fperez@colorado.edu>
4146
4153
4147 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4154 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4148 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4155 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4149
4156
4150 2002-03-12 Fernando Perez <fperez@colorado.edu>
4157 2002-03-12 Fernando Perez <fperez@colorado.edu>
4151
4158
4152 * IPython/ultraTB.py (TermColors): changed color escapes again to
4159 * IPython/ultraTB.py (TermColors): changed color escapes again to
4153 fix the (old, reintroduced) line-wrapping bug. Basically, if
4160 fix the (old, reintroduced) line-wrapping bug. Basically, if
4154 \001..\002 aren't given in the color escapes, lines get wrapped
4161 \001..\002 aren't given in the color escapes, lines get wrapped
4155 weirdly. But giving those screws up old xterms and emacs terms. So
4162 weirdly. But giving those screws up old xterms and emacs terms. So
4156 I added some logic for emacs terms to be ok, but I can't identify old
4163 I added some logic for emacs terms to be ok, but I can't identify old
4157 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4164 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4158
4165
4159 2002-03-10 Fernando Perez <fperez@colorado.edu>
4166 2002-03-10 Fernando Perez <fperez@colorado.edu>
4160
4167
4161 * IPython/usage.py (__doc__): Various documentation cleanups and
4168 * IPython/usage.py (__doc__): Various documentation cleanups and
4162 updates, both in usage docstrings and in the manual.
4169 updates, both in usage docstrings and in the manual.
4163
4170
4164 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4171 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4165 handling of caching. Set minimum acceptabe value for having a
4172 handling of caching. Set minimum acceptabe value for having a
4166 cache at 20 values.
4173 cache at 20 values.
4167
4174
4168 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4175 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4169 install_first_time function to a method, renamed it and added an
4176 install_first_time function to a method, renamed it and added an
4170 'upgrade' mode. Now people can update their config directory with
4177 'upgrade' mode. Now people can update their config directory with
4171 a simple command line switch (-upgrade, also new).
4178 a simple command line switch (-upgrade, also new).
4172
4179
4173 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4180 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4174 @file (convenient for automagic users under Python >= 2.2).
4181 @file (convenient for automagic users under Python >= 2.2).
4175 Removed @files (it seemed more like a plural than an abbrev. of
4182 Removed @files (it seemed more like a plural than an abbrev. of
4176 'file show').
4183 'file show').
4177
4184
4178 * IPython/iplib.py (install_first_time): Fixed crash if there were
4185 * IPython/iplib.py (install_first_time): Fixed crash if there were
4179 backup files ('~') in .ipython/ install directory.
4186 backup files ('~') in .ipython/ install directory.
4180
4187
4181 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4188 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4182 system. Things look fine, but these changes are fairly
4189 system. Things look fine, but these changes are fairly
4183 intrusive. Test them for a few days.
4190 intrusive. Test them for a few days.
4184
4191
4185 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4192 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4186 the prompts system. Now all in/out prompt strings are user
4193 the prompts system. Now all in/out prompt strings are user
4187 controllable. This is particularly useful for embedding, as one
4194 controllable. This is particularly useful for embedding, as one
4188 can tag embedded instances with particular prompts.
4195 can tag embedded instances with particular prompts.
4189
4196
4190 Also removed global use of sys.ps1/2, which now allows nested
4197 Also removed global use of sys.ps1/2, which now allows nested
4191 embeddings without any problems. Added command-line options for
4198 embeddings without any problems. Added command-line options for
4192 the prompt strings.
4199 the prompt strings.
4193
4200
4194 2002-03-08 Fernando Perez <fperez@colorado.edu>
4201 2002-03-08 Fernando Perez <fperez@colorado.edu>
4195
4202
4196 * IPython/UserConfig/example-embed-short.py (ipshell): added
4203 * IPython/UserConfig/example-embed-short.py (ipshell): added
4197 example file with the bare minimum code for embedding.
4204 example file with the bare minimum code for embedding.
4198
4205
4199 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4206 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4200 functionality for the embeddable shell to be activated/deactivated
4207 functionality for the embeddable shell to be activated/deactivated
4201 either globally or at each call.
4208 either globally or at each call.
4202
4209
4203 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4210 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4204 rewriting the prompt with '--->' for auto-inputs with proper
4211 rewriting the prompt with '--->' for auto-inputs with proper
4205 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4212 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4206 this is handled by the prompts class itself, as it should.
4213 this is handled by the prompts class itself, as it should.
4207
4214
4208 2002-03-05 Fernando Perez <fperez@colorado.edu>
4215 2002-03-05 Fernando Perez <fperez@colorado.edu>
4209
4216
4210 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4217 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4211 @logstart to avoid name clashes with the math log function.
4218 @logstart to avoid name clashes with the math log function.
4212
4219
4213 * Big updates to X/Emacs section of the manual.
4220 * Big updates to X/Emacs section of the manual.
4214
4221
4215 * Removed ipython_emacs. Milan explained to me how to pass
4222 * Removed ipython_emacs. Milan explained to me how to pass
4216 arguments to ipython through Emacs. Some day I'm going to end up
4223 arguments to ipython through Emacs. Some day I'm going to end up
4217 learning some lisp...
4224 learning some lisp...
4218
4225
4219 2002-03-04 Fernando Perez <fperez@colorado.edu>
4226 2002-03-04 Fernando Perez <fperez@colorado.edu>
4220
4227
4221 * IPython/ipython_emacs: Created script to be used as the
4228 * IPython/ipython_emacs: Created script to be used as the
4222 py-python-command Emacs variable so we can pass IPython
4229 py-python-command Emacs variable so we can pass IPython
4223 parameters. I can't figure out how to tell Emacs directly to pass
4230 parameters. I can't figure out how to tell Emacs directly to pass
4224 parameters to IPython, so a dummy shell script will do it.
4231 parameters to IPython, so a dummy shell script will do it.
4225
4232
4226 Other enhancements made for things to work better under Emacs'
4233 Other enhancements made for things to work better under Emacs'
4227 various types of terminals. Many thanks to Milan Zamazal
4234 various types of terminals. Many thanks to Milan Zamazal
4228 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4235 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4229
4236
4230 2002-03-01 Fernando Perez <fperez@colorado.edu>
4237 2002-03-01 Fernando Perez <fperez@colorado.edu>
4231
4238
4232 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4239 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4233 that loading of readline is now optional. This gives better
4240 that loading of readline is now optional. This gives better
4234 control to emacs users.
4241 control to emacs users.
4235
4242
4236 * IPython/ultraTB.py (__date__): Modified color escape sequences
4243 * IPython/ultraTB.py (__date__): Modified color escape sequences
4237 and now things work fine under xterm and in Emacs' term buffers
4244 and now things work fine under xterm and in Emacs' term buffers
4238 (though not shell ones). Well, in emacs you get colors, but all
4245 (though not shell ones). Well, in emacs you get colors, but all
4239 seem to be 'light' colors (no difference between dark and light
4246 seem to be 'light' colors (no difference between dark and light
4240 ones). But the garbage chars are gone, and also in xterms. It
4247 ones). But the garbage chars are gone, and also in xterms. It
4241 seems that now I'm using 'cleaner' ansi sequences.
4248 seems that now I'm using 'cleaner' ansi sequences.
4242
4249
4243 2002-02-21 Fernando Perez <fperez@colorado.edu>
4250 2002-02-21 Fernando Perez <fperez@colorado.edu>
4244
4251
4245 * Released 0.2.7 (mainly to publish the scoping fix).
4252 * Released 0.2.7 (mainly to publish the scoping fix).
4246
4253
4247 * IPython/Logger.py (Logger.logstate): added. A corresponding
4254 * IPython/Logger.py (Logger.logstate): added. A corresponding
4248 @logstate magic was created.
4255 @logstate magic was created.
4249
4256
4250 * IPython/Magic.py: fixed nested scoping problem under Python
4257 * IPython/Magic.py: fixed nested scoping problem under Python
4251 2.1.x (automagic wasn't working).
4258 2.1.x (automagic wasn't working).
4252
4259
4253 2002-02-20 Fernando Perez <fperez@colorado.edu>
4260 2002-02-20 Fernando Perez <fperez@colorado.edu>
4254
4261
4255 * Released 0.2.6.
4262 * Released 0.2.6.
4256
4263
4257 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4264 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4258 option so that logs can come out without any headers at all.
4265 option so that logs can come out without any headers at all.
4259
4266
4260 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4267 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4261 SciPy.
4268 SciPy.
4262
4269
4263 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4270 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4264 that embedded IPython calls don't require vars() to be explicitly
4271 that embedded IPython calls don't require vars() to be explicitly
4265 passed. Now they are extracted from the caller's frame (code
4272 passed. Now they are extracted from the caller's frame (code
4266 snatched from Eric Jones' weave). Added better documentation to
4273 snatched from Eric Jones' weave). Added better documentation to
4267 the section on embedding and the example file.
4274 the section on embedding and the example file.
4268
4275
4269 * IPython/genutils.py (page): Changed so that under emacs, it just
4276 * IPython/genutils.py (page): Changed so that under emacs, it just
4270 prints the string. You can then page up and down in the emacs
4277 prints the string. You can then page up and down in the emacs
4271 buffer itself. This is how the builtin help() works.
4278 buffer itself. This is how the builtin help() works.
4272
4279
4273 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4280 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4274 macro scoping: macros need to be executed in the user's namespace
4281 macro scoping: macros need to be executed in the user's namespace
4275 to work as if they had been typed by the user.
4282 to work as if they had been typed by the user.
4276
4283
4277 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4284 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4278 execute automatically (no need to type 'exec...'). They then
4285 execute automatically (no need to type 'exec...'). They then
4279 behave like 'true macros'. The printing system was also modified
4286 behave like 'true macros'. The printing system was also modified
4280 for this to work.
4287 for this to work.
4281
4288
4282 2002-02-19 Fernando Perez <fperez@colorado.edu>
4289 2002-02-19 Fernando Perez <fperez@colorado.edu>
4283
4290
4284 * IPython/genutils.py (page_file): new function for paging files
4291 * IPython/genutils.py (page_file): new function for paging files
4285 in an OS-independent way. Also necessary for file viewing to work
4292 in an OS-independent way. Also necessary for file viewing to work
4286 well inside Emacs buffers.
4293 well inside Emacs buffers.
4287 (page): Added checks for being in an emacs buffer.
4294 (page): Added checks for being in an emacs buffer.
4288 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4295 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4289 same bug in iplib.
4296 same bug in iplib.
4290
4297
4291 2002-02-18 Fernando Perez <fperez@colorado.edu>
4298 2002-02-18 Fernando Perez <fperez@colorado.edu>
4292
4299
4293 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4300 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4294 of readline so that IPython can work inside an Emacs buffer.
4301 of readline so that IPython can work inside an Emacs buffer.
4295
4302
4296 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4303 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4297 method signatures (they weren't really bugs, but it looks cleaner
4304 method signatures (they weren't really bugs, but it looks cleaner
4298 and keeps PyChecker happy).
4305 and keeps PyChecker happy).
4299
4306
4300 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4307 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4301 for implementing various user-defined hooks. Currently only
4308 for implementing various user-defined hooks. Currently only
4302 display is done.
4309 display is done.
4303
4310
4304 * IPython/Prompts.py (CachedOutput._display): changed display
4311 * IPython/Prompts.py (CachedOutput._display): changed display
4305 functions so that they can be dynamically changed by users easily.
4312 functions so that they can be dynamically changed by users easily.
4306
4313
4307 * IPython/Extensions/numeric_formats.py (num_display): added an
4314 * IPython/Extensions/numeric_formats.py (num_display): added an
4308 extension for printing NumPy arrays in flexible manners. It
4315 extension for printing NumPy arrays in flexible manners. It
4309 doesn't do anything yet, but all the structure is in
4316 doesn't do anything yet, but all the structure is in
4310 place. Ultimately the plan is to implement output format control
4317 place. Ultimately the plan is to implement output format control
4311 like in Octave.
4318 like in Octave.
4312
4319
4313 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4320 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4314 methods are found at run-time by all the automatic machinery.
4321 methods are found at run-time by all the automatic machinery.
4315
4322
4316 2002-02-17 Fernando Perez <fperez@colorado.edu>
4323 2002-02-17 Fernando Perez <fperez@colorado.edu>
4317
4324
4318 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4325 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4319 whole file a little.
4326 whole file a little.
4320
4327
4321 * ToDo: closed this document. Now there's a new_design.lyx
4328 * ToDo: closed this document. Now there's a new_design.lyx
4322 document for all new ideas. Added making a pdf of it for the
4329 document for all new ideas. Added making a pdf of it for the
4323 end-user distro.
4330 end-user distro.
4324
4331
4325 * IPython/Logger.py (Logger.switch_log): Created this to replace
4332 * IPython/Logger.py (Logger.switch_log): Created this to replace
4326 logon() and logoff(). It also fixes a nasty crash reported by
4333 logon() and logoff(). It also fixes a nasty crash reported by
4327 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4334 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4328
4335
4329 * IPython/iplib.py (complete): got auto-completion to work with
4336 * IPython/iplib.py (complete): got auto-completion to work with
4330 automagic (I had wanted this for a long time).
4337 automagic (I had wanted this for a long time).
4331
4338
4332 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4339 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4333 to @file, since file() is now a builtin and clashes with automagic
4340 to @file, since file() is now a builtin and clashes with automagic
4334 for @file.
4341 for @file.
4335
4342
4336 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4343 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4337 of this was previously in iplib, which had grown to more than 2000
4344 of this was previously in iplib, which had grown to more than 2000
4338 lines, way too long. No new functionality, but it makes managing
4345 lines, way too long. No new functionality, but it makes managing
4339 the code a bit easier.
4346 the code a bit easier.
4340
4347
4341 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4348 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4342 information to crash reports.
4349 information to crash reports.
4343
4350
4344 2002-02-12 Fernando Perez <fperez@colorado.edu>
4351 2002-02-12 Fernando Perez <fperez@colorado.edu>
4345
4352
4346 * Released 0.2.5.
4353 * Released 0.2.5.
4347
4354
4348 2002-02-11 Fernando Perez <fperez@colorado.edu>
4355 2002-02-11 Fernando Perez <fperez@colorado.edu>
4349
4356
4350 * Wrote a relatively complete Windows installer. It puts
4357 * Wrote a relatively complete Windows installer. It puts
4351 everything in place, creates Start Menu entries and fixes the
4358 everything in place, creates Start Menu entries and fixes the
4352 color issues. Nothing fancy, but it works.
4359 color issues. Nothing fancy, but it works.
4353
4360
4354 2002-02-10 Fernando Perez <fperez@colorado.edu>
4361 2002-02-10 Fernando Perez <fperez@colorado.edu>
4355
4362
4356 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4363 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4357 os.path.expanduser() call so that we can type @run ~/myfile.py and
4364 os.path.expanduser() call so that we can type @run ~/myfile.py and
4358 have thigs work as expected.
4365 have thigs work as expected.
4359
4366
4360 * IPython/genutils.py (page): fixed exception handling so things
4367 * IPython/genutils.py (page): fixed exception handling so things
4361 work both in Unix and Windows correctly. Quitting a pager triggers
4368 work both in Unix and Windows correctly. Quitting a pager triggers
4362 an IOError/broken pipe in Unix, and in windows not finding a pager
4369 an IOError/broken pipe in Unix, and in windows not finding a pager
4363 is also an IOError, so I had to actually look at the return value
4370 is also an IOError, so I had to actually look at the return value
4364 of the exception, not just the exception itself. Should be ok now.
4371 of the exception, not just the exception itself. Should be ok now.
4365
4372
4366 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4373 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4367 modified to allow case-insensitive color scheme changes.
4374 modified to allow case-insensitive color scheme changes.
4368
4375
4369 2002-02-09 Fernando Perez <fperez@colorado.edu>
4376 2002-02-09 Fernando Perez <fperez@colorado.edu>
4370
4377
4371 * IPython/genutils.py (native_line_ends): new function to leave
4378 * IPython/genutils.py (native_line_ends): new function to leave
4372 user config files with os-native line-endings.
4379 user config files with os-native line-endings.
4373
4380
4374 * README and manual updates.
4381 * README and manual updates.
4375
4382
4376 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4383 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4377 instead of StringType to catch Unicode strings.
4384 instead of StringType to catch Unicode strings.
4378
4385
4379 * IPython/genutils.py (filefind): fixed bug for paths with
4386 * IPython/genutils.py (filefind): fixed bug for paths with
4380 embedded spaces (very common in Windows).
4387 embedded spaces (very common in Windows).
4381
4388
4382 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4389 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4383 files under Windows, so that they get automatically associated
4390 files under Windows, so that they get automatically associated
4384 with a text editor. Windows makes it a pain to handle
4391 with a text editor. Windows makes it a pain to handle
4385 extension-less files.
4392 extension-less files.
4386
4393
4387 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4394 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4388 warning about readline only occur for Posix. In Windows there's no
4395 warning about readline only occur for Posix. In Windows there's no
4389 way to get readline, so why bother with the warning.
4396 way to get readline, so why bother with the warning.
4390
4397
4391 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4398 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4392 for __str__ instead of dir(self), since dir() changed in 2.2.
4399 for __str__ instead of dir(self), since dir() changed in 2.2.
4393
4400
4394 * Ported to Windows! Tested on XP, I suspect it should work fine
4401 * Ported to Windows! Tested on XP, I suspect it should work fine
4395 on NT/2000, but I don't think it will work on 98 et al. That
4402 on NT/2000, but I don't think it will work on 98 et al. That
4396 series of Windows is such a piece of junk anyway that I won't try
4403 series of Windows is such a piece of junk anyway that I won't try
4397 porting it there. The XP port was straightforward, showed a few
4404 porting it there. The XP port was straightforward, showed a few
4398 bugs here and there (fixed all), in particular some string
4405 bugs here and there (fixed all), in particular some string
4399 handling stuff which required considering Unicode strings (which
4406 handling stuff which required considering Unicode strings (which
4400 Windows uses). This is good, but hasn't been too tested :) No
4407 Windows uses). This is good, but hasn't been too tested :) No
4401 fancy installer yet, I'll put a note in the manual so people at
4408 fancy installer yet, I'll put a note in the manual so people at
4402 least make manually a shortcut.
4409 least make manually a shortcut.
4403
4410
4404 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4411 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4405 into a single one, "colors". This now controls both prompt and
4412 into a single one, "colors". This now controls both prompt and
4406 exception color schemes, and can be changed both at startup
4413 exception color schemes, and can be changed both at startup
4407 (either via command-line switches or via ipythonrc files) and at
4414 (either via command-line switches or via ipythonrc files) and at
4408 runtime, with @colors.
4415 runtime, with @colors.
4409 (Magic.magic_run): renamed @prun to @run and removed the old
4416 (Magic.magic_run): renamed @prun to @run and removed the old
4410 @run. The two were too similar to warrant keeping both.
4417 @run. The two were too similar to warrant keeping both.
4411
4418
4412 2002-02-03 Fernando Perez <fperez@colorado.edu>
4419 2002-02-03 Fernando Perez <fperez@colorado.edu>
4413
4420
4414 * IPython/iplib.py (install_first_time): Added comment on how to
4421 * IPython/iplib.py (install_first_time): Added comment on how to
4415 configure the color options for first-time users. Put a <return>
4422 configure the color options for first-time users. Put a <return>
4416 request at the end so that small-terminal users get a chance to
4423 request at the end so that small-terminal users get a chance to
4417 read the startup info.
4424 read the startup info.
4418
4425
4419 2002-01-23 Fernando Perez <fperez@colorado.edu>
4426 2002-01-23 Fernando Perez <fperez@colorado.edu>
4420
4427
4421 * IPython/iplib.py (CachedOutput.update): Changed output memory
4428 * IPython/iplib.py (CachedOutput.update): Changed output memory
4422 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4429 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4423 input history we still use _i. Did this b/c these variable are
4430 input history we still use _i. Did this b/c these variable are
4424 very commonly used in interactive work, so the less we need to
4431 very commonly used in interactive work, so the less we need to
4425 type the better off we are.
4432 type the better off we are.
4426 (Magic.magic_prun): updated @prun to better handle the namespaces
4433 (Magic.magic_prun): updated @prun to better handle the namespaces
4427 the file will run in, including a fix for __name__ not being set
4434 the file will run in, including a fix for __name__ not being set
4428 before.
4435 before.
4429
4436
4430 2002-01-20 Fernando Perez <fperez@colorado.edu>
4437 2002-01-20 Fernando Perez <fperez@colorado.edu>
4431
4438
4432 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4439 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4433 extra garbage for Python 2.2. Need to look more carefully into
4440 extra garbage for Python 2.2. Need to look more carefully into
4434 this later.
4441 this later.
4435
4442
4436 2002-01-19 Fernando Perez <fperez@colorado.edu>
4443 2002-01-19 Fernando Perez <fperez@colorado.edu>
4437
4444
4438 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4445 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4439 display SyntaxError exceptions properly formatted when they occur
4446 display SyntaxError exceptions properly formatted when they occur
4440 (they can be triggered by imported code).
4447 (they can be triggered by imported code).
4441
4448
4442 2002-01-18 Fernando Perez <fperez@colorado.edu>
4449 2002-01-18 Fernando Perez <fperez@colorado.edu>
4443
4450
4444 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4451 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4445 SyntaxError exceptions are reported nicely formatted, instead of
4452 SyntaxError exceptions are reported nicely formatted, instead of
4446 spitting out only offset information as before.
4453 spitting out only offset information as before.
4447 (Magic.magic_prun): Added the @prun function for executing
4454 (Magic.magic_prun): Added the @prun function for executing
4448 programs with command line args inside IPython.
4455 programs with command line args inside IPython.
4449
4456
4450 2002-01-16 Fernando Perez <fperez@colorado.edu>
4457 2002-01-16 Fernando Perez <fperez@colorado.edu>
4451
4458
4452 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4459 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4453 to *not* include the last item given in a range. This brings their
4460 to *not* include the last item given in a range. This brings their
4454 behavior in line with Python's slicing:
4461 behavior in line with Python's slicing:
4455 a[n1:n2] -> a[n1]...a[n2-1]
4462 a[n1:n2] -> a[n1]...a[n2-1]
4456 It may be a bit less convenient, but I prefer to stick to Python's
4463 It may be a bit less convenient, but I prefer to stick to Python's
4457 conventions *everywhere*, so users never have to wonder.
4464 conventions *everywhere*, so users never have to wonder.
4458 (Magic.magic_macro): Added @macro function to ease the creation of
4465 (Magic.magic_macro): Added @macro function to ease the creation of
4459 macros.
4466 macros.
4460
4467
4461 2002-01-05 Fernando Perez <fperez@colorado.edu>
4468 2002-01-05 Fernando Perez <fperez@colorado.edu>
4462
4469
4463 * Released 0.2.4.
4470 * Released 0.2.4.
4464
4471
4465 * IPython/iplib.py (Magic.magic_pdef):
4472 * IPython/iplib.py (Magic.magic_pdef):
4466 (InteractiveShell.safe_execfile): report magic lines and error
4473 (InteractiveShell.safe_execfile): report magic lines and error
4467 lines without line numbers so one can easily copy/paste them for
4474 lines without line numbers so one can easily copy/paste them for
4468 re-execution.
4475 re-execution.
4469
4476
4470 * Updated manual with recent changes.
4477 * Updated manual with recent changes.
4471
4478
4472 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4479 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4473 docstring printing when class? is called. Very handy for knowing
4480 docstring printing when class? is called. Very handy for knowing
4474 how to create class instances (as long as __init__ is well
4481 how to create class instances (as long as __init__ is well
4475 documented, of course :)
4482 documented, of course :)
4476 (Magic.magic_doc): print both class and constructor docstrings.
4483 (Magic.magic_doc): print both class and constructor docstrings.
4477 (Magic.magic_pdef): give constructor info if passed a class and
4484 (Magic.magic_pdef): give constructor info if passed a class and
4478 __call__ info for callable object instances.
4485 __call__ info for callable object instances.
4479
4486
4480 2002-01-04 Fernando Perez <fperez@colorado.edu>
4487 2002-01-04 Fernando Perez <fperez@colorado.edu>
4481
4488
4482 * Made deep_reload() off by default. It doesn't always work
4489 * Made deep_reload() off by default. It doesn't always work
4483 exactly as intended, so it's probably safer to have it off. It's
4490 exactly as intended, so it's probably safer to have it off. It's
4484 still available as dreload() anyway, so nothing is lost.
4491 still available as dreload() anyway, so nothing is lost.
4485
4492
4486 2002-01-02 Fernando Perez <fperez@colorado.edu>
4493 2002-01-02 Fernando Perez <fperez@colorado.edu>
4487
4494
4488 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4495 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4489 so I wanted an updated release).
4496 so I wanted an updated release).
4490
4497
4491 2001-12-27 Fernando Perez <fperez@colorado.edu>
4498 2001-12-27 Fernando Perez <fperez@colorado.edu>
4492
4499
4493 * IPython/iplib.py (InteractiveShell.interact): Added the original
4500 * IPython/iplib.py (InteractiveShell.interact): Added the original
4494 code from 'code.py' for this module in order to change the
4501 code from 'code.py' for this module in order to change the
4495 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4502 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4496 the history cache would break when the user hit Ctrl-C, and
4503 the history cache would break when the user hit Ctrl-C, and
4497 interact() offers no way to add any hooks to it.
4504 interact() offers no way to add any hooks to it.
4498
4505
4499 2001-12-23 Fernando Perez <fperez@colorado.edu>
4506 2001-12-23 Fernando Perez <fperez@colorado.edu>
4500
4507
4501 * setup.py: added check for 'MANIFEST' before trying to remove
4508 * setup.py: added check for 'MANIFEST' before trying to remove
4502 it. Thanks to Sean Reifschneider.
4509 it. Thanks to Sean Reifschneider.
4503
4510
4504 2001-12-22 Fernando Perez <fperez@colorado.edu>
4511 2001-12-22 Fernando Perez <fperez@colorado.edu>
4505
4512
4506 * Released 0.2.2.
4513 * Released 0.2.2.
4507
4514
4508 * Finished (reasonably) writing the manual. Later will add the
4515 * Finished (reasonably) writing the manual. Later will add the
4509 python-standard navigation stylesheets, but for the time being
4516 python-standard navigation stylesheets, but for the time being
4510 it's fairly complete. Distribution will include html and pdf
4517 it's fairly complete. Distribution will include html and pdf
4511 versions.
4518 versions.
4512
4519
4513 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4520 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4514 (MayaVi author).
4521 (MayaVi author).
4515
4522
4516 2001-12-21 Fernando Perez <fperez@colorado.edu>
4523 2001-12-21 Fernando Perez <fperez@colorado.edu>
4517
4524
4518 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4525 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4519 good public release, I think (with the manual and the distutils
4526 good public release, I think (with the manual and the distutils
4520 installer). The manual can use some work, but that can go
4527 installer). The manual can use some work, but that can go
4521 slowly. Otherwise I think it's quite nice for end users. Next
4528 slowly. Otherwise I think it's quite nice for end users. Next
4522 summer, rewrite the guts of it...
4529 summer, rewrite the guts of it...
4523
4530
4524 * Changed format of ipythonrc files to use whitespace as the
4531 * Changed format of ipythonrc files to use whitespace as the
4525 separator instead of an explicit '='. Cleaner.
4532 separator instead of an explicit '='. Cleaner.
4526
4533
4527 2001-12-20 Fernando Perez <fperez@colorado.edu>
4534 2001-12-20 Fernando Perez <fperez@colorado.edu>
4528
4535
4529 * Started a manual in LyX. For now it's just a quick merge of the
4536 * Started a manual in LyX. For now it's just a quick merge of the
4530 various internal docstrings and READMEs. Later it may grow into a
4537 various internal docstrings and READMEs. Later it may grow into a
4531 nice, full-blown manual.
4538 nice, full-blown manual.
4532
4539
4533 * Set up a distutils based installer. Installation should now be
4540 * Set up a distutils based installer. Installation should now be
4534 trivially simple for end-users.
4541 trivially simple for end-users.
4535
4542
4536 2001-12-11 Fernando Perez <fperez@colorado.edu>
4543 2001-12-11 Fernando Perez <fperez@colorado.edu>
4537
4544
4538 * Released 0.2.0. First public release, announced it at
4545 * Released 0.2.0. First public release, announced it at
4539 comp.lang.python. From now on, just bugfixes...
4546 comp.lang.python. From now on, just bugfixes...
4540
4547
4541 * Went through all the files, set copyright/license notices and
4548 * Went through all the files, set copyright/license notices and
4542 cleaned up things. Ready for release.
4549 cleaned up things. Ready for release.
4543
4550
4544 2001-12-10 Fernando Perez <fperez@colorado.edu>
4551 2001-12-10 Fernando Perez <fperez@colorado.edu>
4545
4552
4546 * Changed the first-time installer not to use tarfiles. It's more
4553 * Changed the first-time installer not to use tarfiles. It's more
4547 robust now and less unix-dependent. Also makes it easier for
4554 robust now and less unix-dependent. Also makes it easier for
4548 people to later upgrade versions.
4555 people to later upgrade versions.
4549
4556
4550 * Changed @exit to @abort to reflect the fact that it's pretty
4557 * Changed @exit to @abort to reflect the fact that it's pretty
4551 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4558 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4552 becomes significant only when IPyhton is embedded: in that case,
4559 becomes significant only when IPyhton is embedded: in that case,
4553 C-D closes IPython only, but @abort kills the enclosing program
4560 C-D closes IPython only, but @abort kills the enclosing program
4554 too (unless it had called IPython inside a try catching
4561 too (unless it had called IPython inside a try catching
4555 SystemExit).
4562 SystemExit).
4556
4563
4557 * Created Shell module which exposes the actuall IPython Shell
4564 * Created Shell module which exposes the actuall IPython Shell
4558 classes, currently the normal and the embeddable one. This at
4565 classes, currently the normal and the embeddable one. This at
4559 least offers a stable interface we won't need to change when
4566 least offers a stable interface we won't need to change when
4560 (later) the internals are rewritten. That rewrite will be confined
4567 (later) the internals are rewritten. That rewrite will be confined
4561 to iplib and ipmaker, but the Shell interface should remain as is.
4568 to iplib and ipmaker, but the Shell interface should remain as is.
4562
4569
4563 * Added embed module which offers an embeddable IPShell object,
4570 * Added embed module which offers an embeddable IPShell object,
4564 useful to fire up IPython *inside* a running program. Great for
4571 useful to fire up IPython *inside* a running program. Great for
4565 debugging or dynamical data analysis.
4572 debugging or dynamical data analysis.
4566
4573
4567 2001-12-08 Fernando Perez <fperez@colorado.edu>
4574 2001-12-08 Fernando Perez <fperez@colorado.edu>
4568
4575
4569 * Fixed small bug preventing seeing info from methods of defined
4576 * Fixed small bug preventing seeing info from methods of defined
4570 objects (incorrect namespace in _ofind()).
4577 objects (incorrect namespace in _ofind()).
4571
4578
4572 * Documentation cleanup. Moved the main usage docstrings to a
4579 * Documentation cleanup. Moved the main usage docstrings to a
4573 separate file, usage.py (cleaner to maintain, and hopefully in the
4580 separate file, usage.py (cleaner to maintain, and hopefully in the
4574 future some perlpod-like way of producing interactive, man and
4581 future some perlpod-like way of producing interactive, man and
4575 html docs out of it will be found).
4582 html docs out of it will be found).
4576
4583
4577 * Added @profile to see your profile at any time.
4584 * Added @profile to see your profile at any time.
4578
4585
4579 * Added @p as an alias for 'print'. It's especially convenient if
4586 * Added @p as an alias for 'print'. It's especially convenient if
4580 using automagic ('p x' prints x).
4587 using automagic ('p x' prints x).
4581
4588
4582 * Small cleanups and fixes after a pychecker run.
4589 * Small cleanups and fixes after a pychecker run.
4583
4590
4584 * Changed the @cd command to handle @cd - and @cd -<n> for
4591 * Changed the @cd command to handle @cd - and @cd -<n> for
4585 visiting any directory in _dh.
4592 visiting any directory in _dh.
4586
4593
4587 * Introduced _dh, a history of visited directories. @dhist prints
4594 * Introduced _dh, a history of visited directories. @dhist prints
4588 it out with numbers.
4595 it out with numbers.
4589
4596
4590 2001-12-07 Fernando Perez <fperez@colorado.edu>
4597 2001-12-07 Fernando Perez <fperez@colorado.edu>
4591
4598
4592 * Released 0.1.22
4599 * Released 0.1.22
4593
4600
4594 * Made initialization a bit more robust against invalid color
4601 * Made initialization a bit more robust against invalid color
4595 options in user input (exit, not traceback-crash).
4602 options in user input (exit, not traceback-crash).
4596
4603
4597 * Changed the bug crash reporter to write the report only in the
4604 * Changed the bug crash reporter to write the report only in the
4598 user's .ipython directory. That way IPython won't litter people's
4605 user's .ipython directory. That way IPython won't litter people's
4599 hard disks with crash files all over the place. Also print on
4606 hard disks with crash files all over the place. Also print on
4600 screen the necessary mail command.
4607 screen the necessary mail command.
4601
4608
4602 * With the new ultraTB, implemented LightBG color scheme for light
4609 * With the new ultraTB, implemented LightBG color scheme for light
4603 background terminals. A lot of people like white backgrounds, so I
4610 background terminals. A lot of people like white backgrounds, so I
4604 guess we should at least give them something readable.
4611 guess we should at least give them something readable.
4605
4612
4606 2001-12-06 Fernando Perez <fperez@colorado.edu>
4613 2001-12-06 Fernando Perez <fperez@colorado.edu>
4607
4614
4608 * Modified the structure of ultraTB. Now there's a proper class
4615 * Modified the structure of ultraTB. Now there's a proper class
4609 for tables of color schemes which allow adding schemes easily and
4616 for tables of color schemes which allow adding schemes easily and
4610 switching the active scheme without creating a new instance every
4617 switching the active scheme without creating a new instance every
4611 time (which was ridiculous). The syntax for creating new schemes
4618 time (which was ridiculous). The syntax for creating new schemes
4612 is also cleaner. I think ultraTB is finally done, with a clean
4619 is also cleaner. I think ultraTB is finally done, with a clean
4613 class structure. Names are also much cleaner (now there's proper
4620 class structure. Names are also much cleaner (now there's proper
4614 color tables, no need for every variable to also have 'color' in
4621 color tables, no need for every variable to also have 'color' in
4615 its name).
4622 its name).
4616
4623
4617 * Broke down genutils into separate files. Now genutils only
4624 * Broke down genutils into separate files. Now genutils only
4618 contains utility functions, and classes have been moved to their
4625 contains utility functions, and classes have been moved to their
4619 own files (they had enough independent functionality to warrant
4626 own files (they had enough independent functionality to warrant
4620 it): ConfigLoader, OutputTrap, Struct.
4627 it): ConfigLoader, OutputTrap, Struct.
4621
4628
4622 2001-12-05 Fernando Perez <fperez@colorado.edu>
4629 2001-12-05 Fernando Perez <fperez@colorado.edu>
4623
4630
4624 * IPython turns 21! Released version 0.1.21, as a candidate for
4631 * IPython turns 21! Released version 0.1.21, as a candidate for
4625 public consumption. If all goes well, release in a few days.
4632 public consumption. If all goes well, release in a few days.
4626
4633
4627 * Fixed path bug (files in Extensions/ directory wouldn't be found
4634 * Fixed path bug (files in Extensions/ directory wouldn't be found
4628 unless IPython/ was explicitly in sys.path).
4635 unless IPython/ was explicitly in sys.path).
4629
4636
4630 * Extended the FlexCompleter class as MagicCompleter to allow
4637 * Extended the FlexCompleter class as MagicCompleter to allow
4631 completion of @-starting lines.
4638 completion of @-starting lines.
4632
4639
4633 * Created __release__.py file as a central repository for release
4640 * Created __release__.py file as a central repository for release
4634 info that other files can read from.
4641 info that other files can read from.
4635
4642
4636 * Fixed small bug in logging: when logging was turned on in
4643 * Fixed small bug in logging: when logging was turned on in
4637 mid-session, old lines with special meanings (!@?) were being
4644 mid-session, old lines with special meanings (!@?) were being
4638 logged without the prepended comment, which is necessary since
4645 logged without the prepended comment, which is necessary since
4639 they are not truly valid python syntax. This should make session
4646 they are not truly valid python syntax. This should make session
4640 restores produce less errors.
4647 restores produce less errors.
4641
4648
4642 * The namespace cleanup forced me to make a FlexCompleter class
4649 * The namespace cleanup forced me to make a FlexCompleter class
4643 which is nothing but a ripoff of rlcompleter, but with selectable
4650 which is nothing but a ripoff of rlcompleter, but with selectable
4644 namespace (rlcompleter only works in __main__.__dict__). I'll try
4651 namespace (rlcompleter only works in __main__.__dict__). I'll try
4645 to submit a note to the authors to see if this change can be
4652 to submit a note to the authors to see if this change can be
4646 incorporated in future rlcompleter releases (Dec.6: done)
4653 incorporated in future rlcompleter releases (Dec.6: done)
4647
4654
4648 * More fixes to namespace handling. It was a mess! Now all
4655 * More fixes to namespace handling. It was a mess! Now all
4649 explicit references to __main__.__dict__ are gone (except when
4656 explicit references to __main__.__dict__ are gone (except when
4650 really needed) and everything is handled through the namespace
4657 really needed) and everything is handled through the namespace
4651 dicts in the IPython instance. We seem to be getting somewhere
4658 dicts in the IPython instance. We seem to be getting somewhere
4652 with this, finally...
4659 with this, finally...
4653
4660
4654 * Small documentation updates.
4661 * Small documentation updates.
4655
4662
4656 * Created the Extensions directory under IPython (with an
4663 * Created the Extensions directory under IPython (with an
4657 __init__.py). Put the PhysicalQ stuff there. This directory should
4664 __init__.py). Put the PhysicalQ stuff there. This directory should
4658 be used for all special-purpose extensions.
4665 be used for all special-purpose extensions.
4659
4666
4660 * File renaming:
4667 * File renaming:
4661 ipythonlib --> ipmaker
4668 ipythonlib --> ipmaker
4662 ipplib --> iplib
4669 ipplib --> iplib
4663 This makes a bit more sense in terms of what these files actually do.
4670 This makes a bit more sense in terms of what these files actually do.
4664
4671
4665 * Moved all the classes and functions in ipythonlib to ipplib, so
4672 * Moved all the classes and functions in ipythonlib to ipplib, so
4666 now ipythonlib only has make_IPython(). This will ease up its
4673 now ipythonlib only has make_IPython(). This will ease up its
4667 splitting in smaller functional chunks later.
4674 splitting in smaller functional chunks later.
4668
4675
4669 * Cleaned up (done, I think) output of @whos. Better column
4676 * Cleaned up (done, I think) output of @whos. Better column
4670 formatting, and now shows str(var) for as much as it can, which is
4677 formatting, and now shows str(var) for as much as it can, which is
4671 typically what one gets with a 'print var'.
4678 typically what one gets with a 'print var'.
4672
4679
4673 2001-12-04 Fernando Perez <fperez@colorado.edu>
4680 2001-12-04 Fernando Perez <fperez@colorado.edu>
4674
4681
4675 * Fixed namespace problems. Now builtin/IPyhton/user names get
4682 * Fixed namespace problems. Now builtin/IPyhton/user names get
4676 properly reported in their namespace. Internal namespace handling
4683 properly reported in their namespace. Internal namespace handling
4677 is finally getting decent (not perfect yet, but much better than
4684 is finally getting decent (not perfect yet, but much better than
4678 the ad-hoc mess we had).
4685 the ad-hoc mess we had).
4679
4686
4680 * Removed -exit option. If people just want to run a python
4687 * Removed -exit option. If people just want to run a python
4681 script, that's what the normal interpreter is for. Less
4688 script, that's what the normal interpreter is for. Less
4682 unnecessary options, less chances for bugs.
4689 unnecessary options, less chances for bugs.
4683
4690
4684 * Added a crash handler which generates a complete post-mortem if
4691 * Added a crash handler which generates a complete post-mortem if
4685 IPython crashes. This will help a lot in tracking bugs down the
4692 IPython crashes. This will help a lot in tracking bugs down the
4686 road.
4693 road.
4687
4694
4688 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4695 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4689 which were boud to functions being reassigned would bypass the
4696 which were boud to functions being reassigned would bypass the
4690 logger, breaking the sync of _il with the prompt counter. This
4697 logger, breaking the sync of _il with the prompt counter. This
4691 would then crash IPython later when a new line was logged.
4698 would then crash IPython later when a new line was logged.
4692
4699
4693 2001-12-02 Fernando Perez <fperez@colorado.edu>
4700 2001-12-02 Fernando Perez <fperez@colorado.edu>
4694
4701
4695 * Made IPython a package. This means people don't have to clutter
4702 * Made IPython a package. This means people don't have to clutter
4696 their sys.path with yet another directory. Changed the INSTALL
4703 their sys.path with yet another directory. Changed the INSTALL
4697 file accordingly.
4704 file accordingly.
4698
4705
4699 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4706 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4700 sorts its output (so @who shows it sorted) and @whos formats the
4707 sorts its output (so @who shows it sorted) and @whos formats the
4701 table according to the width of the first column. Nicer, easier to
4708 table according to the width of the first column. Nicer, easier to
4702 read. Todo: write a generic table_format() which takes a list of
4709 read. Todo: write a generic table_format() which takes a list of
4703 lists and prints it nicely formatted, with optional row/column
4710 lists and prints it nicely formatted, with optional row/column
4704 separators and proper padding and justification.
4711 separators and proper padding and justification.
4705
4712
4706 * Released 0.1.20
4713 * Released 0.1.20
4707
4714
4708 * Fixed bug in @log which would reverse the inputcache list (a
4715 * Fixed bug in @log which would reverse the inputcache list (a
4709 copy operation was missing).
4716 copy operation was missing).
4710
4717
4711 * Code cleanup. @config was changed to use page(). Better, since
4718 * Code cleanup. @config was changed to use page(). Better, since
4712 its output is always quite long.
4719 its output is always quite long.
4713
4720
4714 * Itpl is back as a dependency. I was having too many problems
4721 * Itpl is back as a dependency. I was having too many problems
4715 getting the parametric aliases to work reliably, and it's just
4722 getting the parametric aliases to work reliably, and it's just
4716 easier to code weird string operations with it than playing %()s
4723 easier to code weird string operations with it than playing %()s
4717 games. It's only ~6k, so I don't think it's too big a deal.
4724 games. It's only ~6k, so I don't think it's too big a deal.
4718
4725
4719 * Found (and fixed) a very nasty bug with history. !lines weren't
4726 * Found (and fixed) a very nasty bug with history. !lines weren't
4720 getting cached, and the out of sync caches would crash
4727 getting cached, and the out of sync caches would crash
4721 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4728 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4722 division of labor a bit better. Bug fixed, cleaner structure.
4729 division of labor a bit better. Bug fixed, cleaner structure.
4723
4730
4724 2001-12-01 Fernando Perez <fperez@colorado.edu>
4731 2001-12-01 Fernando Perez <fperez@colorado.edu>
4725
4732
4726 * Released 0.1.19
4733 * Released 0.1.19
4727
4734
4728 * Added option -n to @hist to prevent line number printing. Much
4735 * Added option -n to @hist to prevent line number printing. Much
4729 easier to copy/paste code this way.
4736 easier to copy/paste code this way.
4730
4737
4731 * Created global _il to hold the input list. Allows easy
4738 * Created global _il to hold the input list. Allows easy
4732 re-execution of blocks of code by slicing it (inspired by Janko's
4739 re-execution of blocks of code by slicing it (inspired by Janko's
4733 comment on 'macros').
4740 comment on 'macros').
4734
4741
4735 * Small fixes and doc updates.
4742 * Small fixes and doc updates.
4736
4743
4737 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4744 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4738 much too fragile with automagic. Handles properly multi-line
4745 much too fragile with automagic. Handles properly multi-line
4739 statements and takes parameters.
4746 statements and takes parameters.
4740
4747
4741 2001-11-30 Fernando Perez <fperez@colorado.edu>
4748 2001-11-30 Fernando Perez <fperez@colorado.edu>
4742
4749
4743 * Version 0.1.18 released.
4750 * Version 0.1.18 released.
4744
4751
4745 * Fixed nasty namespace bug in initial module imports.
4752 * Fixed nasty namespace bug in initial module imports.
4746
4753
4747 * Added copyright/license notes to all code files (except
4754 * Added copyright/license notes to all code files (except
4748 DPyGetOpt). For the time being, LGPL. That could change.
4755 DPyGetOpt). For the time being, LGPL. That could change.
4749
4756
4750 * Rewrote a much nicer README, updated INSTALL, cleaned up
4757 * Rewrote a much nicer README, updated INSTALL, cleaned up
4751 ipythonrc-* samples.
4758 ipythonrc-* samples.
4752
4759
4753 * Overall code/documentation cleanup. Basically ready for
4760 * Overall code/documentation cleanup. Basically ready for
4754 release. Only remaining thing: licence decision (LGPL?).
4761 release. Only remaining thing: licence decision (LGPL?).
4755
4762
4756 * Converted load_config to a class, ConfigLoader. Now recursion
4763 * Converted load_config to a class, ConfigLoader. Now recursion
4757 control is better organized. Doesn't include the same file twice.
4764 control is better organized. Doesn't include the same file twice.
4758
4765
4759 2001-11-29 Fernando Perez <fperez@colorado.edu>
4766 2001-11-29 Fernando Perez <fperez@colorado.edu>
4760
4767
4761 * Got input history working. Changed output history variables from
4768 * Got input history working. Changed output history variables from
4762 _p to _o so that _i is for input and _o for output. Just cleaner
4769 _p to _o so that _i is for input and _o for output. Just cleaner
4763 convention.
4770 convention.
4764
4771
4765 * Implemented parametric aliases. This pretty much allows the
4772 * Implemented parametric aliases. This pretty much allows the
4766 alias system to offer full-blown shell convenience, I think.
4773 alias system to offer full-blown shell convenience, I think.
4767
4774
4768 * Version 0.1.17 released, 0.1.18 opened.
4775 * Version 0.1.17 released, 0.1.18 opened.
4769
4776
4770 * dot_ipython/ipythonrc (alias): added documentation.
4777 * dot_ipython/ipythonrc (alias): added documentation.
4771 (xcolor): Fixed small bug (xcolors -> xcolor)
4778 (xcolor): Fixed small bug (xcolors -> xcolor)
4772
4779
4773 * Changed the alias system. Now alias is a magic command to define
4780 * Changed the alias system. Now alias is a magic command to define
4774 aliases just like the shell. Rationale: the builtin magics should
4781 aliases just like the shell. Rationale: the builtin magics should
4775 be there for things deeply connected to IPython's
4782 be there for things deeply connected to IPython's
4776 architecture. And this is a much lighter system for what I think
4783 architecture. And this is a much lighter system for what I think
4777 is the really important feature: allowing users to define quickly
4784 is the really important feature: allowing users to define quickly
4778 magics that will do shell things for them, so they can customize
4785 magics that will do shell things for them, so they can customize
4779 IPython easily to match their work habits. If someone is really
4786 IPython easily to match their work habits. If someone is really
4780 desperate to have another name for a builtin alias, they can
4787 desperate to have another name for a builtin alias, they can
4781 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4788 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4782 works.
4789 works.
4783
4790
4784 2001-11-28 Fernando Perez <fperez@colorado.edu>
4791 2001-11-28 Fernando Perez <fperez@colorado.edu>
4785
4792
4786 * Changed @file so that it opens the source file at the proper
4793 * Changed @file so that it opens the source file at the proper
4787 line. Since it uses less, if your EDITOR environment is
4794 line. Since it uses less, if your EDITOR environment is
4788 configured, typing v will immediately open your editor of choice
4795 configured, typing v will immediately open your editor of choice
4789 right at the line where the object is defined. Not as quick as
4796 right at the line where the object is defined. Not as quick as
4790 having a direct @edit command, but for all intents and purposes it
4797 having a direct @edit command, but for all intents and purposes it
4791 works. And I don't have to worry about writing @edit to deal with
4798 works. And I don't have to worry about writing @edit to deal with
4792 all the editors, less does that.
4799 all the editors, less does that.
4793
4800
4794 * Version 0.1.16 released, 0.1.17 opened.
4801 * Version 0.1.16 released, 0.1.17 opened.
4795
4802
4796 * Fixed some nasty bugs in the page/page_dumb combo that could
4803 * Fixed some nasty bugs in the page/page_dumb combo that could
4797 crash IPython.
4804 crash IPython.
4798
4805
4799 2001-11-27 Fernando Perez <fperez@colorado.edu>
4806 2001-11-27 Fernando Perez <fperez@colorado.edu>
4800
4807
4801 * Version 0.1.15 released, 0.1.16 opened.
4808 * Version 0.1.15 released, 0.1.16 opened.
4802
4809
4803 * Finally got ? and ?? to work for undefined things: now it's
4810 * Finally got ? and ?? to work for undefined things: now it's
4804 possible to type {}.get? and get information about the get method
4811 possible to type {}.get? and get information about the get method
4805 of dicts, or os.path? even if only os is defined (so technically
4812 of dicts, or os.path? even if only os is defined (so technically
4806 os.path isn't). Works at any level. For example, after import os,
4813 os.path isn't). Works at any level. For example, after import os,
4807 os?, os.path?, os.path.abspath? all work. This is great, took some
4814 os?, os.path?, os.path.abspath? all work. This is great, took some
4808 work in _ofind.
4815 work in _ofind.
4809
4816
4810 * Fixed more bugs with logging. The sanest way to do it was to add
4817 * Fixed more bugs with logging. The sanest way to do it was to add
4811 to @log a 'mode' parameter. Killed two in one shot (this mode
4818 to @log a 'mode' parameter. Killed two in one shot (this mode
4812 option was a request of Janko's). I think it's finally clean
4819 option was a request of Janko's). I think it's finally clean
4813 (famous last words).
4820 (famous last words).
4814
4821
4815 * Added a page_dumb() pager which does a decent job of paging on
4822 * Added a page_dumb() pager which does a decent job of paging on
4816 screen, if better things (like less) aren't available. One less
4823 screen, if better things (like less) aren't available. One less
4817 unix dependency (someday maybe somebody will port this to
4824 unix dependency (someday maybe somebody will port this to
4818 windows).
4825 windows).
4819
4826
4820 * Fixed problem in magic_log: would lock of logging out if log
4827 * Fixed problem in magic_log: would lock of logging out if log
4821 creation failed (because it would still think it had succeeded).
4828 creation failed (because it would still think it had succeeded).
4822
4829
4823 * Improved the page() function using curses to auto-detect screen
4830 * Improved the page() function using curses to auto-detect screen
4824 size. Now it can make a much better decision on whether to print
4831 size. Now it can make a much better decision on whether to print
4825 or page a string. Option screen_length was modified: a value 0
4832 or page a string. Option screen_length was modified: a value 0
4826 means auto-detect, and that's the default now.
4833 means auto-detect, and that's the default now.
4827
4834
4828 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4835 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4829 go out. I'll test it for a few days, then talk to Janko about
4836 go out. I'll test it for a few days, then talk to Janko about
4830 licences and announce it.
4837 licences and announce it.
4831
4838
4832 * Fixed the length of the auto-generated ---> prompt which appears
4839 * Fixed the length of the auto-generated ---> prompt which appears
4833 for auto-parens and auto-quotes. Getting this right isn't trivial,
4840 for auto-parens and auto-quotes. Getting this right isn't trivial,
4834 with all the color escapes, different prompt types and optional
4841 with all the color escapes, different prompt types and optional
4835 separators. But it seems to be working in all the combinations.
4842 separators. But it seems to be working in all the combinations.
4836
4843
4837 2001-11-26 Fernando Perez <fperez@colorado.edu>
4844 2001-11-26 Fernando Perez <fperez@colorado.edu>
4838
4845
4839 * Wrote a regexp filter to get option types from the option names
4846 * Wrote a regexp filter to get option types from the option names
4840 string. This eliminates the need to manually keep two duplicate
4847 string. This eliminates the need to manually keep two duplicate
4841 lists.
4848 lists.
4842
4849
4843 * Removed the unneeded check_option_names. Now options are handled
4850 * Removed the unneeded check_option_names. Now options are handled
4844 in a much saner manner and it's easy to visually check that things
4851 in a much saner manner and it's easy to visually check that things
4845 are ok.
4852 are ok.
4846
4853
4847 * Updated version numbers on all files I modified to carry a
4854 * Updated version numbers on all files I modified to carry a
4848 notice so Janko and Nathan have clear version markers.
4855 notice so Janko and Nathan have clear version markers.
4849
4856
4850 * Updated docstring for ultraTB with my changes. I should send
4857 * Updated docstring for ultraTB with my changes. I should send
4851 this to Nathan.
4858 this to Nathan.
4852
4859
4853 * Lots of small fixes. Ran everything through pychecker again.
4860 * Lots of small fixes. Ran everything through pychecker again.
4854
4861
4855 * Made loading of deep_reload an cmd line option. If it's not too
4862 * Made loading of deep_reload an cmd line option. If it's not too
4856 kosher, now people can just disable it. With -nodeep_reload it's
4863 kosher, now people can just disable it. With -nodeep_reload it's
4857 still available as dreload(), it just won't overwrite reload().
4864 still available as dreload(), it just won't overwrite reload().
4858
4865
4859 * Moved many options to the no| form (-opt and -noopt
4866 * Moved many options to the no| form (-opt and -noopt
4860 accepted). Cleaner.
4867 accepted). Cleaner.
4861
4868
4862 * Changed magic_log so that if called with no parameters, it uses
4869 * Changed magic_log so that if called with no parameters, it uses
4863 'rotate' mode. That way auto-generated logs aren't automatically
4870 'rotate' mode. That way auto-generated logs aren't automatically
4864 over-written. For normal logs, now a backup is made if it exists
4871 over-written. For normal logs, now a backup is made if it exists
4865 (only 1 level of backups). A new 'backup' mode was added to the
4872 (only 1 level of backups). A new 'backup' mode was added to the
4866 Logger class to support this. This was a request by Janko.
4873 Logger class to support this. This was a request by Janko.
4867
4874
4868 * Added @logoff/@logon to stop/restart an active log.
4875 * Added @logoff/@logon to stop/restart an active log.
4869
4876
4870 * Fixed a lot of bugs in log saving/replay. It was pretty
4877 * Fixed a lot of bugs in log saving/replay. It was pretty
4871 broken. Now special lines (!@,/) appear properly in the command
4878 broken. Now special lines (!@,/) appear properly in the command
4872 history after a log replay.
4879 history after a log replay.
4873
4880
4874 * Tried and failed to implement full session saving via pickle. My
4881 * Tried and failed to implement full session saving via pickle. My
4875 idea was to pickle __main__.__dict__, but modules can't be
4882 idea was to pickle __main__.__dict__, but modules can't be
4876 pickled. This would be a better alternative to replaying logs, but
4883 pickled. This would be a better alternative to replaying logs, but
4877 seems quite tricky to get to work. Changed -session to be called
4884 seems quite tricky to get to work. Changed -session to be called
4878 -logplay, which more accurately reflects what it does. And if we
4885 -logplay, which more accurately reflects what it does. And if we
4879 ever get real session saving working, -session is now available.
4886 ever get real session saving working, -session is now available.
4880
4887
4881 * Implemented color schemes for prompts also. As for tracebacks,
4888 * Implemented color schemes for prompts also. As for tracebacks,
4882 currently only NoColor and Linux are supported. But now the
4889 currently only NoColor and Linux are supported. But now the
4883 infrastructure is in place, based on a generic ColorScheme
4890 infrastructure is in place, based on a generic ColorScheme
4884 class. So writing and activating new schemes both for the prompts
4891 class. So writing and activating new schemes both for the prompts
4885 and the tracebacks should be straightforward.
4892 and the tracebacks should be straightforward.
4886
4893
4887 * Version 0.1.13 released, 0.1.14 opened.
4894 * Version 0.1.13 released, 0.1.14 opened.
4888
4895
4889 * Changed handling of options for output cache. Now counter is
4896 * Changed handling of options for output cache. Now counter is
4890 hardwired starting at 1 and one specifies the maximum number of
4897 hardwired starting at 1 and one specifies the maximum number of
4891 entries *in the outcache* (not the max prompt counter). This is
4898 entries *in the outcache* (not the max prompt counter). This is
4892 much better, since many statements won't increase the cache
4899 much better, since many statements won't increase the cache
4893 count. It also eliminated some confusing options, now there's only
4900 count. It also eliminated some confusing options, now there's only
4894 one: cache_size.
4901 one: cache_size.
4895
4902
4896 * Added 'alias' magic function and magic_alias option in the
4903 * Added 'alias' magic function and magic_alias option in the
4897 ipythonrc file. Now the user can easily define whatever names he
4904 ipythonrc file. Now the user can easily define whatever names he
4898 wants for the magic functions without having to play weird
4905 wants for the magic functions without having to play weird
4899 namespace games. This gives IPython a real shell-like feel.
4906 namespace games. This gives IPython a real shell-like feel.
4900
4907
4901 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4908 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4902 @ or not).
4909 @ or not).
4903
4910
4904 This was one of the last remaining 'visible' bugs (that I know
4911 This was one of the last remaining 'visible' bugs (that I know
4905 of). I think if I can clean up the session loading so it works
4912 of). I think if I can clean up the session loading so it works
4906 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4913 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4907 about licensing).
4914 about licensing).
4908
4915
4909 2001-11-25 Fernando Perez <fperez@colorado.edu>
4916 2001-11-25 Fernando Perez <fperez@colorado.edu>
4910
4917
4911 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4918 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4912 there's a cleaner distinction between what ? and ?? show.
4919 there's a cleaner distinction between what ? and ?? show.
4913
4920
4914 * Added screen_length option. Now the user can define his own
4921 * Added screen_length option. Now the user can define his own
4915 screen size for page() operations.
4922 screen size for page() operations.
4916
4923
4917 * Implemented magic shell-like functions with automatic code
4924 * Implemented magic shell-like functions with automatic code
4918 generation. Now adding another function is just a matter of adding
4925 generation. Now adding another function is just a matter of adding
4919 an entry to a dict, and the function is dynamically generated at
4926 an entry to a dict, and the function is dynamically generated at
4920 run-time. Python has some really cool features!
4927 run-time. Python has some really cool features!
4921
4928
4922 * Renamed many options to cleanup conventions a little. Now all
4929 * Renamed many options to cleanup conventions a little. Now all
4923 are lowercase, and only underscores where needed. Also in the code
4930 are lowercase, and only underscores where needed. Also in the code
4924 option name tables are clearer.
4931 option name tables are clearer.
4925
4932
4926 * Changed prompts a little. Now input is 'In [n]:' instead of
4933 * Changed prompts a little. Now input is 'In [n]:' instead of
4927 'In[n]:='. This allows it the numbers to be aligned with the
4934 'In[n]:='. This allows it the numbers to be aligned with the
4928 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4935 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4929 Python (it was a Mathematica thing). The '...' continuation prompt
4936 Python (it was a Mathematica thing). The '...' continuation prompt
4930 was also changed a little to align better.
4937 was also changed a little to align better.
4931
4938
4932 * Fixed bug when flushing output cache. Not all _p<n> variables
4939 * Fixed bug when flushing output cache. Not all _p<n> variables
4933 exist, so their deletion needs to be wrapped in a try:
4940 exist, so their deletion needs to be wrapped in a try:
4934
4941
4935 * Figured out how to properly use inspect.formatargspec() (it
4942 * Figured out how to properly use inspect.formatargspec() (it
4936 requires the args preceded by *). So I removed all the code from
4943 requires the args preceded by *). So I removed all the code from
4937 _get_pdef in Magic, which was just replicating that.
4944 _get_pdef in Magic, which was just replicating that.
4938
4945
4939 * Added test to prefilter to allow redefining magic function names
4946 * Added test to prefilter to allow redefining magic function names
4940 as variables. This is ok, since the @ form is always available,
4947 as variables. This is ok, since the @ form is always available,
4941 but whe should allow the user to define a variable called 'ls' if
4948 but whe should allow the user to define a variable called 'ls' if
4942 he needs it.
4949 he needs it.
4943
4950
4944 * Moved the ToDo information from README into a separate ToDo.
4951 * Moved the ToDo information from README into a separate ToDo.
4945
4952
4946 * General code cleanup and small bugfixes. I think it's close to a
4953 * General code cleanup and small bugfixes. I think it's close to a
4947 state where it can be released, obviously with a big 'beta'
4954 state where it can be released, obviously with a big 'beta'
4948 warning on it.
4955 warning on it.
4949
4956
4950 * Got the magic function split to work. Now all magics are defined
4957 * Got the magic function split to work. Now all magics are defined
4951 in a separate class. It just organizes things a bit, and now
4958 in a separate class. It just organizes things a bit, and now
4952 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4959 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4953 was too long).
4960 was too long).
4954
4961
4955 * Changed @clear to @reset to avoid potential confusions with
4962 * Changed @clear to @reset to avoid potential confusions with
4956 the shell command clear. Also renamed @cl to @clear, which does
4963 the shell command clear. Also renamed @cl to @clear, which does
4957 exactly what people expect it to from their shell experience.
4964 exactly what people expect it to from their shell experience.
4958
4965
4959 Added a check to the @reset command (since it's so
4966 Added a check to the @reset command (since it's so
4960 destructive, it's probably a good idea to ask for confirmation).
4967 destructive, it's probably a good idea to ask for confirmation).
4961 But now reset only works for full namespace resetting. Since the
4968 But now reset only works for full namespace resetting. Since the
4962 del keyword is already there for deleting a few specific
4969 del keyword is already there for deleting a few specific
4963 variables, I don't see the point of having a redundant magic
4970 variables, I don't see the point of having a redundant magic
4964 function for the same task.
4971 function for the same task.
4965
4972
4966 2001-11-24 Fernando Perez <fperez@colorado.edu>
4973 2001-11-24 Fernando Perez <fperez@colorado.edu>
4967
4974
4968 * Updated the builtin docs (esp. the ? ones).
4975 * Updated the builtin docs (esp. the ? ones).
4969
4976
4970 * Ran all the code through pychecker. Not terribly impressed with
4977 * Ran all the code through pychecker. Not terribly impressed with
4971 it: lots of spurious warnings and didn't really find anything of
4978 it: lots of spurious warnings and didn't really find anything of
4972 substance (just a few modules being imported and not used).
4979 substance (just a few modules being imported and not used).
4973
4980
4974 * Implemented the new ultraTB functionality into IPython. New
4981 * Implemented the new ultraTB functionality into IPython. New
4975 option: xcolors. This chooses color scheme. xmode now only selects
4982 option: xcolors. This chooses color scheme. xmode now only selects
4976 between Plain and Verbose. Better orthogonality.
4983 between Plain and Verbose. Better orthogonality.
4977
4984
4978 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4985 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4979 mode and color scheme for the exception handlers. Now it's
4986 mode and color scheme for the exception handlers. Now it's
4980 possible to have the verbose traceback with no coloring.
4987 possible to have the verbose traceback with no coloring.
4981
4988
4982 2001-11-23 Fernando Perez <fperez@colorado.edu>
4989 2001-11-23 Fernando Perez <fperez@colorado.edu>
4983
4990
4984 * Version 0.1.12 released, 0.1.13 opened.
4991 * Version 0.1.12 released, 0.1.13 opened.
4985
4992
4986 * Removed option to set auto-quote and auto-paren escapes by
4993 * Removed option to set auto-quote and auto-paren escapes by
4987 user. The chances of breaking valid syntax are just too high. If
4994 user. The chances of breaking valid syntax are just too high. If
4988 someone *really* wants, they can always dig into the code.
4995 someone *really* wants, they can always dig into the code.
4989
4996
4990 * Made prompt separators configurable.
4997 * Made prompt separators configurable.
4991
4998
4992 2001-11-22 Fernando Perez <fperez@colorado.edu>
4999 2001-11-22 Fernando Perez <fperez@colorado.edu>
4993
5000
4994 * Small bugfixes in many places.
5001 * Small bugfixes in many places.
4995
5002
4996 * Removed the MyCompleter class from ipplib. It seemed redundant
5003 * Removed the MyCompleter class from ipplib. It seemed redundant
4997 with the C-p,C-n history search functionality. Less code to
5004 with the C-p,C-n history search functionality. Less code to
4998 maintain.
5005 maintain.
4999
5006
5000 * Moved all the original ipython.py code into ipythonlib.py. Right
5007 * Moved all the original ipython.py code into ipythonlib.py. Right
5001 now it's just one big dump into a function called make_IPython, so
5008 now it's just one big dump into a function called make_IPython, so
5002 no real modularity has been gained. But at least it makes the
5009 no real modularity has been gained. But at least it makes the
5003 wrapper script tiny, and since ipythonlib is a module, it gets
5010 wrapper script tiny, and since ipythonlib is a module, it gets
5004 compiled and startup is much faster.
5011 compiled and startup is much faster.
5005
5012
5006 This is a reasobably 'deep' change, so we should test it for a
5013 This is a reasobably 'deep' change, so we should test it for a
5007 while without messing too much more with the code.
5014 while without messing too much more with the code.
5008
5015
5009 2001-11-21 Fernando Perez <fperez@colorado.edu>
5016 2001-11-21 Fernando Perez <fperez@colorado.edu>
5010
5017
5011 * Version 0.1.11 released, 0.1.12 opened for further work.
5018 * Version 0.1.11 released, 0.1.12 opened for further work.
5012
5019
5013 * Removed dependency on Itpl. It was only needed in one place. It
5020 * Removed dependency on Itpl. It was only needed in one place. It
5014 would be nice if this became part of python, though. It makes life
5021 would be nice if this became part of python, though. It makes life
5015 *a lot* easier in some cases.
5022 *a lot* easier in some cases.
5016
5023
5017 * Simplified the prefilter code a bit. Now all handlers are
5024 * Simplified the prefilter code a bit. Now all handlers are
5018 expected to explicitly return a value (at least a blank string).
5025 expected to explicitly return a value (at least a blank string).
5019
5026
5020 * Heavy edits in ipplib. Removed the help system altogether. Now
5027 * Heavy edits in ipplib. Removed the help system altogether. Now
5021 obj?/?? is used for inspecting objects, a magic @doc prints
5028 obj?/?? is used for inspecting objects, a magic @doc prints
5022 docstrings, and full-blown Python help is accessed via the 'help'
5029 docstrings, and full-blown Python help is accessed via the 'help'
5023 keyword. This cleans up a lot of code (less to maintain) and does
5030 keyword. This cleans up a lot of code (less to maintain) and does
5024 the job. Since 'help' is now a standard Python component, might as
5031 the job. Since 'help' is now a standard Python component, might as
5025 well use it and remove duplicate functionality.
5032 well use it and remove duplicate functionality.
5026
5033
5027 Also removed the option to use ipplib as a standalone program. By
5034 Also removed the option to use ipplib as a standalone program. By
5028 now it's too dependent on other parts of IPython to function alone.
5035 now it's too dependent on other parts of IPython to function alone.
5029
5036
5030 * Fixed bug in genutils.pager. It would crash if the pager was
5037 * Fixed bug in genutils.pager. It would crash if the pager was
5031 exited immediately after opening (broken pipe).
5038 exited immediately after opening (broken pipe).
5032
5039
5033 * Trimmed down the VerboseTB reporting a little. The header is
5040 * Trimmed down the VerboseTB reporting a little. The header is
5034 much shorter now and the repeated exception arguments at the end
5041 much shorter now and the repeated exception arguments at the end
5035 have been removed. For interactive use the old header seemed a bit
5042 have been removed. For interactive use the old header seemed a bit
5036 excessive.
5043 excessive.
5037
5044
5038 * Fixed small bug in output of @whos for variables with multi-word
5045 * Fixed small bug in output of @whos for variables with multi-word
5039 types (only first word was displayed).
5046 types (only first word was displayed).
5040
5047
5041 2001-11-17 Fernando Perez <fperez@colorado.edu>
5048 2001-11-17 Fernando Perez <fperez@colorado.edu>
5042
5049
5043 * Version 0.1.10 released, 0.1.11 opened for further work.
5050 * Version 0.1.10 released, 0.1.11 opened for further work.
5044
5051
5045 * Modified dirs and friends. dirs now *returns* the stack (not
5052 * Modified dirs and friends. dirs now *returns* the stack (not
5046 prints), so one can manipulate it as a variable. Convenient to
5053 prints), so one can manipulate it as a variable. Convenient to
5047 travel along many directories.
5054 travel along many directories.
5048
5055
5049 * Fixed bug in magic_pdef: would only work with functions with
5056 * Fixed bug in magic_pdef: would only work with functions with
5050 arguments with default values.
5057 arguments with default values.
5051
5058
5052 2001-11-14 Fernando Perez <fperez@colorado.edu>
5059 2001-11-14 Fernando Perez <fperez@colorado.edu>
5053
5060
5054 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5061 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5055 example with IPython. Various other minor fixes and cleanups.
5062 example with IPython. Various other minor fixes and cleanups.
5056
5063
5057 * Version 0.1.9 released, 0.1.10 opened for further work.
5064 * Version 0.1.9 released, 0.1.10 opened for further work.
5058
5065
5059 * Added sys.path to the list of directories searched in the
5066 * Added sys.path to the list of directories searched in the
5060 execfile= option. It used to be the current directory and the
5067 execfile= option. It used to be the current directory and the
5061 user's IPYTHONDIR only.
5068 user's IPYTHONDIR only.
5062
5069
5063 2001-11-13 Fernando Perez <fperez@colorado.edu>
5070 2001-11-13 Fernando Perez <fperez@colorado.edu>
5064
5071
5065 * Reinstated the raw_input/prefilter separation that Janko had
5072 * Reinstated the raw_input/prefilter separation that Janko had
5066 initially. This gives a more convenient setup for extending the
5073 initially. This gives a more convenient setup for extending the
5067 pre-processor from the outside: raw_input always gets a string,
5074 pre-processor from the outside: raw_input always gets a string,
5068 and prefilter has to process it. We can then redefine prefilter
5075 and prefilter has to process it. We can then redefine prefilter
5069 from the outside and implement extensions for special
5076 from the outside and implement extensions for special
5070 purposes.
5077 purposes.
5071
5078
5072 Today I got one for inputting PhysicalQuantity objects
5079 Today I got one for inputting PhysicalQuantity objects
5073 (from Scientific) without needing any function calls at
5080 (from Scientific) without needing any function calls at
5074 all. Extremely convenient, and it's all done as a user-level
5081 all. Extremely convenient, and it's all done as a user-level
5075 extension (no IPython code was touched). Now instead of:
5082 extension (no IPython code was touched). Now instead of:
5076 a = PhysicalQuantity(4.2,'m/s**2')
5083 a = PhysicalQuantity(4.2,'m/s**2')
5077 one can simply say
5084 one can simply say
5078 a = 4.2 m/s**2
5085 a = 4.2 m/s**2
5079 or even
5086 or even
5080 a = 4.2 m/s^2
5087 a = 4.2 m/s^2
5081
5088
5082 I use this, but it's also a proof of concept: IPython really is
5089 I use this, but it's also a proof of concept: IPython really is
5083 fully user-extensible, even at the level of the parsing of the
5090 fully user-extensible, even at the level of the parsing of the
5084 command line. It's not trivial, but it's perfectly doable.
5091 command line. It's not trivial, but it's perfectly doable.
5085
5092
5086 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5093 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5087 the problem of modules being loaded in the inverse order in which
5094 the problem of modules being loaded in the inverse order in which
5088 they were defined in
5095 they were defined in
5089
5096
5090 * Version 0.1.8 released, 0.1.9 opened for further work.
5097 * Version 0.1.8 released, 0.1.9 opened for further work.
5091
5098
5092 * Added magics pdef, source and file. They respectively show the
5099 * Added magics pdef, source and file. They respectively show the
5093 definition line ('prototype' in C), source code and full python
5100 definition line ('prototype' in C), source code and full python
5094 file for any callable object. The object inspector oinfo uses
5101 file for any callable object. The object inspector oinfo uses
5095 these to show the same information.
5102 these to show the same information.
5096
5103
5097 * Version 0.1.7 released, 0.1.8 opened for further work.
5104 * Version 0.1.7 released, 0.1.8 opened for further work.
5098
5105
5099 * Separated all the magic functions into a class called Magic. The
5106 * Separated all the magic functions into a class called Magic. The
5100 InteractiveShell class was becoming too big for Xemacs to handle
5107 InteractiveShell class was becoming too big for Xemacs to handle
5101 (de-indenting a line would lock it up for 10 seconds while it
5108 (de-indenting a line would lock it up for 10 seconds while it
5102 backtracked on the whole class!)
5109 backtracked on the whole class!)
5103
5110
5104 FIXME: didn't work. It can be done, but right now namespaces are
5111 FIXME: didn't work. It can be done, but right now namespaces are
5105 all messed up. Do it later (reverted it for now, so at least
5112 all messed up. Do it later (reverted it for now, so at least
5106 everything works as before).
5113 everything works as before).
5107
5114
5108 * Got the object introspection system (magic_oinfo) working! I
5115 * Got the object introspection system (magic_oinfo) working! I
5109 think this is pretty much ready for release to Janko, so he can
5116 think this is pretty much ready for release to Janko, so he can
5110 test it for a while and then announce it. Pretty much 100% of what
5117 test it for a while and then announce it. Pretty much 100% of what
5111 I wanted for the 'phase 1' release is ready. Happy, tired.
5118 I wanted for the 'phase 1' release is ready. Happy, tired.
5112
5119
5113 2001-11-12 Fernando Perez <fperez@colorado.edu>
5120 2001-11-12 Fernando Perez <fperez@colorado.edu>
5114
5121
5115 * Version 0.1.6 released, 0.1.7 opened for further work.
5122 * Version 0.1.6 released, 0.1.7 opened for further work.
5116
5123
5117 * Fixed bug in printing: it used to test for truth before
5124 * Fixed bug in printing: it used to test for truth before
5118 printing, so 0 wouldn't print. Now checks for None.
5125 printing, so 0 wouldn't print. Now checks for None.
5119
5126
5120 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5127 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5121 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5128 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5122 reaches by hand into the outputcache. Think of a better way to do
5129 reaches by hand into the outputcache. Think of a better way to do
5123 this later.
5130 this later.
5124
5131
5125 * Various small fixes thanks to Nathan's comments.
5132 * Various small fixes thanks to Nathan's comments.
5126
5133
5127 * Changed magic_pprint to magic_Pprint. This way it doesn't
5134 * Changed magic_pprint to magic_Pprint. This way it doesn't
5128 collide with pprint() and the name is consistent with the command
5135 collide with pprint() and the name is consistent with the command
5129 line option.
5136 line option.
5130
5137
5131 * Changed prompt counter behavior to be fully like
5138 * Changed prompt counter behavior to be fully like
5132 Mathematica's. That is, even input that doesn't return a result
5139 Mathematica's. That is, even input that doesn't return a result
5133 raises the prompt counter. The old behavior was kind of confusing
5140 raises the prompt counter. The old behavior was kind of confusing
5134 (getting the same prompt number several times if the operation
5141 (getting the same prompt number several times if the operation
5135 didn't return a result).
5142 didn't return a result).
5136
5143
5137 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5144 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5138
5145
5139 * Fixed -Classic mode (wasn't working anymore).
5146 * Fixed -Classic mode (wasn't working anymore).
5140
5147
5141 * Added colored prompts using Nathan's new code. Colors are
5148 * Added colored prompts using Nathan's new code. Colors are
5142 currently hardwired, they can be user-configurable. For
5149 currently hardwired, they can be user-configurable. For
5143 developers, they can be chosen in file ipythonlib.py, at the
5150 developers, they can be chosen in file ipythonlib.py, at the
5144 beginning of the CachedOutput class def.
5151 beginning of the CachedOutput class def.
5145
5152
5146 2001-11-11 Fernando Perez <fperez@colorado.edu>
5153 2001-11-11 Fernando Perez <fperez@colorado.edu>
5147
5154
5148 * Version 0.1.5 released, 0.1.6 opened for further work.
5155 * Version 0.1.5 released, 0.1.6 opened for further work.
5149
5156
5150 * Changed magic_env to *return* the environment as a dict (not to
5157 * Changed magic_env to *return* the environment as a dict (not to
5151 print it). This way it prints, but it can also be processed.
5158 print it). This way it prints, but it can also be processed.
5152
5159
5153 * Added Verbose exception reporting to interactive
5160 * Added Verbose exception reporting to interactive
5154 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5161 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5155 traceback. Had to make some changes to the ultraTB file. This is
5162 traceback. Had to make some changes to the ultraTB file. This is
5156 probably the last 'big' thing in my mental todo list. This ties
5163 probably the last 'big' thing in my mental todo list. This ties
5157 in with the next entry:
5164 in with the next entry:
5158
5165
5159 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5166 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5160 has to specify is Plain, Color or Verbose for all exception
5167 has to specify is Plain, Color or Verbose for all exception
5161 handling.
5168 handling.
5162
5169
5163 * Removed ShellServices option. All this can really be done via
5170 * Removed ShellServices option. All this can really be done via
5164 the magic system. It's easier to extend, cleaner and has automatic
5171 the magic system. It's easier to extend, cleaner and has automatic
5165 namespace protection and documentation.
5172 namespace protection and documentation.
5166
5173
5167 2001-11-09 Fernando Perez <fperez@colorado.edu>
5174 2001-11-09 Fernando Perez <fperez@colorado.edu>
5168
5175
5169 * Fixed bug in output cache flushing (missing parameter to
5176 * Fixed bug in output cache flushing (missing parameter to
5170 __init__). Other small bugs fixed (found using pychecker).
5177 __init__). Other small bugs fixed (found using pychecker).
5171
5178
5172 * Version 0.1.4 opened for bugfixing.
5179 * Version 0.1.4 opened for bugfixing.
5173
5180
5174 2001-11-07 Fernando Perez <fperez@colorado.edu>
5181 2001-11-07 Fernando Perez <fperez@colorado.edu>
5175
5182
5176 * Version 0.1.3 released, mainly because of the raw_input bug.
5183 * Version 0.1.3 released, mainly because of the raw_input bug.
5177
5184
5178 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5185 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5179 and when testing for whether things were callable, a call could
5186 and when testing for whether things were callable, a call could
5180 actually be made to certain functions. They would get called again
5187 actually be made to certain functions. They would get called again
5181 once 'really' executed, with a resulting double call. A disaster
5188 once 'really' executed, with a resulting double call. A disaster
5182 in many cases (list.reverse() would never work!).
5189 in many cases (list.reverse() would never work!).
5183
5190
5184 * Removed prefilter() function, moved its code to raw_input (which
5191 * Removed prefilter() function, moved its code to raw_input (which
5185 after all was just a near-empty caller for prefilter). This saves
5192 after all was just a near-empty caller for prefilter). This saves
5186 a function call on every prompt, and simplifies the class a tiny bit.
5193 a function call on every prompt, and simplifies the class a tiny bit.
5187
5194
5188 * Fix _ip to __ip name in magic example file.
5195 * Fix _ip to __ip name in magic example file.
5189
5196
5190 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5197 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5191 work with non-gnu versions of tar.
5198 work with non-gnu versions of tar.
5192
5199
5193 2001-11-06 Fernando Perez <fperez@colorado.edu>
5200 2001-11-06 Fernando Perez <fperez@colorado.edu>
5194
5201
5195 * Version 0.1.2. Just to keep track of the recent changes.
5202 * Version 0.1.2. Just to keep track of the recent changes.
5196
5203
5197 * Fixed nasty bug in output prompt routine. It used to check 'if
5204 * Fixed nasty bug in output prompt routine. It used to check 'if
5198 arg != None...'. Problem is, this fails if arg implements a
5205 arg != None...'. Problem is, this fails if arg implements a
5199 special comparison (__cmp__) which disallows comparing to
5206 special comparison (__cmp__) which disallows comparing to
5200 None. Found it when trying to use the PhysicalQuantity module from
5207 None. Found it when trying to use the PhysicalQuantity module from
5201 ScientificPython.
5208 ScientificPython.
5202
5209
5203 2001-11-05 Fernando Perez <fperez@colorado.edu>
5210 2001-11-05 Fernando Perez <fperez@colorado.edu>
5204
5211
5205 * Also added dirs. Now the pushd/popd/dirs family functions
5212 * Also added dirs. Now the pushd/popd/dirs family functions
5206 basically like the shell, with the added convenience of going home
5213 basically like the shell, with the added convenience of going home
5207 when called with no args.
5214 when called with no args.
5208
5215
5209 * pushd/popd slightly modified to mimic shell behavior more
5216 * pushd/popd slightly modified to mimic shell behavior more
5210 closely.
5217 closely.
5211
5218
5212 * Added env,pushd,popd from ShellServices as magic functions. I
5219 * Added env,pushd,popd from ShellServices as magic functions. I
5213 think the cleanest will be to port all desired functions from
5220 think the cleanest will be to port all desired functions from
5214 ShellServices as magics and remove ShellServices altogether. This
5221 ShellServices as magics and remove ShellServices altogether. This
5215 will provide a single, clean way of adding functionality
5222 will provide a single, clean way of adding functionality
5216 (shell-type or otherwise) to IP.
5223 (shell-type or otherwise) to IP.
5217
5224
5218 2001-11-04 Fernando Perez <fperez@colorado.edu>
5225 2001-11-04 Fernando Perez <fperez@colorado.edu>
5219
5226
5220 * Added .ipython/ directory to sys.path. This way users can keep
5227 * Added .ipython/ directory to sys.path. This way users can keep
5221 customizations there and access them via import.
5228 customizations there and access them via import.
5222
5229
5223 2001-11-03 Fernando Perez <fperez@colorado.edu>
5230 2001-11-03 Fernando Perez <fperez@colorado.edu>
5224
5231
5225 * Opened version 0.1.1 for new changes.
5232 * Opened version 0.1.1 for new changes.
5226
5233
5227 * Changed version number to 0.1.0: first 'public' release, sent to
5234 * Changed version number to 0.1.0: first 'public' release, sent to
5228 Nathan and Janko.
5235 Nathan and Janko.
5229
5236
5230 * Lots of small fixes and tweaks.
5237 * Lots of small fixes and tweaks.
5231
5238
5232 * Minor changes to whos format. Now strings are shown, snipped if
5239 * Minor changes to whos format. Now strings are shown, snipped if
5233 too long.
5240 too long.
5234
5241
5235 * Changed ShellServices to work on __main__ so they show up in @who
5242 * Changed ShellServices to work on __main__ so they show up in @who
5236
5243
5237 * Help also works with ? at the end of a line:
5244 * Help also works with ? at the end of a line:
5238 ?sin and sin?
5245 ?sin and sin?
5239 both produce the same effect. This is nice, as often I use the
5246 both produce the same effect. This is nice, as often I use the
5240 tab-complete to find the name of a method, but I used to then have
5247 tab-complete to find the name of a method, but I used to then have
5241 to go to the beginning of the line to put a ? if I wanted more
5248 to go to the beginning of the line to put a ? if I wanted more
5242 info. Now I can just add the ? and hit return. Convenient.
5249 info. Now I can just add the ? and hit return. Convenient.
5243
5250
5244 2001-11-02 Fernando Perez <fperez@colorado.edu>
5251 2001-11-02 Fernando Perez <fperez@colorado.edu>
5245
5252
5246 * Python version check (>=2.1) added.
5253 * Python version check (>=2.1) added.
5247
5254
5248 * Added LazyPython documentation. At this point the docs are quite
5255 * Added LazyPython documentation. At this point the docs are quite
5249 a mess. A cleanup is in order.
5256 a mess. A cleanup is in order.
5250
5257
5251 * Auto-installer created. For some bizarre reason, the zipfiles
5258 * Auto-installer created. For some bizarre reason, the zipfiles
5252 module isn't working on my system. So I made a tar version
5259 module isn't working on my system. So I made a tar version
5253 (hopefully the command line options in various systems won't kill
5260 (hopefully the command line options in various systems won't kill
5254 me).
5261 me).
5255
5262
5256 * Fixes to Struct in genutils. Now all dictionary-like methods are
5263 * Fixes to Struct in genutils. Now all dictionary-like methods are
5257 protected (reasonably).
5264 protected (reasonably).
5258
5265
5259 * Added pager function to genutils and changed ? to print usage
5266 * Added pager function to genutils and changed ? to print usage
5260 note through it (it was too long).
5267 note through it (it was too long).
5261
5268
5262 * Added the LazyPython functionality. Works great! I changed the
5269 * Added the LazyPython functionality. Works great! I changed the
5263 auto-quote escape to ';', it's on home row and next to '. But
5270 auto-quote escape to ';', it's on home row and next to '. But
5264 both auto-quote and auto-paren (still /) escapes are command-line
5271 both auto-quote and auto-paren (still /) escapes are command-line
5265 parameters.
5272 parameters.
5266
5273
5267
5274
5268 2001-11-01 Fernando Perez <fperez@colorado.edu>
5275 2001-11-01 Fernando Perez <fperez@colorado.edu>
5269
5276
5270 * Version changed to 0.0.7. Fairly large change: configuration now
5277 * Version changed to 0.0.7. Fairly large change: configuration now
5271 is all stored in a directory, by default .ipython. There, all
5278 is all stored in a directory, by default .ipython. There, all
5272 config files have normal looking names (not .names)
5279 config files have normal looking names (not .names)
5273
5280
5274 * Version 0.0.6 Released first to Lucas and Archie as a test
5281 * Version 0.0.6 Released first to Lucas and Archie as a test
5275 run. Since it's the first 'semi-public' release, change version to
5282 run. Since it's the first 'semi-public' release, change version to
5276 > 0.0.6 for any changes now.
5283 > 0.0.6 for any changes now.
5277
5284
5278 * Stuff I had put in the ipplib.py changelog:
5285 * Stuff I had put in the ipplib.py changelog:
5279
5286
5280 Changes to InteractiveShell:
5287 Changes to InteractiveShell:
5281
5288
5282 - Made the usage message a parameter.
5289 - Made the usage message a parameter.
5283
5290
5284 - Require the name of the shell variable to be given. It's a bit
5291 - Require the name of the shell variable to be given. It's a bit
5285 of a hack, but allows the name 'shell' not to be hardwire in the
5292 of a hack, but allows the name 'shell' not to be hardwire in the
5286 magic (@) handler, which is problematic b/c it requires
5293 magic (@) handler, which is problematic b/c it requires
5287 polluting the global namespace with 'shell'. This in turn is
5294 polluting the global namespace with 'shell'. This in turn is
5288 fragile: if a user redefines a variable called shell, things
5295 fragile: if a user redefines a variable called shell, things
5289 break.
5296 break.
5290
5297
5291 - magic @: all functions available through @ need to be defined
5298 - magic @: all functions available through @ need to be defined
5292 as magic_<name>, even though they can be called simply as
5299 as magic_<name>, even though they can be called simply as
5293 @<name>. This allows the special command @magic to gather
5300 @<name>. This allows the special command @magic to gather
5294 information automatically about all existing magic functions,
5301 information automatically about all existing magic functions,
5295 even if they are run-time user extensions, by parsing the shell
5302 even if they are run-time user extensions, by parsing the shell
5296 instance __dict__ looking for special magic_ names.
5303 instance __dict__ looking for special magic_ names.
5297
5304
5298 - mainloop: added *two* local namespace parameters. This allows
5305 - mainloop: added *two* local namespace parameters. This allows
5299 the class to differentiate between parameters which were there
5306 the class to differentiate between parameters which were there
5300 before and after command line initialization was processed. This
5307 before and after command line initialization was processed. This
5301 way, later @who can show things loaded at startup by the
5308 way, later @who can show things loaded at startup by the
5302 user. This trick was necessary to make session saving/reloading
5309 user. This trick was necessary to make session saving/reloading
5303 really work: ideally after saving/exiting/reloading a session,
5310 really work: ideally after saving/exiting/reloading a session,
5304 *everythin* should look the same, including the output of @who. I
5311 *everythin* should look the same, including the output of @who. I
5305 was only able to make this work with this double namespace
5312 was only able to make this work with this double namespace
5306 trick.
5313 trick.
5307
5314
5308 - added a header to the logfile which allows (almost) full
5315 - added a header to the logfile which allows (almost) full
5309 session restoring.
5316 session restoring.
5310
5317
5311 - prepend lines beginning with @ or !, with a and log
5318 - prepend lines beginning with @ or !, with a and log
5312 them. Why? !lines: may be useful to know what you did @lines:
5319 them. Why? !lines: may be useful to know what you did @lines:
5313 they may affect session state. So when restoring a session, at
5320 they may affect session state. So when restoring a session, at
5314 least inform the user of their presence. I couldn't quite get
5321 least inform the user of their presence. I couldn't quite get
5315 them to properly re-execute, but at least the user is warned.
5322 them to properly re-execute, but at least the user is warned.
5316
5323
5317 * Started ChangeLog.
5324 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now